diff --git a/assets/bindata.go b/assets/bindata.go index 2e38c5aa..b9978ae8 100644 --- a/assets/bindata.go +++ b/assets/bindata.go @@ -85,12 +85,12 @@ func bundleCssBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "bundle.css.br", size: 2369, mode: os.FileMode(420), modTime: time.Unix(1535014676, 0)} + info := bindataFileInfo{name: "bundle.css.br", size: 2369, mode: os.FileMode(436), modTime: time.Unix(1535678866, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _bundleJsBr = "\x5b\xea\x8e\x76\x05\x9d\xb2\x6e\x32\xb8\x31\x5c\x9b\x47\xdb\x5e\x78\x2a\xb9\x2b\x47\x96\x28\x7a\xdd\x73\xd0\x73\xc1\x57\xb1\x69\x1b\x2a\xeb\x33\xd4\xbc\xfb\x82\x2d\x8f\x74\x1b\x02\x11\x2c\xb3\x3d\x9d\xf6\x38\x01\x55\x55\x55\xcd\x4c\x2a\x63\x68\x02\x5b\xda\x02\xaa\x38\x65\xea\xfc\x53\x4a\x98\x9b\x53\x14\x91\xb8\x36\x99\xb3\x71\x69\x0d\xee\x8a\x09\xaa\x98\xc3\x16\xd9\xea\x53\xb8\x1b\xf5\x2d\xe3\xb3\x1f\xb0\x57\x2b\x4f\x12\x86\x29\x6f\x5e\x13\xfb\xd7\x92\xe3\x24\xa7\x92\x6a\xf0\xc4\x81\x52\x53\x8e\x4f\xca\xec\xbb\xa5\x84\x65\x18\x9d\x6d\x66\xc3\x89\x58\x6a\x49\x88\x6a\x94\x8e\xb8\x54\x82\xee\x71\x95\xbb\xce\x6e\x50\x18\xdc\x32\xea\x8a\x45\xd1\x55\x85\x9e\xb8\xac\x7f\x11\x30\x38\x0b\x1b\x36\x5b\x3e\x3f\xde\xcf\x7d\xef\x65\xac\x5d\xa3\x1e\xe1\x39\x33\x7a\x8f\x41\xba\x06\x5d\x54\xb9\x3a\x19\xcd\x3a\x94\xa8\x83\x02\xf3\xf6\xf5\xda\x0c\x1b\x84\xcf\x8a\x5f\xd6\x45\xf3\xdb\x88\x74\x0a\x17\x3d\xf8\xe5\x28\x74\xe6\x5c\x2f\xb2\x84\xd0\x30\xc8\xc9\xe9\x0f\x2d\x47\x88\x57\x87\xbd\xe4\x1f\x91\xa3\xb7\x5b\x5f\xd0\x68\x7d\x2f\x83\x20\xfc\x92\xdf\xf1\x40\x37\x3d\x26\x34\xda\x5a\xe5\xa0\xd3\x78\x1a\x82\x51\x54\x2a\x98\x26\x83\xdd\xf6\x73\x98\xdd\x9e\xb1\xce\xa8\xf7\x46\xeb\xfd\x3c\xfc\x41\xeb\x42\x65\x25\x7c\x87\x85\x9c\x67\xeb\xc5\x7d\xd3\x04\x83\xb0\x58\xde\xc1\x07\x84\x9e\x7e\x52\x07\x8e\xdc\x91\xac\xb4\xfc\xf7\xe1\xaf\x01\x54\x0e\xb3\xb6\x03\xfc\x45\xd8\x69\xe3\xa2\xa6\xad\x3a\xa6\x11\x8a\x97\x19\x9b\x53\xc2\xba\x3b\x79\x49\x10\xfa\x8c\xff\xfe\xbf\x5f\x2e\xfb\xcf\xcf\x57\x4a\x87\xb9\x3c\xa6\x30\xe8\xd9\x09\x59\xd5\x3b\xbd\xb3\x74\xef\x03\x99\xe3\x53\x94\x65\x2c\xda\x96\x1c\xd5\x2b\xe8\xe5\x5e\x66\xae\x5e\xdf\xa8\x13\x92\x16\x3e\x24\xd9\x21\x80\x19\x8f\x39\x32\xc7\x09\xb5\x64\x4f\xcb\xc9\x1a\x5b\x31\x1a\x8c\x94\xf5\xc1\x31\xe3\xec\xda\xeb\xa2\xff\xfa\xbd\x8c\x78\xba\xe4\x55\xd8\xbd\xd2\xf2\x24\x6a\x0b\x7d\xd1\x09\x0d\x89\x21\x86\x60\x83\xe3\xa1\x45\x3b\xef\xab\x6a\x5f\xbf\x31\xbb\xe4\x4e\xc9\xee\x58\xba\x7b\x32\x03\xd9\x6a\x2c\x91\x11\xe9\xf8\x36\x8a\xb1\x48\x62\x14\x8b\x84\x74\x81\xef\xbf\xb7\x34\xfb\xfa\x55\x41\x7d\xa0\x0c\xe2\xb2\x48\xc9\xf6\x2c\xf1\x94\xcc\x59\x96\x9d\x82\xd5\xb4\x4c\xf7\x54\x2f\x55\x3d\x54\xa9\x67\x01\x62\xae\xde\x9f\x46\x75\xbf\xfb\xf3\x35\xcc\xed\x29\xdd\xa1\x25\xef\xe3\xd9\xe3\xf6\xc4\xc1\xf6\xc6\x95\x60\xbb\x0c\xec\x8b\x75\xb1\x42\x1a\xb0\xd6\x42\x52\xcd\x0c\x06\x12\xe9\xfc\xbe\x2c\x2d\xef\xbe\x9c\x88\xf4\x06\x58\x53\x43\xa0\x8a\xa4\xa4\xee\xc1\x6c\x6a\xf5\xb2\x49\xd3\xd2\xac\xd5\x32\x1d\x4c\x44\x16\xa2\x95\x88\xc0\x44\xfe\x2c\xb2\x8c\x27\x1f\x6e\x07\xc3\x97\xa9\xf5\x46\xa9\x2c\x51\x83\x6d\x50\x36\xda\x43\x83\x91\x42\xbf\xe1\xca\x9d\x79\x92\xaf\xf9\x98\x5f\x92\xa7\x59\x9a\xbd\x1f\xa5\x16\xab\xcc\xaa\x5e\xb5\xb4\xc0\x00\x83\xb9\xc8\xe5\xbb\x93\x8c\xbe\xe5\xd4\xa9\xfd\x3f\xc7\x62\x73\xa9\x53\xfa\xe4\x15\xe6\x7a\xf0\xff\x6f\xb3\xff\x6a\x34\xcd\x28\x43\xdf\xf3\x75\x42\x6d\x3c\xb0\x51\xfb\x99\xf3\x2a\x06\xfa\xfd\x88\x95\xa4\x09\xde\x0a\x53\x16\x59\xa6\x95\x46\xe9\x49\x80\x89\x2e\xb3\xb6\xfd\x84\xe4\xd6\x4d\x14\x10\x0c\xc6\x52\x1f\x4c\x3d\x3d\xc6\x90\x27\x7f\x9c\xe0\x1b\xe6\xe6\x71\xbf\x66\x6d\xad\xd3\x09\x9b\x81\x58\x60\xa5\x6f\xd3\xe2\x2b\x4c\xff\x71\xe6\x33\xb3\x9b\xa4\xdc\xa6\x91\x1e\xb4\x24\xc0\xee\x22\xc2\x9e\x33\x1b\x57\xd1\xbe\x4d\x1f\x40\xf4\x6a\xcf\xdb\xa7\xfb\xfd\x97\xd5\x9b\x11\xfc\x77\xe5\x12\xd6\xe4\x5c\x82\x07\xf3\x51\x71\xb6\xef\x5e\xb0\xb4\xc8\xd0\xd3\x5a\xfb\x4a\x67\x7f\xba\x82\x0e\xaa\x7e\x45\x8b\x1f\x72\x8f\x9b\xd9\x10\xc3\xc7\xd6\xb0\x2b\x27\x5c\x48\x1b\x91\xd4\xd6\xa8\xc7\xeb\x1d\x21\x4a\x4f\x34\x1e\xb4\xee\xb2\x53\xcb\xb6\x74\x9a\x04\x92\xd9\xd9\xf7\x4e\x16\xba\xc6\x5c\x09\xca\x50\x68\xae\xc5\x74\xb1\x7c\x88\x55\x74\x30\xe6\x43\x35\x0d\x2d\xab\x81\x34\x5d\xf7\x79\xe4\x58\x3b\x7a\x37\x59\x30\x47\xa0\x4d\x26\xb4\x39\x21\x34\x01\x92\x65\x1d\x98\x27\xbf\x7e\xd7\xb0\xff\xbf\xb7\xd2\xaa\x3e\xbd\xfa\xe6\x12\x60\x22\xb3\x03\x24\x0b\x99\xd9\x92\xd9\x3d\x5a\xed\xc6\x5c\x44\x30\x5b\x23\x41\xb6\x94\x8b\x35\xec\xdd\x7b\xdf\x85\x7f\x65\x70\x93\x84\x99\xb9\x7b\xc2\x45\x44\x31\x04\x50\x19\x11\x08\x54\x42\x90\x4f\x7d\xf3\xff\xbf\x59\x38\xcd\xcc\x3d\x82\xe6\x02\x48\x8f\x40\x30\x3b\x00\x30\xab\x02\x01\x56\x1f\x10\x2c\x09\x50\x94\x50\x62\x37\xfb\xd9\x83\x99\x23\x4a\x8d\x92\x9b\xc5\x2c\xd6\x01\xb6\x02\x98\x5c\x24\x47\x09\xb9\x9a\xf5\x6e\x76\xb3\x9d\x81\xe7\xe3\x50\x35\x83\xe5\x5d\x5e\x3e\x06\x43\xbe\x27\xc8\x1a\xed\xb6\x6a\x2f\xd6\xb1\x09\xb6\x17\xb0\x6c\xfd\x3f\x55\x95\xf2\x74\x6e\x9d\xe9\x40\x2a\x28\x29\x7a\x50\xe8\xd2\x96\x21\xe3\x88\xfb\xf7\x0f\x22\x0e\x07\x88\x3a\x16\x15\x40\x95\x54\x27\x5c\x18\x88\xae\x8d\xf2\x44\x6b\x72\x36\xbf\x4c\x19\x4b\x9f\x29\xd7\x36\x27\x7d\x19\x32\xf9\x65\x4a\xb6\xbc\x0c\x93\x87\x6d\xcf\x16\x9e\x7f\xbc\xe8\xd5\x73\x2d\x5a\x9b\xb5\x8c\x7d\x1c\xc7\x8c\xe5\x59\x6a\x1b\xdb\xb5\xad\xb5\xf6\x45\x8b\x5c\x90\x5a\x34\x6d\x76\xf3\xb4\xd9\x53\x33\xd4\x3b\x24\xea\x83\xca\x7b\xc7\x6f\xa8\x89\x8b\x4c\xa0\x3b\x5c\xa9\x5e\x82\x46\x61\x24\xd0\x7f\x7f\xcf\x74\xcf\xa7\x3d\x18\xd8\xcd\xde\x03\xc0\x3f\x05\x4d\x05\x21\xe4\x14\x47\x21\x3b\xfe\xb3\x01\x6a\xd6\x30\xce\x74\x0d\x2a\x20\x05\x54\x91\xdd\x76\x66\xea\x63\x93\x7b\x7c\x6f\x1b\xa6\xff\x8d\x7b\xbf\x26\x69\xf6\xc7\x58\x88\x4b\x1c\x76\x83\x00\x99\x2e\x48\x0d\x5b\x93\x2c\x52\xce\x6a\x3d\x96\x6f\x1b\xa6\x75\xd9\x6d\xda\x6e\xdf\x99\x18\x63\x9e\xcf\x20\x84\x24\x70\x6e\x1b\xb2\xea\xea\xa9\xfe\x9f\xba\x3b\xb3\x16\x1a\x02\xa4\x10\x92\x50\x6b\xdb\xbd\xc6\xb2\xff\xca\x5c\x93\x3f\xc6\x37\xbb\xd0\x40\x73\x9c\x02\xa2\xd1\x48\x20\x86\xcc\x6c\xa2\x5d\xd3\xb1\xde\x40\xc0\x6e\x0f\x64\x8e\x61\xaa\x7a\x1e\xb7\x88\xce\xfe\x69\x1f\x50\xae\xe3\xf8\xbf\x38\x1e\xb2\x77\x9c\xc4\x43\x52\x0e\xfe\xdd\x1a\x5a\x4f\xc1\xf1\xdd\xcd\x19\x48\x74\x28\xf0\xd2\x31\x7c\xd7\xf7\xba\x7e\xd6\xb5\x6a\xef\x2c\x10\x20\x03\x0c\xff\x01\x12\xc8\x31\xd6\xbe\xaf\xf7\xaa\x6d\x3b\xff\xdf\x00\x91\x4b\xce\x19\x30\xc5\x71\x19\xa6\x55\x3b\x9b\x7e\x93\x76\x72\x57\x03\xe6\x37\xc6\x80\xb1\x10\x52\xfc\x1a\x2b\xfb\x3f\xd9\x39\xf6\x67\x36\x49\x55\x54\x44\xe4\x12\x15\x95\xa3\xfb\x11\x37\x88\x6b\xc0\x9e\xf1\x74\xd4\xf6\xa9\xb4\x3d\x4a\x79\xfe\x22\xb9\x01\xaa\xaf\xf2\x4a\xb1\x4e\x12\x1d\xf0\x8d\xb6\x8a\x95\xf2\x37\xea\x9b\x8c\xee\x3c\x36\x4a\x80\xd3\xbc\x7d\x0a\xb5\xf9\x4c\xa3\x70\x43\x03\x4c\xff\x18\x99\xd7\x97\x55\x76\x6c\xa2\xf1\xea\xbf\xe2\x70\xce\x1a\xb6\xf7\x20\x01\x03\x14\xeb\x3e\xd7\xb0\x6b\xd3\x6c\x57\x3b\xda\xd9\x43\x42\x0c\x12\xf9\x7c\x28\x00\x6d\x6c\xcc\x46\x5e\x78\xcc\x5f\x18\x37\x9e\xa7\x2d\xb2\x77\x05\xcd\x1e\xe7\xa7\x02\x89\xd7\x0f\x21\x7f\x44\x0e\x4e\xb5\x04\x8f\x65\x1f\x19\xbe\xac\x39\x89\x04\xa6\x5a\xe0\xab\xb4\x79\x7c\x8d\xc3\x54\x8c\x38\x52\x04\x82\x0b\x61\x35\x8f\x4f\x50\xd4\x2a\x2c\x8e\x56\x2e\x8e\x55\x23\x60\x9e\x33\xac\x36\x40\x18\x47\x3c\x25\x5e\xac\x16\x4a\xcb\x6c\x55\x4c\xdc\x84\xae\x33\x6a\x71\x77\x57\x8b\x4d\xf8\x4f\x2a\x9b\xc6\x1a\x21\x3c\xeb\x5e\x16\x44\x5a\xf2\x21\x41\x80\x24\xe3\xcb\xd2\xec\xc3\xad\xef\xb9\x8c\x90\x46\x5f\x47\x97\x9c\xe3\x2e\xf6\x96\xc2\xae\xb8\xcd\x1e\x62\x90\xfd\x13\xf6\x45\x1d\x9f\x8f\x73\xa6\xe1\x36\x3b\xb9\xd4\x99\x90\x5a\x58\x23\x46\x11\x48\x7f\x9a\xa6\x28\xe8\x7b\x7f\xf2\x8c\x99\xa2\x4d\x2e\x2e\xdb\x57\x05\x73\xe4\xf6\xdf\x6d\x30\x00\x53\xb1\xb0\xdb\x3b\xc0\x21\xff\x09\x10\x30\xb2\xd8\xa6\x6c\x53\xf2\x26\x66\xcb\x79\x85\x6c\xe1\xfe\xb1\xf1\x30\x88\x09\xa0\x49\xe0\xc9\xef\x1f\x1d\x41\x93\x86\xe6\xc0\x50\x02\x69\x47\x4a\x4f\xe8\x2e\xec\x9f\x4e\xf9\xdc\xb2\x88\xba\x2c\x92\x28\xaf\xb1\xee\xd2\x0f\x01\xa3\xea\x1a\xe8\xfa\x46\x55\x81\x53\xc3\xd4\x7f\xa0\x4a\x08\xca\x20\x05\xb2\x76\x0c\x75\x88\xea\x71\x69\xc0\xd2\x02\xd6\x17\x8a\x4e\x3c\xfa\x7f\x78\xcd\xd8\xaa\x90\x3f\xa8\x0f\x2c\xda\x42\xa7\x80\x5a\x53\x8c\x8a\x68\xf4\x8e\x5e\x6b\x00\x5a\x47\xab\x3d\x0c\xfa\xc2\x59\xdf\xd8\x69\x15\x47\xed\xe2\xa4\x4f\x5c\xf4\x8c\x83\x36\xb1\xd7\x36\x9e\x75\x80\x17\xed\x27\x5e\xab\xd9\xcc\x9f\x55\xc7\x11\x8b\xad\xc1\xa2\xdb\xef\xd5\x6a\x41\x41\xd4\xc9\x33\x04\xb9\x34\xcf\x12\x64\x9f\x3c\x0d\xc8\x68\x43\x70\xcb\x73\x82\xce\x8d\x77\x21\xe5\xe8\xf7\x82\x54\xc3\xb4\x65\xae\x26\xb3\xd0\x9b\x9f\xe4\xdb\x0b\x48\x7d\xc9\xe8\x0a\xb3\x6c\xbb\x04\xdd\x54\x55\xe1\xf1\x89\x24\x53\x88\x7e\x79\x22\x5f\xaa\x8a\x85\x86\x0c\x43\x20\x4f\xd3\xc4\x18\xde\x10\xc0\xa2\x7e\x78\xe5\x33\x11\x1d\xbe\x87\x51\x18\xd3\x72\x7b\x88\xf9\x2b\xbc\x31\xa3\x87\xe6\x11\x64\x3c\xed\x43\xc8\xce\xeb\x30\xd3\x7b\x73\xd3\x16\x6f\x21\x29\x81\x2b\xc6\x78\x1d\x0a\x94\x9a\x66\xcd\xf0\x7a\x9d\x11\x30\xf3\xd6\x88\xa9\x29\xbc\xd1\x64\xba\x60\x4f\x4a\x5e\xdf\x8c\xec\x6d\x3d\x25\xf0\x77\xb7\x0f\x0d\xd9\x2a\xa0\x88\xa9\x99\xa0\x9e\x17\x1d\xb0\x4a\x43\xb5\x84\x33\x04\x11\x9a\x5b\xb7\x7b\x71\x21\x82\xe6\xfc\x51\xb9\xaf\xb1\xeb\x22\x27\x94\x62\x35\xd7\x42\x2e\x28\x3c\xeb\x11\xac\xc4\x9b\x1c\xa0\x5f\xec\x02\x12\x6f\x2e\xec\xdd\x62\x5f\x56\x3f\x43\x07\xd8\x41\x34\xce\xa7\x14\x57\x87\x5e\x04\x0f\xe0\xe6\xcb\x20\x8d\xad\x08\x22\xd1\xa2\x72\x3c\x9e\x82\x0f\x12\x32\x54\x5d\x68\xf0\xf6\x5f\xf0\xaf\x60\xc9\x7e\xcf\x11\x3e\x6d\x3e\xae\xd8\x26\x4b\xd6\x79\xe9\x98\x9e\xbc\x24\x0d\xdf\xa7\x94\xa0\xe5\xaa\xfc\x4c\x71\x60\xcb\x5b\x20\x14\xa6\xe1\x5b\x1d\xe5\x17\xec\x3e\x31\xac\x7c\x9d\xd6\x37\x7f\x6c\x3e\x3a\x3f\x96\x97\xff\xeb\x5d\x61\xf9\x9d\x4e\x7e\x84\x88\x1a\xdb\x2d\xa1\x9d\x31\x04\x9e\x59\x8f\xdb\xc3\x4b\xf2\xf0\xb4\x62\xcd\x42\xcb\xea\x28\xb5\x76\xa7\x7f\xf5\x11\x5f\x28\x94\x1e\x7c\x2e\x5a\x7f\x2d\xa2\x31\x54\xd1\x82\x91\x15\xc0\xfb\xa5\xe0\xfd\xa7\x34\x9b\x70\x21\xec\x9d\xc4\x5e\x84\x95\x3b\x91\x10\x58\x56\xec\xd2\xdc\x0d\xc1\x31\x43\xe9\x87\xce\x5c\xe3\x3d\xd4\xd4\x16\xcb\x88\x3f\x53\x26\xdf\xe6\xfe\x12\xa8\xaa\xf0\x0a\x18\x47\x2f\x76\xfc\xa9\x4a\xdd\x4b\x56\x0f\x67\xec\x28\x4d\x3a\xe5\x70\x0b\x54\x33\xc0\x5c\xc2\x88\xf1\xea\x54\xd7\xa9\x2e\x00\x3f\xf5\xe6\x67\x67\xa5\xbb\x5b\x51\x46\x87\x56\xd9\x6d\xda\x8e\x26\xc9\x1e\x73\x19\x1b\xfa\xa4\xa9\xba\xd0\x2e\xee\xa8\xfa\x4f\x23\xed\x43\x6e\xe2\x6d\xc6\xda\x7b\xe8\xc6\x38\x22\xe9\xf7\x02\x71\x81\x33\x85\xdc\x37\x81\x5d\xbe\x0c\xc0\xee\x1a\x48\x94\x64\xc9\xe1\xb7\x79\x2e\x91\x17\xe3\xe4\x37\x41\x86\x7b\x7c\x83\xbb\x6c\x07\x50\xa2\xe7\xfa\x9b\x4c\x13\x63\x9a\xb3\x77\x2d\x9d\x7e\xa1\xcf\x49\xea\x3a\xad\x47\x75\x2f\xd3\xa5\x6e\xcc\xd2\x31\x00\xb7\xac\x2e\xb8\x63\x0a\x22\x56\xc0\xe0\x66\x17\x54\x69\xaa\x6d\x0d\xc7\xa8\x0b\x6a\xa9\xc6\x6e\x8f\x8a\x53\xd0\x16\x62\x72\x7d\x22\xa9\xb0\x14\x82\x33\x9e\xfc\xeb\x73\xb5\xd5\x27\xb1\x26\x6c\xde\x83\xee\xbb\x47\x82\x5e\xb5\xf5\x06\x84\xe6\xba\x48\x58\x1d\x2f\xd4\xda\x87\x85\xa8\x98\x67\x87\x56\x2e\xa7\x82\xb7\x28\x1a\x9f\x09\x24\xec\xb1\x4a\x27\xf8\x33\xcf\x6e\xe1\x64\x60\x5d\x29\x27\xb1\x63\x1b\xbb\x1a\x86\xe2\x8f\x74\x81\xb2\xdd\x89\x98\xa0\xa6\x29\x88\x9f\x44\xa5\xf5\x14\x0f\x97\xbb\xf5\x8a\xea\x68\x5e\x00\x84\x91\x0d\xd6\x05\xf6\x6e\xfc\xc1\x90\x55\x5d\xf3\x57\x4d\x1c\xb6\x44\x8f\xc9\xf2\x96\xb2\xcf\x55\x74\x3b\xf4\x0f\xe4\x37\x0d\x22\x0a\xfd\x28\xb3\x4c\xe5\x3c\xf6\xa5\x96\xd5\x15\x77\x5c\x96\x34\x3b\x0b\x69\x54\xa9\xb2\xf3\xe5\xdf\x26\x7e\xd8\xe2\xec\x95\x67\x33\xfb\xe3\x76\x62\x4b\x57\xb4\x8c\xbf\xee\xb9\x61\x5a\x8c\x7d\xdb\xb0\x4a\x85\x56\x4f\xda\x60\xf8\xfe\xb8\x09\xa8\x07\x43\x68\x06\xb3\x9d\xce\xae\x19\xc5\x16\x73\xc3\x8e\x9b\xb1\xd8\x07\x07\x25\xa8\xbc\xf6\xd3\xaa\x66\x3b\xcb\x79\x78\x66\xd2\x33\x98\x53\xe7\x7d\xa4\x60\xee\x09\x92\x10\x0e\x64\xc0\x7e\x02\xde\x47\x21\x61\xd8\x41\xf4\x35\x6e\x17\x5c\x68\xa5\xa3\x8f\x34\x19\x07\x9b\x10\xa9\x2f\x99\xaa\x61\x33\x9a\x86\xb1\xd8\xff\x8e\x02\xaa\xad\x15\xbe\x3c\x6a\xed\xef\xeb\x59\x6c\x71\xa0\xd4\x9b\xdd\x40\x2d\xd5\x10\xff\x22\x5e\xca\x1d\xc5\x99\xbe\xa6\x55\x5f\x87\xcf\xa1\xd2\x5e\x62\x16\xb7\x4f\xc3\x8d\xa8\x83\xd6\x04\xc2\xb6\x79\x45\xe2\xb3\x32\xc5\xbe\x40\xb8\x9d\x1f\xa9\x28\xb4\x14\xfa\x5c\x8d\x6f\x35\x87\xf3\x21\x28\xd9\x86\x1e\x8c\xd8\x7d\x46\xb1\x07\x36\x47\x56\xd2\x42\xaa\x95\x9d\x2e\x84\x61\xdd\xd2\xe2\xe7\xb2\x2b\xff\x9e\xc2\xac\x2f\xa8\x9d\x92\x1d\x63\x25\x78\xbb\xfb\x9c\xf5\xdc\xba\x70\x5e\x65\x92\x59\xf6\x04\x7b\x9b\x82\xc1\x62\x43\xe1\xe9\x22\x96\x49\x3d\xa5\xf4\x63\xfd\x69\x4d\x9e\xbd\x85\x8b\x89\x7e\x9f\xce\x2b\x2a\xab\x02\xad\x67\xbe\x06\x0d\x35\xb2\xa8\x5d\x28\x89\xc5\xf0\xd9\x1f\x26\x49\xba\x52\x1d\xc4\x89\x93\x55\xf2\x71\x02\x15\x02\x5e\x26\xc5\x06\x1c\x4b\xd5\x63\x05\x5e\x27\xce\x63\x5c\xfb\x13\x6a\xe6\xd2\xc0\xb7\x40\x0f\x0a\x64\xf1\x10\xab\xf3\xf3\x63\x57\x61\x19\x3f\xc3\x1b\x8c\x12\xdd\xc6\xba\x91\x81\xcf\x79\x78\x53\x23\x21\xea\xa4\x84\xe4\xca\x79\x4a\xb0\x1b\x90\x3d\x83\x17\xd7\x08\x97\x1f\xc5\x41\x4a\xb9\x27\xde\x2f\xe3\x20\xa0\x09\x63\x5a\x65\x9d\x45\x13\x55\xce\x62\x70\x20\x54\xd0\x20\xfa\xf9\x6d\x2c\xf7\xeb\xb4\x99\xd5\x67\xfd\x65\xb3\xb8\xbf\x9e\xa8\x8f\xe4\x0c\xbc\xdb\x9a\xd2\x83\x92\xa5\x48\x1f\xe9\x25\xfa\xbf\x48\xf1\x98\x2c\x0a\x4e\xdf\x64\x69\x00\xc1\x91\x55\x53\x64\x3b\x63\x08\x8c\x40\xe7\x1c\x8e\x7f\xac\x0b\x5c\xa6\xf4\x81\x90\x0f\xcc\xed\x23\x47\xe5\x1c\x1d\x6f\x81\x2b\x61\x6e\xc4\xaf\xc0\x18\x8a\x30\x83\x79\x74\x16\x91\x22\x36\xad\xd3\xea\xe9\xc4\xa2\x6f\x45\x28\x7e\xc7\xdc\x49\x2a\x7b\x8f\x6a\xc6\x49\xb5\x9c\x4f\x0a\x95\xff\x0a\x11\x9c\x2a\x61\xa5\x5f\xcd\x93\xfc\xc4\x99\x48\x4a\xee\x2f\x46\x2c\xba\xa6\x4a\x43\xd8\x24\x9d\xdf\xba\x63\xcf\x70\xbf\x68\x01\x87\xc5\x9d\x96\x50\xcf\xb7\xbe\x23\x01\x0a\xc5\x68\xd7\x5a\x46\x04\x8a\x56\x98\x75\x0b\xa8\xf7\x58\x54\xa1\x53\x8b\x5a\x1f\xd1\xe8\x0f\xf4\x5a\x00\x68\x8e\x56\xef\x10\xf4\x01\x44\x75\x37\xb7\xf0\x6f\x34\x6a\xae\xae\x14\xad\xf9\xba\x0e\x95\x92\x87\x79\x3a\x7c\x11\x8f\x57\xc1\x5f\x6f\xf1\x26\xd9\x46\x98\xea\x8f\xb2\x9b\x6d\x39\x7a\xdc\x2c\x32\xc4\xa9\xc0\xea\x92\x29\x64\x5b\xeb\x6d\x5e\xea\x8f\x85\x7f\x37\xe5\xfe\x5a\x29\xb1\x37\x47\x56\xb6\x01\x99\x5c\x24\x55\x8c\x3b\x69\x68\x7d\xc1\x22\x28\x07\x8d\x8a\xa6\x90\x09\x59\x94\x57\x22\xac\x7e\x85\x3e\xdc\x1c\x8c\xdc\xd8\x65\xb8\xc2\xc5\xc4\x44\x25\x40\x32\xdf\x20\x72\xe3\xcf\x5c\x16\xf6\x94\xf9\x89\x1e\x23\x79\x35\x55\xef\xa4\x6e\x1b\xa9\x3b\x30\x11\xaf\x35\xd9\xca\xa0\xe0\x8d\x6f\xb4\x00\xfd\x37\x05\x69\xe9\xbe\x32\x06\xab\x66\x15\x5f\xd8\x30\xd3\xb4\x0a\xe8\xa9\x16\xe1\x60\x38\xec\xd3\xbf\x55\x72\x85\x29\xc4\xc7\xa6\xbd\x35\xa5\xdd\x7a\x0f\xa7\x15\xa8\x6e\x51\x34\x07\xbe\xb9\x29\x4f\xf2\x70\xf5\x98\x4b\x75\x17\x29\x22\xe5\x7d\xfe\x90\xa6\x46\xea\x2c\x1e\xaa\x84\x58\x82\x0e\x8c\xe2\x87\xd7\xcb\x26\x7e\x32\x80\x5a\x95\xbf\x29\x91\x30\x71\x07\xc2\xbe\x43\x6d\x40\x5c\x3f\x67\xf2\x7d\xb8\xf5\xe4\x43\xe4\xb4\x4d\x75\x3f\xd8\x80\xdd\x50\x91\x7b\xa7\xd6\x63\xcb\x19\x87\x5c\xe6\x4b\xcc\xd6\xbf\x4e\xa3\x1f\xa6\x39\xe2\xf1\x1a\x3d\x59\x2f\x39\x63\x5c\x89\xac\x6b\xf0\xd1\xe9\x59\xa4\xab\x86\x8d\xf2\x9f\x52\xe5\x57\xf0\xf8\x21\x62\xc2\x6a\xb7\xd5\xda\x25\xd1\x81\x4c\xa7\x8d\x38\xc1\x1a\xe3\x5a\x4b\x2b\x96\xc4\x2d\xfa\xae\x5a\x3b\xe5\xe1\xd9\xbe\x7d\x12\x6f\xd5\x47\x1d\x8d\xf7\xcf\xe9\xc7\x0f\xca\x35\x33\x24\xde\xa9\x64\xa4\xb6\x7d\xa2\x6d\xfd\xa0\x37\xf9\x98\x32\x5e\x7b\xb4\x63\xc4\x6b\xc9\xc3\x2b\x63\x5b\x93\x81\x94\xf2\x8d\x1b\x3e\xa1\x76\x71\x5e\xd7\x47\x5f\xb9\xf3\xaf\xdd\x14\xbc\xa6\x4c\xa0\x0e\xd0\x6f\xd3\x56\x24\x95\x60\x3a\xb7\x7c\x57\x24\x55\xac\xd8\x71\xc2\x6d\x3f\xda\x2a\x7c\xe9\xa3\xad\x3a\xf6\x77\x15\x3c\x6c\xf4\xaa\x37\xa3\x16\xc9\x22\xd0\xf2\x80\x20\x20\x98\x73\x3d\x8b\x00\x23\x47\x11\xc2\x1e\xe8\x36\xaf\x42\x83\xbc\x06\xdb\x2e\xe1\x93\xe7\xab\x88\xa9\xd5\x30\x58\xe1\x40\x3b\x66\x94\xa9\x14\x02\xa4\x5e\x03\x2b\x22\x7d\x3d\xc1\xa7\x0f\xf8\x05\x85\xb1\x08\x43\xe0\xe7\x70\x4c\xc1\x50\x63\x8f\x45\x35\xe6\xb1\x58\x10\xad\x3d\xb3\x90\xd0\x7d\x97\x96\xed\x7b\x56\x80\x94\xfa\x10\xb9\x61\xc8\x9b\x45\x48\xd2\xd7\x89\x9a\x47\x20\x8e\x8b\x7c\xf7\x56\x6d\xa1\xcc\x29\x5d\x7f\x97\x77\x59\x83\x53\x64\x05\xea\xc0\xeb\x1a\x1d\x90\xf1\x67\x9f\x02\xbf\xc1\x37\xe1\xf7\xb1\xbe\x7d\x0a\x55\x68\x0c\x66\x89\x0d\x63\x3d\x8b\x80\x50\xed\x7c\xdc\x77\xce\xfe\xa8\x60\xeb\x59\xb9\xb5\x18\x36\x87\xd7\xfd\x8d\x9f\xc3\x50\xf6\xfc\xdc\x0e\xce\xea\xa3\xa7\xfc\x7d\x81\x9c\x7d\x4e\xed\x1e\x8d\xba\x18\x42\xc7\x63\x3d\x66\x08\xf0\xa0\x91\xd1\xe4\xbc\x94\x50\x7e\xa5\x98\x67\xfc\x79\xff\x33\xfc\x62\x48\x87\xd7\x0e\x0a\x44\xbf\xc7\xfe\xb8\xa1\x1a\xfe\xcf\xe1\x94\x1d\xab\xad\x81\xf2\xc3\xd0\xfc\x18\x88\x1c\xa7\xca\xf9\x1d\x05\x71\xcd\xcb\xd5\x80\x9b\x9e\x6e\xd4\x6a\xde\x7c\xce\x9d\x0a\xab\x63\x1b\xc7\x13\x31\x13\x5f\x8b\xda\xb4\x51\xdb\xc3\x09\xfb\x89\x05\x23\xea\x90\xf5\xb8\x82\x3d\x8d\xcc\x92\x38\x52\x49\x4d\x0f\xb3\xf7\xbd\x20\x04\xf4\xa0\x98\xf6\x75\x2e\x69\xc8\xde\xb2\x0a\x8c\xda\xea\x9d\x2b\x96\xac\x07\x6f\xb3\x68\xed\x64\x03\xc0\xa3\x1b\xd0\x0c\x96\x41\x4d\xe9\x20\x13\x07\x64\xd0\x34\xe7\x39\xc0\x4e\xad\xcf\x8b\x0e\x67\x0d\xb5\x90\xda\x94\x1b\xb8\x6b\xcb\x4a\x4b\x19\xb9\xee\x8c\x19\x13\x78\xc1\xda\x31\x36\xf1\xdc\xd7\x4b\x79\x70\x39\x8a\x17\x17\x79\xe4\x95\x61\xb3\xc5\xe2\x79\xf5\x1e\x80\x3e\xb3\xe8\x8d\xb6\x56\x7e\x64\x45\x4c\x44\xd7\x2a\x5b\x85\x84\x92\xe9\xb3\x9e\xd5\xc7\x90\x19\xfa\x89\x04\x40\x06\xeb\x21\x04\x79\x67\x36\xda\x9a\x31\x4d\x38\xcf\x31\xc6\x67\xf3\xc9\x44\x51\xda\xfc\x18\x67\xf8\x3a\xc8\x0a\xac\x18\xea\x29\xf8\x71\xb7\x9d\x50\xb2\x66\x79\x62\xc4\x18\xb3\x29\x8d\x9c\x0e\xeb\xbc\xc4\x96\xce\xeb\x2c\x09\xb0\x1e\x96\xba\x8a\x8f\x19\x11\x05\xbc\x2d\xe6\x0e\x2c\x4a\x4d\x82\x21\x93\x91\x27\x78\xda\x38\x18\x01\x62\xaa\xf1\x39\x5c\x70\x97\x73\x5a\xe5\x14\x0a\xb9\x15\x91\x09\x25\x87\x1e\xe6\x6b\x12\x45\x8e\xd5\xd8\xfe\xe8\x14\xde\x54\x97\x76\xb2\xb8\x85\x19\x92\xaf\xdf\xa7\x24\x8a\xae\x6c\x80\x70\xed\xcf\xa3\xfe\x10\xf3\x2b\x91\x0a\xa8\xb4\xb1\x16\xd1\x04\x54\x38\x26\xe4\xfa\xaf\x95\x5c\x7b\x75\x94\x18\xcc\x43\x66\x64\x2b\x30\xbb\x42\x1e\x66\x7f\x4e\xd5\x0a\x53\xf9\xa6\xc0\x59\xb7\xae\xae\x09\xbf\xe4\xaa\x92\x0d\x98\x4b\x82\x45\x65\xe9\xcd\x20\x72\x8a\xc7\x94\x61\xd8\xb0\xb5\x8c\xab\xea\xf9\xf3\xdd\x00\x6b\xbc\x0b\x02\x9b\x65\x53\x30\x81\x87\xf0\x26\xac\xf2\x53\xb8\xc3\x55\x09\x7d\xaa\xe1\xab\xc4\x06\x71\x55\x3d\xf7\xd1\xcf\x29\x75\xe1\x5d\x15\x18\xf3\x4c\xaa\x13\x9b\xa1\x69\x64\x84\x50\x4e\x24\x53\xe6\xdc\x30\x51\xf5\xaa\x6f\x07\x8a\xb6\xf8\x7f\xe9\x3d\x69\xf1\x24\x6c\x9d\x9f\x4c\xb1\x60\x99\x9d\x38\xf6\xa9\xe7\x3f\x30\xa4\xc1\xe8\x79\xd6\x89\x54\xea\x5c\x40\xc6\x52\xc2\xcd\x00\x44\x9b\x01\xbe\x56\x07\x78\x55\x4f\x51\xec\xcb\xd3\x62\x15\xb6\x7b\x10\x1f\xaf\x95\xc0\xaa\xb5\x61\x0e\x99\xc5\x3f\x57\x4b\xca\x74\x94\x4c\xfe\x7f\x07\x6f\x28\xee\xcc\x8d\x63\x7a\x64\x33\x66\x6c\x43\x76\x55\x29\xe2\x6a\xa7\x7a\x82\xea\x04\x8a\x8d\x08\x26\x59\xa0\x89\x1f\x1d\x63\x99\x10\x43\x15\x06\xad\x6c\x12\xbb\xb8\x8a\xdd\xeb\xcf\x51\xb3\x4c\x48\x3d\x9c\x7d\x18\x84\xa6\xa4\x5d\x8a\x5d\xa6\x1b\xde\x63\x74\x5b\x90\x57\x17\xab\x5f\x51\x1c\x31\x4a\xa0\x61\xa9\x4f\xce\x35\x1e\x0a\x10\xd1\xa3\xe5\x0f\x6d\x15\x72\x1d\x03\x5c\x7d\xab\xf9\x75\x69\xdf\xc4\x89\x4f\x39\x3d\x9d\x5c\x33\x6a\xdf\x40\xf3\x42\x46\x6b\x8b\xb7\x4f\x44\x5f\xb4\x83\xb8\xd1\x71\x82\xf2\xf2\x3a\xd5\x5e\x89\xa7\xe6\xac\x2f\xcb\x2b\x3c\xb0\x84\x14\xcf\xaa\xe4\x91\x62\xd2\x94\x91\x0f\x6f\x27\x88\xb1\x82\xd1\x92\x23\x17\x10\xdd\x76\x94\x70\x3f\xc0\xfc\x0f\xd4\x53\x1c\xe0\x27\x4f\xc5\xea\x5c\x34\x42\xe8\x47\x92\x8c\x38\x69\x30\x3e\x86\xe6\x02\x5a\x4b\x57\x4c\xe0\xa3\x0c\x6a\x40\x91\x13\x7f\x82\xcb\xc1\x27\x2e\x3a\x49\x31\xc2\x94\x9f\xf5\x82\x34\x88\xb4\x32\x5b\x94\x6d\x1b\xd6\xac\x75\xdd\xbc\x78\xbb\x42\xe8\xeb\x1d\xd8\xc3\x0d\xcb\xe1\x1c\x23\x36\xed\x56\xc6\x36\xb0\x1f\xcd\xb5\xa2\x7d\xb6\x23\x56\x5f\x1c\x84\x4c\x1f\xbd\xf2\x54\x32\xa5\xa9\x91\x9e\xc8\x22\x3d\x6f\x78\x79\x0d\x49\xc3\x18\xb8\x6a\x11\x44\x58\x7e\x7c\x2c\xa3\x4e\x4a\x13\xb3\x48\x5c\x9c\xba\xcb\x8e\xc4\x33\x71\xa7\x18\xdc\x42\x15\x1f\xaa\xfb\x98\xd0\xb8\x0f\x92\x55\x0d\x65\x65\xe1\x60\x4f\xbd\x52\x2e\xd6\x82\xff\x39\xc1\xf2\xf6\xb0\xab\xf6\x1e\x38\xc3\xf0\x19\x93\xa7\x76\xef\x5c\xfd\xaa\x4a\xe2\xd1\xbe\x26\x9d\x7b\x18\x33\x2e\x0a\xf0\x6f\xaf\x1f\x32\x63\x92\xd4\xee\xbd\x54\x81\xec\x89\x30\xe3\x2f\x15\x52\xcf\x8a\x67\x77\x74\xd0\x51\xec\x62\x4d\x55\xb7\xc8\x7d\xfe\x78\xd4\x32\x4f\xa1\x1a\xd8\x6a\xeb\xda\x08\xde\x66\x0d\xb0\xc6\x86\x68\xdb\xa5\xfa\x2f\x2b\xef\x52\x87\xf7\x38\x5d\x5d\x3f\x52\xf8\xd6\xfb\xaa\x8d\x07\x9b\xaa\x39\x0e\x22\x17\x7a\xd3\x85\x46\x50\xeb\xe7\xb6\xa1\xd0\xb7\x7a\x71\x36\x41\x3a\x5f\x80\xb3\x61\xe5\x2a\xe5\x23\x0a\x6b\x24\xa6\xf5\x9f\xe0\x8e\x6f\xf0\x21\xdc\xdf\xfa\x2a\xd5\xe3\x9c\xdc\xd3\x64\x28\xf2\x74\x73\x11\xe9\x82\x14\xba\xbd\x8e\x36\xb0\xb7\x30\xb7\xfb\x95\x7a\x2a\x59\xdb\x3c\xbf\x60\x45\x1e\x41\x25\x32\x16\x79\xeb\xb3\x1e\xf4\x26\xf8\x42\x41\x6b\x00\x09\x6b\xf8\x5c\x8d\x02\x13\x6d\x0f\x85\xb9\xcf\x0c\xf1\xb3\xc6\x8a\x63\x38\x6d\xe0\xaf\x8b\x6f\xaa\x29\xa4\x5a\x49\x7f\x63\x9c\x5d\x83\x18\xf5\x82\xcf\x2f\x2d\xb8\xf8\xe8\x7d\x59\xfd\x18\xef\xb9\x9a\x53\x0b\x84\xfd\x18\xa6\x1c\x3f\x5f\x53\xd6\x6d\xf5\xd9\x89\x19\x02\x34\x7a\x0b\xed\xa6\x88\x2b\x2f\x97\x34\x2e\xfd\x71\xa8\xdb\x5b\x42\xf9\x94\x8a\xa5\xa6\x76\xf6\x90\x0f\x82\x73\x42\x87\xe8\x0e\x16\x8e\x26\xdf\x84\xb5\x8c\xdf\xac\x1b\xfa\x6f\x88\xa1\x96\xf2\x03\xd8\x36\xd0\x0b\x99\xda\xa8\xf2\x0c\x7a\xa9\x16\xac\x48\x29\x60\x90\x0a\xb1\x4c\x51\x65\xda\xad\x86\xf0\xbb\x0b\x22\x33\x17\x1e\xd3\xf0\xb9\x50\x2a\xf4\x93\xec\x5d\x1d\xae\xf5\xe8\x6b\xae\x94\x0b\xfd\x2d\x18\x81\x25\xcd\x78\xde\xda\x61\xee\x6c\xb2\x23\x2a\x77\x8c\x59\xff\xab\x4b\x24\x4c\x72\xfe\x24\x70\x75\x11\x07\xaa\x5b\x48\x5d\x23\xdf\x67\x69\xd1\x1d\xd9\x45\xf2\xc8\x4b\xa4\xf2\xda\x09\x56\x39\xfe\xdf\xd2\xbe\x4d\x3d\x2f\xdc\x70\x83\xc1\xc8\x5f\x37\x20\x13\xb2\x5c\xf3\xc4\x46\x4f\x8f\x86\x9a\xf3\xcc\x30\x30\xd3\x9d\x45\x0f\xae\xd2\xa4\x07\xae\xfc\x05\x5e\xd7\xb5\x1b\xf4\xab\x68\xab\x5d\xc6\x27\x12\xb8\x48\xaa\x5c\xce\x77\xd8\x50\xc9\x09\x5d\xc7\xb4\xb2\x5b\x58\xb3\x57\x2e\xce\x6e\xcf\x61\x50\x56\x8c\x27\x97\x1b\xab\xd5\x54\xb9\xb4\x8c\xa0\x3a\xba\x7c\x5c\x23\x28\x41\x67\x5b\xce\x7a\x92\x23\x4a\x17\xaf\xc0\xa8\x8a\x06\xea\xcb\x28\x26\x2c\x54\xd5\x87\xc7\x33\xf0\x83\xb4\x08\xa2\xa2\xfd\x4b\x80\x19\x28\x7e\x88\x9c\x70\x2d\x0d\x4c\x26\x66\xb2\x6a\x22\x51\xc6\xdb\x88\x59\x76\xd8\x5b\xdb\x99\x5a\x47\xd4\x7e\xbe\x05\xee\x91\x71\x90\x56\x16\x96\x01\x35\xa5\x44\x66\x3a\x68\xb2\xb4\xd5\x85\x74\x55\xee\x42\x87\x72\x68\x59\x3c\x7a\x94\x4e\x11\x50\xca\x50\x8a\xb2\xec\x58\x67\x69\xff\xe7\x6c\x31\xf1\x73\xef\xcd\x00\x1c\xb8\x2e\xfb\xeb\x59\x82\x7a\xe2\x0f\x57\x73\x14\x31\x3c\x75\xf8\xb6\xad\xc2\xcd\xe4\x3d\xd3\x43\x58\x10\x5f\x25\x93\x61\x88\xd1\x87\xce\x17\xab\x30\xb2\xc5\xf0\x22\x3a\x96\xbb\x35\xac\x78\x4a\x01\x41\x6b\xa9\x25\x0e\xd5\x07\x93\xb3\xfa\x45\x3b\x16\x35\xa5\x3d\xac\xda\x37\x9d\xfd\xd5\xf9\x93\xe2\x19\xc1\x69\x11\x26\xc8\xa1\xa5\xdb\x21\xf3\xe8\xc3\x7e\xe1\x22\x4e\xe6\x58\xd7\xa6\x51\xc0\xd3\x24\x4c\xc4\x6b\xd9\x9c\xbc\xfa\xe1\x6d\xe7\x08\x3b\x04\x7a\xb3\x19\xa2\x88\x6d\x86\x2d\xae\xfc\x43\xc7\x55\xc6\xd1\x04\xa9\xcd\xb4\xbd\x83\xd4\x46\xe1\x78\xdb\xaa\x0e\xed\xe1\x75\x6f\xf8\x09\xb8\x3f\xad\xfd\x9a\x89\xf0\xdc\xa4\xf8\xfb\xd4\x31\x4b\xd2\xb1\xc0\x43\x04\x0f\xdc\x85\xdd\x75\xc3\x8a\x45\xf1\x1e\x6c\xe9\x3e\xe0\x2e\x70\x40\xf5\x8e\x51\x3d\x6f\x27\xb3\xe7\xe0\x26\x6f\x3d\x73\xa1\xfb\xe6\x7d\x0f\x0f\xbe\xc3\xa1\x25\x7b\xd5\x51\xfb\x86\x9e\xaf\xb6\xd6\x53\x32\xae\xf0\xaa\x26\x3e\xf5\x49\x3f\x88\x32\xb3\x8e\x4c\x3e\x81\x85\xa3\x44\x70\x4b\x7c\x0c\xc6\xe2\xb9\xe2\x2c\x7c\x44\xd7\xca\xbb\x3c\xa8\x21\x69\x88\x55\xfb\xc3\xf4\x90\xbe\x44\x77\x67\x8d\x0f\xa8\xa9\x4a\x4a\xba\x29\xb9\xe1\xf5\x4b\x13\x73\xd0\xfe\x6a\x7e\xb6\xc6\xf0\x95\x94\x34\x03\xa0\xf3\x3d\xa2\x96\xe3\x5c\x68\x90\xd1\x4f\x41\x90\x18\xe0\x19\x76\x22\xae\xba\x87\xd8\xe8\x24\x57\x48\xa9\x39\x24\x76\xca\xc7\x8b\x0d\x57\x7d\x5a\x92\xa6\x30\x93\x1d\x3c\xe1\x0e\x28\xc8\x0c\xc4\xa0\x15\xaf\xe3\xe2\x76\xc3\x89\x5e\xb2\x98\x44\x23\xce\x7c\x96\x87\x94\xce\x0e\xf7\x47\x25\x5b\x86\x49\x49\x5b\xb5\x16\xa2\xf8\x38\xab\x1c\xd8\x60\xae\xa0\x97\x28\x2c\xc4\xf8\x20\x30\x05\x60\x1d\xc7\xac\x3e\xe1\xbb\xaa\x9b\xca\xe1\xe6\xbd\xfd\xd4\x58\x35\x9b\xf8\x26\x56\xd9\xb1\x16\x40\xba\x41\xba\xcd\x56\xf6\x1c\x29\xdd\x1d\xc2\xe5\x82\xeb\x7f\x70\xfa\x0c\xaa\x95\x1d\x3d\xa5\xec\xdb\xef\x5f\x6c\xe9\x0f\x22\x80\xa3\x0d\x54\x77\x85\x20\x1f\xdd\xb9\xc8\xc2\x1a\xb9\x47\x59\x64\x64\x5d\xdd\x4b\x1b\xc8\xa1\xd2\xc2\x25\xd2\x41\x60\xde\x83\x57\xf5\xa5\x05\x75\x4b\xc8\xbd\xae\x75\xfd\x61\xc6\x71\x53\x4d\x0b\xb1\x19\xd2\x48\xcc\x73\xa8\x4f\xc6\xd3\x30\xcc\x27\x0d\x03\xf8\xdf\x7f\xcd\x58\xe2\xac\xd5\x32\x69\xaf\xb3\x2c\xee\x8b\x7a\x18\x63\x82\x4d\x95\xeb\x4a\xd0\xb4\x88\x03\xb1\x29\xb7\x1c\xc7\xb9\xe3\x07\xca\x73\xe9\x03\x72\xc1\x08\xe2\x53\x90\x4a\xf8\xab\xdb\xa6\x3e\x09\x92\x07\xb4\xce\x23\xa5\xf3\xd2\xc9\xbc\x1d\x6f\xdf\x3e\x64\x8d\xfb\x69\x49\xa6\xed\x71\x3b\x9d\x21\x71\xb1\xa8\x0c\x5d\xc8\x3b\xef\x53\x8a\x89\x40\xb7\x0c\x49\xf1\x55\xb7\x11\xc9\xf0\xd5\x60\x2f\xe2\x52\xc0\x19\xfa\x72\xbd\xa4\x8a\x76\x73\x9e\x8d\xc3\x31\xeb\x1a\x50\x0b\x2c\xba\x89\x74\xa8\x6f\xe3\x8c\xd9\x22\x5b\xaf\x0e\x6f\xe8\x8e\x6e\xfd\x5e\x52\x4c\xd4\x4e\x2c\x2f\x92\x39\xb1\xef\xa4\x06\x70\x7a\xdd\x31\x71\xdc\x56\xfd\xa3\x34\x88\xbe\xb2\xf3\x70\x8f\xc3\xff\xbb\x01\x17\xe4\x48\xd0\xe2\x1d\x9e\xf1\x7f\x78\x4d\x8c\x75\xc3\x23\xd6\x9a\xf5\x0c\xb6\xe4\x73\xa6\x73\xa7\x1b\xec\x94\xe5\x15\x86\xb1\xed\xc4\xc6\x54\xb1\x8e\x6d\xa0\xf8\xe2\x60\xfc\xc4\x90\xc4\x60\x05\xb5\x29\x8a\x63\x94\xf9\x3d\x9b\xb9\x65\x62\xe4\x01\x59\x1f\x55\x76\x85\x81\xc7\xcd\x92\x08\x6f\x7e\x75\x87\x39\x54\x28\xa0\x62\x2d\x8b\x86\x13\x39\x93\x7c\xae\x07\x19\x0d\xd0\x5b\x54\x55\xb1\xea\xe8\x80\x5e\x20\x6f\x50\x38\x50\x0f\xfd\x3d\x9c\x6c\xec\x4a\x69\x7e\xa3\x40\x5c\x05\x7e\x05\xbd\xf1\x14\x04\x73\x3f\x73\x93\x6c\x9c\xe1\x78\x18\x3a\x98\xdc\x1a\x00\x1e\x4c\x66\xb3\xbd\xa6\xbe\x07\x4b\xd3\xa2\x34\x6f\x1b\xb9\x89\xdc\x91\x59\x5d\xb2\xa8\x70\x60\x1b\x5c\xa1\x65\x16\xf3\xc4\xa6\xda\x88\x34\xde\xfd\x89\x32\xd1\xce\xcb\xb5\x68\xef\xe5\x18\x0b\x63\xa9\x5f\x2b\xdd\x8b\x7c\xb4\xdb\x5b\xde\x24\x58\xd7\xc4\x93\x4e\x46\x04\xb2\x50\x4e\xe1\xcc\x00\x34\x1b\x36\x6b\x48\xa6\x04\x15\xad\x65\x17\xbf\xf4\xd7\x3c\xcd\x51\xc5\xbd\x3c\xa3\xd4\x5d\x07\x0f\x33\x8c\x0a\x42\x10\x90\x2c\xf2\xa9\xf7\x3d\x82\xed\x12\x33\x79\x49\x3d\x40\xd8\x29\x62\xab\x17\xd1\xdb\x6c\xf5\xe8\x6a\xee\xb5\x35\xff\x95\x74\x8e\x2d\x74\xd1\x71\x22\x07\x75\x0a\xfb\xbd\x9f\x9a\x59\x3d\xad\x4d\x23\xdc\x93\x8c\xd4\x71\xd9\x79\x58\x15\x2a\x51\x29\x4e\xba\xbd\x88\x31\xc6\xa1\x13\x76\x58\x2d\x31\x4c\x38\xd0\xba\xbc\xca\x9b\xdb\x94\x7a\xfc\xfb\x68\x02\x3e\x35\x5e\xd0\xc3\xea\xe2\x75\x11\x7d\xf5\xad\xbb\x74\x27\xbe\x83\x67\x79\xe7\x29\xed\x77\x55\x95\x9f\x17\x05\x06\x1f\xd4\xd5\xf6\x75\x7d\xcd\xef\x32\x79\x86\xc4\x8d\x3b\x0a\x06\xfe\x89\x50\x5c\x27\xc1\xb1\xf0\x44\x79\xbd\xa2\x16\x7b\x64\x4f\x70\xae\x01\xcd\xd7\x99\x73\x98\x02\x13\x54\x1f\xba\x34\xf0\x39\x32\x76\xce\x5b\x33\x36\xf1\x12\x83\x69\x92\x81\xff\xbb\x38\xfd\xcf\x8a\x40\x1a\x8a\x30\x4f\xed\x09\x47\xe1\xcd\xc0\x73\xba\x6d\x9f\xb0\x21\x39\x02\x64\x9b\xc6\xb5\xaa\x87\x74\x84\xdc\x6b\xd8\x82\x3f\x25\x03\x44\x04\x18\x39\x52\x8d\x0f\x8a\x62\x03\x1f\x51\xbe\xdb\xf9\x12\x85\x9c\xf7\x5c\xff\xb7\x27\x31\x65\xb1\x5d\x79\xd0\x8b\xd5\x2b\x55\xa4\xea\x00\xbd\x06\x61\x1c\xb0\x3c\xac\xd4\x6a\x96\xdb\xfe\xa8\x3f\x65\x00\x90\x8f\xe3\x4a\xe3\x38\xc2\xb2\x45\xba\x39\xc0\xcc\x6a\x1e\xd0\xa9\x21\x06\x5d\x4c\x11\xbf\x9b\x67\x9a\x71\x22\x1c\xb8\xb3\x2d\x02\x27\xc0\x5d\xa8\xe6\xf6\x49\xfb\x84\xb5\x6f\x50\x95\x13\x0d\x51\xca\xae\x06\x49\x9a\x5e\x52\xae\x93\xbf\xba\x2f\x49\x17\xca\x8f\x2c\xd3\xdd\x90\x5a\xd6\xcb\x26\x0d\x10\xf7\xbb\x18\x07\x12\x95\x62\x56\xab\x72\x95\x9f\xe6\x7f\xdb\x04\x56\x66\xa1\x61\xe2\x54\xa7\x1c\xbd\x67\x8c\xd8\x29\x39\x21\x58\x26\x19\xb3\x5c\x56\x68\xc1\x07\x7d\x27\x96\x99\x9a\xdb\x77\xfc\x50\xda\x78\xd1\xb6\x27\x9f\xbf\x4e\xf8\xee\xf9\xf3\xf3\xe7\x25\x15\x96\xe0\xa7\x18\x60\x54\xe0\x66\x70\x66\xc9\xfb\x62\xa1\xb2\xb0\x64\x56\x86\xc5\xae\xeb\x7d\xae\x8a\xe4\x82\xae\x28\x2f\xb8\xce\x16\x59\x5d\xa6\x2d\x94\x44\xa8\x0e\x17\x69\xd4\xfd\xd5\x16\x5d\x0b\xc2\x26\x1e\x68\xcc\xab\xad\x26\x10\xad\x7e\xe3\x12\x9a\x44\x77\x71\xf5\xba\x9a\xe4\x71\xf4\xbb\xd1\xa0\x8a\x5b\xac\x95\x7c\xb5\xd8\x8a\xab\xf4\xe0\xa3\x74\xc9\x6d\xb3\xd3\x5b\x85\x2f\x34\x71\x25\x7a\x21\x77\xd2\xec\x6f\x5e\xba\x40\x86\xde\x44\x2e\x3d\x73\xa1\xd5\x13\xa2\x93\xc1\xf9\x71\x2c\xe5\x07\x7a\x64\x68\xc6\x48\x86\xf9\x85\x82\x6b\x03\xf9\xb9\x6f\x30\xb7\xfb\xec\x25\xb2\x4d\x17\x87\x07\x97\x06\x06\x5f\xc1\x8d\x06\x6d\x87\x2c\xb5\x5e\x17\x76\x6e\xc4\x67\xac\x7e\x06\x81\x71\xf7\x26\x2e\x5c\x0c\xdf\xb4\x2f\xaa\x29\xa0\x52\x11\xdd\x66\x0e\xda\xc0\x80\x4d\x0d\x0a\x84\xd1\xd3\xa6\x57\x2f\x44\x50\x45\x87\x75\xf0\x01\xb7\xd7\x24\x42\x84\xfc\x2e\x38\xa1\xa8\x79\x23\x1a\xd2\x44\x8b\x77\x4a\x84\x5c\x53\x30\x3e\x25\xe3\xb2\x16\x89\x23\x56\x1c\xad\xd8\x4c\x2f\xc8\x9b\x3d\x57\xab\xb2\xae\x6e\xa6\xdd\x0a\x6e\x39\xf4\x60\xd3\xf0\x81\x3b\x7b\x09\x48\xe9\x27\x36\xb7\x5d\x55\xca\x1c\xd1\x46\x18\x15\xc8\xae\x92\x0c\x86\xff\xe1\x8b\x43\x7e\xfd\xfe\xd7\xbb\x8b\x3f\x78\xfc\xf1\x98\x1f\x1c\xe8\x61\x10\x12\x11\x73\x40\xe0\x5b\x1d\x0e\x10\x9f\xd1\x68\xda\xc8\x51\xbb\x0e\xeb\x3c\x92\xb2\xcb\xd3\xa7\x50\xd7\x84\xf5\x2e\x58\x56\x2c\xd3\x3d\x74\x21\xf8\x2c\x93\x8d\x2d\x01\x0a\xb4\xc6\xb0\x3e\xdb\xdb\x8c\x08\x40\x81\x37\xae\xca\xea\x74\x61\x43\x39\x0a\x6e\x3e\x0a\xa3\xed\x11\xd9\xe1\x46\xc3\x6d\xad\x70\xa1\xb1\x68\x24\x6b\xee\xb4\xfe\x0b\x3b\x6c\x7e\x1a\x5d\x06\xb9\x4a\x21\x76\x01\xbf\xbc\xe7\xa8\x7a\x3d\x0a\xa1\x24\x92\x2c\x72\x14\xe2\xb1\xab\xc7\xdb\x75\xd7\xb2\x5a\x01\x3f\x05\xb9\x6a\xc3\xe9\x89\xb4\xf5\xe6\xcd\x56\x1e\xcc\x78\x17\xb1\xc7\xe7\xfd\x3a\x53\xc7\x19\xe5\x57\x90\xd5\xf6\xfb\xf7\x90\xd9\xaf\x50\x7d\x35\x9d\x25\x08\xd4\x93\xf7\x09\xbf\x42\x29\x0e\x7b\x58\x84\xb6\xfe\x7b\xbc\x8e\xb9\x5e\x1d\x89\x13\xab\x93\x98\xef\x77\x30\x35\x0e\x20\xf6\x43\x27\x3a\x50\x91\xb8\x71\x29\x47\x9e\x36\xe0\x2f\x9e\x76\xcd\xf8\x42\xe3\xf7\x21\x19\x96\x5c\xe0\xf5\x17\x32\xea\x21\x52\x14\x62\x1e\xa9\xb1\x62\xe4\x27\x84\x93\x8e\xc7\x19\xa5\xe4\x41\x77\x3d\x53\x6b\x5d\x0d\xf1\x2a\x03\x62\x08\x9d\xb1\xd4\xc2\x14\xca\x93\x07\x3e\x87\xaf\x5a\x31\x04\xb9\x35\x31\xef\x1a\x13\x13\xd1\x9f\x43\x5b\x87\x56\x27\x79\xe2\xad\xe0\xe3\x07\x69\xa7\x18\xf0\xb3\xe3\x4a\x23\xdf\x85\x7d\x5a\xa9\x97\x2f\xa5\xda\x96\x8c\xd6\x18\xf9\xcc\x86\xc7\x89\x1f\xb8\xcf\xfb\x84\xc9\xab\x99\x7a\x5e\x33\xe4\x92\xe8\xe8\x0b\x0d\x6f\xda\x72\xc3\x5c\x7c\xba\xe3\x10\x5d\x69\xa0\xfd\xbb\x29\x4f\xbb\x7a\x96\xf7\x1b\x06\x51\x1d\x97\xc0\x5a\x99\xc7\xed\x1a\xda\xa7\x2d\xb2\x3b\xb7\x5b\x25\x69\x7d\x99\x48\x31\xef\xc6\x88\x71\xb8\xf0\xfd\x9c\xde\xeb\x83\x20\xbf\xe5\x30\x8a\x95\xf8\xaa\x9d\x96\xdc\x1a\x0d\x0f\x63\x30\x3a\x35\x57\xc1\x88\x9a\xfc\x06\x8b\x68\xb5\x11\xe6\x74\x79\x7b\xbb\x51\x11\x48\x8c\x82\x6c\x12\x21\x32\xa6\x26\x2b\xc6\x2a\x58\x43\xd0\x55\x15\x2d\x23\x11\x35\x6b\x0a\xde\x53\x68\x01\xe0\x29\xb3\x75\xe9\x68\x3e\x13\x37\x27\x4b\xc4\xf1\x17\x2b\x59\x43\xf3\xe6\xca\x20\x44\x99\x9f\x87\x28\x99\x82\x6f\xae\x73\x5f\xb6\xd3\x85\xb3\x64\x1e\x54\x0d\xf5\x33\xe2\x64\x0a\x3a\x2e\xec\x4c\x65\x0f\x8c\xf2\x43\x37\x87\x9c\x0f\x61\x5b\x84\x13\x9f\x25\x7d\x05\xe8\xad\x6a\x0e\xfc\x06\x49\x8e\x34\xfb\x8c\xad\xd0\x2d\xa6\x93\x7c\x1f\x08\x51\x60\xdb\xa5\x90\xda\x17\x94\xc1\x91\x9b\x96\x8f\x45\xa3\x1c\xb4\x3d\x88\x6f\xa3\x2b\xd3\x22\x62\xa7\x17\x53\x8c\xa7\x66\xa2\xa6\x0c\xc3\xc4\x59\x43\x93\x36\x8a\xee\x2b\xad\x67\x7a\xcf\x43\x6c\xfa\xc9\x55\xa5\xb0\x31\x92\x96\xb2\x2e\xb1\x2f\xaa\x85\x93\x00\x9a\x04\xb5\x9e\x0e\x5b\x7c\x30\xfe\xf0\xfb\x64\xf7\x40\xf8\xf8\x26\x88\x0c\x2e\x79\x6f\xab\x79\x80\xd2\xcc\x2c\xcc\x71\x40\xa1\x43\x90\x8d\x20\x32\x1d\xe6\x1c\x43\x91\x81\x95\x4f\x11\x21\x22\x9e\x4a\x3e\xb4\xca\x68\xc8\x6b\xa6\x9b\x4a\xed\x45\x5b\x69\xd7\xf0\x7e\x35\x62\xea\xf6\x8e\xa1\x27\x8e\x6d\x76\x81\x7e\xda\xe7\x61\xb0\xde\x3c\x57\x9b\x38\x31\x04\x56\xb7\x88\xc2\x76\x90\x2d\x49\x0c\x71\x2d\x0e\xa4\x29\x70\x23\x6a\x74\xea\xaf\x70\x66\x9a\xf8\x15\x0d\x4b\xb5\x5e\xd3\x0c\x44\xff\x05\x14\x5c\xe7\x7a\xeb\x88\x8d\x11\xcf\x26\xb3\x17\x0b\x69\xf0\xd6\xe8\xea\x89\xf0\x0a\x69\x90\x74\x66\xb6\xb2\x52\xa3\x31\x5d\xff\x94\x51\xd1\xac\xae\x96\x0d\xff\x03\xc1\x0c\x7e\x6b\xb1\x78\x8c\xb9\xaa\x2a\x50\x20\x4a\x22\xe7\x67\x15\x8b\x2a\x56\xed\xbd\x6c\x45\x32\xfa\x35\xf1\x1d\xa9\x74\x86\x00\xdf\xc2\x1e\xaa\xd9\x09\x58\x0f\x93\x17\x53\x72\x06\x40\xf3\xf9\x9c\x61\xed\xb9\x00\x73\xb4\xf3\xd3\x28\xe8\xcc\xe6\x55\xac\xbe\x81\x15\x2c\x30\x9e\x93\xb4\x10\x36\x18\x44\xda\xf3\xc0\x10\xed\x7c\x65\x4b\xb5\x6f\xf3\xa1\xb5\xb5\xcb\x1b\x08\x02\x83\x49\xba\x17\x6c\xa7\x9c\xdc\xc9\x88\xd1\x3d\x4d\xcd\x91\xb8\xc8\xb1\x4a\x7a\x48\xf6\x80\x58\x1a\x40\xc7\xab\x12\x64\x56\xcd\xc6\x78\x0b\xdb\xda\x9d\x78\x10\x6e\xec\x24\xb4\x60\xfc\x1a\x98\xcc\x4c\x9d\x34\xad\xf4\x85\xad\x30\x68\x63\xcd\x51\x81\x95\x2b\x42\x5c\x10\xdc\xb3\x04\xee\x5a\x1c\x38\x55\xd1\xc2\x43\x02\x9b\x8d\x07\xea\x51\xdb\xb7\x0c\xc2\x73\x7f\x6d\x27\x90\x55\xd4\x78\xd1\x8d\x56\x9a\xc1\x44\xe8\xf3\x28\x8d\xf2\x68\xea\x5e\xe4\xf1\xe6\xc2\xa4\xbb\x1f\xa0\x24\x8a\x59\xaa\x13\x99\xbf\x4d\x11\x08\x36\x99\x94\xaf\x1d\xba\x7c\x03\x8b\xb8\x9d\xdf\x65\x27\xe1\x1e\x51\xfc\x7c\x77\x5b\x10\xae\xb1\x70\x7b\xb5\x50\xcf\x0b\x3f\x89\x1b\xb1\x75\x1b\x2a\x29\xba\xe7\x57\x4b\xa4\xda\x86\x7c\x54\xb7\x4f\x84\x11\x56\xc4\x16\xf9\xa0\x88\x8b\x87\xd2\x2c\xd4\xb2\x77\x93\x32\x92\x89\x84\x73\x95\xd7\xce\x06\x46\x96\xbe\x10\xa7\xc1\xe2\x88\xad\xb3\x31\x98\x56\x94\x6e\x12\x8b\x2b\x8e\x7d\xa6\x76\xf4\x84\x9d\xe3\x80\x07\x8a\x08\xa7\x01\x9a\x0f\xac\x4d\x65\xf3\x32\x4f\x7e\xc4\x56\x1a\x19\xe5\x96\x55\x33\xe2\x58\xa0\xfb\xc3\x5e\xf0\x78\xf2\xce\x4f\x58\x06\xbe\xed\x23\x17\x7a\xa7\xa1\xfe\x54\xaa\x9d\x1b\x7e\xf2\x2b\xaa\x0f\x9f\x17\x9f\x1f\x99\xd3\x47\x02\xec\x4d\xbf\x1a\xf0\xd8\x6f\x20\xa0\x8f\xde\x86\xe8\x1e\x60\x48\xf9\xbf\xe6\x5d\x0f\xbd\xbf\x18\xff\x53\x3c\xa1\x13\x3c\x5d\xbe\xa9\x53\x8c\x38\x86\x28\xe9\x68\x42\xa8\x92\x82\x29\xc8\x4a\xa8\x53\xd0\x88\xdd\x14\x10\xa5\x90\xfc\x7b\xb7\x7a\x15\xef\xb9\xad\x65\xbf\xdb\x6b\xa9\x52\xbb\xff\x16\x6c\x71\x16\x2f\xbc\x5b\x37\xea\xfb\x53\xb7\x87\xa5\x5f\xc8\x09\x45\xd5\xc3\x54\x05\xd5\x1a\x5f\xa3\xab\x3c\xce\xf6\xf3\x0c\x7f\x1d\xa9\x46\x28\xe6\x74\xc5\x6c\xa3\x9a\xb1\xad\xb1\x84\x9c\x20\xff\xdb\xaa\x96\x65\x72\xd9\xe8\xd3\x58\xa0\x52\x17\x12\x6e\x63\xd3\x57\x9c\x88\xce\x40\x2a\x20\xb5\x12\x7a\x2b\x3d\x8d\xac\x51\xd9\xad\x53\xf7\x0a\x06\xb0\xc9\x5f\x3a\x01\x0f\x78\x43\x5b\x90\x3f\x8c\x8b\x1f\x89\x93\x3f\x2d\x9e\xfd\x10\xdf\xef\xff\x32\x7e\xe7\xe3\xfc\xd1\x93\x05\x4d\xf3\x24\x16\xca\xa5\xa3\x60\xd7\x23\xa9\xff\xba\x9f\xd1\xd1\xed\x3c\x35\x20\x54\xde\xfb\x15\x9c\x98\x80\xc7\xdf\x09\x9b\x3e\xc5\xfa\x30\x36\x22\xbf\xac\xcf\x1b\xf2\x9a\x1c\x17\x56\x54\x56\x87\xf0\x02\x68\x4b\x7a\x7a\x55\xae\xc5\xf5\x5d\x53\xb4\xe4\xd5\xf0\x5a\xb5\x90\x56\x26\x96\x2a\x8c\xd0\xe2\xeb\x80\xfa\x16\xe3\x4e\xca\x55\xd3\x53\x76\x20\xdb\x95\x96\x8b\x4c\x42\xd6\x34\xe9\x3f\xb9\x5e\x0b\x5e\x63\x97\x56\x6f\xc6\xef\xd2\xae\x2e\x5b\xb0\xd9\x64\x10\x00\xa1\xda\x95\x53\x5a\xca\xbe\xe9\x2e\x94\x30\x9b\xa8\xa0\x48\x55\x62\x6d\x36\xca\x4a\x22\xd3\x55\xf4\xf2\xbb\x34\x38\x95\x0b\x0c\x52\x58\x25\x61\x76\x24\x9b\x31\x09\x08\x79\x77\xa5\x25\xfe\xcc\x9f\x22\xfa\x24\x16\x47\x0c\x8a\x5a\xf9\x21\x76\xfc\x73\xfc\xb6\xe4\x09\xb2\x9e\x34\x71\x55\x78\x12\x4e\xa1\x48\x00\x1b\xd4\x35\x06\x57\x86\x36\x67\xe1\x7d\xf5\xa4\x46\x4a\x5e\x25\x78\x3f\xdc\xad\xe7\x64\xd4\xbe\x12\x2a\x3b\x91\xf6\x1d\xdf\x57\xd0\x34\x8b\xec\x8d\x0e\x39\x9a\xf3\x78\xe6\xdf\x4d\xfb\xd4\xa8\x03\x8b\x54\x2e\xfc\x50\xc2\xe6\x6a\x02\x8d\xc0\xa6\x0b\x55\x8f\x02\x9d\x5c\x2a\x64\xfe\x21\xd1\xa4\x45\x29\x6d\xc0\x30\xb6\xb8\x26\x8f\xcd\xb2\xbb\xc1\xd6\x7e\x49\xea\x72\x57\x47\x1e\xb8\xd0\x5d\x68\x9a\x43\x72\xf7\x04\x81\x9b\x5d\xd4\x84\xcd\xda\xd4\x4f\x73\x13\x2e\xf3\xd0\x3e\x65\xbd\x7a\x98\xb0\x3e\x77\xdf\x1d\x20\x8d\xfe\xcb\x15\x25\x9d\x35\xd8\x44\x99\x77\xd9\x47\x87\xf9\xf1\x46\x88\x2b\x3a\x09\xca\x99\x28\xaf\xbc\xb6\x3d\xbf\x79\x9e\xd3\xca\xe9\x93\xba\xaa\x93\xa8\x60\xc9\xba\xf4\x31\x87\x2e\xcc\x1a\x8f\x2e\x26\xa9\x10\xa1\xc2\x50\x81\xee\x3a\x4f\x44\x55\x58\xe5\xcc\xce\x34\x45\xbe\xdd\x1b\x9c\x7a\xac\x86\xe4\xc8\x9b\x5e\x40\x1a\x73\xe9\xb1\x28\x8e\x18\xe0\xbe\x95\x1b\x49\x54\x81\xee\x50\xdd\x3c\xe3\xef\x86\x77\x56\x5c\x10\x67\xf8\xf6\xad\xc9\x71\x86\xd5\x8a\xf2\x77\x43\xd5\x1a\x01\x08\xc8\x61\xed\x9e\x79\x8c\x07\xd6\x32\x9d\x22\xb4\xee\x79\xc8\x8a\x98\xef\x34\xe6\x46\x72\xff\xeb\x7b\x3b\x9e\x8e\x12\xe3\x02\xd5\xea\x6b\x1a\x09\x2e\x49\x31\x60\x0b\x49\x2d\x55\xb3\xe7\xe1\x3c\x12\xdd\x97\x7a\xa3\xd4\xbe\x28\x4a\x19\x2e\xd5\x96\xd0\x7a\x54\x56\x11\x67\x9a\x74\x8e\x95\x5d\x88\xc1\x33\x74\xba\x16\xbf\x7b\x41\xe5\x2b\xb3\xe9\x66\x6d\x64\x90\x51\xef\x30\xc6\xeb\x06\xcb\xb5\x9f\xed\x2d\x41\x3f\x62\x45\x2f\xcb\x29\x06\xed\xde\x3a\xf8\x5e\x27\xba\xc9\x2a\x99\xd6\x5e\xf9\x22\xf9\xf8\x1c\x88\xcf\xe4\xe6\x9b\xfd\x6b\x73\x2c\xd1\x92\x70\xb6\xb7\xfb\x80\x27\x3d\x52\xac\x85\xae\x66\xa0\xd1\xb2\x36\xfa\x28\xa5\xd2\x32\x9e\x6a\xa8\x02\x7e\x17\x1f\x4f\xae\x4e\x26\x54\x9b\x35\x39\xc8\x19\x22\x8c\x8d\x11\x05\xef\xca\x1f\xcf\xb2\x1b\xd9\x6f\x9b\x18\xb3\x15\x55\x6d\x64\xe6\xcd\xe1\xcd\xf0\xa5\xd6\x63\x05\xe1\xc6\x64\x8e\x00\x03\xbc\xf7\x16\xd7\x35\x81\xa7\xed\xe0\x67\x99\x1b\xf5\x74\x08\x98\xd9\x4e\x25\xc6\xc7\x95\x4c\xf5\x3d\x52\x91\xfe\xe5\x81\x5d\x3a\x4d\xe7\x18\xcb\x13\x3d\xd0\xeb\xc0\xd9\x40\xc4\x8c\x03\x60\x7b\x24\xf2\xb6\xd4\x0d\x02\x53\xbb\xf0\x95\xc4\x4c\xc0\x6b\xff\x97\x3d\x9a\xa2\xf7\x16\x6c\x94\x3f\x2f\xc8\xd1\x35\x32\xc4\x3f\x64\x77\x18\x37\xf6\xad\x3d\xbf\x3d\x16\x92\x42\x41\xe9\xef\xac\x9c\x7c\xe8\x61\x59\xdf\x99\x7f\x95\xe1\xdd\x46\xbe\x9c\x18\x60\x79\x20\xa7\x07\x69\x2c\xfb\xc4\x93\xa0\x0f\x4f\xac\x83\xa9\x03\x79\x6c\xd6\x31\x1b\xcb\xa0\xf6\x63\x27\xa5\x31\x8c\x2b\x46\xe0\x62\xc9\xc4\x86\x16\x74\x95\x7f\xc9\x1c\x15\xd9\x23\x9a\xb7\xcd\x90\xd4\xd0\xc5\x3b\x9b\xaf\xc1\x75\xbb\xbd\x82\xc7\x76\xfa\x43\xc2\xd0\xa0\x1e\xab\xd3\x06\x1f\xbb\x0d\x3c\x1f\xfd\x46\x18\x49\x08\x0e\xb0\x03\x09\x1e\x85\x99\x07\xea\x32\xfa\x04\xf7\x7c\x53\x7a\x0f\x7e\xcc\xe8\xe4\x59\xcf\xcb\xc1\x95\x0e\x15\xbc\xcb\xb4\x5a\xa7\xe3\xff\x77\x8e\xf9\xaf\x63\x79\x94\x79\xfd\xd6\xa4\xd7\xbc\x4a\x5f\x45\xef\x07\xbc\xe7\x5c\x9a\x6b\x4c\x60\x0d\x7d\x19\xed\x59\xd1\x52\x08\x69\x0f\x44\x51\xa3\x15\x37\x2b\x66\x8e\xa6\x5f\x1c\x79\x8c\x7e\xe2\xc6\xaa\xdc\x5f\x5c\x1c\xfe\x14\x0f\x78\xa4\x8a\x5a\xdf\x73\x87\xa3\xa4\x92\x93\x0b\x58\x41\x39\x26\x63\xd9\x66\x72\x87\x92\x61\x3a\x5d\xf5\x7b\xb5\xd6\x0f\xd9\x5f\xa3\x03\x95\x3e\x5a\x45\x6d\xc0\x1e\x7c\x24\x43\x2e\xed\x3a\x62\x5b\x9c\xdb\xbe\xc6\xd1\x03\x97\x2b\xc5\x6e\xef\xb4\x17\xc3\x93\x19\x2d\x1d\xac\xd0\x0e\xf6\xac\xcd\x3d\x7e\xc5\xc4\xad\xce\x4d\x01\xdb\x75\x06\xd5\x23\x2a\x65\x82\xa8\x4a\x69\xbf\x39\xe2\x38\x7d\xf7\xae\xec\x3f\x22\x4c\x09\x7b\x28\xf4\x58\x72\xa3\x33\x25\x28\x6b\xea\xa6\x2e\xc6\x56\xa7\x30\xb1\x14\x75\x3a\x5e\xe2\xbd\x0c\x17\x1d\xe9\x59\x3d\x55\x4e\x03\x71\x98\x72\x18\xef\x81\xb7\x5d\xfd\x07\x32\x97\xb2\x9a\x8c\xc4\x2c\xec\x66\x58\xd9\xf2\xee\xb1\x3c\x24\x02\x7d\x1e\x5e\xe5\xbd\x38\xc6\xb2\xe3\x90\xd4\xd7\x07\xf7\xe0\x31\x7e\x11\xbe\xf9\x6f\x76\x2b\x5f\xf6\x3c\x70\xae\xc9\x7b\xa6\x18\xea\xef\xab\x28\x55\x75\x40\x0a\x4b\x77\xe6\x25\xf4\xcc\x5a\x13\x67\x42\x5f\x27\x72\x0f\x78\xaa\xcf\x47\x0f\x37\x65\xbf\x75\x65\x22\x85\xe7\x24\x82\x2f\x85\x4b\x44\x75\xc4\x5e\x65\x72\xc3\x95\x2c\x64\xc4\x4a\x52\xe7\xef\xbd\x2a\x75\x40\x89\x62\xd2\x4e\x21\x8a\xdc\x0a\x8d\xe7\xe6\xaf\x12\xa8\x27\xb1\x6d\xe5\xf0\xa9\x0d\x39\xcc\x7f\x4b\xee\x95\x8f\x5a\x33\xcb\xbf\xb6\x31\x56\x5b\x07\xe1\x0f\x33\x32\x0c\xa8\xc7\x2b\x21\x5d\xdf\x42\x05\x2a\xe5\x14\x20\x21\x29\x53\x5c\xd3\x77\xba\xea\x55\xbf\xa1\x54\x8e\x63\xe5\x3a\xce\x1b\x33\x69\x66\x9d\x9e\xb4\x11\x94\x1d\x73\x71\xc8\x1f\xa2\xe4\xd9\x0b\x4d\x17\xc5\x59\x9c\x68\x52\x98\x63\x30\xff\x27\x2c\x91\x39\x53\xbc\x0c\xb8\x2e\x92\xe0\x88\xce\x02\xa5\x7d\x4b\x56\xfc\xfe\x9f\x90\x59\x62\x42\x23\x79\x75\x96\xbc\x14\xe1\x43\xd8\xc4\x2e\xde\xbd\x53\x3c\x3b\xe5\x0f\xe0\x4c\x33\xc6\xec\x24\x12\xb3\xcf\x03\x44\x37\x7e\xdd\xb2\x3c\xf5\x28\xfb\x58\x28\xab\xd0\xce\x01\xef\xae\x8a\xb0\x5b\x7d\x09\x28\xe4\x33\x53\x94\xe6\x3c\xe1\xd2\x5f\xaa\xee\x55\x9c\x92\xfb\xa2\xa2\x79\x80\x7c\x5f\x74\x55\x1c\xca\xdf\x69\x83\x2c\x81\xca\x1f\x4e\xe9\xa7\x2a\xc0\xe6\x87\xc3\x35\xe1\x95\x77\xf2\x57\x55\xaf\x58\xe7\x1f\x0b\x76\xe8\x1b\x1f\x2d\x98\xb4\xad\x0a\x52\x18\xbc\xa3\xfd\x34\x7e\xa1\x46\xae\x2e\xd6\x01\xc5\xd0\x77\xcd\x87\x32\x75\xe6\x83\x85\x22\xe7\x67\x53\x1d\xbe\x9c\xb7\xf9\x75\xb2\xb7\xc9\x03\x40\xdc\x04\x1b\xa6\x2a\x96\x39\x69\x9e\x80\xdd\x4c\x98\xaf\x7a\xdb\x48\x61\x01\xa2\x0a\x0a\xc7\xab\x84\xf3\xaa\xb3\x93\x8d\x01\xe8\x38\x32\x10\x4d\xc8\x58\xa2\x88\xdd\xc1\x2d\xf2\x92\x78\xd7\x9a\xfb\xac\x6e\x18\xbb\x0c\xd2\x77\x8f\xbf\xda\x39\x10\x55\xf9\x9f\xb6\x1e\xb7\x05\x5b\x50\x90\x85\x5a\x81\xb3\x4b\x6f\xfb\xf0\x46\x48\x7b\x76\x7f\x3e\x50\xee\x46\xd8\xe1\xac\x53\x25\x4e\x48\xe5\xb6\xca\x05\xb2\x23\xfe\xb5\xbd\xbc\x60\xb7\x70\x6a\x35\xff\x16\xd1\xbf\xa6\x94\xef\xa3\xb8\x72\x2a\x56\x34\x17\x95\x7f\xd5\x5a\x3e\xa0\x62\x4c\x26\xdc\x3c\xc6\xaf\x7d\x3f\x38\xf5\x85\xbf\xe2\xf3\x91\x4c\x74\x5e\x19\xc1\xd7\x1c\x4e\x0b\xff\x6c\xce\xfd\xe4\x7d\x2d\x91\x71\x06\x89\xb8\xec\x6e\x4f\xf6\xe6\xa8\xf3\x47\xca\x7d\x7d\x2d\xbc\xfc\x3b\x72\x53\xd4\x09\x45\xef\x90\xbf\xfd\xdd\x48\x9d\x4d\x53\xf5\x16\xe9\x42\x3e\x91\x2d\xec\xe7\xf0\x54\xf9\x2c\x88\xff\xc6\x14\xc6\x65\x59\x41\x89\x10\x3b\x40\x53\x85\x0f\x2a\xea\x81\xa1\xea\xd3\x77\xd8\xbc\x29\x4a\xb8\x07\x67\x3e\x1c\x64\x5d\xa5\xca\xc7\x2a\xba\x00\x4f\x44\x23\x2d\x09\xf2\x6f\x61\x79\xd0\x3b\x28\x25\xa6\xe2\xee\x67\xc5\xe4\x87\xb8\xf6\x51\x6b\x54\xe0\x4c\x3d\xd9\x8e\xa8\x1b\x8c\xb2\xe1\xd8\x99\xcd\x4d\xad\xdd\x44\x59\xff\x69\x68\xf6\x23\x08\xba\x2d\x2d\x0e\xe3\x47\x60\xe2\x47\x94\xf3\xa7\x90\xf4\xa7\x92\xf6\x59\x95\x0e\xc6\x32\xba\x2e\xb8\x1d\x9a\xb5\xe0\x9d\xf7\x69\xa2\x71\x64\x56\xd1\x26\x90\xce\xc8\xa3\x05\x1f\xfb\x4b\x7e\x80\x15\x6f\xbf\xc2\xac\x9a\xd5\x81\x66\x30\x85\x76\x90\x50\xeb\x4f\xf0\x08\xeb\x98\xb5\xc9\x6a\xe1\x4a\x22\xaf\xbf\x90\x82\xfe\xa5\xa2\x85\xc3\xf7\x41\x23\xb1\xd7\xef\x62\xac\x57\x39\x03\x38\x7a\x12\x5f\xe2\x31\xb5\xb6\x9e\xb7\x55\x80\x5b\x7e\x63\x4a\x11\xe2\xe1\xf9\x4e\x03\x92\xd2\x0b\xa8\xa4\xd1\xd4\x82\xe9\x2f\xca\xaa\x71\x94\xa2\x5e\xa7\x9d\x71\xc6\xda\x6a\x0c\x75\x83\x6e\xd3\x8e\xbb\xd1\x78\x45\xd3\x82\xeb\x22\xb7\x70\x9e\x70\x34\x9f\xca\xfe\x7b\x22\xfc\x6d\x05\xe6\xde\x81\xc3\xbb\x07\x75\x2b\xf7\xc7\x33\x95\x61\xbd\x88\x10\x2c\x97\x8f\x7b\xfc\x10\x90\x64\xa4\xf1\x1c\xdc\x5b\xf9\x45\x74\x6e\xd1\x38\x3b\xc5\x58\x52\xdc\xbe\xdf\x23\x07\xe1\x55\x5d\x75\xe1\x6e\xdc\xf9\xef\xc3\x99\x7a\x39\x9f\xc7\xd6\x5b\xca\xd5\xfd\xb8\x31\xef\x68\xe5\x60\xcc\x3d\xf3\x6b\x32\x8e\xfb\xe2\xcb\xb6\x52\xf2\xc7\xd6\x7d\x65\x5b\xfa\x5f\x34\xa1\x2a\xa2\x9f\x1c\xa6\x03\x74\x53\x23\x37\xd7\x41\x2e\x25\x4a\xc5\xf2\xab\x80\x79\xad\x5c\x52\xeb\x3c\x01\xd8\xec\x90\x45\x01\xce\xdd\x63\x77\xdd\x4f\x4e\x74\xd0\x33\x82\x45\x0f\x3f\x13\x0a\x9f\x61\xb4\x62\x7c\x14\x77\x13\x71\xb7\x4d\x18\x28\x37\x45\xcd\xa6\x2f\xc5\x18\xe9\x61\xc8\x4f\x4b\xa9\x83\xe9\x52\xa8\xc6\x9e\xc8\x34\xcf\x2e\x4e\x3b\x75\x46\x05\x0e\xe4\x60\xcf\xc9\x30\x91\xd5\x9c\x3e\x84\xff\x9f\x4b\xc4\xce\xc0\x09\xf3\xf7\xab\xac\x24\x4f\x34\xda\x82\x6e\x75\xdb\x5a\xd3\x82\x76\x6a\x39\x21\xd0\x6a\x03\x47\x21\x08\xf2\x27\xb7\x20\xf2\xdc\x5a\x3d\x29\x9c\x2d\x28\x5c\xd5\x3e\x60\x55\x28\x7f\x76\xea\x9a\x3a\xd5\xa4\xcb\x6f\x6f\xb6\xd9\x9b\xd5\xde\xba\xac\x53\xa9\x60\x8c\x3a\x5e\xa5\xc6\x06\xca\x65\xd3\x15\x02\xd8\xb5\xd4\xa5\x96\x3a\x48\xe8\x5f\x8b\xad\x33\x54\x11\xbd\x86\xe4\xa8\x23\x39\xc7\xd1\xc1\x4a\x64\xe4\x4d\xe3\x52\xb7\x21\x4a\x24\x66\xaf\xfd\xb3\x6b\x41\xc9\xd8\xdd\x89\x3f\xab\x9f\x36\xb8\x0a\xea\x6a\xca\xad\x1c\x2f\xce\x09\xda\x8a\x71\x0f\xb8\x52\x26\x4e\xb0\x20\x5f\x89\xf9\x4a\x73\xdc\xe7\xe5\x23\xd2\x50\x21\x95\x35\x88\xbb\xf9\x6b\xfb\xe2\x62\x59\x22\x3f\xc8\x49\x2d\x31\x4a\x05\x2e\x76\x0f\xac\x52\x05\x2d\xaa\xa6\xb6\x2c\x70\x70\x86\xa8\x67\xc3\xcc\x9c\xcf\x74\x9f\x55\x2a\x5d\x4f\x70\x66\x4f\xea\x7f\x83\x40\x06\xeb\x30\xbe\x9a\x52\x24\x89\xb8\x23\xd3\x79\x3a\xe2\x91\x9f\x97\xd6\xb1\xa2\x8d\x17\x33\xc4\xe9\x55\x23\x35\x8f\x4c\x19\x1c\x14\x6e\xd2\x2d\xc9\x62\xe4\xde\xf3\xab\x0f\x28\x59\x63\x0e\x7c\xd2\xf2\xda\xe8\xb8\x91\x55\x2b\x1d\xad\x74\xde\x64\x17\xb0\x28\xcb\x2d\x5e\x27\xc1\x85\x49\x6c\x21\x10\xee\x8c\xae\x27\x44\xed\xf7\xb0\x1a\x41\x28\xf9\xd0\xc6\x21\xf7\xce\x81\x20\x73\x55\x80\x8c\x80\x4f\x8d\xc9\x37\x32\xc5\x33\xdb\x38\xfb\x9f\x14\xd8\x86\xa5\x75\x28\xa7\x54\x66\x7e\x75\x70\xac\xd7\x3c\x58\x48\x45\x0d\xa9\x7b\x45\x1f\x61\xa5\xd4\xa5\xc4\x45\x7b\xb2\xbb\xd9\x2a\x7c\x8c\x1b\xc5\x3e\x09\xc1\xd7\xdc\x2d\x30\x57\xfc\x09\x1c\xf6\xe2\x4c\x8c\x6c\x56\x64\x30\x12\x7b\x06\x74\x9e\xba\x56\x12\x2b\xad\x92\x39\xf8\xec\xd6\xf6\xc4\x1c\x54\x3b\x7d\xd2\x46\x24\x68\x32\x55\x2c\xd7\xab\xee\x30\x88\x96\xe8\x46\x48\x9f\xc6\x44\xa4\x96\xb1\x8d\xf5\xb3\x87\xd1\x93\x17\xb8\x7e\xb2\x4d\x45\xd2\x96\x89\x63\x34\xd1\xfe\x2b\xce\x10\x8a\x7b\xa9\xc2\x06\xe4\xba\x5e\xf7\xd1\x33\x5a\x91\xfb\xd2\x0b\xe2\x9e\x6d\x68\xc7\xf6\xd4\x19\xac\x28\x97\xec\x21\xba\x6a\xb9\xfc\x2e\x93\xab\xf8\xe0\x64\x2f\x9c\x1b\x30\x73\xb6\x5a\x82\xc7\xe3\x70\x8e\xd1\xf6\xc7\xad\x63\xcb\xe6\x6f\x92\x11\xaa\xf8\x59\x6d\xf4\x04\x03\x22\xa2\x49\xea\x0c\x06\x99\xb6\x07\x58\xaa\x97\xfd\x5c\x20\x25\xe4\xe5\xd5\x22\x3a\x60\x37\xcd\x01\x3a\x2b\x56\x73\x7f\x52\xb5\xec\x22\x17\x7a\xba\xfc\x9e\x20\x97\x34\x1a\x53\x71\x22\x74\x2f\x45\x15\xe3\x9b\xf3\xa2\x25\xaf\xac\xda\x37\x13\xbc\x2e\x2b\x03\x10\x49\x0d\x32\xb1\x82\x42\x4b\x7f\x35\x99\x72\xa9\x20\xe6\xd3\x45\xbb\x36\xd1\x7f\x5a\x25\xa2\x2a\x1b\xe2\x2f\x82\xe9\x68\xda\xf1\x6a\xe7\xa8\x7a\x62\x55\x1d\x97\xfe\x82\x35\x97\x5e\x93\x35\x76\xdf\x0b\xf0\x09\x8d\x21\x2a\x86\x22\x46\x84\xe7\xbb\xf6\xec\xb2\x69\x6f\xb2\x42\x4b\x26\xc4\x13\x00\xe3\x65\x91\x1d\xc4\x41\x3b\x4a\x95\x38\xc8\xe3\xba\x18\x54\x49\x69\x24\x30\x51\xff\xec\x5a\xac\x45\xba\x99\x43\xce\xb6\x94\x73\xa9\xc7\x98\x7c\x45\x4b\xee\x9f\x3b\x0a\x99\xa9\xcc\x86\xc3\xcf\xef\x10\x39\x4a\x8d\x07\x97\x8c\xc7\x74\xaa\x61\xa3\x92\x45\x3e\xd9\x21\x3f\x72\x57\xca\x8a\xd0\x7d\x6c\x32\xa7\x91\x0b\xb4\x35\x6f\xae\x12\x77\x5e\x12\x22\x2a\xf4\x32\xc9\x74\x2d\xf1\x28\x69\xe5\xa8\xe9\x74\xef\x7b\xae\x30\x58\xb9\xd1\xf8\x8c\xf3\x7f\xbb\xe7\x6b\x5c\xd7\xf6\x70\xc5\x83\xf5\x0b\xb8\x6a\x42\x6e\x43\x5c\x21\xf8\xf9\x19\xae\xb7\x6b\x57\x4e\x36\x07\x1d\x21\x56\x14\x3a\x58\x06\x13\x89\x44\x87\xf2\x0a\xd6\xaa\x25\x7d\x1c\x32\xde\x55\xb3\x00\xa3\xe5\x81\x09\x2b\x7f\xc6\xff\x5d\xa8\x04\x58\xd2\x13\x21\xaa\xa9\x41\xde\x33\x92\x00\x8c\xc7\x98\x28\x31\x4e\xae\x55\x85\x1a\x84\x59\xc0\xaf\xa0\x3c\x89\x04\x4a\x76\x47\x34\x81\x99\x61\x75\x25\x22\x5d\x22\x68\xb6\xc4\xe9\xd7\x2c\x19\x1f\xfe\x52\xa0\x74\x21\x99\xf1\x1a\x1c\x42\x9a\x09\xf1\xcb\x5b\x66\x5f\x60\x94\xa6\x38\x9e\xcd\xca\xd9\xf4\x9e\x01\xd4\xeb\x03\xce\x80\x7a\x16\xa5\x8e\x54\x6a\x45\x03\x7a\x88\x28\xaa\x90\xe0\x4b\x31\xc9\xee\xdb\xdf\x1a\x55\x59\xc9\x68\x2d\x2b\x09\x7e\x78\x37\x2b\x39\x92\x91\xcc\xc3\xf5\xa0\xb3\x54\x31\xca\x7e\x63\x4a\x7c\x72\x52\x2e\x1f\xf8\xe6\x7d\xb5\xe3\x27\xb7\x97\x30\x26\xaf\xef\xf7\xa5\x50\x0a\x9a\xcb\x6d\xa7\xaa\x3d\x18\xb3\x42\x49\xcb\xa0\x29\xe7\xd0\x20\xa6\x56\xbb\xb4\xee\x0b\x5a\x67\x72\x3a\x8b\x0b\x94\x53\xac\xfd\x11\xc3\x28\x29\x97\x37\xff\x35\x8e\x9a\xe8\xa1\x47\x56\xc5\x62\x4d\xa5\xb8\xad\x3d\x6b\x3b\xea\xd2\x65\x37\x1b\x2d\x2b\x9a\xae\x41\xaa\xbf\xb0\x92\x28\xd2\xe4\x1c\x31\xa3\x4e\xb5\xcc\x62\xbd\xaf\xfc\xe5\x28\x3f\x0f\x10\x15\x4f\x4a\x30\x36\xf4\x34\x91\x78\xcc\xa8\x66\x74\xfb\x04\x92\x56\x7b\x73\x15\xae\xb4\x56\x2c\xfc\x9b\xa6\x09\xe2\x95\xd6\x5e\xa8\x65\xa5\x07\x95\xa8\x54\x77\xd8\x42\x15\xb4\xa0\x93\x3a\x47\x67\x55\x13\x09\xc6\x0a\x2a\xbb\x81\x0d\x0f\xda\x7c\xcb\x4d\x76\x5e\x52\xae\xc9\xf3\x00\x66\xe0\xc1\xa6\x7f\xeb\x24\xc8\xef\x1d\x0f\x3a\x23\x79\x28\x96\x2d\x60\xa6\xdd\x53\x8a\x4f\x88\xc8\x7d\x2f\xd5\xfe\x78\x86\x35\x97\x1c\xf6\xe1\x90\x8b\xda\xbc\xad\x33\x54\x76\x4e\xac\x54\xcd\xb6\x39\xc9\x40\x45\xa1\x0c\xe2\xe4\xa9\x6d\xae\xaa\x3a\x8b\x51\x5a\xa5\x3f\x92\xec\x8f\x35\x69\x53\xe8\x34\x48\xc6\xdd\xac\x42\xe3\x07\x40\xa9\xe3\x85\x8d\x90\x8a\xdc\x54\x28\xaf\x58\xe2\xaf\x9f\xf4\x5a\x6a\x7b\x24\x32\x06\x1c\x67\x56\x38\xd8\x1d\x90\x34\x19\xf5\x54\x54\x93\x6c\xf3\x3a\x42\x51\xe4\xa6\xdc\x46\x3a\xbc\x76\xb1\xd6\x65\x08\xf6\x84\x6e\x0f\xbe\xa5\x2f\x25\x6e\xbf\xe5\x47\x85\xff\xf7\x2b\x2e\x09\x73\x3f\xc6\x03\x83\xd6\x6e\x0a\xf2\x40\xed\x90\xc8\x8f\x7f\xe4\x60\x56\x13\x3e\x4b\x98\x9d\x9e\x4b\x79\x18\xf2\xde\xd3\xe3\x8f\x3d\x7a\xfe\x58\xe7\xf3\xc7\x5a\x2f\x1f\x7b\xf0\xe9\x85\xaf\xbe\x30\x95\x32\x1a\x4d\xec\x19\x1b\x7f\xe0\x82\x69\xb9\xf4\xa8\xfb\x6c\x1d\xe7\x52\x47\xdb\xad\xeb\x2f\x15\x45\x17\x94\x5f\x7e\x3c\xfd\x87\x14\xe8\xf9\x9e\x85\xaa\x65\x9a\xed\x80\xbb\x93\xe9\xef\xd5\x63\x8d\xab\x66\x8c\x71\x71\xd4\x4e\x49\xe4\xa2\xbe\x6c\x75\xee\xe7\xb2\x7b\x9f\x46\x3d\x0a\x8d\x13\xe3\xb7\xea\x65\xc0\xba\xa4\x48\x76\xf9\x34\x60\xa7\xe8\xd1\xb5\xb0\x04\xd4\x91\xa4\x50\x2e\x41\x48\xbf\xea\x88\xd1\x32\x23\x4b\x67\xcc\xb1\x44\xa0\x2e\x5a\x13\x99\x83\xcc\x56\x65\xab\xfa\xdc\x4d\xc7\xa0\x7f\xf3\xdd\xdd\xd4\xaa\x7c\x35\xed\x7f\x5c\xce\xad\x8c\x44\xa9\xc2\xda\x07\x85\xa3\xe3\xcd\xa3\xb7\x24\x9f\xfb\x13\x4e\xf3\x92\x22\x05\x02\x44\x7e\x89\xe4\x41\x42\xfc\xa9\xb7\x97\x2b\xb6\x34\xd0\x73\x5b\x44\xb7\xaf\x40\xac\x24\x27\x88\x9f\x76\x1e\x70\x35\xa0\xb9\x42\xff\x3d\x30\xa3\x8b\x07\x47\x27\x49\xa9\x92\xf7\x08\x96\xfc\x48\xc0\x92\x3b\xe6\x2c\xb9\xe5\x84\x25\x3f\x20\x82\x25\xbf\x12\xee\x6d\xbd\xc8\xe2\xfe\x93\x67\x44\x1a\x4a\x8a\xff\x42\x15\x76\xd6\x27\x93\x4e\x32\xb8\x13\x93\x2c\xe2\x0b\x6e\xae\xc2\xb1\xc3\x76\x62\x01\xd2\x48\xfb\xea\x06\xb4\xe6\x84\xa7\xe3\x61\xbf\xab\x5a\xc5\xe4\x3c\xe0\xae\x32\xb8\x16\xb7\x0c\x1b\x04\x10\x24\x0b\x3f\x3d\x6c\xec\xec\xa3\x3c\x56\xed\xcc\x3a\x8a\xc1\xfc\xae\xe7\x23\xcf\x67\xc5\x76\x8f\x33\x74\xaa\xce\x09\xe3\xe1\x94\x81\xc5\xe1\xba\x12\xb2\x50\xf6\xc6\x38\x72\x3c\x0e\xa2\x6a\xfe\xa3\x31\x6c\x25\x7f\xb2\x9a\x2b\x39\x54\x9d\xdc\x9b\x5a\xe6\x2e\x52\xd7\xf6\x01\xcd\x96\x41\x2e\x71\x85\x72\x6a\x30\xa4\x55\x4e\xee\x1c\xca\xf5\xcd\xd4\x08\xec\xbf\x3b\x1b\x0e\xdc\xd3\xaa\xb0\xa0\xb0\x41\x0e\x8f\xaa\xe8\x19\xe4\x5d\x77\x4a\x4f\xfe\x65\x5e\x63\x0b\xea\x6a\xe3\xc6\x78\xda\xe2\x4e\xfb\x8e\x28\xff\xae\x03\x26\x40\x22\x3b\x01\xd5\x4c\xee\x93\x2f\xec\x62\x3c\x3e\x69\x90\xb9\xca\xdb\xf7\x1e\xaf\xbd\x98\xa3\xb3\x08\xd2\x3f\x38\x80\x04\xdc\x78\xe0\xa1\xc2\x74\x7d\x9c\xc2\x24\x44\x07\xa8\xfe\x83\x4e\xac\xf3\xdb\x2d\xea\x13\xdb\xb7\x28\x6c\x9a\x63\x26\x0c\x62\x83\x56\x5b\x1f\x3b\x2c\x70\xff\xbf\x4b\xa0\xc1\x0d\x60\x02\x74\x53\x16\x80\x57\x4b\xaa\x07\x11\x67\x4d\x18\xae\x82\x3d\x49\x24\xff\xde\x23\xd7\x63\x67\xce\x2c\x3f\xda\xe4\x38\x58\x12\xc8\x1e\x7e\x3a\x84\xbe\xa8\xdc\x80\x30\x5a\xe2\xdd\x76\xa8\x1f\x06\x96\x57\xd5\x09\xff\x39\x18\xdf\x1f\xc4\xca\x7c\x2e\xc8\xf8\x73\xe3\xbb\x38\x90\xdb\xef\x7c\x17\xad\x26\x09\x2c\x26\x6b\x03\xd3\x8e\xe9\x21\xda\x60\x12\x38\xe2\xfc\x66\xdb\xff\x9f\x1a\xcf\x5e\x9d\x0f\x45\xde\xdc\x6a\x59\x15\x2e\xfc\xc6\x31\x3a\xaf\xb7\x2b\xa6\xe1\xb4\x92\x6d\x47\xe0\x94\x88\xeb\xae\x94\xb5\xd5\xa6\x0b\xa7\x3c\xbc\xb2\xce\xfd\xba\x34\xaf\xb8\xa6\x40\x15\x72\xd3\x6d\xdb\x59\x3f\x3d\x44\x31\x25\x1b\xad\x9e\x13\x81\x07\x73\x04\x72\xdc\xed\x16\x30\x1c\xf0\x64\x47\x62\x7d\x8e\xc1\x02\xc2\xac\xc2\x8c\x75\x5c\x8c\x72\xde\x9f\xc8\x15\xee\x0e\x20\x8d\x72\x6a\x39\x12\xd4\x9a\xd7\x96\xc6\xae\x62\x88\x92\x14\xaa\x4c\x91\x57\x91\x11\x74\xca\x74\x03\x73\x6e\x42\x3f\x8a\xaa\x05\x65\x6e\xd5\xef\x28\xdc\xd5\x34\x06\x08\x7f\x5c\x97\xf4\xb6\xff\x25\xc4\x48\x9f\x5f\x4d\x2e\xde\xb2\x71\xdc\xcc\xf3\xb8\xff\x84\x02\x0d\x70\x4f\x1c\x9c\x89\x75\x93\x3e\xd7\x78\xa5\x1f\xd7\x54\xc1\x9f\xc9\x53\x58\x77\x0e\x21\xcd\xee\xc9\x3f\xe1\x0f\xe9\x49\x9a\x07\x59\xb3\x3d\x17\xb3\x8e\xe4\xa5\x01\x1d\x92\xac\x78\x21\xad\x5d\x2b\xb3\x92\x1f\xd6\x95\x3f\x09\xc2\x91\x0b\x68\xfa\x4c\x56\xc8\xc3\x5f\xd7\xf6\xeb\x70\xaa\x15\x2a\x9b\x56\xcf\x02\xd4\x8d\xc7\x96\x84\x0e\x1b\x34\x12\x2b\x8f\xf9\x51\x56\xf2\x68\x9d\x59\x19\x90\xe6\x48\xba\x41\x50\x07\xa2\x6b\x65\x7d\xa7\x26\x7e\x82\x7e\x0a\x12\x0b\x78\xfd\xbd\xb0\x17\x1e\xa9\x9b\x90\xb2\x14\x2b\x22\xbb\xd4\x96\xfb\x84\x54\x65\xe0\xef\xf7\x86\x93\xf3\xde\x38\x88\xef\xc8\x60\x1a\xd3\x56\xc7\xfc\xa4\xd8\xcc\x3f\x79\x5a\x65\x47\x3b\x69\x8a\x70\x18\x01\xee\x1c\xe2\x9e\x65\xde\xa2\x26\xe1\xda\xba\x51\xd6\xbb\x24\xbb\x23\x7b\x7c\xbd\x3f\x67\xa4\xae\x95\x3d\x1e\x95\x59\xee\x3c\xd6\x48\xd2\x2b\xb0\x9a\x94\x2b\x69\x05\x54\xc2\x55\xe4\xda\x56\x06\xb8\xb1\x23\x3b\xd5\xb2\xb0\x29\x9f\x1b\xaa\x4a\x12\x49\xfb\x6b\xe3\xf6\xe8\x85\xf5\xda\x45\xef\x75\xdf\x9f\x4e\xf6\x2a\xd5\xbc\x6b\xd2\xee\xe3\x7b\x4d\x79\xc8\x1e\x60\x59\xcb\x32\xa2\x12\x5d\x1e\x02\x2e\xba\xda\x42\x80\xa5\xc1\xbb\xfc\x45\x15\x78\xe3\x71\xd2\xf8\xaa\x73\xd5\x75\x8b\x81\x21\xd9\x8f\xf5\x62\x55\xda\x56\x87\x76\x22\x10\xee\xe4\x47\x32\x33\x6d\x24\xde\x75\x2d\x6d\x04\x48\xac\x60\xfd\xbc\x28\x75\x14\xbf\xdc\x67\xf6\x45\x93\x58\xa3\x16\x4d\x3b\x5f\x8a\x8a\x6b\xe0\x2b\x98\x71\x12\xdb\x22\x22\x1c\x98\xe7\x3b\xf1\xfa\xc4\x8e\x3c\x71\x2e\x32\x33\xf9\x34\xb3\xb7\xbb\xef\xf8\x01\x0a\x18\xca\xa9\x1b\x94\x89\xf6\xf6\xc4\xf8\x92\x76\x45\xbb\x9a\x47\x4c\x23\x13\x0c\xab\x4b\x1c\x9b\x98\x2d\x5b\x5a\xf0\x06\x2b\x87\xf1\x72\x60\x93\x8e\x8c\x83\x33\xe0\x6f\xe1\xcc\x90\x8c\xcc\x98\x9f\xab\xcc\xc5\xa6\x0a\xd4\xb4\x1c\x79\x65\xcf\x1b\x20\x08\x25\x27\x19\xe4\x76\x4c\x3c\x8b\x77\x82\x73\x9b\x1e\x45\x16\xd2\x8b\xd3\xd8\xb9\x15\x7a\x26\xf4\xca\x5f\xcf\x98\x51\xf2\xc8\xc9\x3f\xda\x0d\x91\x19\x42\xd4\x50\x4d\xd2\xa5\xe1\x19\x1e\x40\x5d\x74\xeb\x0e\x77\x99\xed\x17\x38\xe7\x64\x5c\xf7\x73\x58\x96\xe7\xa0\x83\x06\xa9\xf7\xa9\xe7\x13\xbd\x3d\x85\x4a\x56\xfc\x1a\x84\xcd\x5d\xd4\x9b\x0a\xfd\x8d\x8f\x7d\x07\xe3\x99\x6c\x3e\x26\xa8\xbd\x72\x75\x1b\xd3\xe2\x41\x35\x1f\x78\xb3\x09\x9d\xf2\x43\x6c\x87\x7c\x30\x30\xda\x85\x5f\x81\x15\xf4\x4c\x73\xb4\x4a\x98\xb0\x98\x2a\x50\xfc\x13\xb6\x2b\x61\x43\x63\x47\xf9\xc2\x89\x7f\x58\x7b\xaf\x6b\x76\xca\x59\x74\xc4\xe5\xc5\x69\xaf\xdd\x1d\x47\x79\x61\x34\x90\xb2\x46\xd1\x77\x86\x00\x46\x2c\xc8\x8b\x77\xe0\x6a\xfd\x43\x07\x12\xe6\x51\x96\x3a\xb0\xe6\xc3\x89\xb0\x9e\x3e\xc5\x0e\x6f\x4d\xd8\xe3\x52\x96\xde\x92\xb4\xfa\x2e\x0b\x7a\x4b\xcf\x27\x8c\x24\xc7\x35\x94\xe9\x15\x42\x52\x4c\x97\xce\xa0\xca\x2a\x22\x78\xa5\x16\x56\xd4\x6c\xb5\xb1\x52\xb7\x7f\xa0\xd9\x00\x52\x52\x84\x58\x43\xc3\xbe\x80\x17\x23\x16\x28\xd2\x63\x25\xb9\x0c\x7d\x32\xa5\x2a\x78\x88\x47\x2f\xb0\x23\x2f\x6b\x1f\xb0\xa3\x2e\xf0\xfc\x35\x4b\x00\x2d\xea\x2c\x61\x40\x95\x26\x5e\x04\x90\x66\x49\x0b\xa8\x6b\xf8\x24\x6c\x6b\x27\x04\x32\x53\xc0\x7b\xc7\x47\x4d\x0c\xd0\x1e\x53\x3d\x71\x3d\xd1\xd7\x0e\xe5\xa5\x79\x10\xd8\x3b\xdc\x19\x87\x4f\xa3\xe1\xd9\xa6\x82\xd1\x73\x41\xb7\x23\x95\xcd\xe6\xde\xd4\x0f\xdc\xbb\xcd\xde\xc1\x93\x67\x9f\xe9\xb9\x44\xa5\x7f\x7a\xe0\x5d\xae\xcd\x0f\x0c\x49\x15\x04\x39\x44\xa2\x5d\xcc\xa7\x8a\xdb\xa2\x9d\x3c\x5c\x9c\xc7\xa1\x3f\x7d\x06\x5e\x3b\x7a\x0f\x70\xab\xa0\x9e\xd2\x88\x83\xf9\xba\x6a\x1e\xfd\x47\x6b\x3e\x99\x97\x8e\x93\x79\xee\x2f\x5e\x0f\x88\xd7\xdb\xa5\xa7\xcf\x32\xc4\x6c\x69\x59\x74\x1e\x29\x3f\xca\x97\x89\x42\x67\x8e\xd7\x84\xac\xef\x2a\x9b\x52\xb6\xfb\x09\x5c\xe5\x8c\x75\xbf\x58\x94\x21\xd4\x69\xc7\x45\xb7\x92\xb5\x1b\x6a\x10\x64\x93\x2b\x3c\xd2\x97\xef\xf5\x32\xa0\x2f\x57\xc1\x72\xeb\xf7\xf4\x7a\x68\xa6\x73\x6b\x0b\xe5\x8f\x70\x72\x3a\xca\xd5\x53\xcd\xf4\x92\xbd\xc6\x0c\x5b\xa5\xfe\xdc\xe3\xa4\x5e\xf9\x9b\x65\xb1\xfd\xb9\x09\xb1\x38\x69\x63\xed\x6d\xb6\x2b\x3e\x99\x62\xd1\xbe\xf4\x20\xcb\x4d\xe0\x8b\xfe\x4d\xf3\xdf\x55\xb1\xbe\x02\x70\xfb\xaf\xd1\x4e\x5f\x4a\xb8\xb0\xd0\x34\xf9\xa2\xed\x7d\x63\x4a\xb4\x27\xc2\xae\x1d\xff\x20\x05\xc7\xbe\x7c\x8c\x21\xa1\x59\x1d\x0f\xf7\xd1\x6d\xb7\x75\x21\x44\x81\x6c\x41\xb3\x5f\xcc\x92\xaa\x6f\xc0\x17\xf1\x2e\x5f\xa7\x1e\xad\x5b\x01\xdd\x3a\x79\xd0\xae\xc2\x51\x75\x52\x02\xbf\x22\x32\x93\x89\xa3\xaf\x16\xde\xe5\xc3\x0f\xfb\xf0\x6c\x8c\xd9\xd7\xe7\xca\x76\x7c\x0a\x81\xc7\x5e\x16\xde\x75\x4e\x32\x61\xbd\x17\x5e\xc0\x59\x9b\x3a\xb1\xa7\x05\xeb\xba\xb5\x43\xbe\xd7\x6e\x94\x7d\xf6\xd4\x5d\xed\x10\xf7\xc2\x0d\xb4\x8a\x3a\x60\x66\xc6\x3d\x7d\x9e\x5c\xbc\x73\x7c\x3a\x27\xf5\x98\x05\x30\xfc\x0a\x64\xec\x9c\x25\x33\x5f\x29\xf8\x61\xbc\x61\xea\x6b\x96\x78\x84\xeb\x3c\xdb\x29\x8a\x8b\xfd\x16\x89\x3a\x4d\xef\x52\x63\x41\x3e\x6c\x69\xff\x15\x63\x2d\x3a\xfd\xb0\x8e\xda\xa6\xfb\x3d\x30\x9b\x3e\x3b\xb6\x8c\xd9\xf4\x6e\x48\x46\xbe\x9a\x17\x63\x94\x89\xfc\x67\x37\xd4\xcc\xdc\x82\x58\xe6\x92\x88\xcf\x0b\xac\x72\x94\x26\xee\x89\xc0\xb9\xc8\x0a\x10\x88\x19\xf7\xae\x68\x6b\x5e\x33\x72\xdd\x79\xea\x5d\xd8\xae\x2a\x63\x11\x5a\xb0\x28\x4a\x0b\x96\x3b\x18\xe4\x34\x40\x2f\x6a\xe0\x12\x2b\x87\xbe\x15\xc9\x73\x08\xe8\xdc\x74\x69\xc5\x8b\xcc\x3c\x78\xd1\x5c\xf9\xe9\x76\x2c\x7e\xba\x42\x60\xfa\xd9\x77\xbd\x8a\x3e\x57\x9a\x7a\x81\x2e\x66\xd7\x8a\xe4\x77\xcf\xfe\x12\xa7\x66\x09\x1d\xd9\x30\xbc\x25\xba\x15\x85\x31\x02\x5a\xd1\x73\xdf\xd1\x2a\x3b\x58\x93\xb6\x04\x30\xe8\x0d\xfd\xac\x59\xe2\x68\xb7\x2b\x09\xa1\xb8\xe4\x10\x00\xb5\x1f\xd0\xc0\xd7\x04\x91\x37\x34\xe9\x65\x03\xef\x18\x24\x91\x71\x36\xe2\x81\x42\xa4\xe3\xa1\xe7\x8f\xf6\x80\xf5\x61\x03\x6d\x15\x4b\xb9\x9f\x83\xac\x58\x6f\x4d\xf4\x83\xe6\x3a\x91\x70\x58\x13\xb4\x30\x09\x2b\xee\xbb\x04\x9d\x98\xdc\x38\x17\xd0\x4a\xc4\x33\xea\xee\xc0\x15\x55\x17\xee\x7b\x2c\x7d\x60\x76\x05\xc5\xfb\x06\x30\xd2\x47\x28\x4e\x2e\xb7\x41\xd7\x47\x55\x00\x8b\xe6\x52\xbc\xd0\x6b\xa2\x70\xb4\xec\x11\x66\xdf\x38\x5d\xc2\x6c\x99\x37\x15\xad\x18\xd7\x19\x3e\x15\x15\xa1\x5b\xb7\x4b\xe2\x38\xe5\xe7\x1d\x94\xee\x5a\x59\x86\x04\x83\x41\x5e\x74\x2e\x51\xd7\xae\x0a\xf6\x38\x0d\x1d\xcd\x9e\xbf\xed\xfa\x6b\x12\xa4\x9a\xbe\x54\xf7\x71\x6c\x0b\x47\x89\xa1\x12\x52\x4e\x6a\xb1\x1d\xc0\x31\x50\x95\x9e\xd1\x39\x51\xbc\x62\xbd\x4b\xd5\x60\x26\x41\xaa\x9b\x52\x77\x93\xac\xbe\x37\x13\x6c\x12\x57\xc7\x2b\xaf\x87\x57\x5e\xbc\xf4\x4b\x78\xf6\x54\xd5\x36\x67\xc9\x7c\x7a\xba\xfa\x3f\x63\x6e\xbe\x81\xb0\xd2\x1b\x55\xbe\x12\x6d\xfb\x19\xe9\xb2\x85\x98\xce\x5d\x87\xa7\x6e\x41\x18\xde\xfa\xfa\xda\x8d\xd5\xb9\xbf\x8a\xc5\x51\xc5\x62\xbe\x4c\xae\xd8\x42\x1a\xc5\xf7\xed\x9f\x61\xb2\xc5\x6d\xdc\xbb\x9a\xdf\xfa\xf4\x63\xa2\x1b\xf0\x60\x70\x33\x6e\xbe\x1e\x96\xe8\xb3\xf8\xbb\xf7\xa7\x09\xc0\x66\x1e\x27\xbd\xc1\x6e\x16\x01\x68\x7e\xad\xd6\x60\xf5\x51\xba\xdd\x05\x03\x37\x97\x82\x49\xf1\x3c\x45\xae\x78\xe2\xb4\x9f\x7a\x93\xaa\x2a\x2f\xb4\x5f\x89\x7a\x55\xc1\x4b\xa5\x2b\x48\x80\xd0\x04\x00\x41\x43\xff\x83\xdf\x37\xbf\xc5\x38\xd2\x58\x06\x0c\xdf\xa8\x53\x6c\x8b\x35\x7c\x02\x88\xbf\xdd\x68\xeb\xe8\xcd\x27\x3b\xd9\x36\xd7\x3f\x7b\xbd\xf3\x9e\x13\x46\x9d\x60\x77\xab\x13\xb7\x20\x0c\xb6\x92\x92\xd1\xd3\xcc\xb0\x33\x79\x00\xd3\xa4\x6c\x2b\xf5\xb9\xc0\xdd\x6e\xf6\xb7\x86\xfd\x6d\xc1\xfb\x5d\x6c\x6f\xb8\xab\x57\x30\xee\x8d\x28\x70\xda\xbb\x3b\xcc\x77\x4a\x7f\xfc\xcb\xa4\x9d\x7f\x76\xef\x09\x00\x0e\xd8\x2d\x2e\xe0\x69\x4e\x43\xee\x29\x87\xc1\xd2\x91\xc6\x32\x7f\x69\x2f\xb8\xd3\x7a\x90\x9b\xec\x63\x1f\x58\xe1\x63\xd1\x45\x87\xa9\x95\xa9\x70\x5f\x06\xac\xb7\x8e\x65\x61\xad\x03\xbb\xa8\x0e\x7a\xef\x19\xb7\xb3\x22\x43\x8f\x19\xc4\x9c\x58\x08\x05\x8c\x95\x67\xce\x03\x19\x51\xa8\xf4\xac\x06\x65\x32\xf7\x01\x4f\x52\x44\xe2\x29\xf8\x86\x67\x4e\x05\x9e\x5c\x01\xda\x9e\xe2\xbe\xf3\xd8\xd8\x2e\x89\x89\x2d\x25\x1a\x48\xd5\xbd\xca\x4c\x88\x41\x57\x74\x43\x85\xab\x97\x84\x5f\x2e\xe8\x69\x10\x95\x64\xe4\x3b\xec\x79\x9b\x32\x09\x08\x46\x1a\xd6\x64\x40\xad\xef\x6c\x18\xee\x71\x1c\xfa\x0c\x9a\x77\x7b\xba\x9b\xb1\xd7\x3c\xa3\x47\x39\x9b\xc8\xc8\x4c\x2e\xef\x29\xd3\x9a\x74\xa3\x79\x9c\xc6\xeb\xf4\x9d\x5a\xbc\xf9\x85\xfe\x86\xd9\x3e\xd1\xda\xde\xa8\x93\xa6\xa1\xd9\x94\xd1\x94\x65\x3a\x21\xab\x98\xaa\x22\xe8\x64\x50\x47\x4f\x88\x91\x2b\xfb\xfa\xd1\x3a\x57\x15\x8a\x75\xf9\x3f\x61\xda\x20\xc3\x2f\xdc\x72\x6a\xff\x1f\x49\xd7\x5d\xb3\x7e\xdb\xcc\xe0\xea\xdc\x87\xca\xd6\x79\x9a\x0e\x93\x17\x82\xb0\x8c\x9a\x17\x85\xb9\xb5\xe6\x90\x51\xdd\x01\x47\x75\xa9\xf7\x07\x54\x1e\x3c\x84\x03\x4c\x09\xba\x5b\x46\x4b\xe4\x42\x3a\x37\x50\xe1\x5a\x5f\x7e\x18\x12\xcd\x89\x57\x26\x17\xc1\x67\xca\xef\x8e\x14\x12\x33\xfe\x56\x50\x87\x53\xc3\x38\x7e\xb0\x2e\xef\x76\xca\x57\xf1\xeb\xed\x81\x7b\x98\x7f\xdc\xb1\xbe\x0a\x4b\x96\x97\x06\x3c\x80\x63\x3b\x53\x49\x1d\x3d\xaa\x8f\x7a\x36\x19\x6c\x2a\xb2\x50\xd0\xc6\x89\xda\x8c\xb6\x51\x39\x06\x81\xa2\xdf\x12\xb8\x51\x98\x17\xc7\x53\xd5\xa0\x42\x66\x14\x6e\x00\x57\x81\xe4\x8f\x0e\xd1\x68\x98\x29\xb4\x88\x48\x5a\xf2\xea\x67\x11\xe2\x63\xef\x74\xeb\x92\x49\x1b\x8c\x07\x59\xad\xc5\xd3\x08\xa1\xce\xfa\xea\x0f\xbb\xe0\x74\xf8\xcc\x9b\xfb\xd5\x13\x9d\x27\x2f\x4f\x9e\x6f\x09\x76\xea\xca\x54\x5e\x50\x00\xe1\x05\x80\xef\xd0\xe4\x8d\x60\x1e\x44\xf6\x09\xf3\x58\xe6\xd0\x43\x93\x14\x82\x29\x18\xa9\x33\x32\xe2\x69\x06\x61\x44\x69\xd3\xfc\x11\xab\x95\x43\x61\xf0\x7e\x77\xc7\x87\x9d\xff\x37\xaf\xb4\x5a\x4c\x46\x17\xf6\x64\x23\x6e\x9b\x8c\x35\x79\x81\x6c\xc9\xe2\x24\x8c\x16\xcb\x84\x68\xd9\x3d\xcd\x17\x40\x8b\xc4\x69\x92\x17\x63\x7f\xbe\xb9\x1a\x14\xc4\x2b\xcb\xde\x28\xc1\x84\x9b\xfe\x4a\xf2\x20\x7c\x5a\x03\xc3\x38\xe1\x23\x5b\x8c\xa0\xa9\x30\xe5\x25\xf3\x1c\x90\x9e\xdb\x0f\x1c\x1d\xef\xfe\x68\xd3\x8e\x82\x99\x21\x05\xe9\x85\xe4\xc1\xb9\x2f\x51\x98\x3e\xef\x37\x4d\x7c\x76\xa1\x0a\x2e\x05\xf5\x0a\x87\xb1\xb1\xbb\x9b\x20\x60\xa6\xf0\xac\x2a\xa3\xf8\x5b\x90\x82\xa4\x22\xd2\xe6\x64\xb9\xb8\xe3\x7f\xa3\x26\xd7\xfd\x3a\x24\xd7\xa7\x54\xcc\x4f\x7b\x59\x14\x9c\x83\x95\x57\x30\x59\x98\x7a\x9e\x9c\xc5\x45\x6a\xfc\x52\x14\x80\x8e\xac\x0b\x6f\x99\x31\xf7\xb1\xb2\x07\x54\xd7\x64\x6a\xdf\x08\xc7\x2a\x72\x93\xb7\x12\x64\xa3\xea\xca\xd0\xad\xe5\x09\xd0\x59\x6c\x17\x1b\x13\xc4\x33\xd5\x92\x2c\x02\xdb\xd0\x05\x00\x83\xf8\xc7\x69\x38\xb5\x85\xad\x02\xde\xad\x89\x3e\xee\xf4\x74\xeb\x71\x8d\x1a\x70\x1e\x4f\x75\xd1\x4f\xe3\xf7\xe7\x86\x97\x77\xb1\x78\x16\xfd\x54\xbe\xc1\xa5\x61\x42\xf9\x0a\xcb\xc3\xa9\x38\x99\x35\x9c\x02\x53\xcb\x69\x7d\xcc\x03\x86\xf5\x94\x9b\x82\x52\x44\xeb\xad\x04\x24\x77\xf9\xd7\x96\xec\x83\x3a\xb1\x5b\x4d\xb4\x53\xc8\xe8\xab\x8e\xd2\xb8\x23\x96\x3c\x19\x0a\x96\xfb\x42\x0b\x30\x2c\x19\xde\x83\xf8\xed\xca\x4c\x75\xd3\x1a\x85\xbc\xfe\x09\xc1\xde\x94\xc3\xcb\x43\xef\xf4\xe9\xd6\x8d\x18\x50\x42\x46\x28\x29\xc8\xfb\x20\x56\x7e\xed\x1a\x87\x08\xd1\xeb\x67\x83\xbf\x79\x16\xc6\xf2\x00\x1f\x82\xff\x84\x7f\xff\xf7\xcb\x3a\x1c\x4e\x9a\x48\xcf\x0c\x4e\xce\x5e\xf7\x4c\x4c\x27\x2c\x5d\xc3\x84\x68\x19\x7c\x2c\x35\x14\x3f\x21\x46\xf5\x6e\x02\xb0\x51\xa4\x27\x38\x9c\x61\x7a\x78\x36\x1b\x2f\x44\xfc\xe7\xf5\x7a\x85\x25\x96\x6d\x78\x0c\x6e\x3c\xe0\x0f\xee\x0f\xc6\x1f\x25\xfe\x73\x28\xc7\xfe\xf1\xc7\xb9\xec\xb5\xdf\xfd\xf9\xf3\x81\x82\xe9\x5e\xb9\x3b\x20\x47\x63\x31\x9c\xa7\x28\xf6\xad\xb1\x0a\x4d\x13\x07\x1c\x89\x7d\xcc\x55\xcb\xe7\x0a\x51\x7d\x10\x4e\xfa\x7e\x20\x14\xc5\xb0\xdc\xa8\x39\x69\x8f\x52\x21\x90\x6d\xa8\x70\x58\x43\xf1\xe7\xe1\x76\xb1\xf4\x5c\x2c\x3a\xa7\x4d\x88\xae\x8b\x60\x0d\xf3\x7f\x32\x78\xa3\x2c\xb6\x34\x06\xd6\x11\xd2\xe2\xbc\xea\x74\x1a\x06\x86\x6d\x50\xea\xf1\x18\x9d\xbb\x7a\xde\x40\xbd\xcf\x48\x0a\x0e\x20\x4d\x90\x78\xb0\x57\xce\x3e\x18\x8c\x98\xd4\x82\x73\xd5\x8f\x74\x8b\xab\x7b\xfc\xf4\xf1\xec\x79\x75\x10\x5b\xa1\xf7\xe0\x78\xf1\x20\x0e\x73\x83\x50\xc4\x80\xd5\xe9\x51\xe8\x02\xe8\x83\x57\x1c\x2b\x8c\x6e\x7b\x69\xa2\x77\x80\x40\x8b\xcf\x81\xf4\x34\xf5\x50\x7e\x97\x42\xa7\x24\x33\xc0\x87\x2f\x06\xbb\x38\x48\xaf\x88\x5a\xe6\x1d\x66\xb2\x33\x1d\x16\x33\xa9\x7c\x28\x2b\x94\x25\xb1\x5d\x4d\xe0\xd6\x2c\xc9\xae\x69\xad\xa7\xec\xd9\x3b\xdd\x1c\x20\xdd\x0c\xb1\x6c\xad\x8a\xc7\x81\xe3\xd5\xfa\xda\x02\x54\x9e\x70\x11\x40\x7b\xfc\x74\x52\x65\xea\x32\x7d\x12\x0d\x82\x92\x05\x8b\x6a\xc9\xf3\x2e\x85\xeb\x55\xed\xcc\xce\x30\x31\x98\xe4\xb9\x33\x61\x7e\xbc\x9f\xea\xd9\x31\xb9\xb5\xb8\x4f\x63\x79\x27\x75\xf0\x1e\x8f\x6f\xaf\x9a\xa1\xfa\x71\x9b\xdc\x8b\x5a\x39\x38\xf1\xd2\x85\xf1\x61\xc0\xf5\xa3\xc2\xb7\x13\x27\x37\xc1\xa3\xea\xe4\xe3\xe4\x63\xe1\x1e\x6e\x85\x6f\x60\x40\xad\x31\xbe\x81\xd9\xa7\x93\x67\x5f\x5f\xa7\x1f\xe0\x3d\x59\xb3\x01\x09\x60\x09\x99\xee\x0e\xc6\x48\xcc\x9b\x45\xe7\xd6\xc2\xae\x23\xbf\xb0\x13\x1f\x13\x0f\x13\x8f\x13\xf7\x57\xf3\x74\xae\x29\x3f\xad\x0e\xee\x59\x3c\x92\x4b\x91\x74\x38\xbd\x00\xfa\x7f\x38\xef\x52\x55\xa7\xce\x1b\xbb\xa3\x69\xab\x43\x62\x4f\xf6\xa9\x92\x77\x60\xca\xe8\x67\x81\xb9\x70\xb6\xcf\x23\x81\x43\xe7\xa0\x07\x52\x6d\xe9\xa0\x47\x66\xd5\x47\xba\x0f\x67\x05\x4a\x83\xe7\x10\xb7\xe2\x74\x87\x14\x4f\xe3\x08\x03\x0c\xa4\x4c\xe0\x52\xc5\x32\x68\x48\x1d\xaa\x43\x80\x5f\x5b\x4f\xca\xe2\x85\xf9\x4f\xf3\x5f\x5e\x5d\xa2\x13\x45\xea\x06\xfb\x56\x88\xe2\xbe\x0a\x89\xe4\xbf\xad\x05\x3e\xa6\x1e\xc5\xa1\xf9\x2c\xa0\x2e\x23\xb7\x2f\x33\xe6\xce\xc5\xa7\x85\x67\xf5\xf0\xb9\xe7\xe2\xcb\xc2\x67\x4e\x24\xde\x1b\x14\xa4\x5e\x81\x05\xbc\x6c\xd4\x9b\xd8\xc6\xce\x04\x12\xa2\x21\x12\xbc\xba\xbb\xf5\xa9\x6c\xd9\x79\x69\xcd\xa4\xf6\x8b\x5b\x0d\x96\xa3\xe0\x2e\xc4\xa3\x49\x8a\x14\xf8\x6a\xcf\xbd\x7f\x99\x8f\x0b\x18\x7d\x55\xbc\x04\x33\x1e\x75\xb4\x59\x07\xba\x57\xba\x6e\xb9\x60\x05\xf6\xfe\x5b\x2d\x78\xfa\x30\x30\x2e\xfe\x2f\x0f\xf5\xd3\xc3\xa3\x94\xfd\x1f\x89\xfc\xe5\x3e\xfe\xf1\x8b\x4d\x3c\x9e\xd8\x6c\x36\xa5\xf6\x07\xa6\xf4\xd1\x3f\xb0\x38\x71\x73\xdf\xe1\x1f\x71\x3b\xf1\x47\xf2\x17\xdc\xc2\xbf\x75\xd4\xbe\x79\x7d\x7c\x49\x7f\x67\x93\x00\xc3\x3f\x1a\xb7\x10\xdd\xa9\x0a\x5c\x87\x8c\x4e\x89\x2f\xc1\x4d\x76\xf3\x1a\x07\x95\x92\x2c\x22\x69\x74\xaf\x83\x56\x2f\xcf\xea\x5e\x0b\x8a\x39\xa0\x65\x88\x0d\xaf\x4d\x90\x9f\xbe\xe1\xa6\xcd\xe9\xa8\x5c\x5a\x66\xa2\xd4\x6c\x28\x2e\x6d\xf8\xce\x70\x08\xfa\xe8\x44\xa4\x4a\x0e\xf4\x57\xd6\x33\xa7\x9b\x75\xb2\x19\xe8\x5d\x49\x7e\x6e\x15\x70\xd8\x58\xc1\x8f\x29\xf9\x5c\xa3\xc6\xe3\xf7\x89\x5b\x1d\xf1\xf8\x86\xc5\x3e\x5f\x2d\xb6\x28\xf2\xfe\x8f\x91\x2d\x08\x09\xcb\xf6\x2e\x75\xe4\x39\x87\xca\xae\x2f\x24\x6a\x8c\xe0\x6b\x65\x42\x1b\xad\xeb\xe4\xec\x3e\xe9\x00\xe7\xb3\x4e\x6b\xc3\x35\x16\xae\x29\x19\x6e\xbf\x18\x32\x76\x87\xb2\xc5\x7c\x35\xc7\xef\x2f\x20\xbf\x4e\x3c\xa7\x81\xa2\x5c\x71\x58\x4f\xaf\xea\x6a\xe9\x7f\x9d\xfb\xdb\x26\xfc\x88\xc3\x3b\x1f\xed\x6c\xb6\xea\x09\x3e\x59\xcc\xcc\xfb\xb6\x38\xb9\xe9\xbd\xad\xef\x97\x96\x34\x30\x74\xfb\xb5\xbf\xb3\xc5\xdd\xf2\xc5\xe8\x34\x4b\x46\x7c\xd0\x7d\xbc\x35\x17\x76\xee\x9f\x09\xc6\x18\xe8\xf3\x0d\x7c\x0a\xc5\xaa\xc4\xe3\x58\xaa\x4f\x04\xd8\xbb\x00\x6a\x13\x73\x96\x92\xd1\xa1\x2c\xba\xb1\xa7\x43\x4f\x2c\x41\xd7\xe9\xe4\x3f\xd6\x21\x88\x00\xa7\x53\x42\xfa\x8b\x31\x99\x1d\xf4\x11\x68\x1d\xc7\xa4\x4a\x99\xcc\xd2\x9d\xd5\xea\x32\x7f\x95\x04\x2e\xd7\x6e\xcb\x3b\x3f\xba\xe6\x81\x85\xab\x19\xd7\x08\x12\x81\x6b\x20\xef\xbd\xe1\xc3\x4e\x6a\xc7\x2d\x30\x5e\x76\xf2\x1e\x0f\x34\xe8\xb5\xed\x5b\xf7\x7c\x7e\x5b\x6a\x00\xb1\xc1\x68\x89\x23\x0d\x8c\x50\x3a\x98\x05\x71\x17\x13\x6f\x6a\x8e\x27\xf7\x52\x59\x8e\x86\xb9\xff\x85\x27\xef\xce\x2d\xdb\x39\x72\x89\x96\xf8\xce\x36\xfd\xc2\x7b\xe6\x3e\xfa\x67\x2a\xf5\x3d\x94\x12\x66\x57\x11\xff\x8c\x0f\x78\x46\x79\x1f\xfc\xf6\x78\x1c\xc2\x0b\x74\x19\xb8\x2b\x50\x0e\xda\x55\xc8\x08\xec\x31\xc3\x76\xa7\x79\x3f\x3a\x8c\x66\x3f\x21\xe1\x74\x98\x60\x3d\xee\x66\xb4\x70\xd6\x36\xfc\x80\xdb\x21\x16\x32\xf9\x2c\xb8\xf3\x32\xa0\xd7\x29\xdc\xae\xd2\xf4\xdd\x4b\xd1\xc9\x51\x72\xff\x41\xd8\x6b\xa7\xc6\xee\x85\x58\x3c\x25\x26\xd6\x44\x43\x0c\xe9\xfd\x02\x78\xc3\x5d\xb2\x59\xdd\x26\xb9\x53\xea\x70\x1d\x93\x70\x26\xcb\x17\x9d\xff\xe8\x99\x9e\xb2\x5f\x92\x56\x46\x21\x98\x60\x76\xa6\x1b\x37\xcf\xb4\xd7\xaa\x6c\x95\xb6\xf8\xc7\x72\x38\x89\x65\x04\x17\xf3\x05\xfe\x23\xe8\x7f\xcb\xf7\x41\x7d\x5d\x3d\xd6\xea\x3f\x46\xef\xeb\xa9\x71\x5e\xfd\xb1\xe7\xc5\x4b\x9a\x5c\x90\x25\x83\x64\x4e\x53\x59\x49\x95\x62\x90\x9c\x1c\xc1\x74\xde\xad\xb5\x8c\x0a\xee\x04\x8e\x68\x34\x18\x17\x77\x01\xb3\xec\xc2\x1f\xdd\xc1\x44\xc3\xa9\xb6\x2c\x61\x8f\x9a\xa4\x1c\x47\x10\x04\x0c\x8f\x03\x02\x55\x45\x38\xe4\xa9\xaa\xd9\x1c\x6b\xcb\x61\xab\xd4\x9b\x7e\x5b\xe4\xca\x53\xce\x01\x35\x40\x79\xf7\x38\xe0\xa0\xfd\x1e\xcc\x8d\x60\x41\x9e\x9f\xe3\x2b\x87\x01\xf9\x12\x63\x43\x85\x1d\x19\x00\xf9\xb7\xc3\x66\xa1\xdd\x6f\xe5\x5a\x22\xff\x42\x2c\x58\x44\x0c\x81\x5d\x46\x26\x25\x97\x80\xc0\xb1\x89\x60\x76\x45\xb8\x83\xe0\x09\xf3\x42\x20\x91\xae\xc4\xb5\x9c\xf4\x85\x6c\x78\x57\x4c\xad\xb2\x5e\x98\x4a\xae\xab\x27\x42\xed\xa3\xe8\x7c\xe2\xf3\xbb\xe5\x24\xfc\x75\xfb\xa6\x4d\x2a\xb3\x39\x26\xb5\xdf\xf9\x75\xd6\x8a\x79\xff\x35\xde\x5f\x21\xf7\xb5\x1d\x26\x18\xfa\x28\x42\x92\x8c\x6f\x64\xe2\x7a\x9d\xca\x5f\x32\xcd\xa0\xc7\x55\x92\x68\x5c\x19\xa2\xc2\xd2\xbe\xa0\x8b\x98\x1d\xd9\xc7\x6f\x0a\xcc\x90\x67\xd5\x40\x96\x8e\x9b\x84\x04\x70\xb8\xdf\x24\xb0\x2b\xf0\x5f\xe2\xf8\x32\x84\x9f\x7d\xf5\xfd\xcb\xb7\x21\xf8\x31\x84\x7d\x2e\xd7\xd1\x17\xdf\xbe\x7e\xef\x17\x72\x1d\x7f\xf1\xcd\x15\xd8\xeb\x7c\xa5\x77\x95\x45\x20\x3b\x87\x80\xf6\xe6\xe8\x02\x0f\x6e\x77\xb2\xc7\xc9\x06\xf5\xd8\x9f\x92\x4a\x94\x74\x95\xe2\x94\x6d\xa5\x34\x50\xcd\x30\x25\xc8\x89\xd8\x16\x9d\x48\x66\xbd\x1b\xb6\x29\x84\xba\x82\x54\x18\xf4\xa1\xee\x69\xf5\xb0\xa8\xb0\x74\x16\xa6\x69\x36\xb7\x04\x49\xdf\x39\x9b\x86\x7e\x65\xd4\x38\xbe\xed\x35\x09\x40\xd3\x11\x79\x56\x8d\xe8\xd3\x0a\xfb\x7d\x8d\xbd\x3e\x9b\xb8\xc6\x03\x68\xe1\x73\x3e\xa7\xff\xac\x5b\x30\x35\x23\x99\xdb\x56\xfa\xb1\x4e\x19\xd0\x5b\x25\x21\xd1\xd3\xb9\xae\xeb\xb3\xe0\xe0\x69\x31\x33\xc9\x3f\x48\xfd\x20\x5e\xc7\xe6\xdc\x7b\x1b\x9e\x6d\xd3\x73\x36\xbd\x39\xc4\xe3\x3c\x49\x9a\x2b\xf6\x01\xef\x99\x8f\x14\xf8\x51\xd0\x63\x43\x48\xa2\x67\xa6\xda\x9f\x21\xdb\x33\x05\xbc\xc8\x92\xed\x19\x85\xd8\x86\xf6\xe1\xbf\x36\xcc\x3e\xcb\xfa\x12\xf6\xe1\xde\x8c\x32\x0e\xf4\xd1\xea\x70\x4e\xe8\x70\xb9\x52\x33\x73\x5a\x26\x64\xe2\xcb\xce\xda\x72\x66\x61\xe2\x30\xd4\x6f\xac\xe7\xb5\xeb\x96\x45\x4a\x99\xb6\x02\x6f\x63\xb6\xdc\x9e\x55\xed\x63\x8d\xa5\x18\x60\x1d\x56\x74\x0a\xa7\x58\xc5\x58\x22\xf4\x37\x7f\x73\xb5\x38\x61\x77\x38\x66\x01\x88\xa6\xa8\xb4\x2c\xb5\x22\x05\xe8\x5c\x13\x14\xce\xc8\x3e\x57\x9c\x44\x9f\x39\xc1\xa1\xde\xca\x80\x4d\xde\x89\x69\x86\xa0\x33\x4c\x0b\x42\xf7\x86\xce\x0b\xec\xa5\xf4\x4b\xdf\x2b\x98\xdf\xba\xaf\xfb\xdc\x63\x36\xd1\x6b\xdd\x05\x77\xd1\x83\x44\x6f\x9a\x2f\x7e\xf7\xf9\xf4\x9f\x97\x55\x9f\x3c\x5a\x26\xd2\xa9\x2b\xfe\xee\xc9\x35\xcd\x17\x17\x1d\xeb\xfb\x84\xae\x3b\xe1\x7f\xd8\xd7\xd2\x1f\x64\x8a\x49\x74\x5c\xa7\x32\x5b\x6f\x06\x4c\xe1\xcd\xaa\x96\x44\x6d\x42\xa4\x00\xe5\xc9\x9f\xba\x4b\xe9\xd3\x9b\x04\x7a\x74\xfe\xf2\x3b\x97\xb8\x26\x6e\xe5\xf9\xcb\x0e\x8b\x44\x46\x38\x35\xf1\x4b\x37\x0e\x13\x2c\x8f\x4e\x85\x6b\x87\x58\xd9\x25\x91\x42\xf8\x2b\x6e\x6a\xf8\xc9\xed\x96\x1a\xb1\x64\x7d\xe3\x1c\x74\x76\x6c\x1f\x88\xde\x46\xbd\x1e\xd2\x0a\x17\x77\xef\x50\xf3\x69\x2a\xfc\x7d\xd0\x04\xb2\x11\x3b\x64\x6b\x26\xff\x62\x26\xfe\x73\x07\x79\x30\x77\xca\x81\x93\xbc\xf6\x93\x80\x19\x01\x89\xfc\xd1\xeb\xe5\xf9\xeb\xb6\xbe\x17\x12\x63\x91\x5b\xd8\xb4\x1f\x48\x08\x6f\xf6\xc3\x2b\x02\xb5\x10\x98\xdd\x36\x5a\x68\xb2\x54\x84\x6e\xe3\x5d\x47\xc3\x60\x0b\xb1\x33\xe2\x9c\x7e\x84\x1f\x1e\x3f\xe1\x9c\xc6\x47\x93\xfe\xae\x95\x61\x2e\x93\x03\x5b\x7f\x29\x52\x26\x0d\xfe\x9f\xcb\xec\xc5\xa5\x35\xa5\x73\xbd\xc6\x24\xea\xaf\x54\x3c\x4e\xcf\x0f\xe5\x97\xbd\x9c\x64\x31\x27\xdf\x32\xce\x4a\x83\x5d\xba\x7b\x4b\x94\x3c\x42\xf3\xb4\x46\x39\x66\x27\xb3\x92\x67\x71\x93\x3f\x4a\xd2\xaa\x5a\x68\x8f\xb4\x7f\xae\x3b\x65\x91\x97\x61\x46\x77\xb8\x3b\x90\x83\xad\x67\xb7\x5a\x2c\xfb\x22\x8d\x8a\x54\xfc\x77\xeb\x90\x5a\x2c\x5b\xdf\x71\x38\x98\xb9\x53\x91\xac\x63\x1c\x07\x65\x05\xed\x1c\x09\x1e\x9e\x1f\x11\xd6\xd7\x98\x04\xf4\x34\x4a\xca\x31\x25\xfe\x25\x78\xdb\x3b\xc1\xb9\x48\xef\xd1\x40\x72\x57\xd4\x36\x35\x46\x5b\xf3\x72\x40\x11\xde\x00\x81\x5e\x4d\x03\x09\x9e\x0d\x03\x43\x5c\xde\x01\x12\x71\x2d\xf7\xe9\xe3\x0b\xd8\x38\x01\x4f\xa1\x06\x0c\xf9\xfa\x9b\xeb\xca\x57\xd1\x15\x5c\xe0\xe9\xe9\x23\x02\x79\x57\x20\x78\x6a\x85\x65\x77\x96\x8d\x84\x8e\x8f\x4f\xb2\xb0\x2f\xe9\x0a\x92\xa2\x04\x8a\xa0\xe2\x3b\x91\xad\xaa\xc9\x99\x58\x63\x92\x84\xf1\x07\xf8\xbc\xa3\x1f\x5b\x78\xa6\x34\x78\x6f\xd5\x72\x7f\x34\xa3\x0a\x1c\xe9\xcc\x17\x73\xfc\xbb\xed\x74\xdf\x99\xe2\x78\xc9\x74\x73\xdc\x29\x55\x7f\x7d\xaf\xe1\xe3\xa6\x38\xbc\x4b\x6f\x9e\xab\xa9\xa7\x77\x56\x73\x30\xc8\xbe\x17\x9a\x37\xee\x0e\x99\x32\xcf\xc2\x01\xae\x11\x96\x0e\x4c\x13\xf3\xe8\x24\x33\x24\x4f\xd9\x22\xec\xa7\x9b\x2a\x8e\x55\xef\x09\x5d\x72\x2b\x41\xb4\x41\x29\x38\x86\x86\x91\x87\x15\xee\xae\xf0\x0c\x54\xed\xa6\x35\x49\x74\x1d\xed\x13\x17\x5a\x4c\x84\x9e\x4e\x2f\x43\x2f\x0a\x81\x6f\xa2\xc1\xda\x47\xb4\x48\x5d\xf6\xd7\xc1\xd6\x7f\x8f\x2e\xc6\xcc\xdf\x61\x84\xe2\xea\x34\x65\x0a\xb1\xd5\x89\x68\x7a\x0d\xaa\x7a\x59\xa7\xd5\xd3\x4d\x93\xf9\x4b\x08\x62\x40\x09\x6a\x65\x06\xea\xe5\xd7\x74\xa8\x1d\x5f\xf5\xd6\xd2\x53\x07\x92\xe2\x10\xfb\xa8\x56\x0a\x2b\x10\x9c\xc8\xa7\xb4\xf0\x17\x84\x50\xe1\xe1\xb9\x4b\x4d\xde\x7f\xd1\xd5\x04\x41\x9a\x71\x33\x22\x1c\x7b\xeb\x1a\x12\xbd\x55\x3e\xf9\x88\x51\x2f\x9e\xf3\x99\x09\x40\xa7\xdb\x74\xc2\xfb\x3b\xd2\xf2\xfb\x59\xc4\x2c\x95\xfb\xc6\x5c\x18\x46\xd2\x1c\xb5\x93\x84\xd0\x4a\x48\x4b\xf8\xe3\xfb\x6c\xf7\xbf\x4c\xe2\xf1\x59\x41\x83\x3f\x9f\xab\xf4\xcd\xae\xe7\xd7\x9a\xaf\xc1\xae\x7b\xa4\xad\x14\x59\x44\xf4\x1e\xe1\x25\x74\xc1\x09\xca\x6a\x75\x76\xc3\xf5\xab\x10\x8b\x7d\xe9\x13\x31\xc3\x0d\x08\x34\x1e\x02\xac\x6b\xa6\xba\x8c\x9a\x4f\xd1\x2a\x30\x01\x39\x5a\x0d\x47\x86\x06\x8a\x27\xbf\xc2\x4a\x07\x03\xbf\xe2\xb0\xe2\x00\x0c\x89\x91\xb2\x4e\xac\x9c\xff\xcc\x76\xfb\xd3\x21\x70\xc1\x8c\x45\x8e\x7e\x21\xe7\xfd\xe4\xd7\xc9\x59\xd7\x0e\x48\xab\xd7\xca\x52\xa6\x47\xc3\x58\x91\xd9\xa8\x9d\xea\x72\x5c\xed\xda\x93\xaa\xb4\x49\xbe\x90\xb1\x22\xbd\xf9\x81\x0c\x1c\x44\x39\x80\x86\xaa\x77\x8a\x43\x60\x9c\xf3\x7b\xec\x2c\x2b\x25\x3a\x12\xc4\xeb\xe6\xd1\x42\x09\xb0\x41\xd9\x87\x5d\x79\x5d\xe2\x60\xf0\xc0\x5d\xbb\xff\x65\x93\x3d\x83\x7d\x4f\x14\x69\x22\x1b\xc1\xba\xda\x13\x37\x9f\x2d\x52\x7e\xec\xed\x3b\xc5\x89\xe4\x0d\xc2\x47\xe8\x23\x03\xa2\xa0\xf5\xf8\x39\x38\xd9\x07\xcc\xfd\x21\x2d\xca\xfc\x4c\xd9\xfd\xc1\x71\x3f\xea\x50\x78\xd1\x11\xb6\x7d\x7f\x91\x82\x60\xb6\xd7\x67\xfc\xd0\xa5\x4e\x23\x52\xf8\x30\x8b\xf8\x60\xdd\x29\x06\x0c\xf2\x85\x95\x24\x45\x76\x0f\xde\x18\xf4\x75\xc6\x0a\xa7\x42\x6f\x94\x25\xec\x1e\xec\x3d\x0b\x4a\x94\x63\xf4\x17\x4a\x78\xfb\x02\x9b\x05\x8d\x48\x57\xa1\x54\x2a\x1f\x4f\x54\xd4\x4c\xd7\x74\x71\x6a\x88\x2a\x00\x8c\xcc\x49\xb6\x4b\x6d\xc2\x54\xe1\x91\x26\xad\x78\x22\x3f\x36\x85\x48\xf4\x35\xac\xb0\x17\xa1\x4e\x4b\xe3\x41\xe8\x7b\x1b\xd8\x3a\xab\x0b\x21\x79\x23\x7c\x0c\xc6\xdd\xa8\x57\x55\xd4\x1a\x64\xbd\xec\xc0\x7e\xd3\xbb\x7a\xa9\x25\xa5\x62\x5a\x47\x4c\x28\x62\x62\x74\x6c\x03\xca\x51\xba\x15\xb1\x08\x5e\x6a\x1c\xa6\x79\xff\x71\x0b\x58\xf8\x00\xc0\xf7\xdb\x08\x97\xd3\x7f\xab\x78\x8a\x55\x31\x5b\xdf\x5f\x22\x47\x01\x46\x63\xdb\x62\xae\xe5\x30\xe8\x1e\xb4\xd9\x4a\x9d\x21\x98\x2d\x09\x30\xed\x8c\xe4\x14\x29\x99\x61\x8c\xa1\x94\xc1\x68\xdb\xdb\x2d\x72\x57\xfe\x67\xd0\x52\x13\x1d\xc2\xa8\xb2\x60\x02\xcb\xb6\x4a\xf2\x40\xde\x46\x93\xcc\x28\x0d\x26\x0a\xb1\x52\x49\xc1\x5b\x81\x20\xa9\xfe\xdd\x68\x5e\x0c\x0b\x12\x02\xbe\xed\xb6\x73\x9e\xa8\xd6\x17\x62\xa9\x34\x88\x4b\x93\x74\x5c\xb5\x2f\x27\x39\x64\x52\xc5\x74\x19\xb7\x44\x82\x8b\xed\xa6\x4c\xa8\xa0\xec\x66\x83\x0e\xc3\x1f\xa7\x59\x0d\x2c\x03\x6c\xad\x15\xc1\xae\x1e\x9c\x64\xec\x37\x96\x2f\x62\xd7\x2a\xa7\x9b\x6c\x5a\xb9\x4f\xe1\x61\x75\x7f\xb7\x7c\xdb\x8e\xf7\x1a\x80\xcd\xd6\x82\xc8\x6e\x8f\x6d\x7c\x33\x1a\x61\x20\x00\xf6\x7f\x47\x93\x25\x63\xb7\x5e\x10\xb1\x77\x92\x42\x5e\x37\x9f\x44\x32\x8a\x61\xdd\xbe\x31\x4f\x9f\xce\x14\x08\xa2\xad\x30\xf4\xc9\xc3\x77\x52\x5d\xf5\x7d\x37\x52\x68\xc1\xa8\x61\x45\x34\x66\x93\x04\x9e\x64\x09\x60\x5c\xdd\x18\xc1\x6d\x0e\x6d\xe3\xde\x6b\x73\x7b\x6c\xbc\xce\x78\x64\xd9\xd5\xd5\x23\x9a\xb7\xbb\xb2\x0a\x9b\x5b\x0e\x64\xb5\x39\xba\x8d\xc7\xd9\xfc\x31\xc0\x42\xdc\x68\x7a\x54\x2c\x1d\x76\x0e\x70\xb6\xb8\x47\x9a\xdf\x1b\x59\x8c\x77\x3d\xd2\x73\x41\xb8\x3b\xde\x38\x03\x4f\x13\x93\x8e\xd9\xaa\xce\x48\xd9\x89\x1d\xbf\x85\x84\xbc\xfb\x19\x0c\x63\xd0\x16\x6b\x7a\xb4\x1d\xe9\x64\x93\x73\x6a\x25\x3d\xf1\xbd\xfb\xe7\x88\xe2\xbb\xfe\xbe\xf8\xd5\x0c\x36\x07\xf1\xfb\x37\x6d\x06\xfa\x33\xb1\xb0\x8f\x31\x8e\x86\x84\x2b\xac\xdf\xd6\x12\x7b\x91\x5e\x6c\x7a\x0a\xfb\xe7\x26\x01\xb2\x28\x9b\xf2\xea\x2a\xe1\x62\x55\x80\xc6\xd5\xc4\x8a\xb8\x9d\xda\x4d\xcf\x6c\x2a\x65\xd0\xc4\x31\x87\x67\x8d\xda\xf5\x46\x2b\x05\x02\x35\x4f\x7d\xc0\x5d\xca\x81\xb6\x24\x66\x1a\x6f\xdb\xb8\x05\xad\xbc\x6f\xf4\x9a\x43\xa8\x8d\x16\xe0\x89\x2f\xe2\x2a\xf6\xc2\x81\xd6\x5e\xe4\x8c\x78\x40\x55\x34\x29\x80\xe4\xd8\xd5\x04\x69\x3f\xb2\xf6\x70\xe7\xe0\x72\xbf\xa6\xe7\xda\x01\x20\xc8\x0f\x4d\xd4\x53\x6b\xff\xf9\xc2\x7c\xde\xd6\x5d\x5e\xbc\x3c\xd8\x74\xda\x54\x75\xdd\x53\x38\xd3\xad\xf3\xae\xc8\xa3\x83\xb5\xa0\xe0\xf3\x7e\x10\xe0\xa1\xcc\xc2\x33\xc3\x41\x52\xa1\x44\xbb\xae\x3c\x07\x2e\x8d\x48\x37\xd0\xf5\xbe\x5c\xe6\x53\x8f\x81\x3b\x54\x19\x36\xa1\xcc\xbe\x5d\x96\x81\x48\xd4\x16\xd4\x53\x0c\x75\xd3\x11\x6a\xf2\x97\x95\x51\x86\x18\x2b\x28\xb5\x8a\xa3\x64\x2c\x52\x0c\x16\x4e\x73\xa2\x7d\x17\x78\xaa\x67\xf2\x7e\x13\xe2\x5b\xa6\x79\x15\x82\xba\x84\xd5\xf6\xa3\xe3\x5a\xc0\x4c\x7c\x07\xe9\x2f\x52\x4b\x83\x11\x78\x25\x6a\x7d\xde\x0f\x88\xf4\x7f\xcb\x79\xe3\x29\x86\x82\x19\x99\x87\x2d\x9d\x52\x22\x72\x95\xee\x27\x24\xfd\x97\x62\x9c\x51\x6a\xe0\x3a\x5a\xb5\xc4\xb1\x0b\xc3\x4d\x12\x78\x05\xb9\xef\xdf\x0b\x4a\xa4\xca\xa2\xe6\x31\x55\x75\xd3\x76\xfd\x30\x4e\xf3\xb2\x6e\xfb\x71\x5e\xf7\x91\x50\xa9\xcc\x47\xb3\xd7\xd9\xaf\x5b\xe3\x7f\x4c\x8f\xf5\xf9\xae\x5f\x0c\x7f\xa3\xc9\x3c\x47\xa9\xed\xce\x00\x68\x75\xfe\xcf\xa6\xf1\x17\x96\xa9\x8f\xed\xe9\x9e\x10\xc0\x7f\xf8\x5c\x67\x41\xff\x4c\xd7\xda\x7d\x02\xd5\x6a\x25\x20\x14\xba\xde\x46\xc3\x03\xf4\x62\x90\xb1\x0d\x12\xec\x2e\x24\x5b\xf4\xfb\x66\x93\xa6\x70\xc0\x29\x05\xae\x5e\x75\x7d\x78\x78\x77\xa2\xd2\x6a\xc3\xf5\xdf\x67\xf5\xfe\xcd\xfc\x0a\x96\x93\xf2\x33\x3f\x6f\x8b\xbc\xaa\x8b\xdf\xc9\xa0\x30\x9d\xfe\xad\xce\x9d\xad\x1f\x0c\xf6\x7b\x8f\xf6\x73\xdb\xbd\x3f\x34\xc2\x73\x7c\xad\xa7\xb0\x9c\xf0\x81\x1e\x16\x58\xeb\xad\x0d\xeb\x14\xdf\x26\xa6\x97\x8c\x41\x48\xa7\x36\x65\x08\x88\x29\x4e\x81\x6e\xcf\x15\xfc\xfa\x38\xbf\xa9\x00\x68\x14\x36\x97\x29\xae\x5a\xe8\xeb\x1a\x50\x66\xa7\x08\x74\xb6\x9b\xf7\xd7\x89\xbb\xb7\x30\x2d\x35\x4c\x62\xa9\xbc\xe4\x09\x74\xbd\x4c\xef\xd6\x79\xa8\x22\x85\x7d\x98\x11\xdc\x50\x1a\xfc\xb7\x57\x26\xa4\x70\x83\x17\xa2\xd4\xc3\x68\x6c\xc7\x72\xd2\xb1\x80\x14\xa6\x0b\x50\x61\xf6\x9c\x54\x63\x6a\xb3\xee\x71\x72\xda\x2e\x0f\x3f\x57\x14\xd1\x15\xd8\x88\x7c\x4c\x33\xb3\xef\x9e\x08\x57\xdd\x96\x17\xd7\x91\xca\xc5\xf8\xe8\x8a\x14\xf5\xf9\x9b\xa4\x85\x04\xe7\xd2\xd5\xd4\xa5\x6c\xc0\x1b\xcb\x31\x24\xcb\xbf\xf4\x95\x2e\x56\xf6\xad\xc2\xb3\xad\x86\x01\xcd\x62\xc1\xe6\x78\xff\xb9\x65\x3f\x56\xcd\x96\x94\xdf\x10\x7e\x45\x39\x05\x08\x66\x5b\xc6\xa6\xa6\x63\xbc\x91\xf6\x7a\x6c\xb5\x05\xec\x2c\x28\xfb\xad\x09\xc7\xbd\xe9\xf8\xdb\xae\xe2\xc9\xc0\xdd\x85\x92\x7c\x77\xa2\xee\x2a\xf0\xd6\xd1\x03\xd5\x0e\xb3\x6b\xa2\xd2\xd5\xb5\x07\x8a\x12\xbc\xbc\x80\x32\x71\x40\x1f\xef\xd6\x62\x90\x38\xaf\x66\xd3\x28\xa7\x99\x43\x60\x76\x85\x39\x7f\xbc\xab\x53\x0c\x55\xad\x03\xb6\x17\x72\x17\xe2\xf0\xc2\x1a\x06\x57\xd2\x27\x1d\x5e\x3d\x2d\x13\xd3\xd0\x9d\xa5\x8a\xa7\x84\xae\x79\x9b\x54\x3f\xe6\x89\xa7\x3c\xda\x9a\x2b\xe1\x41\x56\xe7\xb5\xdf\xfb\x79\xe2\xf5\xbc\xee\x2c\x8f\x9e\x5c\x0e\x58\x9e\xa1\x74\x5e\xae\x55\x42\x7d\x46\x9f\x6c\x49\x40\xf0\x34\x1d\x2d\xd1\x8c\xef\x6c\xed\x84\xb1\x89\x9e\xe0\x40\x31\xfd\x9d\x9d\xb0\x9a\xaf\x8f\x32\x0f\xcf\xab\xd5\x03\x3a\xc9\x41\x5f\x2d\x0e\x18\xd3\x48\x42\x46\xfb\xcf\xa1\xa7\x89\x4c\x23\xad\x2f\xf1\x60\xeb\xb5\xf4\xa8\x74\x24\x2b\xc4\xac\x82\x7b\xf6\x5c\x9f\xb9\x91\xeb\x74\xed\x63\xac\x85\x0b\xfa\xda\x25\xad\x97\xc8\x32\x8d\x70\x2f\xf9\xab\x7b\x83\x22\xb2\xd1\x7d\x6e\xb0\x44\xb1\xd2\x6c\x63\x12\x1f\xf5\x99\x41\xa6\x77\x4a\xef\xad\x7d\x42\x51\x7b\x7f\x2b\x99\x6b\x29\x51\x4a\x3a\x58\xe5\x64\xbb\x74\xd3\xb1\x5f\xa7\xe4\xaa\xc6\xf7\x26\xfe\xf9\xff\x57\x6c\x74\xba\x8e\xe5\xb3\x80\x6a\x8b\x7f\x66\x4e\xcf\x3f\x33\x9d\x29\x83\xe8\x13\x12\xb7\xe8\x12\x52\x4b\xdd\x9a\xc4\xae\x02\x55\xef\x29\xa4\x61\x5c\xa0\x1c\x01\x23\xfb\xdd\xcf\x71\x66\x95\x03\xff\xd1\x19\x4d\xc8\x07\x6c\xe0\x01\x77\x94\x13\xe5\xe3\x78\xd9\x2f\x77\x25\x09\x40\x23\x0f\x53\xfb\xf3\x0b\x8f\xa3\xf8\x28\x9e\xc1\x79\x1a\x2b\x70\x61\x2c\x64\x80\x3c\x70\xa1\xe0\x76\x8d\x75\x14\x3d\xe5\x7a\x84\xee\xca\x1a\x1c\x89\x28\xb3\x0b\x92\xf5\xaf\x2c\xd7\x13\xff\x4b\x27\xc1\xdb\x70\x3d\xdb\x7f\x1c\x11\xae\xef\x58\x49\x39\x99\x82\x4e\x83\x2d\xe5\x31\x8d\xbf\x7b\x1c\xbf\x4c\xf0\xef\xf1\x7f\xa4\xc4\xdb\x71\xf9\xb3\xa3\xa4\x58\xc9\xc2\xb0\xe5\x89\x50\x7d\x06\xe8\x22\xb8\x02\x28\x47\xa4\x30\x50\x2b\x0d\x9a\xe5\xca\x33\xa8\x67\x1f\x12\xdf\x6d\x99\x00\x30\x8e\xb1\xbd\x03\x5b\xc6\xf2\x25\xa0\xa9\xa2\x77\xdb\x40\x5b\x64\x8f\xcc\x95\xfc\x78\x79\x26\xc5\x19\xd9\xb0\xc1\xe5\x9c\xf9\x45\xe2\x1e\xcd\x90\xad\xf8\x00\xef\xfe\xfb\x00\x1f\xff\xcb\x3f\x4d\xae\x64\xcd\xc6\x6b\x64\xc3\x6d\x61\x52\x25\xbe\x7d\x86\x9a\xf8\xc4\x39\x68\x67\x46\x2b\x1d\xa8\x97\x49\x6e\xf5\xb2\x8b\x4a\xe0\x5d\xd4\x65\x92\x08\x9e\xa3\x98\x0a\xf9\xb5\x90\x1f\xe4\x21\x33\xa4\xb5\x2e\x34\x36\xc6\x3b\x4c\xa3\x71\x07\x2d\x3e\xfc\x13\x72\xd2\xab\x52\x37\xcb\x72\xf8\x60\xa3\xcc\x27\xed\xfd\xe5\x2a\x4e\x93\x28\xde\x4b\x69\x6f\xd0\x08\x27\xa7\xbf\xf9\x8f\x70\xcc\xe6\xe3\x31\x09\x03\x50\xb3\x52\xb1\x49\x27\x98\x4d\x99\x2b\xc3\x26\xaa\x5a\x84\x65\xea\x0b\xdd\x46\xe9\x89\x89\x43\x78\x88\x18\x8e\x14\xcb\x90\x64\x3e\x85\x42\x8c\x30\xc2\xd6\x3e\x48\x73\xf0\x28\x3b\x26\x23\x29\x10\x42\xb0\xf8\x6c\x16\xd7\x75\x27\x90\x10\x1a\x3a\x4e\x63\xf4\xa5\x6b\x94\x91\xce\x93\xc6\xee\x2e\xde\x3b\x0e\x9a\x54\xb9\x0d\xc2\x54\x68\x75\x16\x6a\x73\x2f\xf9\xff\x80\xc7\x6b\x12\xdc\x96\xc3\x65\x23\xbc\xb6\xc7\x31\x02\xe8\x79\xbb\xf0\x13\xb2\xaf\x13\xe8\xbe\x2d\x5b\xc0\x56\x25\x7c\x00\xdd\xe4\xb5\x4b\x5e\xcd\x63\x1c\x61\x4b\xaa\xd3\x8f\x13\x09\x30\x7e\x1d\x10\x02\x75\x46\x01\x89\xae\x8e\xa3\xfb\x3e\xd6\x44\x16\x2f\xc3\xc6\x5a\xac\x71\x84\xf4\xbe\x6e\xf5\xdf\x35\xd9\x02\x99\xd9\x04\xb6\xe9\x0b\x1f\xaa\x1d\x06\x73\x0f\x0f\x5b\x8c\x27\x73\x28\x1c\xef\xaf\x13\x40\xd6\x37\xeb\x08\xd3\x8e\xd8\xa1\x3f\xc4\xd0\xe0\xf1\xc3\x21\x1c\x2f\x89\xfc\xb5\xb1\xaf\xfc\xe8\x7a\x46\x74\x07\x1e\x2b\xe3\xa2\xc8\x2f\x58\x3b\x8c\xdd\xe0\x80\xdf\x0c\xc0\xbb\x62\x00\x3d\x64\x2d\x47\x5f\x57\x7f\x96\x54\x93\x91\xe6\x83\xd6\x40\x7a\xf0\x8a\x35\x6e\xe8\xd0\x11\x27\xf8\xf3\x34\xeb\xe1\x56\x7f\xed\x31\x80\x6e\x9a\xcf\x14\xbc\xd8\x05\x4f\xd3\xba\x79\x87\x23\x1b\xab\xac\xd5\x9d\x16\xf7\x78\x39\x45\x3f\xf8\x5b\x46\x86\xe9\xe0\x2c\x9f\x69\x89\xad\xcb\xe1\xfd\xc9\x87\x48\x56\xc7\xdd\xe1\x60\x6e\xc2\x0c\x15\x1f\x7a\xa9\x49\x5f\x89\xe6\xc3\x39\x12\x9c\x7f\x84\x26\xf3\xcf\xa7\x2f\x5b\x10\x37\xba\x25\x4d\xde\xfc\x2d\xb4\xc1\x5e\x0c\x3a\xa8\xee\x1d\xf2\x2c\xcb\x93\x51\x7d\x65\x24\xf1\xb3\x2d\x60\xd1\x03\x48\x46\xa9\x41\x5f\xc4\xa1\xf4\x1f\xd1\x7d\xc7\x87\x72\x73\x52\xeb\x0e\x05\x87\xb5\x06\x2d\xde\x09\x23\x27\x11\x3e\x7a\xa9\x51\x9a\x78\x3a\x68\x84\x2b\x6a\xd9\xd8\x14\x41\xaa\xe0\xa4\x79\xcd\x4b\x79\xf5\x73\xc5\xec\xdf\x74\x91\x71\x32\x2a\x19\x9d\xed\x5c\xbf\x2f\xb4\x28\x4e\xfd\x23\x55\x3a\x51\x3b\x8e\x0d\x5b\xe1\x22\x67\xbd\x1d\xe5\x26\x5f\x25\xc4\x37\xe3\x9f\xbf\x01\x19\x28\x26\xe2\x83\xaf\xb9\xc7\xef\xa1\x17\x3f\xe2\x99\x34\x88\xaf\x40\x12\x54\xd9\x3c\x17\xa8\x54\x19\x5b\xc7\x5e\x96\x0d\xe1\x7c\x49\xb7\xaa\x48\xba\x3a\x61\xa6\x91\xd4\x35\x88\xfc\xd5\xfa\x22\xd7\xb7\x9f\xd9\xf3\x44\x78\x7f\xab\xca\x0f\x36\xe4\xbd\xca\x4a\xa0\x09\xed\x89\xaf\x3d\xe2\x00\x86\x44\x3c\xc1\xd8\xa0\xab\x78\xe0\x11\xa0\xa5\x6a\x36\xdf\x4e\x34\x1f\x12\x1d\xd7\xcc\x6e\xbd\x8f\xb5\x03\xc1\xfd\xd7\xfa\x93\x0b\x3d\x17\x51\x9b\x9d\xeb\x35\x5a\x40\x54\xc0\xeb\xb1\x27\xf2\xec\xfe\x85\xfd\x77\x08\xe6\x8d\x5a\x59\xe8\xdb\x8a\x43\xeb\xcf\x68\xcf\xf9\xe3\x4c\x67\xb0\x48\xb3\x44\xc7\x4d\x3c\x73\x52\xf0\x87\xef\xcc\x64\x5c\x5a\xe1\xc5\xe0\xfb\x1a\x99\x05\x38\xac\x42\x9e\xcc\x95\x34\x95\x0c\xb9\x4a\xba\xc0\x2a\x1d\x8a\x42\x38\x4b\x5b\xc7\x30\x09\xd4\xd6\xe8\x93\x5a\xcd\x80\xd2\xbd\x2b\xdf\x71\xaa\xaf\x8e\x31\x8e\x96\xcb\x84\xae\xd3\xf0\xea\xf4\xa8\xda\x3e\x54\xb4\x5f\xa7\xc9\x9a\x71\x54\xda\x98\x94\x4b\x46\xa8\x95\xdd\xc0\xa8\xd2\xb7\x07\x6d\x37\x06\x2d\xa0\x3e\x1a\x34\xb2\x26\x0e\x7b\xbc\xad\x25\x87\x1b\x1a\xd7\x4b\x47\xe2\xab\x3e\x4a\xd9\xcd\x41\x16\xa1\xd2\x6b\x48\x85\xdc\x6a\x82\x16\xb4\x19\xab\x30\xc0\x64\xca\x05\x87\x7a\x20\x04\xad\xc0\xd8\x69\xf3\x96\x99\x46\x99\xd8\x89\x5c\x57\x70\x4f\xe6\x01\x43\x03\x1d\x72\x7c\xcc\x9a\xed\x99\x66\x62\x2b\xca\x07\x36\x19\x39\x28\x67\x17\x42\xd9\x4d\xd1\xa8\x81\x89\x7d\x82\xa9\xc6\x2a\x56\x3d\x42\x15\xb7\x4f\x1a\xd0\x31\x98\x72\x58\xbb\x10\x5d\xf6\xfb\x58\xcf\xda\xe5\x8c\xa9\xfb\x3c\x60\xa8\x69\x3d\x36\xef\x06\xba\xb2\x54\x39\x32\x1c\xa8\xce\x92\x2f\xd4\x5c\x4c\x5d\x99\x6a\x40\x70\x1a\xd0\xd4\x89\x45\x1c\xe8\x5f\xa7\x93\xcd\x78\x1d\xeb\x71\x59\x6f\x5a\x2e\x19\x03\xb1\xb2\x87\xe0\x04\x33\xc7\x5b\x5e\xe7\x78\xf1\x2a\xcc\x32\xcf\xbc\x0c\x69\xfa\x36\xde\xcd\x3b\x2c\x11\xd6\x08\x81\x04\x7c\xd5\x4f\x17\x59\xc2\xc4\x5a\x87\xda\xaa\x8b\x0c\x4d\x37\x13\x23\xf0\xd2\x3e\x8a\x46\x81\x52\xe4\x1d\x3c\x0c\x1d\x2c\x25\x45\xdb\x19\x75\xd5\xb7\x30\x9e\xae\x85\xad\xe8\x87\xa7\xc5\x70\x0b\x31\xd7\xea\xb9\x46\xac\xbd\x7d\x52\x98\xab\x3e\x0f\xf3\xef\x46\xf1\xb6\x3a\x9b\x2a\xd5\xff\x5b\x18\xec\x69\xd1\x42\x17\x18\xb1\x84\xd2\x26\xad\xe3\x55\xf5\xfe\x2a\xeb\x50\x29\xeb\xc7\xb6\xaf\x72\xfc\xc0\x0b\x4c\xaf\x28\x84\x41\x63\x89\xf1\xcf\xfa\x1b\x1f\x25\xf5\x51\x50\xdb\xb4\xf7\xc2\x6d\x54\x6f\x9b\x17\x1c\x34\xcd\xfa\x14\xe5\xd5\xcb\x5c\xff\x0b\xc2\x7d\x83\xfd\x58\xc5\x0d\x5a\x24\x07\xa9\x43\x53\x3f\xe0\x5e\x0b\xf3\xa2\x49\xc1\x7a\x56\x12\x4d\x91\xc8\x9e\x3d\x30\xaa\x1e\x5b\x31\x4b\x97\x5a\x93\x9e\x6b\xa8\xba\x1c\x1b\x81\x0e\xc4\xdd\xc8\xaf\xe4\x7d\x6f\xeb\x3b\xb7\xff\x4b\xff\xb6\xac\xbc\x45\xa8\xdd\xe5\xeb\x75\xd2\x8f\x79\x78\xf9\x73\x55\x6a\x7c\x84\x20\xb5\x12\xfe\x74\x1a\x0f\x53\x29\x24\xff\x80\xbe\xc2\x42\xaf\x6e\x2b\x53\x7a\xa7\xba\xd6\x3f\xef\xc3\x57\xe7\x44\x4f\x04\x01\x94\xc7\xbe\xda\x58\x99\x72\xef\x1f\xb8\x2a\xe3\x29\x66\x1b\x74\x6a\x1f\x5d\x6a\xed\x23\x85\xbc\x0f\xe5\x9e\x2e\x3e\xa5\x61\xfc\x33\xe2\x1b\xd0\x85\xc6\x3c\x9f\x7f\x2d\xb4\xa6\x65\xea\xdd\x06\x61\x09\x8f\x6e\xf5\xc7\xa5\x8f\x5d\x20\x87\x03\x6b\xe5\x69\xfc\x98\x96\xb1\xc3\xb1\x3e\x48\xfe\xdc\x0c\x2b\x37\xb6\x0e\xf8\x38\x47\x93\x0e\xad\x8b\x40\xb5\x76\xb5\x3a\x15\x3a\x4c\xf7\xbe\x1c\x3e\xf6\x06\x2d\xaf\x80\x80\x35\x28\x4b\xa3\x63\xf0\xb2\x60\x36\x27\xab\xd6\xd6\x6e\xdb\xb4\x16\x87\xcc\xbe\x3e\x15\xa2\x19\x7f\x0b\xdc\x85\x09\xc3\xc1\xb9\x8f\xf2\x4d\xe9\x61\x2f\xb8\x0a\x37\x5d\x8e\xb3\xf0\x8b\xf5\x74\x7f\xa3\xe3\xb8\x7e\xb8\xce\x07\xdd\x9c\xca\x7e\x8d\x6a\x76\xcc\xe8\x21\x8e\x22\xe2\xe9\xd6\xf0\x02\xcd\xe1\xb3\x39\x49\xa2\xd6\x2b\xb8\x01\x26\x71\x32\x69\xde\x90\x6f\x82\xc2\x30\x4a\x81\x5c\x28\xd9\x8d\x9a\x08\x4f\x77\x96\xf5\x03\xff\xb2\xf8\x32\x3a\x75\x22\x7e\xb4\xaf\xd1\x8b\x34\x3f\xb6\x57\xe5\x78\x28\xc9\x90\xb1\x7e\x64\x11\xc3\x0a\x39\x3e\x19\xb2\x49\x35\xaf\xff\xc4\x96\xf8\x85\x2f\x85\x49\xce\x0e\x55\x86\x36\x3b\xb4\x8d\xa4\xcc\x6f\x70\x36\xe4\x79\x4e\x1f\xe5\x02\x67\x67\x0d\x1f\xe5\xa4\xbb\x53\x89\x45\xe3\x54\xc1\x83\xbb\x61\x14\x20\x9a\x89\x4c\x68\xcd\x8c\xc2\xc2\x30\xe0\xc4\x3c\xd3\xee\xd7\x42\x14\x21\xa6\xc9\xaf\x7d\x76\xc4\x17\xcd\xdc\x63\xf1\x8f\x1f\x29\x65\x70\xe8\x31\x75\x68\x87\x73\xed\x2a\x40\xeb\x35\x13\x03\x05\x2f\x86\x59\x0b\x4c\x3b\x8b\x69\x25\x96\xbe\xba\xc4\x20\x88\x47\x52\x30\xa1\x85\x6e\xaa\xbf\x7a\xed\xd5\xec\x5a\xb7\x9d\xea\xd5\xab\xd5\x36\x96\x72\x84\x73\x63\xd2\x46\x3d\xa2\x7b\x4d\x4a\x67\x44\x9f\xab\xcc\x42\x74\xe4\x32\x67\x22\x6d\x2c\xc8\x7a\x19\xd5\xc3\xab\x5f\x64\x96\x6e\x25\x8e\x7e\xb8\xbb\xbd\x34\x86\xdd\xbf\x4d\x5c\xa0\x78\x35\x05\x57\x6d\xc2\x26\xf4\xa9\x75\xfe\x36\xc2\xea\x67\x00\x27\x29\x77\x47\xcf\x5b\x3f\x69\xcd\xcc\x76\x9c\xc9\xac\xbc\xc1\x8f\xed\xc7\x5f\x11\x4f\xb6\xb4\xa5\x0a\x5d\x94\x7a\x4e\x76\xff\x2f\x9d\xa5\xd6\xef\xbb\x65\xc7\x6a\xa0\x7b\xb9\xcf\xf3\x3f\xd2\x5e\xff\x4e\x44\xef\x9f\xda\xe3\xf8\x5e\xce\x84\xd5\xed\x6e\x35\x52\x17\xb3\xc2\xf7\x8a\xcd\x17\xc5\x82\x53\x69\x6a\x6d\x62\xf2\x58\xfc\x72\xb2\x75\x1e\x3b\xf3\x84\xd0\xe8\x8f\xec\x78\x98\xd1\x71\x23\xd8\x6e\xa2\x4a\xda\x8a\xe3\xb3\x23\x15\x90\x5f\x99\x26\xed\xdf\x54\xc0\x83\xea\xcc\xfc\xe3\x42\xbd\x39\xea\xc9\xb4\x7a\xfb\xcf\xd3\x32\xed\x2f\xe0\xaa\xe3\xd6\xf5\xf8\x4c\x91\xeb\x9c\xf6\x9c\x54\xe8\xdd\xff\xc2\xc4\x63\xcf\x0b\x65\xaf\x77\x96\x6f\x38\xfb\x4e\xc4\x8d\x4c\xdb\x49\xfc\xef\xb1\xfc\xf0\x53\x3f\xde\x15\xcf\x9c\x62\xce\x13\x3a\xc8\x6a\x09\x9c\x66\xcf\x34\xb8\xa5\x87\x4f\x18\xbc\xb9\x4a\x9a\x87\xe6\xd3\x0c\xd7\x95\x0c\xdd\x5f\xb2\x74\xd2\x71\x8a\x4b\xc8\x65\x39\x36\x04\xeb\x82\x02\xa4\x1f\x5b\xca\xde\x7a\x1e\xab\xdf\xaa\xa8\x7b\x16\x21\x7a\x93\xd2\xfe\x69\x3c\xaf\xc8\x7f\x27\x65\x9c\xfa\x27\xbc\xad\x46\xdb\x01\x10\xac\xa3\x4b\x90\x9d\xc4\x16\x94\x32\x84\x7a\x83\x25\xf1\x75\x40\x06\xb1\xe3\x80\xd8\x51\x44\x8a\xca\x2f\x7f\xdb\xed\xf1\xd4\x5c\x25\xb0\xca\xb7\xe4\x88\x2a\xc0\x53\x6a\x17\xed\x24\x05\xf5\xd1\xa4\xf4\x51\x88\x2f\xd8\x50\x29\xec\x2c\x20\x13\x76\xbb\x7e\x32\xb4\x9b\xc3\x50\x03\x34\x70\x57\x99\xca\x55\xb9\xd2\xdd\xc7\x0d\xc0\x6c\x1f\x0a\x5b\x1b\x6a\x59\x4b\x04\x26\xa0\x30\x7c\x87\x3b\x43\x08\xc9\x70\x0b\x06\xd8\x28\x5e\x2d\x2c\x87\x64\x36\xd4\xb3\x0c\x53\x69\x18\x23\xfb\xce\xc8\x34\x28\x07\xc5\xb2\x04\x5b\x17\x5e\xae\x7d\x12\x50\x40\xd7\xc3\x84\x3f\xd8\x6f\x60\x69\xa7\x58\x68\x0e\xd1\x05\x2d\x2d\x39\x66\x02\x2a\x5b\x3d\x4d\x13\x57\xd4\x0c\xf0\x86\xb6\xaa\x44\xa1\x48\x29\x27\x0f\xcc\x13\x63\x3c\x69\xb0\x4d\x13\xb4\xc1\xe0\x91\x5e\x0b\x63\xbd\x45\xce\xb9\xc9\xea\xfe\x2c\x5c\x2c\x9c\xc0\xc9\xb7\x97\x26\xd5\x65\xdd\xfc\x18\x67\x73\x61\x2c\x00\x7e\x03\xd8\x58\x18\x28\x7c\x0c\x81\xc0\x45\xe9\xf9\x01\x30\x80\x85\xc2\x16\xda\x14\x9c\xa0\xc6\x95\x6f\x9c\xf5\xd4\x62\x84\xaf\x70\x54\xe8\xda\xc9\x6d\xea\xcd\x6b\xbc\xd7\x5e\x73\xd5\x56\xe4\x3a\x16\xa9\x3a\x6f\xcf\x5d\x28\x3f\x29\x53\x5a\xae\xcf\x32\x75\x85\xe4\x7b\xb4\x40\xd5\xd4\x66\x5a\xbd\xf7\x94\x61\x94\x52\x47\xed\x0e\xcd\x86\xbf\x65\x0b\xd7\xa3\x83\x86\x38\xc6\x75\x9e\xa7\x12\x76\x21\xcd\x01\xe2\x73\xd8\x7d\x59\xbb\x94\x61\x00\xf2\x85\x0a\xef\x37\x6d\x0d\x8d\x08\x72\x08\x09\xc8\x65\xc0\x44\x75\x7d\x7e\x09\x7b\x98\xab\x88\x0d\x10\x71\xea\xdd\xaa\xce\x97\x40\x03\x9a\xa8\x52\x4c\x49\x88\x5e\x20\x6d\x8d\xcf\x01\x22\x6c\x7f\x9e\xba\xdb\x3a\xa8\x25\x4e\xbe\xe9\x3c\xc5\xff\x75\x44\xab\xf6\xe1\x38\x75\xdd\x40\x9c\x4f\x11\x3d\x1a\x1b\xde\xd7\x87\xf0\x7f\x3f\x11\xf4\x45\x24\x42\xd4\xd7\x93\xa9\xa1\xcb\xd6\x06\x9e\xab\x14\x08\x43\x64\xb3\xdd\x6b\x6c\xf7\xbf\x68\x09\xe4\xbd\xe0\x18\x13\x84\x73\x42\xcb\x4d\xd9\x48\x2b\xeb\x4b\x84\xfb\x19\x91\xf7\xdf\x55\x4b\xdc\x8d\x86\xa0\x50\xaa\x63\xec\xc8\xab\x76\x76\xc5\x21\x47\x32\xd0\x37\x17\xeb\x6b\xe2\x89\xbd\x66\xa7\x8e\x59\x69\x26\xe0\x1d\x6c\xde\x9f\xb5\x2a\x6a\xc3\x50\x3f\x0c\x9d\x58\xb5\x1d\x3e\xce\x76\xd1\x49\xf8\x71\xde\x7e\x20\x17\x9b\x07\x78\x8c\xb9\x4d\xc2\xf2\xd8\xf7\x6f\xbf\x6c\xe5\xaa\x7d\x96\x5f\x6d\x77\xfa\xa2\xe4\x2e\x64\xf9\x36\x52\x7b\xe8\x4a\x80\xac\x8d\x12\x81\xd1\x13\xef\xae\x22\x8a\xbe\xcf\x02\xc8\xd9\x41\xc9\x71\xe6\x45\x8a\x39\xa7\x68\x84\x2f\x2a\xdb\x96\x15\x34\xfc\x51\x59\x36\xf4\x60\xe0\x64\xad\x63\x7f\x09\x9d\xe2\xf5\x34\xfd\x84\x76\x0c\x1d\x53\xb7\x6e\xa5\x34\x2b\x5f\x85\xdd\x1b\x51\x7f\x90\x73\x01\xa9\x1e\xcd\xc9\xa5\xe3\x56\x4d\x0c\x86\xed\x49\xa5\x61\x12\x74\x58\xc4\x47\xec\x88\xa0\xa3\x4a\x24\x51\x22\x23\x97\x34\x21\x23\xac\x4a\x78\x79\xff\x6d\x82\xb0\x89\xd2\xe2\x12\x84\x72\xf7\x87\xf3\x48\x9c\x38\x29\x48\x41\xe4\x5f\xac\xc5\x4a\x83\x69\x86\xd0\xeb\xc3\x55\x1d\xa9\x9f\xee\x8a\x5f\x16\x74\x1a\xa2\x90\x72\xe3\x71\x24\xe4\x0a\x93\x1e\xf9\x46\x16\xda\x42\x18\x47\x4b\x99\x35\xee\xda\xd8\xb3\x61\x45\x3d\xda\x11\xee\xac\x8f\xb2\xe1\xf4\x58\xd9\xca\x9d\x7e\x8a\x21\x2d\xb2\xc0\x9b\x10\x82\xa5\xe5\xc6\xc0\x08\x99\x79\x71\x37\x5b\x57\xf4\x56\xb8\xc0\x98\x1a\xa3\x2a\x78\x56\xe9\xb0\xef\x6c\xdf\x66\xd7\x1d\x8f\xd9\x51\x9e\xca\x6f\xdd\x30\x56\xbe\xee\xc3\x43\xad\xce\xcf\x83\xb5\x04\xfe\x89\x3c\x0d\x78\xa8\x79\xa5\xa7\x39\xb9\xc1\x2c\x00\xb9\xbc\x2b\x73\xac\x2e\xd6\xf0\xaa\xd4\x27\x9c\x76\x4b\x05\xff\x41\x4c\x94\xfa\x43\xd6\xd6\x1a\x79\xdd\x88\x7c\x61\x3b\x00\x67\xa6\x68\x5b\x0e\xc2\xe1\x77\xcd\xa4\x98\xc7\xa7\x8e\x95\x04\xcf\x52\x46\x5f\x86\x24\x66\x2f\x62\x12\xee\x76\x32\x13\x07\xb3\xdb\x97\x72\xe5\x8f\x70\x53\x5d\xd1\x0d\xb8\x1e\xe0\x65\x61\x7e\x94\x67\xb9\xec\xd7\x1d\x6c\xbd\xfa\x74\x90\x6a\x00\x62\xd5\x48\x4d\x72\x9d\x54\x27\x63\xb4\x42\xae\x82\x00\x2d\x29\x8c\x3f\xbd\x17\xa9\xc6\xb5\xf7\xae\xb7\xb4\xa8\x33\x96\x6e\xa7\x70\xb5\xf2\x4a\x75\xe5\xfd\x08\xd1\x01\x15\x31\xbe\x6b\xd2\x3b\x88\x06\x1d\x05\xcb\x39\x81\x8e\xe8\xaa\xf4\x71\xaa\xa9\x16\x3d\xfc\xa6\xe3\x49\x1d\xa3\xb1\x4b\xc5\xab\x2e\xf7\x87\x64\xc3\xe6\x36\x95\xbc\xff\x22\xee\xe4\x95\x88\x2e\x15\x94\xbe\x4b\xe5\x0f\x33\x94\xe3\x29\x5d\xa3\xd4\xa8\x66\x03\x98\x3c\xb4\xdc\x47\x54\x54\x2c\x06\x89\xcc\x19\x7a\xed\x4a\xa7\x7a\x44\xb9\x78\x5a\xf5\x46\x1c\x4f\x44\xf3\xf8\x92\xab\x7f\xef\xce\xa9\xee\x47\x5c\x62\x0c\x82\xd6\xa9\xab\xc1\x2d\xd4\x61\x46\xd6\xa8\xa9\xfa\xc3\xcf\x32\xcc\x55\x8b\x41\x69\xdf\xdb\x7f\x3e\x79\x47\xd3\xe5\x37\x2c\x70\x37\xbe\xac\xb6\xb8\x5e\x52\x6e\xb1\x00\xdd\xb0\xa3\xbe\xdf\x2d\x16\x8b\x4c\x39\xb6\x5b\xff\xb6\x70\x97\xf0\x63\x7a\x17\x2b\x63\x49\xe1\x00\x9f\x28\x5c\x8b\xfc\x86\x95\xe0\x06\x03\xd7\x8f\xfb\xae\xf4\x9d\xa0\x38\x20\xb0\x90\xdd\x82\x57\xdc\xfa\x94\x3a\x3e\x06\x7d\x62\x7d\xbe\xa3\x61\x6d\x30\x41\x11\xaf\x15\x0a\x3d\xc4\xa3\x3b\xdd\x7f\x3d\x5e\x83\x12\xa1\x49\xa8\xe0\x8a\x59\x4a\x15\xd1\xac\x5a\x7b\xca\xdb\xcf\xd3\xb6\x6a\x86\x57\x0a\x09\xfa\xe4\xd5\xed\x86\x7f\xb8\x90\x97\x38\x1c\x0d\x6e\x10\xe4\xb0\xf0\xe2\xf0\x25\x38\x2a\xc3\x1a\x67\x1e\x70\xb5\xba\xbf\xf8\xde\x3e\xf6\x85\xab\x34\x7a\x80\xb4\x90\x77\xd9\xd4\x97\x83\x30\x26\xb1\xac\x77\xa5\xe5\x7b\x71\x56\xdf\x80\x33\x0d\xa8\x85\x64\x15\x5c\x5c\x61\x85\xf1\x7e\x13\x36\xb8\x91\x89\x50\xe2\x76\x57\x39\x18\xba\x21\xfe\x82\x44\xe8\x08\x2b\x17\xac\x55\x54\xb6\x54\xb5\x48\x02\xba\x75\x0b\x76\x4f\x48\x86\xae\x4e\x83\xfb\xc3\x1a\xff\xfd\x62\x3b\xfe\x93\xda\x4c\x93\xdf\xde\xbb\xd2\x84\xb7\xe7\x43\x93\xa8\x08\x9d\x32\xc4\x5f\xbf\x74\x6d\xa7\xb8\xdd\x7d\x5e\x48\xf8\x9c\x77\x2d\xc3\x8b\xdf\x1f\xc3\xab\xee\xdf\x6b\xbb\x5f\xb9\x4e\xfe\xd6\x37\x7a\x9e\xbd\x5a\xdf\xc5\x35\xf5\x87\x3f\x54\x9b\x50\x1a\x0d\x76\x8a\x12\x92\x2a\x14\x52\x93\x20\x61\x0f\x61\x59\xd7\x71\x97\x67\x89\xdf\x39\x3f\x69\xb7\x7d\xf5\xd3\x79\xad\x3d\x01\x97\x2a\x91\x52\x75\xdb\xbd\x70\xaf\x14\xc0\xb2\xe2\x1f\xa6\x96\x9f\x1e\x12\x4b\xaa\x2a\x80\x8d\x95\xd1\x24\x0d\x49\x89\x2a\xcf\xaf\xab\xab\x12\xa5\xac\xc8\xa8\x6b\xbb\xe6\x37\x91\x94\x90\x9e\x5a\xdf\x04\x5c\xfc\x0d\xda\x82\x6b\xc0\x5f\xc3\x66\xc4\x59\xaa\xba\xc6\x39\xee\x51\x1f\x57\x97\x5d\xe7\x1e\x4b\x70\xd6\x2f\x99\xef\x38\xf2\xff\x1a\x2a\x3e\x97\x34\x91\xf0\x12\x80\x88\xb8\x72\xa3\x0e\xa4\x44\x06\x68\x35\x29\x29\x21\xad\x76\x0c\xcc\x2e\x75\x84\x74\xf1\x02\xd3\xe5\xd2\xb7\xa3\xdd\x85\xa4\x84\x96\x91\x56\x17\x8c\x21\x6f\xaa\xe7\x13\x20\x3c\x87\xa8\x7d\xee\xc3\x91\x87\x33\x72\x62\xbd\xe1\x1e\x24\x67\x2f\xc7\xc1\xdd\xa1\xd3\xa1\xfe\xc4\x54\x55\xfe\xc4\x92\xa9\x3b\xba\xb1\x90\x29\x92\x2c\x5f\xbe\xd6\x40\x64\x7c\xc0\xe3\x24\x1f\xe5\x00\xc5\xce\xd5\x47\x3b\xbc\xfb\xa5\xa0\x7e\x05\x8c\xcf\xa4\xe9\x7c\x0c\x03\xb3\xef\x3b\xcb\x99\x9b\x56\x7e\xe2\x6f\x6d\x18\xbb\x09\xbe\xd9\xd2\x09\x3a\x4e\xe9\x79\xc4\x05\x4e\x99\xeb\x9b\x43\xca\x0e\x3b\x75\xf3\x56\x4d\xdd\x99\xe0\x88\xb5\xfc\x51\x5e\x77\xd9\x48\xb7\x74\x9d\xbd\x97\x6b\xe4\x07\xfa\xe7\x33\x35\x36\xd4\x8c\xf0\x36\x93\xe2\x9b\xb2\x01\x3a\xe0\x81\x73\xeb\x9e\x69\xdb\x3b\xcc\x03\xee\x6b\xb3\x8e\x15\x0f\x2f\x31\x1a\x40\x72\xbc\xf4\x27\xa1\xdb\x89\x89\xae\x82\x24\x20\x71\xab\x80\x25\x4f\x6d\xae\x29\x2c\x42\x5c\xdd\x3f\xab\x89\x47\xc7\x82\x68\x06\x74\xc4\x58\xb4\x32\xc4\x5f\x2e\x3b\xea\x24\xc5\xf5\xd2\x12\xf6\x37\x9a\x16\x2f\xda\xa2\x5b\x63\x83\xda\x8c\xca\x80\x53\x6b\xbd\x6f\x90\x76\x00\xd7\x44\x8c\x45\xc8\x60\xe7\x24\xb7\xac\x80\x10\xdd\xa6\x2a\x8f\xf2\xcc\xd5\x1a\x27\xbe\x27\x34\xb9\xe3\x71\x55\xe8\x26\xa2\xa7\xb8\xef\xb4\xe1\xf2\xf8\x4d\x61\xbf\xaf\xa4\x3d\xd9\x9f\x7c\x2a\xe7\x98\x00\xf2\x2a\xd6\x66\xdd\x87\x87\xa0\xba\xa4\x1c\xf1\x5d\x13\x41\xde\x5e\xbb\x6e\x00\x1b\xbd\x85\xc7\xb4\xb6\x59\xe5\xb7\xb4\xe3\xa3\x52\x98\xb9\x43\x54\xf7\x80\xb5\x19\x3c\xe1\x67\x65\xd7\x55\x76\xf6\x08\xce\xb4\x55\x5f\x8f\x6a\x9a\x00\x49\x45\x0b\x45\x1c\xf6\xc9\x3b\x23\x2a\xc8\x1e\x41\xe5\x76\x82\xf1\x75\x6a\xc7\xd7\x5a\x03\x40\xdc\x16\xa6\x2e\x8b\xb6\x94\x8a\x10\x12\xdf\xd7\x2e\x6e\xda\x12\x4e\x65\x78\xb6\x43\x45\x63\xdc\x39\x1b\x0c\xd7\x6a\x22\x3b\x3c\x78\xe7\x1c\x27\x69\x79\x5c\x93\x41\xd8\x1f\x24\x5c\x03\x87\x99\xc3\x2b\x45\xb8\x63\x7f\xd9\xb5\x8a\x07\xe9\x51\x56\x0d\x1b\x2d\x50\x2c\x88\xe4\x06\x49\xf2\x5d\xa8\xab\xfb\x16\x54\xbe\x27\x1a\xf4\x37\x20\x90\xc7\xcf\x2f\x51\x7e\xd2\x5d\x2d\xd3\x1a\xaf\x85\x2d\x3e\x13\xca\x3b\x13\x79\xa0\x95\xa2\x5c\x98\x69\xd5\x62\xe9\x7f\x99\xdc\xc2\x59\x8a\x83\x7e\x11\x2d\xf4\x3c\xe1\x1a\xf6\xb8\xcc\x4c\xcb\x7f\xd6\xfa\x07\x49\xd8\x4c\xd5\x57\x15\xb5\xc0\x3f\x41\x73\x68\xb8\xa2\xd8\x0e\x21\x48\x69\x98\x88\xb9\x94\xa1\x16\xd6\x4a\xa2\x82\x21\xa3\xf0\xf4\xe2\xa4\xac\x1a\x6d\x6b\x7d\x39\x7a\x18\x28\xcc\x9b\xe7\xa9\xbb\xe6\x20\xde\x8d\x9d\x47\xf2\xe5\x0d\xc4\xf6\xac\xdd\xac\x9e\xd9\xbd\xc6\x34\xec\xc6\xe2\xf8\xe5\x1b\x2c\x9c\xea\x57\xf7\x58\xc4\xd2\x99\xdc\xa5\x7a\xae\x11\x30\x64\x6b\xba\xe7\xcb\xd7\x68\x49\xa3\x7a\x83\x51\xb6\x2f\x01\x8a\x8b\x79\xda\xdf\x42\x1a\xef\xd7\xba\xcd\xe6\x38\x1c\x00\xea\x9a\xde\xe7\xcd\x45\x84\xd6\xc0\xb4\xf6\x71\xd9\x68\xdb\xdf\x61\x8f\xb7\xbe\x3d\xf2\x9d\x5d\xd1\x4f\x93\x07\x3b\x14\xc2\xd5\x43\x8c\xdd\x0a\x89\x29\xa3\x9d\x65\x35\xb0\xe7\x1d\xf5\xe0\xcd\x04\xcd\xfa\x19\xaf\x45\x17\x13\x69\x84\x15\x97\x66\xb2\x5d\x30\x30\xb9\x45\xe1\x2d\x32\xb0\xc5\xc2\x14\x2c\xc3\x5a\xeb\xc1\x8d\xa3\x76\x75\x04\x28\xf0\x4f\xe4\xe5\x95\x6b\x70\xa1\x83\xb1\xb3\x85\x20\xb7\xaa\x73\x17\x1d\x0d\xd3\xe2\x3a\x53\x98\xcf\x23\xd4\xaa\xc9\xa5\x23\xde\x00\xfb\x56\x06\x63\x70\x0c\x88\x51\x1d\x69\xb1\xd1\x11\xfa\x6a\xbc\x0e\x0d\xb8\xbe\x3c\x09\x33\x18\x7c\x21\x64\x5c\x3d\x8f\xe4\x52\xb9\xd8\x53\xf6\x4f\xf8\x6b\xee\xa1\x90\x1e\xc6\x0b\xac\x75\x66\x12\xae\x4c\x55\x6c\xa1\xe3\xf2\x0c\x64\x5f\x66\xec\x3c\x6a\x8d\x06\x42\xf4\xba\x5c\x34\x77\x63\xa5\x63\xe6\xe3\x4b\xac\x54\xd4\xee\x75\xf6\xb1\x78\x4e\x76\x15\xc1\x59\x5c\x65\x81\xfe\x85\x85\xea\xd5\x0a\x83\x55\x3e\x7d\x7f\x07\x11\x1a\x19\x5f\x54\x36\x01\x87\xbd\x44\xb1\x08\xb8\x6a\xe3\x4b\x68\xa1\xbb\x6b\x26\x6d\xee\xc1\x9d\x54\x06\xe2\xee\xa3\x44\xea\x8b\x2d\x26\x3f\x25\x22\xe4\xfa\x73\xb5\xf4\xa6\x8e\x79\x73\x97\x86\x2b\x16\xf9\x8d\xa6\xfd\x07\x35\xdf\xaf\x01\x1b\x5e\x99\x2c\x1a\xbd\xed\x7e\xc8\x48\x6b\x28\x74\x57\xbd\xf1\x2c\x84\x51\xe2\x6a\xa8\x54\xe6\x7f\x1a\xc1\x7c\x88\x39\x8e\x40\x8e\x65\x07\x8f\x2d\xce\xd2\xcf\x27\x64\x0b\x52\x4d\xa3\x82\xd3\xa5\xd0\xe9\x3b\xb2\xdd\x8a\x1b\x03\x2d\x57\x22\x46\x24\x2b\x94\x3a\xa7\xfd\xb2\xca\x8e\x41\xb3\x5c\x05\xe5\xb0\x29\x28\x4a\xee\x86\x6a\x18\x4f\x35\x41\x37\xa3\x39\xba\x49\x4b\x3c\xdc\x71\x20\xe3\x14\x0b\x3f\x98\x0c\x39\xab\x7d\x99\x03\x2b\xfb\x6e\xa3\xf3\xc5\xd1\xd9\x28\x8f\x1f\x1b\x3a\xaf\x7d\x66\xe5\x29\x91\x88\x6c\xb7\xbe\x5e\xc2\xb4\x4a\x99\x5e\x3a\x68\xb1\xfc\x88\xe2\x25\x2a\x35\x0d\xb1\x0d\xf6\xea\xcc\x03\x94\x62\x68\x2d\x89\xaa\x23\x7e\xfd\x9c\xfc\x2a\x0b\x38\xda\xe7\xd0\x61\x2c\x51\xcd\xd4\x58\x8e\x1d\x1e\xf2\xc8\x6b\xdc\x6c\xc1\x8c\x9f\x7b\xe2\x76\x5e\xc1\xb1\x8f\x17\x15\xef\xfc\xc4\x03\x70\x85\x9d\x95\xa2\x5d\xbf\xc7\xb3\x52\x19\xe2\xc1\x17\x9f\x0d\xb3\xb3\x5c\xe2\xe2\x07\xe8\x41\x36\x84\x76\x65\x56\x03\x50\xe0\x34\x1e\xb5\xd2\xc3\xbe\x11\x23\x93\xf8\x4b\x8a\x0a\x96\x44\x66\x1b\x0d\x17\xed\x67\x9b\x14\x27\xbf\xd6\xe4\x32\x36\xc1\xef\x4f\x5a\x10\xa0\xcd\x2c\x5f\xa7\xc4\xd2\x16\x0e\x6a\xb3\x80\xd7\xa6\xa2\x7a\xb9\xc8\xe4\xe1\x37\x26\xcc\x3c\xe8\xba\xc9\xb4\xd4\x34\x5e\xbe\xcc\xb6\x87\xfe\x17\xcc\xeb\x0c\x23\xdf\x52\xfa\x08\xec\xe6\x82\x8a\x7d\x49\x63\xd9\x1c\x65\xdf\x40\x09\xbb\x15\x13\xb2\xb0\xc0\x25\x79\x71\xfc\x44\x74\x85\xca\x5d\x32\x13\x88\x42\xb5\x9a\x41\xf8\xb2\xbf\xed\xab\x17\xda\x5a\xc6\xac\x9e\xbb\x04\x1e\xa5\xce\xd7\xcd\x80\xed\x7d\xe4\x41\x32\x81\x45\xf0\x55\x54\x6f\xf7\xe7\x0a\xaa\x5e\x03\xf7\xaf\xa7\xac\x9e\xae\x0c\x4a\x00\xaa\xf8\xbd\x73\x29\x41\xb2\xdb\xfa\x05\xad\x68\xd0\x22\x32\x92\x88\x43\x9a\x04\xc5\xe5\x65\xd3\xc8\x2c\xea\xed\x82\xf6\x9a\xd8\xcd\x7b\xea\xe7\x31\x3d\xd0\xb7\xa9\x13\x58\xd5\x38\x35\xbe\x34\x95\x16\x9e\x29\xdb\x70\x83\x76\x61\xc1\xfc\x6e\xd5\x06\x31\x1b\xc9\x0a\xb5\xfd\xe9\x48\x11\xe2\xa9\x47\xfc\x38\x12\x70\x40\x03\xd4\x78\x93\x1f\x06\x57\x45\xb9\xad\x19\xf1\x9d\x6e\xe8\xd7\x71\x3b\xa5\x60\x7f\x21\x3c\x67\xf2\x28\xa0\xcc\x21\x86\x35\x35\xba\x2a\x7d\xd5\xb3\x53\x29\x4b\x97\x68\x97\x1b\xac\xb9\xb1\x7a\x50\xa1\x17\x0b\xea\xbf\xaf\x4e\x8a\x2f\xa9\xeb\x42\xea\x24\x68\xb1\x34\x9b\x26\xd2\x1c\x35\x55\xbd\xfa\x08\x52\xeb\x5c\x99\x43\xb3\x36\x87\x8a\x83\x47\x85\xf8\x63\x71\xa6\x29\xfe\x84\xcf\x35\xce\x17\xe7\x2f\x9f\x6c\x0f\x13\x33\x18\xaf\xb4\x8e\xb9\xfd\x33\x88\x4c\xf6\xf5\x6b\x94\x47\xc4\xc6\x6a\xe0\x7c\x10\x54\x51\x59\x70\x4a\xdf\xcc\x00\xf5\x26\x63\x81\x58\x6f\xac\x8a\x0a\x33\x67\x4a\xb1\x4a\xba\x74\xee\xac\xfa\xee\xc3\xa8\x54\x7e\x60\xf0\xdf\x62\x74\xd1\x7e\x12\x76\x72\xb2\x08\xa2\xb3\x1a\xdf\x8c\x8c\xea\xbf\xac\x60\xd1\xf9\x67\x72\x9a\xa9\x3f\x4c\x91\xbd\x2a\x0e\x57\x6f\xbe\xeb\xc8\xb1\xdb\xdf\xad\x16\x79\x92\x17\xb6\x87\x24\xf2\xa7\xa7\x11\x67\x88\x47\x76\xae\x95\x8f\x2e\x03\xbc\x3c\xf6\x0f\x10\x07\xc4\x20\xe6\x39\xe7\xa1\x5d\xc9\x05\xa9\x11\x9f\xd8\xad\x86\x71\xee\x38\xb1\xe4\xe3\xa6\xe4\xfc\xfc\x9a\x78\x83\x75\xed\xac\xa1\xb4\xcc\xad\x0d\x44\xb8\xef\xd3\x42\xcf\x5b\x0b\x64\x10\xde\x3d\x78\x3b\x32\xe8\xd2\xc4\x7a\xbe\x6b\xcb\xf4\xeb\x35\x57\x50\x24\x0b\xc3\x20\xa4\x6d\xc0\xeb\xaa\xb9\xee\xb3\xe1\xa9\xf8\x9a\xe2\xf8\xeb\xb3\x22\xe0\x02\x75\xb0\x47\x75\xed\xff\x7f\xfa\x1f\x39\x69\xd7\x41\xfd\xbe\xc5\xfc\x77\x0f\xaa\xe9\xcd\xb7\x90\x98\xc1\xbf\x38\x5c\xed\x68\x27\x03\x6d\xa2\x35\x88\x83\xf1\x25\xf7\xcc\x2d\x15\x56\xe0\x83\x4a\x6f\xb0\x15\x8d\x34\x1f\x88\xef\x98\x04\x2a\xc4\xc6\x48\x8e\xa9\xcb\xb7\x18\x3e\xdf\x00\x3a\x1f\xd3\x15\x88\xd3\x3b\xee\x3a\x97\x1e\x75\x90\x2d\x94\x96\xec\xc9\xea\xb3\x5b\x84\xd4\xe0\x73\x93\xb4\x05\x06\x08\x11\x16\x26\x74\x21\x37\x74\xcd\x94\x8a\x5b\xeb\x3d\x57\x50\x07\x9c\x4f\x9d\x05\x1d\xbe\x88\x05\x5e\x61\x81\xda\x00\x4f\xc5\x7c\x2b\xbc\x06\x5d\x61\x84\xcd\x24\x7c\xef\xbf\x42\xbe\x28\x4b\xc7\x6c\x87\x96\xeb\xec\x66\x31\xc4\x60\x4f\x05\xd4\xad\xd6\xee\x30\x39\x3f\x35\xdb\x8a\xbe\xa0\x82\x93\x67\x58\xa4\xc6\x6b\xb5\x83\x0d\x74\xd7\x9e\x5b\x00\x31\x31\xaf\xa6\x26\x0b\xe4\x39\x45\xb1\xe3\xb6\x43\x8b\xbb\x7d\x23\x1d\xf8\xd1\xbc\x13\x12\x3d\xf1\xab\x1b\x0f\x91\x9b\xd4\x08\xa4\x04\xcf\x92\xa6\x89\x9d\x02\x37\xcb\x08\xa4\xa2\x6a\xe0\xb9\xd1\x9f\xf8\xce\xfe\xfb\x73\xf1\xb6\x6d\x8a\xf1\xd9\xe1\x14\x6d\x45\xa8\x22\xa7\x05\x2d\x1b\x5a\xac\xa4\x24\xa5\x48\x2e\xdf\x75\x4b\x2c\x56\x09\xbf\x6d\x21\xc1\x88\xdc\xd5\xbe\x29\xf2\xe8\x82\x38\x9a\x6f\x82\x1f\x06\xa4\x1f\x96\x1b\xf8\x80\xf0\xba\x60\x0d\x8b\x20\x54\x13\xf0\xd8\x8d\x0a\xbf\xe2\x71\x88\x0c\x89\x25\xa0\x21\xbc\x86\x63\xc4\x27\x32\x6f\xbf\x76\xf5\x89\x64\x69\x7a\xd1\x45\x42\xe6\x1d\xf4\x41\xb9\x1d\xdb\xf6\x7c\xa7\x10\x6c\x79\xc8\x3e\xc5\xb9\x12\xb7\xee\xcb\x50\xeb\x11\x6d\x83\xc0\x80\x55\x9b\x97\x84\x79\x09\xb4\x20\x1c\x5d\x98\xeb\x08\x24\x8c\xe3\x0b\xa9\xf1\x3b\xbd\x7d\xbb\x91\xc9\x69\x45\x3f\xdc\x91\x98\x09\x09\xa5\x9f\x9a\x4c\xcd\xb3\xbd\x56\x7e\xc8\xaa\x9c\x24\x23\x7c\x07\x66\x3f\xfe\xea\xa0\xf0\xc3\xf8\xa1\x1c\xd5\x0d\x6f\x8d\x1c\x3a\xd4\xa8\x9e\x8a\xaa\x01\x76\x0c\x04\x42\x3f\x8a\x8a\x6a\x17\xbb\x5e\x02\xa1\x45\x51\x39\x7c\x08\x09\xcb\xf6\x7a\x19\xfa\x95\xea\x2f\xae\x1e\xc2\x3e\x81\xfa\x5c\xdc\x4e\x8e\x26\x5b\x1b\xe3\x4a\xff\xdc\x8a\x3a\x5b\x90\x0a\xb1\x29\x16\x9c\xd0\xb7\x0e\xee\x5e\xea\x38\xe5\x97\x58\xd5\x3d\x7a\x08\x21\x57\x92\x7a\x70\x86\x50\xc8\xa9\x40\xb2\x8e\x17\x77\x37\x63\x7e\xcb\xfd\x0b\x55\x5b\x81\x62\x7b\xf3\xef\xd7\xb8\x99\x98\xf2\x87\x98\x96\x02\x12\x0f\xe8\xaa\x10\x30\xd7\x81\x1a\x5c\x8a\xc4\x8d\x87\x66\x19\x52\xd8\x14\x52\x74\x85\xa7\x9c\xc9\xdd\x49\xec\xad\x5a\xc5\xe5\x2b\x08\x57\x21\x91\x4a\x3c\x13\x3a\x3d\x65\xf5\xfc\xa3\x3f\x3f\xd3\x8d\xcc\x53\x7f\xde\x83\x5e\x95\x3d\xac\xa9\x7d\x92\xd9\x6a\xdc\x8e\x08\x61\xef\x0b\xad\x40\xf9\xb0\x22\x64\x64\x30\x06\xd6\xaa\x1d\x9f\xd4\xae\x93\xa8\xae\x04\x47\xc7\xb8\x17\xe5\x5e\xe1\x0e\x5b\x20\x26\x93\xcc\x91\x3b\x2e\x36\xd2\xaf\x94\x9a\x0b\x3d\x47\xa4\x0a\xcc\x88\xa0\x4d\xf7\xea\x90\xe5\xb4\x65\x4f\x4f\x32\xcc\x76\x43\xb7\xa6\xb2\x97\x48\xa0\xbf\x43\xa9\x7e\xa2\x80\x84\x86\x50\xed\x55\x4c\x8d\x6c\x14\x96\x3e\xa1\x34\x5a\x51\xf3\xd4\x94\x7b\x33\x29\x5e\x92\x27\x60\x09\xce\x9c\xc8\x4e\xf7\x71\xf4\x20\x66\x08\x3b\xea\xcf\x5e\x5c\x8a\x8d\xbb\x3c\x84\x28\x56\xa0\xb8\x8e\x70\xf6\x18\xf0\x0f\xbe\x17\x89\x8b\x95\x2e\x71\x53\x5a\xce\xef\x8d\x77\xdb\x1a\x4c\xa2\x38\x82\x5a\xf4\x36\xc6\xb8\x3c\xd4\xdb\x64\x40\x16\x69\x18\xac\xcb\xca\x74\x9b\x49\x99\xcd\x4d\x3f\x40\xd8\xaf\x54\x7e\x73\x5b\xe0\xd5\xbe\x70\x29\xc3\xed\x46\x30\xd6\x1b\x95\x46\x8d\x29\xb9\x0b\xb2\x91\x5f\x1e\x0e\xe8\xcc\x70\xda\x79\x5b\x7b\xe1\x35\x2a\x9b\x41\x94\xc4\x77\xf7\xa7\x94\x9b\xf8\xe7\xef\xfe\xf8\x43\x59\x2a\x8e\xcb\x1a\x77\x12\x08\x13\x07\xa0\xf3\x00\x27\x7f\x01\xa0\x96\xc0\x98\xd8\x6f\xf0\x01\xba\x34\x70\x7e\x25\xdd\x34\xac\x3a\x4c\x88\xc8\x15\x22\x0d\x2d\xd4\xd5\x02\x69\xfd\xb1\x3a\x97\xa9\x3e\xeb\xa9\xd6\xf5\xd8\x46\x8a\x2a\x92\xa2\x73\x6a\xe5\x91\x7c\xab\x0c\x0a\x2c\xaa\x63\x0c\x42\xf6\xbd\x4f\x4f\x7a\x0a\xaf\xa6\xe8\xc2\x35\x05\x4f\xb8\xa4\x4a\xca\xce\xdc\x7e\x4c\x9e\xa7\xa8\x75\x01\x08\x26\x41\x75\x66\x74\x3f\xf6\xd6\xed\xa2\xdf\x69\x02\x92\x1f\xea\x5a\xf7\xb4\x74\x89\x89\x74\xa5\xd5\x78\x30\x90\x59\x3d\xf5\x64\xb1\xa4\x12\x9c\x2e\xe8\x05\x51\xe8\x37\xa1\x41\x99\x8f\x08\x70\x71\xf4\xf5\x88\x25\xb8\x8c\x8b\xc1\x6c\x01\xa7\xe9\xfc\xe8\x92\xac\xfb\xc2\x5d\xe1\x9e\xab\xbe\x60\x4e\xc2\x5a\x8e\x87\x38\xa7\xb9\x7f\x3d\x01\x9f\x98\xfb\x92\xe2\x6f\x19\xba\xe1\x90\x25\xe7\xf3\x53\x71\x4c\x25\x63\xe9\xd2\x9b\xb3\x9b\x02\x10\x48\xb1\x55\x55\x4c\x65\xd8\x21\x76\xa8\xf4\xae\xdc\x80\xaa\xf4\xb2\x76\x84\x06\xe9\x1b\xe8\x20\x61\x9c\x14\x07\x08\xad\xce\x71\x81\x3c\x00\xda\x13\x56\xe9\x30\x7f\x4a\x7b\xd7\x60\x03\x08\x09\xa0\xac\x56\x15\x63\x89\xd0\x92\xf0\xce\x20\xb4\x82\x68\xf6\x0d\x1f\xbc\x1d\x4e\x3f\xd0\x22\x80\x4e\x3f\x63\x22\x23\x29\x7d\xe5\x65\xd4\x8b\xff\xc8\x58\xfa\xd9\xc6\x5d\x61\xab\x2c\xb4\x5d\xf6\x78\x7b\xd3\xce\x26\xea\xb0\x6f\x4e\x0d\xd5\xe0\x4d\x7b\x3e\x83\x1d\x8f\x76\x23\x14\xbe\xd9\x16\x06\xe0\x05\x49\x51\x0d\xbd\xf2\x76\x00\x60\x92\x59\x29\xa6\x7d\x40\xdc\x26\x55\x62\xda\xff\xa3\x17\x56\xaa\x0f\x6a\x71\x0d\x5d\xd1\x94\x6d\xb5\xea\xfc\x27\x13\x29\xdd\x19\x2d\x5c\x21\xaf\x6f\xc8\x26\x79\x7e\x3c\x45\x8d\xb9\x3c\xba\xc1\x58\xc3\xbc\xb3\x0e\x78\x54\xbb\x47\x16\xee\xc8\xfd\x55\xfa\x8b\x30\xfc\x62\xfc\x87\xd7\x7e\xf3\xcf\xd7\xbf\xee\xcf\x85\x6a\xc0\xa5\x27\x01\x77\x38\x68\x28\x7e\x24\xae\xcf\x7b\x83\xa7\x73\x4c\xf0\x24\x94\x42\x8c\x2c\xb5\x77\x1b\x29\x1f\xcf\x12\xc8\x9d\xcc\xc0\xbf\x77\x0c\x3b\xaf\x5f\xbd\xc6\xa2\xb9\x43\x87\x6a\x73\xff\xf4\xab\x9d\x83\x5b\xc5\x32\xd9\xd0\xc8\x61\x76\x3c\x89\x48\x67\x6c\xa0\x6d\x74\x19\xa0\x5e\x4a\xe6\x02\xa9\xc5\xd6\x2d\x19\x85\x60\x43\xd4\x32\x9f\x01\x80\x6e\x1a\xe2\x63\xf3\xd0\xcd\x27\x6a\x90\x0c\x00\xff\xd2\x8b\x21\xb4\xc3\x3f\xd4\x55\x17\xaa\xc0\x07\x33\xd9\xef\x64\x91\x55\xfc\x72\x92\x9e\x02\xf1\x54\x11\x25\x9c\x28\xce\x67\x93\x73\x80\x3d\xa7\xbf\x91\x18\x6e\x3e\xed\x12\x5c\xab\x96\x9c\x74\x12\xb7\x10\x4b\x37\x2a\x4c\xed\xf1\x44\x19\xb0\x4c\x43\x59\x51\x13\x67\xb8\x67\x34\x6e\xd0\x2b\x3a\xbb\x40\x9c\xe1\x43\x64\x39\xb6\x3b\x15\x95\x9d\xe8\x2c\xad\xfd\x06\x5f\x05\x28\x50\xd0\xe0\xf0\x5b\x36\xc0\x9c\x2b\xa1\xe7\xf9\x28\x6c\xc5\x4b\x2d\xcf\x31\xa5\xc5\x79\xb5\xc6\x26\x76\xa0\xe5\x00\x53\xf0\x2f\x02\x88\x75\xcd\x7f\x7f\x3e\x9f\x2e\xad\x2f\xbe\xf9\xbd\x73\x55\x71\x3c\x44\xd4\xee\xe6\xb2\xd5\xe6\x50\xd0\xcc\xd0\xeb\xb0\xaa\x7b\x29\x00\x74\xcc\xea\x73\x2b\x28\x40\x04\x7f\x74\xd8\xdf\xc1\x8d\xfe\x58\xcd\xc4\xe6\xcc\x8a\x4c\x20\xc1\x04\xc2\x7a\x38\x81\x0f\x50\x61\xf6\xc7\xe9\x48\x95\x42\x2f\x50\x38\x57\x97\x3b\x1f\x18\x15\x65\x2b\x40\xc1\xd6\xb1\x61\x78\xa3\xd4\x47\x48\x76\x38\xbd\x4f\xc2\xba\xb9\x06\x72\xd6\xdb\xcf\xe7\x89\xe4\x22\xcc\xcb\x11\x25\x3c\x30\xa6\x9e\xc9\xb4\xb5\x81\xb2\x3b\xed\xd6\xf0\x77\x18\x61\x88\xb5\x30\x65\x1d\x26\x6d\xf6\x37\x90\xbf\x5f\x44\x67\xad\xfb\xe4\xc6\x38\x42\x01\xd5\x0a\xd0\xdd\x62\x18\x65\xd6\xeb\xfa\xc1\x2f\xd6\x3d\x3d\xd3\x55\xde\x4c\x7e\x28\xbf\xd8\xf4\xbe\x82\x13\x7d\xf4\x33\xd6\x53\x14\x44\xc7\x51\xc0\x1a\x70\x1a\x1c\xdc\xac\x3d\x15\xaa\x10\x92\x29\x90\x43\x62\x99\xd3\xc3\xe6\x70\x80\xa5\x49\xfd\x04\xc8\x32\x1c\x51\x30\xd1\x4b\x9d\x8c\xae\x64\x0a\x21\xf6\x37\xea\x25\xd7\x23\x0d\xbc\xa3\x5e\x6b\x04\xab\x6d\x14\xa0\x39\x28\xd9\xee\xaa\x1b\xe8\x4f\x60\x49\xe2\xea\x8c\xf4\xfc\x9f\x3e\xca\xcb\x31\x63\x6e\x8a\xd4\xb7\x23\xbf\xa3\x24\xe5\xfd\xe7\xa2\x94\x48\x05\x5d\x75\x5c\xa4\xe7\x5d\x85\xe9\x4e\x1c\x9d\xbc\x1a\xa7\xb4\x6b\xa2\x76\xd3\xa9\xe4\x02\x2b\x89\xd8\xd1\x60\x54\x38\xd2\xdc\x02\x81\x80\xcd\x84\x29\x79\x8b\x0f\xf9\x8b\xc9\xd2\x1b\x00\x28\x88\xca\x40\x6e\xf1\x6d\xc4\x76\x23\x39\x8e\xfa\x6a\xf4\xb5\x6a\x75\x79\x43\xbb\x1b\xf6\x2f\x5c\x4a\x8a\xda\x41\x39\x2a\xc6\xe3\x3e\x0a\x78\x46\x29\x9d\x63\xde\x45\xcb\x70\x1e\x88\xe1\x82\xe2\x68\xe8\x03\x73\x74\x71\xa4\x5f\xb3\xe2\x67\xa0\x43\xbe\x74\x6d\x02\x24\xfd\xb4\xf3\xa6\xe3\x36\xed\x74\xa4\x9a\x68\xa9\xec\xcf\x1a\xec\x0a\xba\xe1\x4a\x3c\x8d\xb8\x4c\xf5\x29\x19\x9e\xa5\xdc\x9e\x2e\x4a\xbb\x12\xde\x8c\xaf\xd0\xa5\x63\x8e\x20\x4c\x23\x28\x18\xc2\x20\x13\xf1\x9b\xfc\x24\x58\xda\xcc\xfe\xec\xb7\xd8\x7e\x17\xda\xe3\xbb\x94\x78\xfc\x7c\xe5\x43\xb4\x68\x9c\x8f\x70\x16\xa3\x27\x44\xb0\xfb\x35\x3e\xa2\x75\xc2\x3d\xff\x49\xb1\x92\x3c\x71\x11\xf8\x7f\x43\x91\x0a\x55\x26\xb8\xf3\xe0\xd1\x0b\xde\x7d\x46\x8a\x42\xb4\x18\xb1\x08\xcc\x9f\xe9\x67\x64\xd9\xd5\xb8\xfa\x28\x7d\xd6\x2d\xe4\xcb\x4a\xb4\x97\xc3\x85\x2f\xc2\xd5\xfc\x02\x6e\xed\xae\xee\xfa\xa6\xac\xdb\x7a\xac\x78\x25\xab\x5a\xf5\x5a\x58\xdb\x3a\x5f\xce\xeb\xca\xab\xfe\x33\x79\xc7\x6f\xba\x35\x36\xde\xdd\xee\xf7\x12\xc0\x10\xf0\x08\xf0\x02\xa2\x00\x14\x88\xfd\x0a\xf0\x9d\x1f\xe0\x2d\x43\x7a\x97\x48\x60\xce\xe5\xd8\x13\x3b\xfd\x4d\x62\xd8\x29\x49\x98\x12\x37\x63\xda\x70\xea\x06\x40\x85\x2b\x32\x1b\x6a\x98\xe3\xb0\x64\xa5\x56\xc7\x17\xac\x10\x41\x64\xd3\xa0\x2f\x1c\x48\x0b\x82\x82\xa0\x20\x08\x5a\xa8\x55\x6f\x30\x5d\xe6\x64\x2e\xc9\x7c\xdf\x6a\xea\xee\x82\xeb\xc2\xa6\x65\xbb\x2e\xf7\x27\xe0\x60\x18\x86\x7f\xe2\x1e\x30\xbf\xf6\xe4\x4e\x00\xe0\xf8\x56\x91\xbb\x0a\x43\x36\xe7\xbe\x14\x29\x14\x0a\x45\x0a\x85\x62\x95\x3e\x82\x1e\x92\x12\x1e\x34\x15\x7f\x7f\x61\x55\x1a\x65\xb9\x9c\x5c\x3d\xa6\x0b\x8f\xef\x2b\xf4\x17\x15\xe2\xe1\xaa\xea\x73\x4e\x7d\xa0\x48\xfa\x22\x86\xb1\x6e\x24\x57\x28\xd8\xfc\xd9\x43\xdf\x3c\xd3\x73\x82\xb2\x61\x1a\xbd\x26\x8d\x46\x33\x84\x82\xb5\xe9\xc7\x31\xcd\x6a\xbf\x1d\x00\xa2\xbb\x49\xb7\x74\xe9\x74\xba\x11\x96\xcb\x9e\xde\x4a\x1f\x02\x66\xd9\x67\x06\xf1\x1a\x9e\xc4\x43\xd3\x5a\x07\xcf\x91\xe1\xe9\x52\x26\x96\x49\x9c\x4d\xd9\x6d\x66\xdc\xbc\x16\xf6\xc1\x11\xc8\x14\x1a\x73\xdd\x09\xaf\xb8\xc2\x40\xff\x19\x23\x85\xe5\x55\xc2\x88\x46\xfb\xd9\xb3\x32\xdc\x53\x90\x54\x7e\x34\xce\xbd\x37\x26\x3b\xbe\x76\x39\x4a\x75\x3f\x45\x0e\x85\xd6\x0d\x19\x86\x0b\x96\x39\x65\x1d\xe6\x83\x78\x82\x09\x43\x2c\xa9\x0a\x43\x3e\x3d\x72\x2c\xac\x0e\x90\x17\xc9\xcc\x72\x5e\xcb\xdc\xd2\x53\x55\x54\x35\x66\x1c\xcf\xf9\xa6\xbc\x29\xb8\xd3\xa6\xb6\x25\x1a\x2d\xda\xd2\x88\xd5\x4c\x7d\xa6\xcb\xa1\xce\xa8\x73\x10\xa3\x78\x7a\x9f\x86\xa3\x71\xf5\xb8\x91\x6e\x7a\x5a\xcc\xb2\x6c\x80\x69\x1f\x67\x0f\x8e\x5d\x87\x3d\xdd\x42\xb7\xde\xa7\xde\xb1\x3c\x0f\xe0\xfc\x60\x3f\xf4\x98\xf4\x99\xe6\x1b\xb1\x5c\x02\x36\x35\x20\x56\x70\x21\x40\x91\x6a\x13\xbf\xe5\xf3\x6d\x0d\x5f\xdd\xf6\x05\xf4\x1b\x8e\xfe\xf0\xf5\x43\xc2\x93\x3c\xc7\xbf\x37\x1a\x77\xff\x1a\x3b\xcc\xd2\x9b\x78\xc4\x9d\xc9\x4a\x72\x6e\xe4\x91\xaa\xa2\x8e\x9e\x22\xf0\x3d\xbb\x8b\x53\x0b\x91\x7b\xb7\x96\x67\x2f\x75\x2b\xbe\x55\x60\x56\xa1\xfe\x73\xc1\x3a\x96\xa4\x75\xf2\x97\x9a\x8b\xda\x94\x77\x1c\xbb\x6d\xd6\xda\x22\x15\x3a\x7b\xf6\x60\x27\x7e\x0f\xa7\x53\x3d\xb7\x87\xdb\x5b\x00\x9c\xbb\xe8\xae\x30\xe3\x78\x4d\x57\x1f\x41\x85\xd8\xde\x3d\xd2\xd6\xd1\x59\x83\x6b\xbb\x1c\x9e\x1c\x9e\x42\x24\x46\x1c\xb7\x3c\x7d\x02\x14\x69\x74\x19\x5e\xdb\x61\x29\xcf\xf3\x70\x9b\xc7\xfd\xf2\x8f\xc0\x49\xee\x1a\x47\xb8\x79\x94\x1b\x09\x44\x33\x01\x2a\x8c\x29\xab\x76\xcd\xd9\xc6\xf9\x26\x8a\x4b\x54\x79\x59\x47\xe2\xbb\x8b\x70\x08\xc3\x21\x55\x27\x1c\xfa\xed\x80\xd3\x46\x95\x17\xd5\x6c\xd8\xed\xe9\x54\xab\x8b\x91\x2a\x6f\xed\xea\x53\x76\x7d\x06\x6a\x0d\x4f\x0a\xb8\x92\x20\x55\x88\x21\xd3\x3e\xce\x28\x5b\xa3\x44\x14\x56\x1c\xcf\xbc\x7f\xff\x9e\xa9\x7e\x18\x31\x48\x8b\x82\x7e\xae\x5c\xb6\x87\x65\x79\xb8\x67\x05\x45\x08\x2e\x7e\xa1\xb6\x72\x9c\x8f\x20\x36\xa1\x44\x97\x64\x51\xa0\x8c\xf5\x26\x13\xf2\x37\x87\xe1\x33\xf4\x9f\x89\xfe\x7f\x3e\xca\x7c\xe9\xd5\xe8\xcd\x79\xdf\xf6\xde\x11\x6f\xef\x81\x70\xe2\xb2\xf3\xba\xf8\x72\x2b\x9d\xdd\x0b\xea\x81\xfe\x89\xeb\xbf\x9a\x1f\xfa\x9d\x5f\xa5\x5f\x5d\x19\x72\x8c\x0d\xc7\x13\xb0\x05\x3c\x31\x32\x2d\xc6\xf1\x2b\x64\x3a\x6c\xfb\xe3\xfc\xda\xbf\x69\xff\x71\xae\x7e\xf6\x46\x1a\x75\xc6\x22\x67\x2c\x35\x06\xc7\xd6\x44\xb8\x26\x4d\x53\xbb\x29\x40\x94\x44\x9d\xe5\x38\x8a\x98\x07\x42\xcd\x5a\xc6\x45\xa0\x07\x18\xe6\xe2\xe7\xa0\xb8\x6e\xa8\xde\x50\x33\xf6\xda\x9b\x33\xe0\xfa\x87\xe6\x41\x01\x17\x4e\x73\x74\x2d\xd8\x56\x48\x51\x59\xb9\x78\x06\x48\x82\x54\xc8\x59\x7a\x2d\x7d\x31\xf2\xbd\xfe\x95\x30\x7c\xbf\x7f\x3a\xe1\x1b\x4a\xa5\x97\xe7\x3a\xd1\x42\x9f\xac\x9c\xec\xd7\xe4\xee\x14\xc8\x2a\x24\x73\xf3\x9a\x41\xa9\x70\x43\x85\xab\x21\x93\xed\x75\x4c\xc9\x74\x58\x3c\x61\x4a\x2b\xef\x8a\x4e\x9d\xf8\xe9\xf6\xe9\x9d\x58\x83\x1d\xfd\xca\x8c\x72\x91\xf2\x63\x9d\xb9\xcd\x9d\xa1\xaf\xdb\x6c\xb0\x6f\xcb\xec\x6c\xdb\x3d\x49\x3f\x8e\x39\xb9\x76\xca\xd1\xd8\xb9\x7a\xc5\xfb\x5f\xff\x87\x76\x03\xee\x6c\x11\xd6\xbc\x19\xb6\x9a\x38\xa1\xed\x3a\x69\x91\x26\x93\x25\x97\xa7\x54\xa6\x56\x87\xa2\x69\xb5\xe9\xf5\x19\x8d\x6d\x76\x1e\xb3\x9b\xd5\xfa\xdc\x00\xf4\x4c\x96\xa1\xab\x72\x0e\xdd\x35\x04\x8c\x85\x02\x08\xd0\x62\xe9\x11\xdb\xa6\xd2\xc2\x6a\x38\x18\xae\xb2\x2a\x5b\x45\xde\xd5\x2c\xe5\x51\x74\xf4\xdd\xed\x1b\xd0\xb3\xfe\x1d\xc6\x4c\x8b\x98\x47\xa4\x36\x95\xb6\x94\x3c\xd2\xb9\x99\x2c\xf5\x51\xcf\xb3\x0d\x64\xeb\xff\x2e\x2b\x00\xc0\x0d\xb5\xb2\x96\x44\xc3\xb8\x9a\xf6\xff\x25\x2b\x00\x40\x4a\x2f\xdb\x38\xef\x74\x56\xd6\x2e\xcd\x34\xa8\x3e\x48\x06\x51\xc1\x76\xf9\x9b\xbe\xce\x5d\x5d\x9c\xaf\x8a\xc9\x9c\xf7\xe2\xfe\xcf\xbe\x00\x00\xda\x82\xd0\x27\xfa\x3f\x9a\xd1\x02\xfd\xa2\x55\x70\x05\x8e\x6b\x6e\x7e\xc4\x27\x34\x3c\x37\x07\x84\xb2\x1d\xe1\xed\xc9\x28\x2c\xf5\xe3\x2f\x9b\xed\x9f\xa5\xff\x6f\x39\xe9\x78\x54\xf7\xaf\xce\x39\xa4\x98\xfb\x2f\xce\x8e\x41\x7b\x51\xb6\x09\x1e\xa6\xb0\x61\xff\x2d\xdd\x16\xce\xa0\x08\x74\x35\x2f\x2c\x23\x89\x5c\x30\xe6\x75\xdc\x78\x3b\xf1\x15\x9d\x56\x89\x99\x18\x09\x0f\x12\x2a\xf3\xa6\x2b\x3d\x0a\x42\x3e\xed\x87\x05\x88\x64\xf4\xfe\x3a\x6c\x18\xf0\xb0\xd4\xde\x01\xe1\x92\xab\x23\x1c\x11\x05\x75\x8d\x05\xaa\x2d\xea\x20\x62\xd0\xe4\xfd\x0e\x3f\xc5\xcb\x93\xa3\xaa\xe1\x6a\x37\xb3\x49\x76\x6c\xf7\x60\xbb\xfc\x43\x0b\xf0\xa0\xe2\x8e\xea\xa4\xa0\x23\x8b\x5f\x95\x45\x6a\x0d\x3b\x0f\x1f\x24\xaa\xe0\x83\xfd\xc6\xab\x34\xf7\xe6\x41\xf6\x5b\x2d\x17\xa1\x28\x47\x61\x3c\x9c\x40\x89\xb1\xb5\xad\x7b\xf2\xcf\x7d\xae\x22\x77\x93\x3c\x1f\x66\x2f\xc2\x8a\x0a\xea\xde\xb3\x86\x8f\x1e\xbd\xc0\xe0\x5c\x1f\xf0\x82\xa3\xe1\x27\x58\x1a\xd4\x9e\xd5\x74\x79\x93\x57\x02\x74\x43\x5e\xe7\x75\x39\x82\x15\x38\x1d\x88\x75\x75\x51\x02\x55\x45\x0d\x66\x7e\xcc\xf9\xc4\xb4\x7d\x20\x09\x3a\xb7\x4e\x0f\x62\x10\x48\x29\x44\x51\xb2\xfb\x4f\x0d\x4e\x94\x75\xfe\x48\x27\xc9\x05\x52\x92\xfb\xc6\xc8\x09\x07\x02\x36\x26\xcb\x07\x7a\x86\x0a\x40\xfb\x2c\xa9\x65\x08\x49\xf3\x61\xfe\xba\x5f\xc6\x56\x39\x88\xee\xc5\x0d\x3c\x98\x82\xe0\xc5\xb6\xb4\xaf\xb5\xfc\xc2\x68\x6f\xab\x61\xea\x16\xf7\x05\x3c\xd6\x91\x59\x6f\x2d\xd7\x09\x27\x0a\x90\x38\xb5\xae\x5e\x34\x7e\xb8\x61\xae\x74\x41\xee\xcf\xa8\x6c\x7f\xf2\xe6\xe1\x03\x8b\x7f\x7e\xf9\x03\x79\xc8\x97\x3f\xfc\x21\x5f\xfe\xfc\x47\xb6\x30\x97\xb8\xc6\x24\x0a\x8f\x6b\x58\x6f\x12\xd8\x67\x8f\xeb\xd9\xb3\x3c\xdb\xdb\x6f\x67\xea\xbf\x79\xfb\xb5\x6c\xd7\x85\xde\xb9\x95\xdc\x6b\xa3\xfd\x72\x3f\xbe\x76\x60\xc9\x27\xaa\xed\x57\x6a\xec\x34\x80\xf2\x44\xef\x47\xc5\x45\x1a\x0f\x83\xb4\xd3\xd8\x2b\x89\x52\x37\xe5\x82\x63\x1e\xf9\x1c\xc2\x7b\x24\xcb\x7f\x9e\x4c\xc5\xb3\x15\x9c\x50\x7f\x34\xa7\xd1\x26\x85\xb7\x2a\xb1\x07\x61\x07\x4c\x17\xc0\x35\xdd\x3c\x7d\x5e\xbc\x0a\x08\xc6\xb8\xca\xe8\x50\x39\x7b\x4d\x3c\x0f\xab\x2c\xbe\xe8\xdd\xba\x24\xf4\xd6\x63\x58\x34\x4d\x37\x36\x58\x2c\x72\xe1\xd6\xc6\x61\xb2\xb8\xc3\xb2\x3d\xc9\xa7\x1e\x4f\x6c\x95\x3b\x59\xdb\x7b\x8e\xb6\xd4\x31\xc6\x7a\x51\x9f\xd6\xff\x1c\xc2\x37\xbb\x96\x08\x5b\x3e\xf5\xb7\x2f\xba\xd6\xae\x8a\x95\x0b\x95\xa1\xb2\x38\xf9\x6c\x9e\x1c\x8b\x10\xb7\x52\xbf\xd6\xe1\x6d\xaa\x2a\xa4\xf6\x7f\xef\xf6\xf3\xbe\xd0\xe1\x24\xcd\xdd\x72\x77\x57\xed\xfc\x4b\x1a\xd6\x4a\x28\x4c\x58\x14\xdd\x1b\xc7\x4c\xc6\x5b\xa7\xdb\x0e\xaf\x60\x56\x32\xae\xe5\xfe\x64\x7f\x52\x5d\xef\xa6\x50\x82\x81\x8b\x5d\x70\xfb\xfd\xcd\xef\x4e\x22\x0d\xe9\xea\xe1\x24\xb7\x0b\x7e\x00\x25\x6a\xa5\x6d\x66\x55\xba\xe8\xfc\x47\xda\x97\x5a\xba\xdf\x3f\xb5\x67\xf7\x55\x02\x98\x93\x90\xda\xfc\x6f\x5f\xac\x12\xb5\xa4\xda\xf3\x74\x62\xf2\x84\xe6\x2a\x64\x06\xce\xbb\xc8\x90\x3f\xf1\x3a\xab\x76\x71\x6c\x4a\x77\x35\xa7\xae\x26\xfd\x99\xd3\x0d\x8c\xc3\x87\x64\x07\xa8\xbb\xe0\xd1\x7e\xd2\xeb\x1e\x56\x75\xda\x84\x16\xe8\x27\x39\x9f\xd9\xb5\x7e\xc0\xe5\x56\x47\x71\xed\x98\x91\x4e\x98\xaa\x1f\x4a\xd9\x36\x3a\xd2\x95\x4b\xba\xde\x08\xfb\x50\x7e\xd0\xab\x89\x87\x67\x93\x9e\x45\x4e\x56\xfc\xd3\x3c\x86\xd8\x65\xd3\x4c\xdd\x58\xe5\x14\xfc\xf1\x70\xa4\xea\x42\xb7\xd1\x6d\xaa\xce\x54\xe9\x1f\x9e\x9a\x43\xd5\x49\x1a\x12\xe6\x1a\xfa\x1a\x25\x44\x5b\x5f\x6b\x3d\x16\x19\x4e\x07\x8e\x00\xc4\x1c\x08\xe5\x5f\x11\x6b\xe1\x82\x09\xc4\x6a\xe8\x1e\xed\x9f\xac\xd3\xba\xc8\x22\x51\x9e\x4a\xac\x9d\xfe\x50\xaf\xd2\x6e\x03\xf6\x20\xfd\xdb\xd5\x70\xd6\x64\xfe\x26\xcc\x14\x50\xdd\xba\x92\x16\xeb\xd5\x9e\x5f\x09\x78\x97\x2b\x21\xc1\x5a\xd9\x88\x89\xd6\x9d\xca\xaf\x47\xd0\x37\xa8\xda\x89\x55\x8e\x81\x98\x10\xb3\xad\x16\x2d\x6e\x44\xce\x6c\x72\x42\x25\x00\x2f\x25\x15\x83\xb0\x89\xed\x2a\x36\x19\xaf\xf5\xc0\x24\x45\x92\x8c\xa1\x0a\x7d\x99\xd8\x72\xd8\xab\x93\xb1\x6d\x11\xd5\xae\xfc\x04\xca\xd6\x22\xef\xb5\x93\xb2\xe9\x6e\x0f\x85\x06\x6d\xe4\xdd\x08\x93\xd5\x2d\x66\x46\x1a\x30\xd0\xf6\x22\x63\x9c\xee\x04\x6f\xbe\xff\xdd\x08\x48\xf1\x4e\x41\x79\x22\xfc\x3d\x36\xc2\xa2\xcc\xf8\xaa\x5b\xd5\x6d\x9b\x03\x8c\xb0\x9c\xa0\xc9\x78\x72\x92\x31\x1e\x75\xe9\xdb\xd5\xee\x80\x8d\x76\xe4\xcc\xb1\x6a\x9b\xcd\x10\xb4\x42\x57\x98\xb4\x10\xc0\x7a\xa4\x9b\x7b\x88\x1c\x23\xd2\xcc\xc2\xc2\x7a\x67\x00\xc7\x48\x95\xe1\x33\xd5\x65\xc3\xa3\x42\x38\x5f\xba\x1a\xa9\x8d\xfc\x37\x34\xd7\x60\xd6\xa7\x1a\x6e\xb0\x68\x9a\xe2\x26\x9b\x9e\x34\xae\x33\xab\x1a\x7b\x4c\x36\x9a\xdb\x1c\xe0\x4e\xa4\xfb\xbf\x6e\x81\x1d\xeb\x69\x88\xba\xcf\xe7\x68\x51\x6d\xd7\xca\x0e\x67\xdb\xbf\xb3\x18\x3f\xb9\x64\xf6\x50\xab\x6b\xe0\xb6\x63\xb7\xaa\x1e\x1c\x41\x06\x4e\x4d\x5c\x2b\xc4\x8a\x2c\x68\x4c\x8b\x4e\xc8\xee\x34\xab\x43\xab\xcc\x21\x54\x6d\x7a\x27\xc1\xea\x34\x2c\x61\x6d\x64\x05\xdb\x1c\xbe\xe1\x1e\x89\xf6\x7e\x87\x34\x0a\x80\xf0\x0a\x8e\xb3\x5e\x19\xa9\x39\x04\xcd\x57\x9a\x89\x60\xbd\x17\x8d\xae\x64\x47\xf0\xaa\x5f\x13\x87\xa0\xf7\xcf\x8d\xd8\x0d\xd9\x6e\xb4\xd5\xe1\xa6\xf2\x11\x1a\x14\x56\x71\xe2\xcc\xeb\x1c\x28\x04\x86\xb7\xd4\x0c\x9d\xdd\xef\x0c\xe6\x83\x36\xf2\x3a\x27\x2d\x64\x84\x39\x34\xed\xd5\xc1\x75\xd7\x64\xf8\x34\xb5\xd0\xcf\x1c\x69\x63\xbb\x84\x98\x37\xd3\x36\xb8\x90\xf6\x73\x67\x6e\xe9\x26\x8d\xcc\xb7\x56\x5e\xb4\x73\xf3\x28\x01\xec\xda\x55\x16\xb7\xc6\x0b\x6f\xa5\xff\xbf\x1f\x58\x3a\xbb\x83\xf0\x2e\x3b\xd8\x60\x0e\x65\x3a\x63\xcd\xe4\x6e\x98\x88\x0b\x70\x02\x2b\xe9\x5f\x09\xac\xf2\x15\xbf\x87\x64\x94\x2d\x3a\x4d\xa2\xf9\x9a\x4a\xde\xc8\xa9\xea\xfd\x73\x45\x66\xa3\xb6\x6f\xdc\xe8\x9c\xab\x89\xf3\x00\x29\xce\x01\xb6\xed\x53\x6e\xb6\xdf\xc8\xdc\x58\x2c\x80\xf1\x41\x6a\x53\x91\x3b\xc6\x08\x62\x94\x88\x57\xe4\x72\x6a\xa7\x6d\x36\x30\x61\x22\xf5\xc4\x75\xab\x67\x16\xed\x53\xb1\xee\x3c\x92\x1d\x61\xd2\x82\xad\x2b\x99\xa5\x1a\xc8\xc4\x6e\xec\xfd\x73\x53\x23\xac\x2d\xb8\x54\x08\x6b\x80\x97\x1b\xd6\xe0\x36\xfd\xb4\xd5\xac\xd7\x81\xb7\xf8\x55\x50\xb2\xe8\x1c\xe2\x84\x05\x6f\xe4\x8f\x4e\x17\x82\xef\x7e\x52\xe9\x46\x28\x94\xb2\x19\x75\x75\x2b\xa1\x1b\x72\x8b\x0d\xbb\x98\x60\x99\xf4\x6f\xc7\x95\xee\xb4\x98\x9c\x93\x3c\xf5\xf2\x7e\x4f\xf7\x66\xf7\xf2\x16\xe7\x1a\x4e\x74\x6b\x43\xa0\xd0\x2f\x73\x19\x31\x84\x24\x5f\x9a\x0a\xcd\xc3\xdf\x00\xc1\xf1\xec\xfb\xe5\x45\x4a\x62\x92\x2f\xea\xc4\x21\x9d\xbe\x88\xa1\xa9\x75\xdb\x23\x5f\x7f\x28\x6d\x22\xc8\x4b\x7f\x0d\x82\xf1\x93\x65\x9f\x67\x9a\x47\x0d\x0d\xbe\xb2\x41\x95\x2b\x03\x41\x30\xc9\x60\x44\xf8\x26\x02\x83\x31\x66\xec\x13\xc1\x39\x75\x97\x27\x6d\x53\xb2\x49\xb5\x61\x31\x82\x25\x46\x29\x4f\x73\xb9\x3b\x5e\x1d\xd6\x1d\xb9\xde\x7c\x80\x0d\xa5\x0a\xe1\x8e\xc8\xcc\x83\xd1\x8a\xcf\x0c\xe8\x8c\xd6\xce\xa8\xd1\x76\xb7\xc3\xda\x53\x54\x9d\x5c\x4c\xd4\x13\x13\x10\x6e\x43\x25\x63\x18\xd9\x42\x96\x80\xad\x1e\xef\x14\x70\x96\x06\x1e\xf4\x80\x70\x6b\xc2\xa1\xab\x4d\x33\xb8\x78\x63\x6d\x80\xe6\xd1\x44\xc9\xbc\x31\xc0\x84\xf3\x1d\xec\x9f\x3f\x33\xc9\xe8\x60\x9a\x1b\xbb\x33\xd4\x12\xf6\xea\x3f\x07\xd0\x46\x87\x4a\x4d\x02\xb8\xcc\x20\xc2\x87\x5e\x3a\x5e\x83\x2b\x8f\xea\xd4\xbf\x3c\xf6\x99\xa4\x27\x3b\xc0\xe6\xab\x30\x95\x1a\x2d\xc9\xa7\x04\xe7\x84\xcf\x2d\xd4\x46\xf6\x0c\x7a\xeb\x26\x76\xcd\x58\x4f\x34\xa1\x2e\x61\x1a\xbc\x1d\x61\x51\xd6\x03\x7c\xf3\x9d\x33\x49\xcd\x92\xe8\xa2\x34\x74\xb7\x1b\x4e\x0f\xa9\xe8\x3e\xf7\x81\x33\x28\xab\xb1\x3b\xdc\xcc\x39\x37\xa1\x2f\x00\x7b\x7f\x95\x46\x4d\x70\x78\xbb\x39\xb0\x44\xc8\xc4\x16\xdb\x84\x24\x98\x6d\x70\xd5\x2a\x18\x5d\x9b\x7e\x0e\xff\xe3\xf1\xf9\x4b\x27\x7e\x7a\x61\x86\xf1\x3a\x80\xa2\xd9\x1e\x0b\x4c\x77\x23\x08\xdc\x0e\xe6\x8e\x23\x92\xf2\x32\xd4\xa3\x17\xf3\x34\xcc\xe2\xb6\xc4\xb8\x0c\x31\x10\x3b\xe7\xbb\x7b\x08\x97\xe4\x78\xad\x81\xae\xda\xd1\xe6\x8f\x57\xc7\x1d\x12\x4b\x71\xa7\x47\xc1\x57\x65\x7f\xe2\x36\x7b\xee\x84\x2f\xda\xbd\x58\x47\xae\x36\x53\x6f\xdf\x79\xe4\x3f\xa0\xfc\x3f\x8f\x95\x69\x2a\xa5\x0c\x43\x88\xb3\x65\x34\x74\x32\x40\x44\x0c\x0f\x93\x05\x3e\xc7\xa9\xa7\x07\x66\x5f\x47\xd5\xaf\x76\x4b\xc8\x8a\xef\xcb\xaa\xb3\xfc\x81\xa9\x79\xee\x56\x52\x10\x7f\x28\x2f\x3f\xf6\xb9\xf1\x7f\xff\xd3\x3d\x9d\x3c\x75\xf4\x45\x59\x23\x51\x27\x0a\xac\x23\xfe\x1b\x9f\x49\x03\x2b\x94\x7f\xa1\xb5\x4f\xc0\x39\xa4\x70\x10\xfc\x42\xba\x6a\x4c\x95\xe7\xf6\xef\xdd\xa7\x2d\x3a\x19\x6e\xa5\xe9\x3f\xf3\x54\x70\x20\xbe\xe6\xd6\x7e\x8a\xd0\x90\xfc\xea\x30\xa5\x62\x68\x15\x47\xa6\xcb\xfe\x0f\x2b\xc1\x1e\x9a\x9b\x79\x1d\xe2\x35\xdc\x96\xe9\xe8\xb1\xef\xfe\x6e\x3f\xbf\xdb\x2e\xb5\x90\x6a\x1d\xaf\x39\x85\x65\xa0\x84\x2e\x6f\xfc\xc1\x57\x53\x63\x9c\x50\xdd\xe6\x8b\xaf\xed\xd2\x8d\x52\xb6\xd3\x1d\x58\xdc\x92\xf9\x59\xc2\x98\x87\xe3\x27\x8a\x7c\x69\x56\x41\x72\xbc\x1b\x96\xdf\x5e\x6f\xd9\xa7\xf3\x8a\xeb\xcc\x4f\xfa\xcd\x8a\xe8\x79\xc0\x39\x11\xfc\x68\xf3\xf2\x1b\xfe\xdd\xb7\x3b\x14\x80\x7f\x96\xea\x33\xd4\x28\x65\x27\xe0\x7a\x47\x29\x30\xbf\xad\x05\x17\x67\xa0\xcd\xa4\x59\xfb\x95\x3c\x01\x7a\xd4\xd2\x6f\x91\x3e\x94\xef\x35\x64\x78\xec\x42\x6e\x30\xc4\x69\x82\x0d\x98\x6f\x1b\x73\x02\xbe\xa3\x2d\xe0\x31\xef\x16\x0e\x98\xf0\x0b\x71\xf1\xe9\xf5\xbe\x96\xfd\xa0\x64\xc4\x71\xff\x16\x3a\x67\xed\xda\xb5\x8a\x38\x44\x93\x07\x7c\xe0\x82\x95\x82\x30\x6b\x93\x78\xf5\x44\x53\x97\x9f\x73\x16\xdc\x9c\xa9\xec\xc5\xb4\x90\xc0\x99\xbe\xf2\x31\x70\xdf\x1c\x63\x29\x94\x03\x5f\x78\x37\x1c\xeb\xd7\xf5\x1e\x3d\x99\x27\x2f\x12\x15\xae\x0c\x73\x19\x70\xb7\x1d\x7b\xba\xbd\x72\x45\x64\xbe\xac\x8f\xb6\xf7\xa8\x23\xbb\x66\xcf\xcf\xd9\xe5\xd7\x05\xce\x74\x07\xda\xec\x49\x23\x5d\xeb\xb5\x9d\xe3\x2b\xc6\x66\x9b\x27\x5d\xeb\x82\xed\xa7\x7b\xa1\xcd\xfd\x36\x69\xc0\x00\xb2\x6d\xc0\xef\xfc\xcd\xbe\xad\xfd\x10\xe6\xbd\x7d\xef\xf7\xc4\xf9\x80\x24\x3c\xb1\x9f\x12\x59\x66\x71\xb5\xa3\x48\x81\xef\x68\x44\x32\x2b\xa7\xd3\x19\xc3\x4b\xb7\x7d\xd9\x5c\x6b\x3b\x35\x4a\x5d\x72\xdf\xa5\xea\x38\x09\xcb\x7b\x6e\xe1\xbe\xed\x73\xb7\x50\xfe\xee\x6c\xfa\xec\xf6\x0b\x23\x27\xd1\xbc\xfb\x61\xef\x53\x7a\xd6\xfd\x6f\xcf\xf7\x51\xfc\x47\xeb\xc3\xfc\x7d\x71\xb2\x6f\x38\xae\x5f\xa1\x97\x9d\x14\x6d\x99\xdd\xec\x5f\xd4\x00\x6f\x14\xc6\x90\x98\x85\x90\x36\x57\xf5\x3b\x88\xe8\x52\xb7\x08\x5a\xad\x28\x0a\x2a\xc8\xde\xda\x9b\xbf\x69\xa9\x3d\xda\x77\x5e\xf3\x94\xfe\x2a\x54\xde\xe0\x09\x35\x2c\xe5\x58\x54\xb9\xf0\x26\xef\x78\x4f\xa9\x03\x7e\xa4\xdc\xb1\xe5\xb1\x34\xe3\xed\x98\x9b\xa1\xd1\x32\xd0\xf9\x43\x68\xc9\x94\x0d\xe7\xe2\xcf\xcd\x20\xff\x8a\x90\x65\x66\xda\xb6\xc7\xad\x0c\xc7\xaf\x61\xc1\xd7\x65\x0c\x22\x46\x7b\x67\xa0\x55\x79\x48\xc8\x78\x02\x64\x16\x43\x5a\x64\x84\x4b\x0b\xf1\x81\xa9\xab\x87\xe6\x80\x80\xef\xdf\x1c\x3c\x01\xf4\x36\x2c\x99\x15\x42\x68\x5b\x76\xa9\x82\x6a\xab\x3a\x4c\xf3\x54\xa2\xb5\xf5\x02\x90\x1b\x29\x7b\x8f\xe4\x6a\xeb\x84\xc9\x96\x4b\x3b\x63\x8e\xfb\x82\x56\x11\x78\x72\x89\xc9\x60\x87\xdd\x5c\xc2\x1e\x32\x55\x9d\xf0\x00\xb1\xf8\x1c\x82\x63\xdb\xa3\xb1\xc6\xd9\xe0\xd6\x09\x96\x6d\x63\x15\xa5\xdb\xe6\x47\x18\x3b\x4f\x85\x94\x71\x7e\x7d\x5e\x2d\x2c\x39\xf3\xc4\x38\x43\x98\x8c\x2e\xa4\x09\x00\xb2\x45\x2a\x06\xdc\x8f\x02\xbb\x2f\x82\x75\xfd\x8c\x6d\xdc\xd0\xde\x0e\x6a\xec\x4e\xcb\xfb\xc9\x9a\xba\xa5\xd5\xac\x73\x42\xe5\xc8\x71\xa2\x70\xf7\xb9\xf5\x5e\x97\xf5\xa5\x54\xb6\xdf\xad\x9b\xbd\x14\xe6\x6f\x77\x51\xea\xb7\x76\xd8\x6b\x73\x38\x2c\x23\x99\x7a\xa2\xf2\x2b\x97\x64\xbb\xa3\x3c\x20\xff\x0d\x8b\x24\xbf\xf7\x9b\x10\xc7\x44\xdb\xfb\xea\xe6\x9b\x5e\x42\x3b\xe9\xd4\xbf\x5f\xfe\x5e\x57\x1d\x95\xfc\x39\xba\xd7\x78\x1d\x9f\xe7\x14\xb9\xdb\xa5\x10\x61\x1a\x5f\x8e\x78\x8c\xd7\xd0\x8c\xdb\x90\xde\x7c\xdb\x0d\xac\xa4\xb7\x5c\xce\x60\xa6\xa8\xbb\xdc\x90\xb6\x3f\xbd\x7b\x97\x21\xa6\x71\xa4\xdf\xca\x47\x3f\x77\xbf\xbe\x9f\xc3\x64\xff\x0d\xbe\x9c\xaf\x69\x5f\x4c\x59\xbb\x8f\x4b\x18\x16\x4d\xfb\x6b\x1f\xb5\x73\x7c\x99\xda\x3d\x04\x6e\xd2\xe2\x54\x0f\xb9\x89\xd6\x7b\xf7\x4e\x65\x3f\xbe\xa5\xd7\xfb\xee\x6b\x4a\xf3\xd5\xff\x44\x6a\xd8\xef\xdb\x90\xbe\x53\xcf\xce\xd6\xe8\xb8\x28\x72\xcb\xa8\xbd\xfa\xfb\xe6\x81\x2a\xde\xf2\x7e\x52\x43\xb5\x34\x9e\x5e\x67\x3d\xec\xa8\xef\x51\x06\x6f\xe9\xff\x63\x28\xc5\xd9\x1e\xe5\x9a\xda\x24\x0f\x81\x29\xf0\x24\x9c\x43\x7e\xa7\x4a\x55\x9d\xd8\xff\x76\x8b\xd5\x6f\x83\x0a\x62\xaf\x49\xfe\xb9\x6d\xa0\xb3\x33\xf2\x9e\x2e\x9f\x32\x48\x11\x58\x5e\xf0\x66\x1c\x92\x31\x5d\xe3\x92\xc5\x04\x94\x83\x37\x06\x77\x5c\x4e\x53\x1c\x78\xaf\x2b\x1e\xbd\xec\xe7\x01\xd7\x1d\x94\xbd\x52\x50\x79\xe9\xd1\x12\x4f\x65\x16\xc1\x57\x59\x82\x10\xfa\xd6\x89\x18\x6f\x73\xb1\x59\xed\xde\x34\xd9\xc1\x1c\x5e\xd0\x8f\x45\x1e\x70\x27\xa7\x0c\xcc\x02\xef\x36\x9b\x30\x34\x75\xec\x3e\xa5\x5a\xe4\xa9\x9c\x4f\x21\xd2\x4b\x87\x5a\x8f\x44\xdc\x91\x84\x8e\xc8\x00\xb7\x60\x4d\x79\x05\x20\x5a\xc0\x10\xb2\x3e\x29\x52\x7e\x64\x8a\xf4\x63\xb9\x05\x5f\x14\x19\x0c\xb2\xdf\x50\xc5\xb4\x97\xc6\x77\x11\xb3\xc3\x02\x0e\x45\x5f\x57\x74\x89\x8d\x51\x0c\xad\x98\x11\x65\x3c\x6b\x08\xb3\xd3\x52\x3f\x28\x28\xa8\x15\xb5\x6d\xd7\x37\x45\xcb\xd3\xff\xf4\x4f\xe5\x15\x80\xd3\xde\x4a\xc5\x58\x60\xc3\xe7\x9c\xd3\xe4\xf1\xad\xe7\xa7\xfc\xfe\x49\x24\xbd\x6a\x90\xdb\x33\xbd\x46\x6c\x93\xe3\xac\xcf\x2d\x78\xa4\xed\x5a\xdb\xe3\x89\x7a\xeb\xf8\x95\x7a\x38\x7a\xfb\xb7\xba\x1b\x5c\x18\xcf\xaf\xd7\xdb\xbe\xe1\x77\xaf\x69\xfb\x17\x0c\xad\x08\x85\x76\x6c\xdb\xf2\xb7\xbd\x86\x75\x4e\x9b\xbf\xf3\x7d\x6a\xc6\x97\x5a\xf7\xf5\x48\x3b\xd1\xc7\xe9\xad\xb9\xe3\x94\x06\xee\xf4\x72\xf9\xaf\x7a\xef\x68\x70\x75\xb8\x4f\x43\xb4\x2e\x3c\x8e\x1e\x10\x67\xf6\xe3\xa8\x22\xbc\xe1\x4f\x8e\x6b\xa3\xcc\x60\x31\x2b\x9e\x91\x7b\x77\x17\x94\xf6\xf2\x10\x3b\x86\xc8\x42\xf4\x4c\xfd\x1b\x46\x85\x54\x4c\xdb\x0a\x15\x89\xe0\x6e\x71\x20\xee\x16\xbc\xe0\x6e\x61\x0a\x7e\x1e\x65\x54\xf9\x18\xe6\xaa\xda\x77\x30\x9b\x54\x37\x4e\x1e\x4c\x13\x36\xf5\x65\x76\xb4\xd9\xbb\x9c\xdc\x5f\x76\x53\xfc\x16\x12\xe2\xd9\x53\x9c\xe6\xc3\xb3\x94\xb1\x1e\x13\x70\x96\x2e\x53\x94\x6e\x71\x42\xfb\xd9\xc8\xe1\xd6\x00\x2f\xb7\xa6\x94\x12\x95\x27\x81\xcf\x87\x94\x15\x9a\x14\x84\x5d\xf6\x4a\xb9\xf5\xde\xaa\x9d\x90\x10\x83\x48\x08\x22\xa9\x01\x04\x18\x0f\xd0\xde\x9c\x8b\xaf\xd0\x32\x4f\x05\x47\x17\x87\x61\x5f\xec\x8e\x33\x15\x2d\xcc\x8e\xa5\xf3\xc9\xa4\xc9\xa7\x3c\x79\xe0\x13\x27\xc6\x1c\x6d\x42\x5c\xa5\x01\x40\x1d\xba\x27\x82\xc5\xac\x2a\xe3\xb6\xe7\x0f\x3d\x62\x21\x41\xe6\x6c\x47\xc3\x9f\x5f\xcf\xea\x90\x26\x20\x16\x23\x1c\x4c\xc4\xae\xc4\x0e\x8e\x9d\x31\x76\xe9\x19\xb2\x9a\x3c\x2c\xc9\xa9\xcb\x7f\xf0\x05\x1d\xd9\xaf\x85\x5b\xb6\xb9\x8d\x07\xbc\x22\xc9\xeb\x87\x07\x11\xae\x76\x67\x4b\x9a\x58\x53\x47\x37\xa0\xe4\xf5\x63\x22\x43\x03\x07\x63\x1a\x0b\x27\x9d\xc7\xa6\xed\x08\xcb\x87\xbf\xe7\x95\x5e\x7d\xe9\xf1\xe8\x1e\x9a\xec\x38\xdf\x63\x82\xb7\xe3\xaa\x3c\x5c\x02\x8f\xa3\x5c\x1b\x8c\x07\x87\xb2\x6d\xac\x88\xfa\xdb\xca\xec\xdd\x4a\x11\x15\x0a\x56\xf2\x66\x7f\x9f\x66\xef\x9e\xec\x5c\x10\xa9\xc1\x3b\xb9\x8b\x1f\x3c\xa6\xae\x95\x54\xcd\x3d\x62\x50\x1b\x7e\x29\x42\xb1\x0a\x9a\x31\x84\xc3\xd3\x34\xdf\x4f\xa5\x59\x30\x36\x64\x64\x70\xdf\x03\x7b\xcd\x61\xf5\x81\x36\x8a\x39\x58\x98\x6c\xa7\xb3\xda\x39\xd3\xc1\x10\x73\x86\x35\xb0\x19\x25\x33\x59\x60\xbb\xc3\x06\x81\xec\x0b\x05\x32\x5c\x3f\xc3\xab\x35\x9e\x68\x80\xf2\xc4\x9e\x79\x69\x75\xb5\x46\x61\x89\x95\x31\x1b\x09\x72\x97\x75\x25\xe4\x2e\x44\x75\x06\x7e\x2a\xaf\x4e\xda\xcc\x96\x67\xf3\x40\xf6\x0f\x2f\xe4\x7e\x65\xbb\xc0\x47\x92\x5c\xb3\xce\x20\x1e\xca\xc8\x28\x5d\x81\x25\x11\x9f\xfe\x9d\x6e\x90\x2f\xa8\x95\x6c\x6c\xca\x9e\x62\x85\xf8\x28\x73\xd0\x35\x3f\xc2\x62\x8e\xbf\x48\xd5\xb0\xd8\xa1\x9c\x5c\xac\x22\x9e\xfc\xfb\xa8\xe2\x61\x30\xb3\x53\x87\x09\x10\x71\xaa\x36\x60\xea\xa4\xd7\xb6\xba\x44\x40\xc4\x9b\x8f\x14\x75\xcc\x13\xc3\xe2\x61\xa6\x8b\x75\x6b\x61\x52\x0a\xcc\x4e\x08\x8b\xa1\xf2\x11\x9e\xe5\x44\x67\x97\x16\x51\xc8\x94\x7f\x51\x74\x6e\x48\x7d\x31\x57\xbe\x8e\x46\x82\xac\x08\xbb\x68\x29\x57\x69\xe4\xce\x93\x7c\xf6\x5f\x3f\x09\x29\x42\xd4\x31\xf4\xe7\xda\xc5\x57\x52\x38\xa9\xee\x4e\x54\x70\x0d\xb9\x7b\x91\x54\xf6\x45\x58\xd9\x17\x91\x65\xa0\x18\xbb\x19\x33\xf0\xdc\x2e\x11\x1b\xc5\x72\xf9\x68\x0b\x1a\xc3\xe6\xd3\x3c\x20\xdd\x67\x57\x73\x0c\x95\x98\x08\x48\x6d\xa8\xcb\x05\xcd\x13\x25\x5c\xd2\x02\x2e\x65\x4f\x78\xa5\x99\x9b\xe1\xda\x69\xc2\x2d\x6d\xef\xb1\xc6\xe5\x62\x2a\x45\xbe\x86\x3c\xb2\x95\xad\x61\xf4\xe7\x7e\xc1\x7a\xbc\xf9\x05\xc6\x41\xcf\x7c\xa2\xf7\x82\xe8\x27\x5a\xa5\x9e\x61\x97\x2b\x68\x09\x90\x23\xf3\xf0\x38\xd4\xa5\x3d\x05\x5b\x13\x9d\x43\x43\x9a\xe6\xa9\x68\x3e\xd3\xd0\xcd\xb5\x89\x65\x66\x2e\xfc\xdf\x7e\xe6\xad\x31\x2f\x4c\xed\x44\xb4\xcc\x47\xd7\x36\x75\x7c\xf6\x84\xf3\xf9\x04\xf9\x5e\x60\xcd\xec\x1c\x6a\xab\x60\x01\x6f\x32\x49\x65\xe5\x90\x3b\x7f\xd4\x92\xa1\x41\xcc\x7a\x10\xe7\xc0\x5a\xc6\x57\x46\x91\x94\x86\xeb\xcb\x5e\x9e\x82\x83\x63\x5f\x6e\x3a\xcb\x83\xc2\x43\xd9\xd9\xf6\xc4\x29\x30\xdb\x56\xc0\x01\xe5\x0c\xc3\x9b\xc3\x51\x93\x52\xc9\x69\x5b\xb7\xa8\x5e\x61\xcc\x8c\x11\xea\x07\xdd\xb2\xce\x48\xd5\xb9\x50\xc5\x49\xda\x97\x03\xcb\x89\x5b\x7b\xc2\xef\x6c\xe5\x69\x94\x02\xb1\x41\x8a\x57\x6c\x05\x1e\x2a\xd4\x94\x9c\x3d\xa7\x65\x42\x00\x97\x56\x17\xd3\xe6\xee\x79\x05\x2e\x55\x42\xab\x8a\x17\xa0\x46\x78\xac\x1a\xe3\xe8\xa0\x4b\x2a\x84\xe8\x1c\x53\x3c\x22\xce\xbb\x38\x50\x53\xab\xc1\x53\x97\x28\xaf\x6f\xf6\x69\xba\xcc\xdc\x24\xa1\xcc\x9f\xa3\x6f\x36\x2d\x87\xfb\x0d\x64\xf6\x7b\x17\xd5\xb5\xa7\x1a\xc3\x7a\xea\xd9\x61\xa6\x01\x4c\x05\x3b\xf8\xb2\x2d\xe6\x76\xd8\xa0\x08\xb5\x75\x62\xc0\x19\x6a\x3a\x90\x10\x50\x6f\xd0\x8a\xe0\x4c\xfd\x4b\xad\x29\x05\x65\xea\x56\xdc\x9b\x18\x32\x25\xcc\x35\x57\xd5\x21\xb0\xd1\x2d\xf4\x6c\x81\x9e\x15\x26\x44\x8d\xc2\x62\x51\xef\xa0\xb2\x0e\x04\x0a\x17\x90\xb5\x47\xb6\x9b\xfb\x8d\x01\x38\x65\x1f\x6c\xf6\x9a\xd8\x38\x9d\xe6\x27\xd6\x2e\xa0\xd9\x75\x8a\x38\x23\x88\x4c\xaf\x4d\x41\x3d\x23\x19\xd9\xa8\xc2\x49\x3d\x5f\x8a\x2a\xc4\x94\xdc\x64\x9e\xf6\x37\x97\x36\x1d\x6c\x50\x1b\x81\xa0\x8f\xdf\x5c\x96\xb6\xb8\x4b\x2f\x53\x09\x43\x1d\xf1\xe8\x13\x58\xad\x63\xab\xc5\xf6\xb1\xfe\x81\xfc\x94\xa5\x7d\x4c\xeb\x68\xab\x09\xce\x29\x26\x60\xd1\x03\x4f\x98\x36\x4b\x85\x14\x34\x8c\x7e\x1f\x68\x90\xd4\x7d\x64\x5e\x49\x14\xa9\xbd\xf3\x57\xbe\x53\x95\xc4\x7d\xcd\xa9\x50\x0f\xc8\xa8\x12\x8f\x6d\xb2\x44\x67\x94\x3c\x58\x78\xc0\x5e\xb7\x18\xf9\x01\xec\x73\x5d\x93\x79\x1c\xc6\xd9\x3b\x69\x83\x56\x48\x4b\x21\x46\x9f\xb0\x0f\xbb\x8e\x3d\x79\x02\x49\x4d\x95\x71\x9a\xfe\xe4\xda\x7b\x87\xe9\x35\x64\xa6\x51\x83\xfb\x61\x86\xdc\x53\x3f\x60\xdc\x1d\x7a\x7c\x5a\xf7\x3c\x9f\x9e\xc4\x42\xfa\xc4\xd1\x96\x0c\x9c\xb8\xed\xf8\x4e\x5a\x60\x11\x68\x4c\x99\xc6\x52\x24\x41\x7b\x21\x26\x72\xfa\x1d\x91\x1c\x47\x8b\x7d\xb2\x68\x03\x67\x87\xdf\x2a\xf3\xf8\x51\xb6\xc3\xca\x72\x9e\xb8\x73\x15\x88\x58\x37\x3c\x8f\x18\x95\xdc\xb9\xc8\xd3\x72\x23\xf7\x2b\x53\x7b\xd8\xe1\xc0\xee\x21\xde\xd2\x37\x37\x99\x27\x5f\x4b\x7a\x70\x5b\x6e\xb6\x94\x10\x2a\xb6\x45\x6b\x95\x2d\x34\xe9\xa4\x14\xd9\xc0\xf3\xe6\x44\x60\xd2\xc5\x06\xfe\xc3\x21\x26\xe0\xa2\x03\xd9\xfa\x98\xf4\x78\x28\x77\x12\xc5\x6e\xd1\xa4\x1b\x8c\x06\x71\x63\x45\xde\xa2\x4d\xea\xd6\xd6\x08\x60\x18\xe6\x25\xb9\x66\x33\xa5\xc6\xfa\xe8\xca\x7a\x69\x6a\x50\x48\xb8\x82\xc3\x56\x0c\xb1\x41\xce\xd8\x5e\x06\x76\x93\x3c\x48\xb2\xfd\x0c\xd5\x2c\xfa\x0b\xf2\xce\x56\x4d\xf6\x19\x47\x95\xea\x2d\xee\x14\x72\x6d\x25\x0f\xf7\x6c\xf8\x30\x39\x03\x29\x3a\xa2\xe8\x65\x30\xe9\x70\x10\xab\x4d\xb8\x13\x87\xa0\xb5\x2d\x53\x81\xae\xa1\x0f\xc1\xc1\x78\x38\x26\x13\x53\xca\x99\x0c\xb2\xbd\x74\xdf\x90\x29\xb6\x4c\xac\xdc\x5e\x1e\xff\x9c\xc9\xdd\xc2\x69\x8f\x97\x6c\x13\x69\xa8\x9e\x18\xa9\x26\x95\x30\xd8\xe5\xa0\xb2\xb5\x76\xf8\x4b\xac\xc0\xc0\x18\x28\x9d\x37\x83\x66\xea\xa1\xd2\x54\x93\x8b\x6a\xd8\x68\x1a\x86\xc2\xc9\x47\x45\x29\xad\xb1\xca\x60\x98\x35\xee\xd0\x3b\x78\x54\xcb\x17\x4a\x38\xc9\x97\x14\x1e\xa2\x34\x9f\xc9\x86\x99\xd5\x93\x30\x0f\x90\x35\x6b\x3a\x43\x69\x33\xd2\xfb\x8b\x39\x74\x33\x48\xed\x35\xc0\x60\x1e\x68\xb8\x92\x70\xa4\x0b\xb2\x21\x54\x21\x16\x77\xc8\x4a\x3a\xe7\x34\xd5\xab\x0a\xe3\x8d\x73\x28\x2c\x8a\xb0\x62\x85\x0c\xb6\x31\x2d\x5d\x3a\xa0\x4d\x97\x4b\xa8\x68\xd1\x4e\x3e\xdc\x5e\x1e\xb8\x3f\x00\x28\x7a\xc0\x4b\x16\xd2\x6e\x3a\x01\xf2\xa4\x24\x2e\x54\xf6\x88\x4f\x22\xe5\xe6\x07\xbd\x64\x22\xe3\xb6\x78\x4b\x10\xfa\x5a\x1c\x8b\xda\x8c\x86\x33\x76\xfb\x50\x0e\x89\x39\x8a\xb6\xa6\xf5\x94\xb9\x42\x5b\x1b\x3c\xfe\x8e\xe4\x19\x12\xe8\x37\x53\x7e\xcc\x0a\xaa\x54\x25\x12\x44\x38\xe4\x41\x89\x2b\x40\x8b\x94\x42\xa3\x68\x85\x32\x63\x2b\xda\x8a\x03\xcd\xbb\x45\x6f\x21\xa8\x40\xd9\x0e\xbc\xee\x25\x61\x10\xad\x26\x48\x1a\x31\xb8\xd1\x34\x5f\x96\x52\x28\x14\xe6\xdd\x21\x14\x6f\x99\x14\xc1\xd1\x4e\x72\x96\xda\x27\x9a\x31\x3d\x75\x8b\xd4\x55\x6f\x3e\x69\xa8\x83\x15\xbd\x7b\x74\x5d\x0e\x9a\x66\xae\x6e\x10\xb7\xa9\x61\x09\x15\xc6\xdf\x85\xfb\xbb\xe2\x8c\xf4\xc8\xe0\xe8\xc0\xd1\x82\x72\x10\x27\xbd\x75\x2a\xb3\x07\x18\xc9\x72\xe8\xa3\xc9\x61\xc0\x23\x29\xc1\x92\x0d\x37\xf4\xa0\x70\x26\x12\x49\x35\xa9\x70\x85\x09\x56\xa5\x80\xde\xfc\xbd\x0a\x38\x6f\xbb\xc2\x21\xef\x87\x62\xee\x3c\x08\xcd\x67\x3e\x40\xe5\x9d\x1f\x8c\x47\x8a\x30\x16\x36\x4f\x8b\x34\x6f\x8c\x57\xe7\x79\xa8\x94\x4b\xb4\xdd\x55\x4c\x78\xce\xa1\x47\x86\x7e\x4e\x89\xc2\x69\x6b\x9a\xe9\x4b\xf6\xe4\xd4\x9f\x33\x46\x10\x84\xb3\x7c\x14\x32\x1a\x8e\xfe\xb1\xc0\xe0\x9d\x67\x80\x74\xde\x41\xc7\xa2\xd2\xac\x6b\x0e\x53\x1d\x5a\x2b\x26\xff\x98\x1c\xcc\x08\x4f\xc6\x4c\xda\x82\x16\x24\xd4\x00\x0c\xe6\xb8\xa5\x96\xec\x86\xce\x3b\x98\xe9\x4f\x35\x1e\x83\x4f\x88\xf9\xe0\xba\xfd\xc4\xa8\x9f\x67\xd3\xd5\x1e\x61\xf4\xd7\x18\x75\xd6\xd9\x4c\x6f\x1a\x82\x69\x2d\x75\xe0\x38\x48\xaf\x61\x39\xf5\x8f\x42\x2d\xcd\xc5\x72\x93\xbe\x38\xe5\xda\x50\xea\x2c\x0d\x4a\xd1\x0d\x76\xa5\x62\x5a\xd4\xd9\x6b\x28\x96\xa5\xd4\x8c\x45\x2e\xb4\x3e\x1a\x68\xad\x57\xf6\xcd\xba\x46\x9c\x08\x1f\x22\x51\x58\xe8\x68\x92\x1c\x59\xf1\xa0\x86\xad\x17\xe1\x51\x4f\xaa\x2d\x5e\xa5\xc8\x86\xf3\x4b\xa6\xfb\x64\xc6\x8e\x69\x4c\x63\xed\x0e\xd5\x5a\x9d\x22\xef\x9b\x8e\xcc\xaf\xe8\x7e\x90\x04\x2b\xb5\x0b\x95\xd0\x50\x2d\xa0\xf3\x78\x8a\xee\xdc\x11\xb9\xd9\xa1\x94\x57\x3b\xf7\x50\xb9\x17\xc8\x64\x83\xd4\x1c\x25\x42\xb1\xcb\x1a\x79\xbc\x61\x89\x50\x21\x99\x9c\xcd\x7f\x58\x30\xcf\xda\x00\x9d\x0a\x27\x65\x15\xd3\x96\x75\x31\xe8\xbc\x68\x3f\xcf\xa6\x44\x77\xb6\x25\xd3\x21\xf0\xd3\x1d\x9d\x12\x15\x10\xef\xd0\x62\xd4\x97\x50\xa9\x31\x17\x6f\xa3\x22\x87\x99\x42\x6c\x99\xd3\xf4\x18\xc3\x90\x8e\xd2\xc5\x84\x38\x94\x19\xcd\x65\x73\x6c\x45\xe0\xa3\x01\x89\x3a\x76\x00\x2e\xa9\x1e\xcb\x9b\x87\x35\x21\xf1\xfc\x0f\x07\x6a\xd6\x34\xb7\xbf\xd9\x99\x05\x54\xb4\x83\x01\x31\x5d\x75\x5b\xfb\x4d\x20\x4c\xd9\x3e\x3f\xe4\x8e\xc0\xac\x46\x29\x03\xb7\x89\x3a\x65\xcc\x51\x2c\xed\x45\xee\x51\x2f\x50\x16\x2b\xc2\x0b\xfe\xe9\xbf\xf7\x11\x0b\xba\x52\x14\xce\x99\xa2\xc8\x7e\x14\x24\xa4\x12\x94\x54\x2e\x22\xb5\x41\x9e\xd4\x46\xea\xa9\x4d\x49\x53\xcf\xf5\xf0\x68\x37\x1c\xa9\x17\xc4\x53\x2f\x23\x1e\x15\x41\x52\x1f\x04\x1e\x75\x44\x1c\x75\x09\x8f\x7a\xc4\x95\xea\xab\xf3\x68\x84\x73\xa6\x7e\x4c\x67\x1a\x0c\x92\x66\x42\x4d\x33\x11\xa5\x5d\xa0\x9e\xa6\x88\x27\x4d\x6d\xe9\x98\x3a\xcd\x34\x09\x9e\x34\x19\x28\x4d\x53\x66\xda\x40\xe4\xb1\x11\xea\x69\x01\x6a\x5a\x68\x8b\x33\x3d\x70\xe6\x62\x81\xe6\xb2\xc8\x7e\x96\xa9\xe3\x2c\xc5\x13\x67\x89\x5e\x9d\x0d\xa2\xe6\x86\x95\x96\x9b\x9e\x92\x9b\xd5\xeb\x6c\xc9\x39\x73\x4b\x7a\xcd\x9b\xa2\x3b\x1f\x5c\xea\xe7\x63\xe3\x11\xa3\x91\x7e\x0d\x4d\xa3\x24\x06\x16\x98\x67\x70\x13\xa0\xcf\xa1\x56\xac\xaa\xa2\x75\x14\xd9\x48\xac\xd3\xa5\x3e\x23\x10\x84\x67\x93\x2e\x24\x8b\x94\x96\x98\xd1\x01\x1d\x19\x49\xe1\xc0\x69\xfa\x61\x90\xd2\x81\x14\xef\x97\x68\x50\x53\xbe\xd5\x96\x8d\x8c\x52\x2c\xf1\x03\xc8\xb0\x33\x7a\xe7\x48\xfe\x29\x22\xa4\x4b\xa2\xe3\x6a\xd1\x71\xad\xde\xe9\x8a\x6f\xeb\x4e\xde\x39\xb9\x56\xe2\x0f\xe0\x94\x56\x54\xa6\x19\xad\x6e\x3a\x1e\x7e\x25\x54\x3b\xb9\xbd\x10\x93\x40\x5d\xd6\x08\x1c\xa9\x0b\x91\xa4\x8c\x98\xca\xd5\xbf\xc4\xe7\x97\x01\x99\x38\x75\xe7\x27\x09\xab\x99\x14\x33\x5a\xeb\xb6\x81\xa4\xdc\x53\x83\xe9\xa9\xc8\xb6\xd8\xc3\x6f\xaa\x93\x8d\x61\x49\x37\x0d\x86\x64\x9c\x4a\x3f\x5f\xa3\x8d\x0c\x35\x59\x32\x68\x93\xc2\xc4\x05\x45\x38\x81\xf9\xf3\x8b\x92\x49\x6e\x3b\x19\x85\xf9\x82\x70\x4c\x97\x0b\xea\xc9\x9c\x47\x39\x5d\x2e\x84\x36\x76\x13\xa9\xc7\x4a\x38\x98\xa6\x40\x55\x60\x47\x70\xb3\x0f\x09\xe7\xc1\x44\xcb\xce\x6b\x6b\x9b\xa2\x5a\xed\xe8\x45\x51\x58\x97\x38\x17\xaa\x60\x2a\xeb\x5e\x44\x7a\x20\xe4\xe1\x2f\xa5\x7e\x68\x6e\x25\x6b\x60\x4a\x49\x5c\x37\x5c\x72\xec\x0d\xc3\x3c\x2f\x2c\x90\x69\x50\x7e\xe2\x19\xb9\xd5\x6a\x6e\x9b\xcf\x75\xd4\x07\x63\x12\x40\x16\xf1\xd8\x5c\x16\xbb\x67\xce\x9a\xb3\x1c\x27\x16\x25\x07\xcf\x1e\xbd\x46\xaf\x30\xd9\x2e\x58\x9f\xd6\x9c\xcc\x64\xe1\x4c\x20\x36\x0d\x66\x2e\x79\xf3\x08\x98\x16\xfc\x29\x09\x30\xb1\x96\xb8\x27\x6e\x97\x05\xcd\x37\x9e\x4e\x5d\x0b\x83\xc8\x81\x42\xc8\x64\x29\x1f\x59\x98\x09\x87\x9d\xea\x78\x10\x2a\x5d\xdd\xe5\x86\xfa\xe6\x50\x1c\x73\xbe\xad\xf6\x7b\x41\x8d\xc6\x57\x64\xaf\x36\x43\xa5\xb4\xd0\xba\xab\x3f\xd5\x99\xf3\x7d\xa6\xb8\x86\xc5\xb5\x74\x46\x3e\xe4\xd2\x7d\x11\xb7\x36\x8b\xc4\x2c\xd1\x79\x6a\xb8\x97\x1a\xb6\x9b\x4b\x1a\xb6\x65\x74\x3a\x00\x23\x4f\x03\xef\xb2\x4b\x57\x24\x1c\xb6\xba\x67\x9e\x74\xc8\x97\x90\x3d\x0d\x74\x82\xdb\x44\xc7\x1e\x1a\x16\x92\x39\x8c\x29\xed\x1b\xcf\x6c\x84\xe7\x59\x00\x92\xe9\xca\x32\x6d\xca\xd8\xcb\x19\x0d\xa5\x75\x2e\xca\x12\xbc\xd9\x6a\x72\xa0\x0a\x1b\xc8\x7b\x53\x5d\x7d\x2a\x28\x3d\x90\x48\x52\x04\xd5\xc6\x29\x41\x83\x55\xe4\xff\x09\x31\x7c\xc1\x7a\xb2\x23\x92\xd4\x61\x8d\x72\x48\xd1\xa2\x92\xef\x8b\x63\x52\x8a\xc3\x0d\xc0\x6a\x62\x46\x12\xc6\x35\x58\xc0\x5f\x33\x76\xf8\x63\x42\x22\x91\x24\x81\x20\x28\x08\x86\xe1\xe0\x35\xec\x1d\xee\x5f\xde\x18\x6d\x93\x23\x93\xdf\xee\x2b\x57\x2d\x93\x2c\x55\x13\x88\x66\xcb\x8b\xfd\xa5\xc8\x28\x3d\xb7\x17\x98\xfc\x37\xd0\xf9\x77\xd6\xf9\x7f\xf4\x67\xbd\x90\x56\x1f\xa5\xd2\x8b\x00\xa7\xfe\x09\xb6\x96\x8d\xa5\xab\x60\xe4\x9c\x37\x7b\xf6\x14\x83\x8c\xd3\x54\xcc\xdd\x5a\xc4\xcf\x4e\x8e\x47\x71\xf7\x5c\x6e\x1c\x0f\xe9\x56\xf0\x96\x83\x5b\x5a\x2d\xa6\xf3\xe9\x35\xf9\x78\xf7\x8a\xd3\x63\xdc\xc6\xb3\xfd\x5a\x06\xf8\x50\x38\x82\x75\x43\x6e\x66\xe9\xe9\xdd\x41\x55\xec\x98\xdb\x2c\x19\x11\x79\xac\x53\x2e\x5b\xd7\x1e\xef\xa7\x2a\x98\xfe\x2e\xef\xc8\xe4\xcc\x20\x63\xa8\xff\xcb\xd4\xcc\x80\x66\xf6\x55\x75\x6e\x47\xd7\x87\x81\x6d\xd9\x29\x20\x86\xf5\x96\xce\xce\x5e\xe2\x5b\xf5\x8c\xd8\xac\xbc\x36\x69\xcb\xd3\x0f\xb1\x17\x2f\x59\xfd\xd5\x40\xc2\x7c\x15\x47\x4e\x3c\xaa\xbd\xdb\x2e\xf9\x2a\x1b\x8f\xd6\xdb\x0b\xdd\xeb\xf1\xfe\xab\x6c\x9e\x6c\x7b\xab\x39\xd8\xe7\xde\x46\x4d\x82\xb1\xad\x53\x51\x9e\xa7\x3b\x91\x67\xfb\x6c\xd0\x52\x0f\x06\xf4\x1a\x61\xed\x1b\xd3\x0b\x55\x4a\x0d\xb3\x9c\xb5\x7e\xcf\x48\xc0\xbb\xa1\x0c\x31\xb6\x7b\xf7\x90\xed\x54\xbb\x03\x7c\x74\x5f\x56\xc9\xee\xcd\xbc\x17\xcc\x41\xb7\x77\xe5\xd0\x7c\x59\x2d\x07\x1e\x69\xb5\x08\xbc\x4b\x87\x08\xc3\xcf\xa7\xe4\xfb\xbd\x08\x23\xa8\x51\x3a\xc3\xc0\xeb\xa3\xa6\x4e\xd0\x6e\xc6\x6c\x01\x5b\xa9\xd9\xdc\xee\xa3\xa7\xb1\xa2\x8e\x8e\x6f\x5e\xd2\xe0\xb9\x2d\x66\x3d\x25\xd9\xaa\x7f\x5f\x35\x1c\xaf\x51\xaf\xef\xcc\xe9\x85\xec\x74\x93\xe1\x3b\xce\xc3\xa8\x95\x60\x46\x6e\x46\x0d\x5e\x54\xbb\x5e\x66\xcf\xdb\xe0\xf7\xbb\xbe\x6a\xfd\x8e\x63\x69\xe7\x09\xd0\x1c\x74\x43\xe6\xb0\x75\xdd\x10\xe2\x00\x87\x78\x7f\x9e\xe4\x39\x1a\x51\xcc\xe9\x5e\x70\xdf\x2e\xc1\x49\xdd\x25\x40\xa8\xf3\x71\xe7\xca\x52\x63\x6b\x9b\xf5\xdc\xcd\x46\x36\xb8\xf5\xf6\x74\x7f\xec\x01\x77\x05\x82\x4b\x17\x1e\x22\x42\x05\x12\x6b\xb2\x8c\xfa\x5c\x56\x41\x90\x3a\x15\x1a\x93\xd0\x48\xd9\x0b\xa1\x06\xd8\xdf\xe4\xe6\xc9\x2b\x40\x97\x58\xd5\x0d\xdc\x65\xd9\x93\xcc\x2d\xcb\x63\x90\x00\xca\xb5\x5f\x68\x14\xbb\xd9\xba\x1e\xae\xa5\x5c\x4a\xa1\xe7\x0e\x2c\x4b\x62\x17\x3b\x1b\xc0\x91\x79\x84\x9d\x15\x7d\xff\x23\x5f\xf5\x92\xe1\x72\x2e\x9e\xfe\x7f\x53\xc9\x56\x9f\x88\xcc\xc1\x45\x97\x5c\x76\xc5\x55\x47\x8e\x5d\x77\x6f\x27\x4e\x9d\xb9\xe9\xb6\xbb\xdd\xc7\x3b\xef\x7d\xf4\xc9\x67\x5f\xfc\xe5\xab\x7f\x79\xf6\xf0\xdd\x8b\x57\x6f\x7e\xf9\xed\x55\x0b\x6d\x3b\x86\x10\x62\xc8\xb9\x72\xed\x72\x27\x5e\x32\xb0\x83\x99\x0c\xa2\xcd\xb0\x46\x77\xb8\x77\x32\x7c\xe8\xab\xbd\x62\xd3\x38\xf6\xff\xe5\x3f\x29\xa4\x94\x4a\x92\xa4\xc9\xd2\xcc\x35\xbf\x72\xcb\x9c\x7b\x96\xe2\x8a\x2f\xb1\xa4\x92\x4b\x29\x57\xa9\x85\x0a\x17\x94\x51\xde\x45\x8a\x16\x2b\xb3\xec\xf2\x5c\xed\xe2\x0b\x97\x5c\x76\xcd\x1a\x6b\xaa\x54\xb9\xa2\xf6\xfa\xae\x52\xb5\xda\x2b\xbd\xf8\xd5\x5f\xa3\xa5\x56\xda\xd5\x6a\xe3\x86\x36\x9a\xb4\xdd\x9e\xf6\x21\x47\x9e\x02\x55\x6a\x24\xa4\x64\x34\x69\xd1\xc3\x8e\x03\x47\x4e\x5c\xf8\xe2\xc6\xc4\xcc\xe0\xce\x83\xdf\x2c\xac\x6c\x3c\x79\xf1\xe6\x9b\x1f\xfe\xc0\x21\x20\x21\xa3\xa0\x82\xd0\x31\x20\x98\xf8\x74\x1e\x6e\xa4\x91\x47\x19\xd7\x68\x83\x06\x0f\x0c\x19\x3a\x6c\xec\xf1\xbc\x9d\x24\xe9\xa2\x32\x65\xab\x53\xaf\x41\xa3\x26\x2d\x7a\x69\xd5\x97\x36\x25\x65\x85\x76\x15\x35\x9d\xba\xf4\xd6\x47\x3f\x16\x2c\x5a\xb6\x62\x97\xbd\xac\x19\x19\x1b\xac\x9b\x98\xd9\xb2\x6d\x9f\xe9\x66\x99\x6d\xea\x7c\xe6\x67\xb9\x15\x56\x5a\x65\xd5\x85\x35\x77\xde\xfa\xa4\xc7\x3e\xee\xc3\x9f\x8d\xad\x47\xff\x58\x65\x3b\xdb\xfa\x53\x2f\x4b\x76\x6f\x27\xf8\xf1\xd7\x1f\x7f\xf7\xd7\xc7\xbf\x30\x7e\x78\xa3\x7b\xed\xdc\xdc\x76\x0b\x94\x2d\xb0\x63\x4c\xae\x9d\x3c\xe0\x7f\x00\x64\xae\x7c\x9e\x90\xe1\x01\x89\xda\x81\xa4\x7b\x20\xe3\xaa\x7c\x92\x52\xbc\x07\x24\x81\x04\x96\x31\x31\x4f\x33\xe1\x7e\x60\x49\xb9\x3e\x1a\x96\x06\x12\x7f\x03\xc9\xe9\xc1\x32\xeb\x96\xd7\xe0\x02\xf2\x62\x92\x30\x11\x80\x09\x91\x5d\xba\x28\xa0\x20\x61\x54\x43\x7f\xd6\x91\x31\xbe\xe0\x36\x24\x6a\x90\x58\xfc\xa8\xd2\xf4\x2c\x51\xc9\xa7\x00\x26\x01\x24\x8b\x3c\x82\xa6\x3b\xd4\x20\x3b\x05\x92\x5a\x02\x89\x68\x41\xc2\xf8\x4c\x45\x4d\x6c\x24\x68\x9b\xc0\xe2\xa9\x8e\xb6\x9f\x8c\xe2\xe6\xf2\x75\x65\x83\xac\x02\x4c\x0d\x24\x9d\x07\xd0\xc0\x2a\x23\x6f\x02\x96\x1d\x57\xdf\xc5\xde\x9b\xf1\x62\x64\x5c\xa5\x01\xbb\x81\x44\xac\x9b\x34\x08\xcd\x40\x92\x68\x90\x88\x45\x4e\x5a\x22\xd1\x05\xd3\xd3\x0f\xc4\x2c\xbd\x8b\xcc\xf6\x44\xa2\x96\x1d\x2f\x5d\xe6\x49\xb1\xb3\x0d\x3b\x8a\xe4\xec\x20\x86\x06\xfa\x93\xe2\xc0\x16\x61\x70\x90\x23\xac\x9c\x0a\xcc\x4e\xac\xd3\xa6\x48\x6c\xd8\x06\x14\xcd\x5e\xf7\xcc\x98\xbc\xff\x46\xc6\xee\x30\x9e\x1c\x60\x76\xe3\xb4\xc7\xbc\xfa\xe7\xc9\xe2\xdf\xad\x37\xff\xfe\x1a\xf6\xff\x0f\x00\x8e\x68\xe2\x2d\x38\xb6\x72\x1e\xaf\x6b\xc1\xee\x38\x5c\xc5\xb0\x5c\xff\xd5\xa5\x3f\x9c\x53\xdd\xb4\xe0\x71\xb6\xf5\xd1\xfe\x9b\x6a\x7f\xd2\x28\x9f\x7d\xfe\x9b\xb7\xbf\x27\xeb\xa3\xf6\xc4\x31\x5b\x14\x6f\xa0\xdf\x9b\x09\xb5\x97\x91\x57\xe9\x18\x39\x4f\x78\xd7\x59\xb2\x45\x1d\x87\xb3\xb3\xa4\x31\xe0\x7d\xcb\x07\x5c\xdd\xc2\xb2\x4c\xf7\x60\xf7\x26\xef\x35\x4f\xa3\x9b\x1a\x54\x23\xc8\x18\x8e\xcd\xab\x93\x32\x50\x36\x68\x32\x0a\x18\x5b\xcf\x46\x06\xdd\x35\x8c\x1b\x2c\x63\xed\x96\x7c\xc8\x60\x62\x48\x0f\x48\x97\xc9\xf4\xb0\x75\x32\x20\x6e\x00\xdd\xbc\x69\x21\xf9\x99\xd7\xe9\xa6\x25\x23\x0b\xc1\xf4\xf3\xf7\x62\xb0\x36\x27\xc2\x37\x3f\x11\x7a\x34\x7f\x98\x97\x30\x16\xac\xd7\xfc\xb8\x7e\xdb\xdb\x24\xc6\x4a\x66\x27\x24\xae\xc1\x99\xa8\x56\xf2\x36\x92\x80\xd1\xd1\xbb\x90\x71\x50\xc8\x17\x6a\x39\x19\xf2\x2a\x05\x76\xaa\x54\x6a\x89\xea\xf0\xdd\xe8\x34\x25\x90\x98\x47\xbc\x42\x9d\x88\x7f\x10\xb5\x87\x87\x2c\x87\x99\xd1\x45\x04\x67\xef\x7d\x4b\x56\x6e\x33\x31\x5b\x7b\xc9\xd2\x31\xcf\xda\x2b\x9c\x89\x4f\xbe\xcf\x25\xe2\x71\xd0\xc5\xab\xa8\xad\x42\xff\xb9\x44\x3a\x74\xc8\x92\x95\xec\x4f\x7f\xf4\x24\x77\x79\x9e\x03\xf5\xf1\xdf\x53\x87\xf9\x81\x8e\x77\x54\xd4\xbe\xb6\x34\xdb\xfe\xb5\xa3\x29\xb9\xbf\xf5\xd3\xd5\x32\xee\x0f\xe5\x79\xb2\x5a\xa5\x2b\xd6\x27\x16\xe2\xcb\x3b\x02\xc5\xe5\x39\x9d\xe5\x70\x89\xc4\x47\x21\xb8\x28\xdc\x94\xf2\xf5\xd8\x29\x05\xeb\x3f\x15\xf7\x7e\xb2\xc2\x9e\xc7\xf7\x85\x2f\xaf\x4b\x47\x89\x04\xbf\xbc\xcf\x37\x28\x88\x97\xc7\xc2\x12\x05\xdc\x13\xc1\x2a\xde\x99\xe3\x57\x37\xbb\x0a\x16\x8b\xa9\xd2\x75\xbf\xfd\x6d\xb1\x0b\x42\xa2\xf9\xa1\x4c\x7b\x6a\xa9\xfb\xf9\x87\x45\x52\x5f\xff\x07\x6a\x9c\xd0\x1b\x56\x25\x4f\xc7\x21\x64\x94\xbd\x97\xae\xf9\xe3\x94\x9f\xff\xeb\xe0\x7a\x61\x0c\x02\xad\x06\x09\x93\xc4\xf6\x3c\x25\x42\xca\x7b\x8a\x42\xbf\x53\x2b\x88\x9f\x89\x47\x6f\x83\xea\x7e\xda\xa5\xa7\x03\x89\x6c\x8b\xc7\x3d\x7d\x10\x20\xa7\x33\x4d\x2b\x23\xc5\xb7\x94\xe5\xef\xef\xcd\x53\x52\xa8\xc9\xec\x71\x63\x0b\x71\xba\x41\x70\x64\x2c\x09\x4d\x5b\x3e\x21\x9a\xa7\xb5\x25\x7d\x45\x9a\xec\xda\x82\x7f\xb5\xa2\x0d\x32\x9b\x88\x61\xae\x69\x6d\x8c\xc9\xd6\x8a\x68\xa7\xcf\xfe\x59\xfe\xfe\x30\x95\xf4\xb8\xc1\xac\x21\xba\x77\xdb\x72\x81\x37\x2e\x03\x7a\x72\xba\x33\xbf\x97\x40\x37\xf6\xf2\xc6\x3c\x07\x8c\xd8\x76\xc2\x7f\x9f\xb9\xfd\xc5\x43\xd2\x7a\xb7\xb8\x74\xa0\x0b\x4b\xc4\x5f\xe8\xa7\xb4\x5f\x14\x16\x1b\x46\x09\x28\x74\x5f\xe2\xde\xcb\x0f\xd4\x33\x8b\xbd\xe2\x3b\x93\x88\x7c\xf4\x4c\xcc\x20\x88\x52\xbb\xbe\x84\x8b\x76\xf7\xe5\xe5\x7c\x91\xfa\xc3\x5c\x7d\xd8\xb9\x54\x38\x17\x89\x0a\xb5\xfb\xc9\x21\xdd\x15\x96\x8c\x4b\xad\x9f\x31\xc9\xf5\xdf\xae\xe7\x4c\xcf\xc7\xec\x20\xfc\xdf\x06\xe9\x3e\xfb\xea\xb0\x84\xfa\xef\x0f\x83\x44\xbf\xfa\xf5\xd9\xff\xfb\xb7\xec\x06\x58\x80\x0d\x68\x8c\xed\xce\xc6\x33\xf8\x58\x03\xae\x9b\x29\x3f\xbf\x3e\x7a\xbe\xb3\x2a\xf2\x01\xd1\x32\xe6\x67\x6c\x5a\xb3\x68\x82\x75\xde\x45\xe9\xfa\xf1\x32\x05\x4b\x89\xa1\x6a\x73\x50\x2e\xc1\xc7\x39\xf6\x60\x03\x2c\x3e\x96\x98\x08\xcd\xc7\xba\xf2\x2a\xfc\x22\xee\x2e\xe3\x18\x04\x4b\x71\x3a\xc6\xcd\x0f\x16\x0c\xbd\x93\x1c\x2c\x19\x03\x13\xf7\xe3\xf0\xb3\xbc\x8c\x99\x18\x0f\x2d\x0d\xc3\x65\x63\x41\xfc\x42\x1a\xe5\x31\x4a\xa1\x3f\x19\x12\x95\x6e\xbc\xfd\x47\xdd\x3e\x5d\xf3\x40\xee\x9a\xf0\xc8\x9f\x5d\x4b\x64\x95\xe3\x0f\x6d\x70\xea\x05\xea\xba\x17\xd7\xfd\xd4\xe7\x3b\x0f\xbb\x8a\xf7\x31\x27\x87\x6d\x2d\x5a\x6b\xd6\xdd\x8b\xf1\x79\x44\x12\x6c\x37\x9a\x28\x05\xbe\x9a\x5a\x10\x9a\x2a\x41\xe4\x04\x5d\x23\xf3\x85\x2e\xac\x4f\xde\x9e\x4c\xae\xf7\xb2\x3c\xbf\x04\xe7\x61\x99\x0f\x78\x49\x97\xa7\x67\x3d\xc5\x03\x5f\x80\x99\x7e\xe3\xe7\xb4\x53\x55\xcf\xf5\x0d\x28\x8e\x27\xdb\x1f\x84\x45\xff\x7c\xf8\x3d\xe8\xe3\xb8\x9c\x54\x89\x9e\xca\x37\x86\x38\x81\x89\xbc\xb7\x00\xa9\x3e\x75\x2d\x93\x09\x4b\xf7\xef\x30\x4f\xb1\xa5\x0c\x43\x4b\x1d\xed\xe7\x80\xf0\xe5\x0b\x1f\xa8\x2c\x74\x76\x4f\x44\x25\x9b\x51\x88\x1c\x22\xeb\x70\x42\xa2\x48\xb7\x68\xf8\x04\x3a\x3c\x79\x26\x60\x49\x98\x1d\x38\xb5\x79\x76\x58\xb5\x4e\x82\xe0\x31\xd8\x2a\x3a\xc9\x5f\xee\xf4\x85\x58\x58\xda\xb4\x9d\xcb\x7b\xe0\x9f\xb7\xcd\x03\x0d\x29\xa6\x9a\x29\x99\x7b\xe1\x95\xa5\x0c\x69\xa6\xec\x9b\x5d\xb9\x72\xf8\x17\xa5\x92\xc2\xc8\x2f\xe3\x70\x7e\x30\x73\x89\x1b\xb9\x21\x4f\xdd\xfb\xea\xe9\xfd\xf9\xea\xc7\x7a\xee\x95\x91\x5c\xef\x25\xd4\x8e\x9f\x9b\x47\x66\xdc\x97\x78\x17\x70\xaf\x6f\xa9\x4c\x0c\xa1\xa0\x25\x74\x07\x74\x28\x80\x9e\xe4\x01\x45\x82\x98\x4d\x78\x3c\xa6\x6f\xc9\xf1\x1e\xcd\x00\xa3\xd8\x43\x82\x0d\xed\x97\x90\x66\x17\xd8\xcf\xe9\xbd\x94\xdc\x25\x74\xae\x4a\x9b\x5d\x03\x9e\x53\xf0\x61\x88\xb5\x7f\xe3\xc9\xb2\xe9\xb9\x76\xf6\x97\x88\x7e\x92\x29\x7d\x26\xf5\xfc\xed\x35\x8f\xaf\x37\x11\xbe\xad\x7e\x90\xfe\xe7\xe9\x85\x4e\x8a\xdf\xa6\x93\x1e\xec\xdb\xb9\x0c\xbd\xb2\x35\x29\x58\x1d\x7a\x0a\xa5\xda\x4d\xdd\x02\xe2\xad\x5a\x5b\x7b\x7e\xa6\x5b\xe9\x3f\x97\x11\xb8\x80\x7f\x7e\x98\x71\x27\x8a\xf9\x8e\x71\x1e\xc6\x2e\x2d\xe6\xc6\x8e\xe4\x8c\xc1\x9d\x11\xb3\x67\xeb\xb5\x9b\x88\x31\x4d\xa7\x3e\x2a\xe6\x1e\x89\xb4\xf8\xd7\x7b\xe5\x54\x16\xc5\x50\x32\x18\xa6\xf9\x9f\xef\xf1\xf0\x3f\xd6\x26\xf6\x4a\x72\x54\x43\x56\x5a\x97\x4f\xb3\x21\x1f\x87\x07\xe1\x78\xff\x62\x48\x5f\xf9\x07\x30\x7a\xf1\x0d\x1d\x92\x25\x13\xe6\xa6\x85\x76\x6e\xde\x30\x05\x09\xb0\x13\x40\x04\x1a\x2f\xfc\x04\x64\x64\xab\xf3\xd7\xf9\x66\x57\xc6\xe1\xce\xf0\x81\xce\xce\xf9\xe7\xee\x7d\x69\x40\xea\x08\x5f\xbd\xc4\xfc\xf1\x59\xbd\x57\xe5\x83\xa0\xc9\x64\x76\xfd\x76\xfd\x8b\x1f\x9f\x61\x39\x27\x34\xe4\x2c\xec\xd9\xbc\x32\x84\x7e\x15\x9b\xf4\xd9\xf6\x33\x34\x72\x06\x84\x56\x02\x91\x45\x25\xb4\x4b\xe6\x53\x5d\x27\x68\x6f\xc4\xb1\xff\x30\x05\xbb\x59\x6d\x11\x33\x1a\xc7\x2b\x0f\xd8\x7a\x0d\x3b\x46\x55\x26\x98\x07\xf9\x1a\x8e\x7d\x03\x28\x8b\x8f\x41\x7e\x8a\x13\xb9\x64\x30\x7c\x70\x63\xc0\xa9\x56\xb1\x27\x6a\x06\x8a\x07\xc4\x3a\x93\x79\xb2\xb6\x2e\x79\x1b\xea\x6d\xeb\xd0\x4f\x5f\x15\xaf\xa9\x43\x19\x2e\x34\x17\x92\xa1\x5c\x27\xf0\x17\xa0\x3f\x3a\xed\xad\x8a\xc3\x7d\x08\xfe\xe4\x44\xe6\x6a\x7e\x9d\x74\x3f\xce\x31\x9a\x6c\x42\xe3\x2f\xb4\xb7\xc5\x62\x1e\xc1\xa2\xa1\x93\x5c\xb2\x83\x6c\x04\xb1\xb7\xd0\xe0\x8b\x55\x92\xa8\xdc\xba\x8f\x26\x45\x54\x29\x2a\x33\xa7\x8e\xb4\xb5\x5e\xd0\x3a\xd3\x96\x6e\xdf\xcb\xb6\xca\x03\xee\xbb\xed\x5a\x4c\x0c\x9d\xdf\x97\xa2\xd0\x00\xe6\x87\x8e\xc6\x77\xe2\x6d\x12\x19\x3c\x21\xbf\x3f\xad\x63\xb4\xaa\x90\xc1\x92\x31\x42\x80\xdb\x16\x93\x3a\xbd\x77\x24\x55\x07\xdb\x1b\xc2\x31\x7f\xbb\xbb\x4b\xb8\x49\xb8\xad\x54\x8b\xec\xfc\x6e\xa1\x7b\x76\x23\x77\x2e\x15\xa4\x90\xed\x1d\x22\xba\x35\x52\xd8\x12\x8e\x6f\x19\xb6\xe3\x7a\x84\xc2\xd7\x40\x75\x18\xac\x21\xa8\x89\x6d\x30\xf9\x3c\xe8\xdd\x1b\xa4\x28\x2e\x3c\xe3\x9c\xe8\x5f\xe1\x35\xab\x63\x15\x7f\x12\x56\xe9\xae\x40\xf7\x67\x83\xdf\x9f\xd2\x70\x5c\xa4\x7f\xa6\xc1\x33\x46\xb8\xbc\x6e\xbe\xf9\x36\x91\xe0\xef\xc0\xfc\x66\xcf\xbd\xc2\x53\x50\x03\x44\x7e\x71\x42\x9a\xf2\x6e\xc0\xae\x4d\x15\x84\xad\x35\xa6\xf9\x62\x6d\xa1\x39\x67\x59\x27\x91\xbe\x3b\x97\x5c\xb4\x22\x5e\x9e\x5f\x55\x14\x96\x94\x0f\x11\x4e\x10\x92\xae\x67\xc5\x3f\xdc\x89\x7e\x7e\xdc\xca\x64\x18\x0f\x92\x61\x85\xa1\xaa\x95\x1c\x82\x27\x74\x4d\xc3\x47\x3f\xa1\xff\x68\x0f\xf0\xb8\xee\xbd\xcd\x26\xfa\x03\x3d\xba\x6b\x5f\xc1\xf8\x3d\xfe\x4a\x13\x0e\x0c\xf0\x14\x14\x41\xe3\xe7\x0f\x8b\xf6\xb2\x4a\x89\x84\xec\xae\x75\x46\x8e\xa9\x74\x5e\xae\x68\xa4\x82\x55\x72\x28\xc8\xc4\x22\x56\x8b\x91\xbd\x8f\x7e\x12\x24\x00\x12\x8a\x06\xf4\x22\x94\xbb\x52\xb7\x15\xac\x6b\x30\x02\xf6\x45\x5a\xf6\x47\xf0\xba\x31\x13\x26\x8d\xeb\x75\xd2\x74\x05\xc9\x0a\x1f\xba\xe8\x15\x17\xd3\x63\x4b\x46\x14\xc5\x64\x23\x18\x06\xe0\x44\x51\x04\x7f\x9e\x6a\x72\x6a\xa9\x32\x45\x76\x5d\x00\x30\xcc\x72\x8a\xc7\x53\x69\x7a\x98\x2d\x53\x69\x66\xc0\x51\x7e\xbf\x76\x9b\xd3\x52\xb0\xd2\x12\xfe\x46\x31\xe5\x7b\x59\x5e\x57\x74\x91\x5c\xaf\x16\xcd\x45\x08\xcf\xe5\x14\x52\x87\x4e\x06\x09\xea\x2e\x08\x52\x8c\xd9\x21\x34\x90\x2c\xbc\x9d\x6f\xbb\xd0\xf6\x64\xd6\xa9\x55\xa6\x90\x93\x83\x44\x37\x5a\xb6\xfc\x10\x3c\x33\x8b\xf2\xf9\x75\xff\x94\xd6\xc6\x0b\xbc\x3d\x72\xc0\x98\x9c\x26\x24\x89\x06\x29\xeb\xf9\x34\x66\xf2\x74\x5d\x30\x4f\xd7\xe2\xd5\x54\x5d\xeb\x1a\x83\x62\x1c\x6d\xc3\xb5\xdc\xce\xc9\x40\xc7\xe5\xeb\xac\xc2\x05\xec\x6b\x69\xd3\x01\x33\xb5\xca\xda\x8c\xe6\x59\xba\x36\x54\x55\x9e\x39\x53\xd9\x46\x86\xcb\x31\xf4\xc5\x95\x7e\xd4\x99\xa6\x3a\x00\x45\xc9\xe3\xa5\x30\x2e\xfb\xa5\xd2\xaa\x87\xf0\xc1\xd5\x27\x8c\xda\x8c\x58\x83\x46\xbd\xb0\xd9\x27\x87\x08\x1b\x6a\x3a\x93\x46\x05\xe5\x2d\x42\xf7\x97\x16\xe1\x92\x27\x0c\xfc\xb1\x49\x33\x84\xea\xcc\x5c\xd7\x68\x8a\xcb\x1a\x26\x0e\x5e\x35\x35\x81\x34\x4f\x5c\xc9\x3f\x4a\x53\xca\x19\x9c\x42\x5c\x64\x72\x31\x75\xb2\x58\xf0\x91\xd9\xd1\x80\xa3\x4e\x00\x74\xd6\x76\x58\x75\x9d\x15\x1e\xd5\xdc\x67\xb8\x28\x66\x9d\x1b\x26\x59\xb3\xc8\x79\x69\x61\x2f\xaf\x0e\x39\x91\x86\x93\xd0\xd0\x87\xc3\x48\x7a\xf2\x70\x2d\x74\x96\x69\x18\x7e\x17\x57\x5e\x29\xc8\xc3\x8d\x08\x95\x19\x1d\x34\x6d\xb1\x27\x42\x51\x73\x68\x62\x11\x62\x6b\xb5\x5e\xd0\x14\xc6\xd2\x4a\x50\x7e\xf4\xad\x59\x96\xca\x81\x00\x48\xc2\x5d\x51\xf4\xb6\xa1\x6e\x11\xb2\x61\xaa\x04\x26\x30\x9d\x55\x4a\xad\x58\x03\x93\xde\xf6\x20\x11\x56\x73\x18\x5c\x93\x0c\xe1\x95\x59\xdd\xa8\x7e\xeb\x17\x0b\x9e\x22\x3c\x7b\x34\x38\xd4\x24\xb4\xd7\x3f\x06\x08\xd5\x8f\x3b\xe7\xd3\xed\xa3\x3d\x9e\xd2\xe1\x95\x47\xa7\xe5\xb0\x9a\xef\x2c\x0b\x57\xa2\x30\x0f\xa5\x6a\xa3\xbe\x88\x0b\xb3\x1a\x5e\xb1\x74\xe6\x8a\x89\x03\x15\x47\x9e\xfa\x32\xbf\x97\x6f\xf9\x0c\xa6\xad\xae\xc0\x0f\xfa\x44\xb8\x3f\x54\x69\xb8\xd7\xed\xe3\x1a\x9c\x98\xc7\xb9\x9e\x55\x78\x30\x48\x35\xf3\x8e\xf0\x38\x74\xcc\xa7\x82\xd8\x82\x03\xab\xe9\x83\x22\x45\x6e\xad\xd8\x95\x6a\x7b\x9c\x6e\xae\x19\x39\x4b\x8c\x80\x82\x92\xb3\xbf\xda\x4a\x8d\x15\x43\xe5\x98\x37\xea\x02\xf1\x3a\x26\x5c\x57\x68\x64\x7a\x01\x03\x26\x9b\x9d\x88\xd3\x33\xcb\x0a\x11\xf4\x77\x31\xe6\x8d\x68\x22\x93\x8a\x74\x66\xe6\x38\x94\x77\xe5\x0f\xe7\x3e\x3b\x60\xc1\x3d\x41\x32\x92\x0a\xc8\x7d\x64\xab\xb7\xf6\x9f\x01\x8f\x8e\x55\x71\xd2\x09\xe7\x68\xdd\xb2\x22\xa0\x24\x59\x9b\xdd\x4f\xc5\xe6\x53\xaf\xfb\x8c\x84\x32\xe0\x6d\xec\xe7\x23\x0c\xd4\xa7\xc6\x1f\xab\xc1\xae\x5c\x09\xb1\x71\x0d\xf5\x15\x87\xa2\x6d\xa4\xb8\xd3\x72\xb8\xc2\x73\xc5\xa8\x2f\x80\x64\xd5\x13\x13\x4d\x9c\x37\xec\x16\x78\x05\xed\x29\x63\xb1\x0e\x6d\x6b\xb2\xf0\x8c\x06\xe5\xb8\x03\x72\x49\x1c\x0e\x20\x5d\xae\x3e\xdf\xd2\x6f\xc5\xbc\x62\x4d\x9b\xa5\xbe\xd0\x12\xbc\x5b\xf2\x03\xde\x39\x44\xcc\xfb\x55\x72\x4d\x70\x3d\x96\x2f\x51\x10\x1c\xd4\xf2\xc0\x2c\x89\x11\x41\x8e\xad\x02\x59\xc9\x93\xa4\x62\xcd\xe7\xf6\x73\x54\x97\x01\x39\xd9\xaf\x90\x94\x10\xe1\xc7\x15\x41\x87\x9b\x69\xb5\xc0\x1a\xf2\xaf\xbe\x90\x48\x1d\x72\x0a\x0e\xda\x91\x89\x56\x4d\x20\x02\x95\xba\x64\x2d\x3c\x0a\x4b\x11\xf3\x1c\xc5\x07\x9a\x7e\x56\x30\xc2\x1b\xc9\x6f\xde\x52\x3d\x6f\xbc\xfd\xec\x1a\x09\x37\x99\x02\xc6\x70\xf2\x73\x4a\xb8\x86\x55\x75\xce\x5f\x14\x97\x39\x5c\x51\xe5\x80\xd2\xa8\x40\xdb\xa7\xa6\x64\x9c\x95\x84\x71\xb8\x99\x45\xd0\x6e\x95\x2e\x44\xf1\xb0\xd4\xb5\x8b\x48\x9c\xb5\x75\xa4\x32\xfb\x3d\x8f\x05\x1c\xdc\x6d\x78\x09\x64\x6e\x04\xec\x26\x25\x42\x88\xbc\x65\x4d\x35\x24\xd6\xfa\x53\xcf\xbe\xbe\x96\xb1\xc2\x99\x62\x74\xc7\x8f\x95\x0b\xa8\x1c\x63\x71\x81\x17\x42\xbc\xd4\x92\xcd\xf1\x47\x1e\x23\xd0\x7b\xce\x4a\xe4\xd3\xf3\xc0\xc7\xcd\xe9\x32\x74\x54\xa0\xf9\x8a\x08\xfb\x37\xc2\x7e\xd5\x7c\xe4\x22\x97\xef\xf4\x6f\x42\x15\x3d\x7c\xd0\x84\xe3\xe7\x34\x77\xa8\xa9\x97\x57\x85\x45\x5e\xa3\xf1\x6c\x62\x1c\x01\x83\xd1\x26\x40\xc1\x63\x69\x27\x98\xd0\xae\xc1\x29\x86\x67\xd8\x4a\x47\x25\xb6\x7f\x6f\x75\x82\x52\x71\xd6\x0b\xea\xc6\xcf\x61\xeb\xca\xe8\xed\x60\x7f\x13\xac\x15\x25\x52\x52\xad\xbc\xc1\xdd\x69\xf6\x18\x76\x7c\x42\x28\x36\x26\xdf\xce\xb2\xbd\x54\x8f\x0a\xd9\xfa\xab\xe4\xb8\xb2\x93\x61\x80\xd7\xaf\xd7\xa8\xa6\x9e\x4c\x34\x45\x12\x2f\x0b\xb2\x98\xd5\xe4\x0b\xee\x95\x35\xb6\x69\x71\xa2\xf3\x84\x95\x3c\x5f\x50\x70\x60\x8c\x57\x13\x0b\xe1\xe0\x59\x90\xab\xf0\x1f\x39\x64\xff\x4c\x29\x20\x68\x91\x5c\xcf\x16\xbb\x6e\x5c\xce\x9f\xda\xb4\xa0\xfb\x1a\xf9\xfe\xf0\x80\x38\x89\xd4\x1c\x58\x21\xf1\x35\x7b\x01\xb9\xb4\x89\x6a\xf0\x8a\xd4\xc1\x9e\x91\x59\xd0\x6c\xcc\x89\x1f\x2a\x1e\x46\x32\xde\x10\xa4\x94\xc9\x27\xb1\x6a\x30\xf0\xd5\x7c\x8d\xb9\xbc\x1e\x8d\xe2\x66\x06\xca\x48\x3c\xb8\xb8\xc2\x0b\xf0\xfb\x36\x7b\x73\x53\x7f\xfe\x97\xa0\x66\xaf\x15\x92\x79\x2e\xfc\x02\x36\xf6\x9a\x80\xe0\x21\x8b\x1f\x50\x0e\x83\x0b\x11\xa0\x16\xb3\x5d\xd3\x62\xd8\xfa\xb2\xff\x54\x19\x12\xa3\x6d\xed\xe4\x26\xc2\x08\x62\x6d\x68\x94\xbf\xce\x65\x7e\x7b\x6d\x4f\x2b\x8c\xbb\x3d\xfa\xca\x83\xbc\xa8\xec\x93\x3c\xe5\x79\x0f\x05\x46\x6a\x56\x01\xfb\x1a\xc3\xaf\xe3\x62\x7b\x1c\xfa\x50\x99\xb8\x3e\x1a\x85\x66\xd2\x5d\x00\x51\x37\xea\x32\xb6\xe5\x30\x4e\xe5\x77\xc7\x29\xf3\x5e\xe1\xc2\x37\x3d\x26\x65\x90\xeb\x8b\x61\x72\x38\x05\x8e\x93\x6a\xd8\xaf\x17\x3e\x0b\x7b\x3d\xc8\x24\xf8\xa4\xd7\xd6\xa0\xa5\x2a\xce\x80\x34\xe4\xc6\x35\xa0\xec\x8f\x2b\x62\x5d\xe6\xf6\xe5\xe9\x73\xf4\x38\xfa\x5d\x0d\x2b\x62\xc4\x7b\x27\xde\xd5\x98\xd1\xec\x99\x18\x3b\x02\x06\xaf\x6a\xbe\x0d\xde\x15\x10\xbe\xa9\x66\x3c\x71\x2c\xc9\x40\xaf\x09\xd6\xac\xce\x17\x2f\x49\x91\x3a\x07\xaf\x33\x3c\xf1\x0e\xbe\x28\x5a\x86\xce\x47\x4e\x72\x98\xb6\x26\x5b\x11\x56\xb9\x3a\xf2\x96\xfa\x12\x70\x36\xd1\x62\x84\x08\x56\x1f\xcb\x14\x45\x03\x22\xf0\xae\xa2\x91\x82\x51\xe4\x51\x2c\x64\x04\x23\x49\xac\x23\x8f\xb6\x7c\x57\xd5\x71\xc0\x14\xf7\x90\x47\x6f\x50\x2b\xc5\x21\x55\x11\x58\x0c\xf1\x32\xa3\x14\x43\xf8\xf7\x31\xa9\x05\x33\x51\x39\x73\xa6\x2c\xd8\x53\x73\xc4\xdc\xd9\xe6\x14\xaf\x62\xa9\x57\xb3\xca\xce\x1b\x4a\x11\xd6\x63\x82\xd4\x98\x60\x31\x36\xb3\x9f\x48\xa7\x6b\x60\x49\x31\x21\x7e\x98\x86\x50\x9f\xf0\xf1\xda\xbe\x30\xc9\x6d\x90\x7a\x9b\xcc\xf9\xcc\xc8\x32\x3f\x11\x5a\x45\x65\x26\xdb\xab\xa3\xa4\x28\x13\x8d\xf5\xa0\x87\xa5\xa2\x28\x7a\xe9\x2e\x3d\x23\x54\x34\xd8\x45\x43\x4d\x48\x92\xd5\x3e\x8a\x63\x5c\xb2\x97\xf1\x51\xce\x4c\xa5\x06\x12\xb3\x3a\xc5\x22\xb9\x75\xf5\x10\xd7\x69\x6a\x90\x17\x85\x37\x29\x8a\xe1\xb2\x82\x36\xd5\xec\xe2\x53\x3f\x8f\xff\xa5\x10\x05\x0c\x72\x79\xdd\xe4\x0f\xc2\x04\x43\xea\x1a\xfe\x0b\x39\x47\xd7\x82\x9a\x5c\x0a\xd6\xd2\x5c\x5e\x1a\xd4\x16\xd2\xab\xfc\x98\xa2\xa4\xc6\x9e\xaa\xd2\x44\xf2\x11\xde\x74\x65\x0e\xb5\x6a\x54\xd9\xf5\x76\x5b\x25\x5a\x28\x26\xaf\x51\x95\xed\x7c\x25\x18\x6e\xeb\xc2\x23\x8a\xc4\x42\x0d\x30\x4a\xe6\x34\x11\x2b\x6a\x25\xe2\x6c\x86\xbe\x1a\x52\x3a\xa7\x8a\xcf\x8d\x99\x35\x83\xb1\x4c\xe7\x88\xb4\x5a\x33\xed\x4c\x09\xa0\xb5\x8b\xb7\xaf\xdb\x98\xe1\x31\x47\x9c\x62\x76\x06\x5f\x7d\xca\x9f\x80\x27\x71\x9e\xd4\xe4\x0e\xaa\xe3\x12\x3e\x7d\x2e\xb2\x98\x57\x33\xfa\x5d\xa8\xa6\x98\x24\x18\xdb\x69\xa9\xa8\xa9\x9b\x0f\x1e\xba\x43\x61\xc5\x93\xb0\xc5\x59\x41\x15\xc9\xb4\x58\xd7\xbe\xcf\xc1\x5a\x85\xdc\x8a\x93\x9b\x69\x59\x84\xa4\x1b\x54\x5c\x58\xd3\xc5\x31\xda\xee\x8e\x42\xbf\x0f\xc9\x10\x8e\x29\x02\xea\x65\xb2\x51\xda\xbb\x8b\x73\x31\xdd\x83\xba\xf3\x1e\xef\x63\xe0\x65\x3f\x6b\x54\x61\xc9\x1e\xcb\x84\x1e\xcb\xed\xbe\xb2\x1e\x42\xa9\x43\x52\x09\x41\xe7\x45\x22\x72\xd3\xd6\xab\xe9\x15\x98\xee\x7e\x61\x92\x0e\xb8\xfc\x40\xfc\x9d\xb1\xb7\xb9\x32\xe9\xb5\xf7\x3f\x05\x8b\xa4\xfd\x89\xec\x7c\xc8\x14\xaf\xd0\x22\xc8\x79\x51\x59\x50\x29\x27\x69\x2e\xa7\xcf\x9a\x4d\x8c\x2d\xa9\xe4\x06\xd9\x02\x5b\xb9\xda\x9a\x0f\xdb\x32\x8b\x17\x88\x6a\xe5\x1c\x69\x18\x07\xfd\xd5\x2a\xf9\xfa\xf1\x43\x0d\xaf\xb7\x5e\x23\x51\xaa\xc7\x54\xeb\xff\x15\x31\x13\x6e\x22\xf3\xc7\x42\xea\xd5\xc8\xdb\x27\xd8\x63\x19\x02\xfc\x57\xa3\xa3\xc4\x19\x24\xb0\x15\xcc\x5b\x71\x42\x04\x2c\x7f\x24\xeb\x98\x7c\x34\xfd\xd3\x4b\x9c\x4f\x98\x70\xe2\x1d\xb3\x8f\x1f\xa8\x54\x05\xb4\x3b\x31\x65\xa8\xf0\xed\xf3\x2c\x40\x3f\xb4\x35\x59\x49\x8c\x75\xe0\x2b\x72\x54\x0b\xed\x6e\x45\x67\xe9\x2b\x9c\x0f\x17\x89\x6e\x67\xc9\xaa\xa9\xce\x97\x79\x9c\xc1\xdf\xe4\xae\xe5\x7b\x46\x11\x7e\xa2\x6a\xb1\x19\xf5\xdb\x13\x16\x3d\x90\xfa\xd8\x16\x5a\xa7\xd9\x93\x7b\x63\xa9\x86\x8c\x42\x77\xfa\x0b\xd4\xaa\x78\x7b\x5f\x39\x32\x82\x11\x0d\xa9\x15\x26\x9b\xd3\x58\xb1\x41\x5a\x86\x99\xed\x95\x21\x61\x54\xaa\xfd\xdc\x9c\xe1\x89\x46\x4c\x52\xd6\xe0\x09\x86\xf8\x5f\xe8\x39\x90\xaf\x53\xe9\x46\x65\x2b\x4f\xf2\x88\x6d\xc2\x34\xde\xa6\x18\x70\x12\xaf\x3b\xcd\x29\x3c\x18\x11\xa4\x9b\xc8\x25\x98\xcd\x93\x8a\x91\x1e\x4f\x3d\xed\x02\x71\xd2\x98\x95\x85\x74\x02\x95\xc6\xc8\xbc\xac\x67\x5c\xa2\xe5\x10\x9a\xfc\x6e\x76\x97\xb3\x29\x39\xdd\xc0\xdd\x10\xa9\x5d\x21\xd5\x52\xaf\x2c\xf4\xd8\x0a\xb8\x8d\x5f\x1f\xf2\xd1\xa6\x0e\xd5\xb1\x98\xc9\x8d\x55\x9a\x86\xa1\x8d\x44\x84\x97\xf1\xc1\xdd\x0e\xed\x65\x97\xa9\xb1\xa5\x0f\x5d\xbc\x9c\xb6\x1f\x6d\x67\xc2\xfe\x77\xf1\x34\x9d\x16\xf5\xf4\x5d\x8e\x04\xdb\x25\xc1\x9c\xef\xc4\x43\x42\xc7\x35\x89\xbd\x40\x97\x68\x4e\x9c\xc8\xdd\x63\xe7\xaa\x47\xca\xdf\xc4\x40\x47\x78\x59\x46\x11\x19\xcf\x8c\xe1\x02\x7b\x82\xf0\x38\x79\xd8\x46\xb0\xf8\x52\xfb\x89\xcf\x78\x7e\x2a\x7b\xe5\xc7\x56\x21\x6d\x22\x11\x3b\x68\x44\xcd\x92\xc3\x09\xa3\x89\x13\x6d\x99\x72\x5a\xab\x82\x94\x05\x98\x46\x59\xa0\x27\x4e\xb4\xa2\xb3\xc8\xbb\x73\x05\x8b\xc1\x74\x10\xcf\xab\xce\x1c\xaa\x26\x72\x5b\x83\x7b\xa6\xfd\x40\x75\x06\x51\x0f\xcd\xe0\x20\xd8\x2b\x33\x6f\x73\x06\x11\xd8\xee\x2c\x4e\x84\x15\x3b\x96\x42\x0d\x72\xb9\xed\x37\xdf\x6b\x4e\x53\xe4\x4b\xda\xcb\x59\xb6\x05\x7c\x64\x61\x32\x95\xb3\x64\x51\x4f\x66\xc8\xaf\xf6\x18\xa7\xc4\x2b\xce\x18\x0d\xeb\x0a\xc2\x31\xe7\x53\x72\x74\xa5\xb9\x50\x2a\x77\xf9\x1c\x1b\x59\x0b\x43\x10\xa5\xca\x5f\xe1\x0c\x02\xdf\xb5\x1f\x68\xc6\xbd\x0b\x3a\x26\x73\x5c\x97\x30\x08\xdc\x69\xf7\x84\xb0\x61\x63\xe7\x70\x4f\xa3\x79\xe7\xe5\xff\x38\x57\xbc\x97\x53\x21\x8c\x1e\xb8\x6e\x91\x36\x6d\xef\xa6\x6a\xc5\xef\x6c\x34\xc7\x3b\x87\xd1\xe6\x49\xfa\xb5\x20\x56\xee\xeb\x6f\xa7\x12\x9d\x1c\x61\xdd\x5a\xc0\x7c\x17\x10\x0f\x6a\x95\x89\xf6\x3e\x65\x50\xbc\xc8\x2a\x0f\x4b\x74\x0d\xa5\x87\xb9\x1c\xd9\x30\x3a\xe2\x74\x99\xb6\x2c\xd8\x18\xf6\x2e\x83\xee\xf3\x6b\x3a\xb1\xa3\x3f\x4e\x28\xa3\xdc\x7e\xa2\x75\xf9\xa9\x11\xef\xb7\xd3\x3c\x57\xae\xde\x9c\xfc\x9f\xa8\x3f\x6c\xdc\x88\xed\xb4\x06\x50\x9f\xa0\x41\x1c\x13\x96\x4f\x0e\x6f\x2d\xaa\x46\x3b\x02\x5c\x5f\x5c\x7b\x64\xd4\x33\xac\xdc\x83\x55\x01\x91\x0d\x1a\x4a\xbb\xb8\x7e\x04\x68\xb0\x48\xd1\xed\xc0\xbe\xab\x7b\x7e\xde\x59\xc2\xc8\x9f\x5b\x7d\xe4\xb3\x2b\xaf\x99\xb1\xd1\x33\xe4\x80\x7b\xeb\x49\x01\xad\x28\x9e\xd3\x22\x21\xca\x0c\x50\x68\xd7\xd2\xa5\x07\xd3\xa4\x9c\x93\x76\x81\x40\x1e\xf8\x8f\x1c\x6c\x0a\x2b\x79\x73\xa5\x1c\xf5\xe2\x79\x77\x55\xf0\x94\x98\xcc\x7c\xe0\x59\xf4\xaa\x83\x48\xc1\x06\x95\x6b\x09\x85\xdc\x8b\xfa\x38\xdd\xab\x8b\x74\xe7\x5c\x4a\x64\x89\xc2\x0f\xb3\xe8\x20\xc3\x6a\x4b\xe8\x1b\x38\xe7\xe3\xfa\x91\x12\x18\x45\x1a\xa5\xa7\x2d\xae\xc6\x56\xd9\x4e\x52\xf1\x4d\x99\xae\x89\xb0\xca\x3b\x19\x11\xcb\x9e\xc4\x1d\x71\xbe\xbf\xd8\x21\x95\x3c\x7b\xff\x2d\x3b\xbb\xbf\xc8\xc7\xc1\x4c\x1c\x02\x94\x32\x38\xa9\x68\x21\x47\x2c\xe3\x4b\xa7\x89\x83\x0b\x94\x52\x02\xd2\xe5\xc6\x08\x6b\x2d\x21\x54\x54\xd5\x93\x98\xad\xeb\x4d\x69\xf7\x94\x51\xe8\x11\x5f\xe4\x41\x1c\x91\x71\x7e\x15\x73\x30\xc7\x15\x09\x56\x66\xb4\xa1\xd8\xde\xe2\x71\xbb\xcd\x6f\x7e\xb9\x96\xed\x4d\x68\x37\x45\x96\x2c\x75\xaa\xba\x96\xf3\x6e\x49\xe1\x59\xb7\x6f\xfb\x99\x01\x73\x75\xf3\xcf\xe7\x95\x28\x88\x9f\x8f\xe5\x5d\x5c\xc1\x0e\x25\x47\x5a\x47\x94\x34\xea\x02\x74\xde\xef\x05\x82\x85\x6a\xf3\x35\xc3\x50\x95\x04\xa1\x44\x8c\x68\x82\xe9\xfd\x17\xad\x2b\x83\x55\x89\xc5\xac\xe0\x67\xfc\x59\x8b\xb9\xd6\xa1\x1b\x0a\x37\x75\x38\x77\x9c\x0d\x50\x6b\x71\x80\xb3\x1c\xf8\x77\xab\x7d\xff\x7b\xce\x4f\x19\xb6\x82\x14\x74\x14\xd4\x73\xf8\xe1\x86\x61\xee\xee\x1b\x31\x8b\x63\xd1\xab\x8f\xac\x79\x5a\x2c\xac\xf4\x9c\xd5\x31\x05\xa6\x81\x81\x66\x9e\xf7\x71\x2d\x5a\x90\x5f\x61\xb5\xf3\xc2\x5f\x27\x9a\x5a\x4c\x03\x94\x88\x18\x20\x11\x6a\xbe\x3e\x4a\x8a\x71\x4b\xc7\x4c\xb8\x61\xf6\xdb\x35\xc3\x48\x55\xf2\x67\x6b\xe2\x85\x3c\x1a\x07\xa6\x57\xc6\xa1\xd9\xc1\xef\x6b\xad\xdd\x10\xba\xcb\xae\x9c\xfd\xb7\xa9\x61\xc3\x16\x9e\x88\x42\x91\x72\xee\xe8\x93\x7a\x3f\x60\xda\x86\x18\x75\xa4\x78\x1f\x15\x26\x3d\x8b\xc4\xc3\x57\xbf\xa8\xa2\x59\x16\x28\xdb\xe7\xb0\xa5\x40\x48\x77\x3e\x8e\xb0\x50\x59\x16\xa8\xa2\x49\xd8\x0f\x89\xe4\x07\x08\x09\xac\x29\xa7\x12\x2b\xa8\x33\x85\xff\x43\xc9\x62\xd6\xa6\x01\xfb\x62\x67\x3a\x05\x4d\x05\x72\x08\xa3\xc7\x09\x0c\xbd\x2c\x03\x81\x2f\x3d\x7f\x21\x29\x2a\x6c\x93\x43\xb9\xc7\x06\x82\xe3\x12\xd9\x8d\xbf\x62\xbb\x43\xa5\x03\x38\x80\xaf\x65\x7a\xbf\x17\x1d\x9b\x68\x8e\xb7\x7d\x4f\x82\xb2\xab\x4f\x52\xfa\xd2\xc1\xcb\xd9\x79\x26\x24\x15\x1c\x86\x49\x4a\x6e\xac\xba\x2f\x59\x27\xe9\x53\x35\x1e\x9c\xf9\x49\x71\xf0\xce\x11\xb3\x76\xce\xb6\x9d\x6e\x63\x17\xdf\x08\x89\xc4\x04\x98\xf6\xbb\x78\x83\x73\x84\x63\x9b\x0a\x20\x43\xf3\xf4\xb6\x45\x64\x21\x0f\xf3\xd0\xee\x62\xf5\xfd\x39\x97\x93\x78\x8a\x0d\x22\xf0\xae\x1c\xdc\x8a\xd4\x1e\x80\x91\xdb\x3f\xd9\x3e\xd2\x64\xc4\xf1\xe4\x4f\xb7\xa4\xd8\x12\xaf\xea\x32\xc9\x50\x8d\x03\xa3\x2c\x86\x80\xde\x78\x8d\x27\xe9\x7d\x1f\xa6\x76\x4e\xdb\x76\x24\xfe\x86\x43\x73\xc4\xfa\x35\x31\x20\xd6\x49\x4a\xea\x64\x67\x91\xa6\x39\x30\x7f\x84\xda\x9a\x4f\xcb\x93\x4c\x64\x6e\xa5\xb6\xe1\x23\xdd\x3f\xd4\x77\x87\xc3\x80\xc0\x64\x28\x58\xc3\xec\x2a\x4d\x78\xaa\x62\x54\xe5\x34\xb0\x1d\xba\x68\x42\x41\x2a\xb6\x72\xae\x85\x59\xef\xbf\x6d\x61\xaa\xa7\xa0\xa7\x7a\xed\x39\xd9\x55\x3d\xb0\x32\xc5\xc5\x98\xd3\xdd\x02\xfb\x91\xc0\x6b\x61\xd2\xfa\xdd\xe1\x93\x04\x17\xb9\x32\xc0\xf6\xd7\x0a\xdb\x7e\x1e\xf3\xac\xf2\xc2\x17\x4d\xdf\x7e\xb3\xcd\xc1\x1c\x8a\x42\x14\x14\x42\x39\xcd\x1b\xab\x99\x42\xbd\xad\x7d\xf8\x3d\xec\x68\x3b\xad\x88\x6f\x89\xf8\x84\xaa\xbc\xb8\x4c\xb6\xf5\x04\x09\x10\x1d\x1e\x59\x68\xd3\x04\xb4\xc2\x8e\x53\x4d\x61\x5c\x23\xfe\xc2\x46\x41\x87\x73\xdf\x4e\x5b\x57\x2a\x6a\xc7\xb6\xbd\xb3\x7a\xf8\xf2\xa2\xf2\xb0\x33\xea\x8b\x82\xf0\x42\x65\xd6\xdb\xad\xd6\xb2\x51\x41\x2a\x0e\x1c\xdd\x2a\x21\x38\x0d\xb0\xd1\x46\x0b\x96\x91\x55\x36\x40\x6c\xe0\x7e\x04\xe3\xfb\x7a\x8d\x2a\x00\x96\xbb\x12\x67\xd4\xb7\xb8\x99\x25\x52\x4a\x61\x08\x8c\xed\x13\x0c\x06\xae\x9a\xf5\xc0\x6e\xf9\x40\xb3\x25\x4f\x58\x29\x7f\x8c\xd3\x44\x3b\x98\x61\x4b\xa6\x46\xd9\x01\xc5\xca\x55\xea\x27\xb0\xc3\x1a\x19\x23\x38\x84\xa6\xd0\x03\xd2\x34\xa0\x15\x8a\xe7\x20\xe8\xf4\xcc\x69\x28\x8a\x07\x32\x25\x7e\x80\x7a\x87\x05\x2f\x6b\xdb\xc9\x46\x11\x62\x72\xd3\xb6\x40\xce\x28\x57\x55\x75\x6b\xb7\xab\xc5\x9a\x62\xba\x5b\x9b\xad\x38\x60\xfd\xd0\x53\xd6\x97\xac\xec\xed\x3c\x35\xb8\x87\x8d\x01\x8d\x1b\x53\x3d\xf5\x0d\x6c\x55\x78\xe9\x18\x62\xa1\x88\x7e\xaf\x88\x3d\x6b\x22\x14\xff\x81\x08\xac\x7c\x9b\xd1\xd5\xca\xce\xa9\x02\x03\x2e\x59\xf6\xf2\xc7\xfd\xaa\x5d\x21\x47\x6a\xc0\x52\x23\x0d\x10\xf2\xdc\x08\x50\x63\x8c\xf9\x2f\xe4\xd7\x2e\xb3\x5c\x96\x9c\x23\x54\xe5\xc8\x55\x7c\x7d\xc7\x15\xd5\xf1\x29\xa9\xce\xea\xf1\x15\x4c\x7d\x14\x08\x21\xe7\x2b\xe2\x82\x06\x9a\x33\xc7\xac\xda\xb9\x78\xd3\x8b\x4a\xd4\x8a\x7a\x4a\x6a\x23\xd4\x9e\x59\xdd\x4b\x19\x52\x08\x13\xa3\xb8\x04\x91\xe9\x0a\xd5\x70\xa1\xa5\x99\xb1\xf4\x55\xbb\xab\xac\x17\x57\xd9\xfc\xe7\xa4\x5b\x73\xfa\x36\x42\x92\xb0\x62\xcf\x3a\x80\xef\x5b\x96\xc4\x19\xd2\x11\x28\x47\x10\x37\xff\xdb\x79\xe2\x97\x30\x89\xb1\x6b\xfd\xe8\x9c\xe0\x53\x0e\x55\xee\xc8\x1e\xa1\x4e\x24\xc2\xf7\x54\xd7\xa3\xae\x39\x63\x72\xc9\x93\xb4\xf4\xaf\xd6\xf2\x5d\xc1\x07\x5b\x17\xb4\x6f\xad\x87\x35\xf0\x22\x35\xd0\xc5\xec\xd3\x16\x4d\x0e\x61\x0b\xaf\x0d\x08\x62\x65\x1d\xfc\xeb\x00\x89\x78\x20\xf8\x69\x14\xca\xb1\xda\x52\xa5\x14\x8b\x74\x6c\x1f\x82\x41\x0b\x29\x83\xb8\x56\x14\x30\xe1\x00\xda\x51\x88\x9f\x05\x25\x40\x4b\xe6\x33\xd8\xeb\x20\xdd\x6a\xd7\x0a\x16\xdc\x00\x3b\xd1\x94\x8e\x67\xa1\x95\x8e\xad\x14\x96\xee\x8c\xd9\x12\xac\xb9\x88\x39\x0c\x4a\xb5\xb9\x80\x72\x76\x05\x10\xb0\x5a\x46\xd7\x27\xb9\x45\x40\xf3\x70\x00\x11\x11\xaf\x0d\x30\xf7\x12\xfd\x49\x0e\xe9\x4a\x36\xd9\xb8\x5e\xfb\x4c\x03\xe4\x8e\x2d\x09\x25\x8a\xf4\xd0\x81\x3b\x0b\x41\xb3\x5f\x00\x4e\x85\x28\x7f\x30\xd3\xa8\x53\x12\x37\x48\xee\xdb\x09\x3d\xb2\x89\x86\x35\x74\x35\xe0\x70\xae\xfe\xc4\x22\x06\x48\x15\x0d\xd4\x20\x2a\xbd\x97\x5d\x11\x36\x9e\xc8\xe0\x15\x49\x3a\xe3\xe8\x56\x04\x87\x3f\x58\xe9\xb6\x4e\x65\xf3\xa8\xbb\xe4\xf0\x41\x02\x8e\x82\x4b\x43\x5f\x9d\x79\x11\x61\xff\xff\xa3\x03\x1d\x2c\xf2\x46\x2f\x38\x28\x1b\xe2\x35\x9b\x43\xc2\x62\x4f\xf4\x45\x82\x07\xdd\x40\x28\xcd\xeb\x7e\x74\x4b\x1f\x33\x5b\x62\x04\xa2\xb8\x9c\xfc\x8a\xde\x03\xa8\x91\xee\x32\x4c\x5e\xa3\x24\xe8\x7e\x1d\x4e\xaa\x0e\x9c\xa3\xd8\x55\x64\x47\x91\xf7\xa4\x17\x22\xe7\x94\xb7\xe3\x30\xd5\x1d\xf8\x57\xc6\x54\x3e\x71\xd9\x6d\xb1\xf6\xd9\x26\x68\xf9\x6d\x37\x26\x58\x34\xed\x15\xe3\x6e\x35\xe7\xcc\x06\x12\x7e\x09\x15\xe0\x3d\xfe\x15\xd4\x62\x77\x4f\xae\x02\x5d\xbd\xa7\x8a\x58\x0a\xaf\x5e\xeb\x23\x5a\xc6\xa5\xe7\xd3\xd7\x1e\x96\x1f\xd2\xa1\xa1\x3c\x09\xa0\xd1\x68\xee\x2a\xc3\x8c\x50\xc3\x74\x93\x82\xba\xb1\x46\xa0\xa9\x70\x82\x2b\x68\x8f\xad\x88\x1a\x34\xec\x68\xab\x83\x39\x1e\x54\x52\xa9\xa1\x8a\x1a\xea\x3d\x97\x6d\xf1\x7c\x51\xb5\xd5\x64\x0b\x85\x91\xe7\xbb\x25\x05\x43\xd6\xcb\xf5\xd6\xf7\x1d\xad\xec\x3b\xd7\x08\xea\x10\x20\x16\x1d\x58\xc1\xff\x90\xcb\xa3\x19\x49\x08\x1c\x00\x5d\xeb\xf9\x80\x31\x8c\x26\x94\x7a\x75\xb0\x5b\x14\xe7\xdd\x09\x9b\x23\x1f\xb7\xb3\xd4\x82\x4d\x65\xd3\x6e\x99\xc6\xcb\xaa\x4a\x4a\x11\xb4\xbc\x9c\x20\x6f\x80\x84\x3b\x03\xee\x46\x80\x40\x6c\x5e\x29\xcf\x35\xef\x4c\x2f\x14\xb8\xcb\x30\xa3\x72\x13\xdb\xe7\x9d\x93\xa3\xeb\x05\x02\x75\x03\xeb\xc6\x33\xad\x22\xbb\x30\x37\x45\x73\x61\x1e\x29\x5f\xc9\x4f\xc3\xe3\x69\x54\xe0\xed\xd5\x94\x6d\x5b\xae\xd4\x40\x3a\x2b\x26\x97\xa4\x60\xda\x69\x31\xfa\x27\x57\xc3\x35\xfb\x6c\x08\xbf\xa2\x66\x2e\x39\xa4\xfc\xf5\x2c\x7a\x46\xe1\x47\xf0\xc9\xaf\x03\x18\x2f\xfc\xdb\x09\xc2\x3f\xfb\x68\x9d\x01\xb0\x6d\x57\xf8\x58\x36\x62\x15\x2e\x09\x8a\xa7\x74\xd8\xd2\x63\x6c\xff\x41\xbf\x5e\x43\x80\x1f\x1a\xa9\x10\x5c\x33\x16\x40\x05\x5a\xa4\xa8\x98\x08\xb5\x7c\x30\x76\xb0\xe9\x8e\x71\x13\x40\xb4\x5b\xef\x28\x87\x57\xb0\x54\x4f\xb7\x95\xdd\x8e\xcd\x35\x48\x26\xd8\xf5\x95\x6b\x97\x63\x3f\x57\xf3\xd1\xba\x26\x4a\x03\x8c\xc5\xb8\x30\x21\x3e\x88\x98\x5f\xf6\x10\x34\x11\x1f\xb9\x50\x2a\xd4\x83\x63\xb8\x18\xa4\x1d\x17\x75\x12\x65\x71\x3a\x6a\xb6\x46\x6a\x15\x5c\xba\x46\x85\x69\xfb\x9b\x59\x73\x85\xcc\x86\xe0\xb7\x2a\x41\xbf\xa7\x79\xf9\xb8\xb5\x36\x9d\x77\xe2\x00\x98\xb0\x4d\xa9\x4f\xbb\x87\x70\xb3\xc4\xb5\x44\x6d\xde\x8e\x97\x9c\x5d\x78\x9b\x13\xa4\xfb\xc1\xca\xdc\xe8\x40\xac\x7e\x54\x70\xf6\xc1\xca\xf3\xd8\xc1\xb2\x0f\xeb\x83\x07\x0b\x9f\x65\x87\xc9\x5e\xec\x77\x7d\x70\xe4\xba\x54\xd0\x4e\xfe\x54\xf8\x6e\x83\x9d\x73\x73\x0e\x82\x7c\x39\x3f\x68\x60\xce\xcf\x08\x94\xdc\x8c\xa0\xf4\xa1\x3e\x20\xf5\xb9\xa2\x65\x0d\x12\x93\x7c\x18\xb0\x66\x79\x38\xd0\xd1\xda\xcd\x9b\xeb\xd1\x13\x47\xfe\x91\xe8\x60\xe7\x94\xa0\x00\xd0\x65\x62\x34\x58\xe1\x23\xb0\xcd\x08\x88\x8b\x52\x92\x0b\x6a\xc5\xad\xda\xb0\x6b\x58\x78\xde\x9d\x88\xb5\x1b\x14\x73\x6b\xd9\xa7\x18\xc2\x90\xb4\x69\x7f\xd2\x9c\x4f\xad\x08\x9a\xd5\xcb\x90\x63\xad\x01\x14\x6e\xa6\xd5\x1f\x00\x30\x51\x7a\x6e\xc2\x5a\x35\xf8\x3e\xbb\x64\x81\xb7\x26\xc8\x50\x80\xf9\x7c\xec\x86\x1d\xb5\x6f\x1a\x6f\x5b\xd8\x13\x7f\x76\x59\xbf\x85\x07\x6b\x28\xf9\x3c\x8e\x39\xc5\x9f\x12\x65\x4a\x70\x06\x2e\x01\xa3\x25\x49\x52\x19\x9d\x8c\xac\x2e\x48\x82\x4b\xe1\x3c\x7b\x49\x95\x79\xce\x92\x72\xa5\xb6\x73\x63\x3e\xaf\x5b\x23\x8e\xab\xac\x17\x3a\x23\x47\x47\x28\x5f\x15\xf7\x24\xba\x32\xf0\x90\x1a\x72\x74\x40\x8d\x7a\xf7\xf5\xf6\x65\xbc\x78\x71\x27\x3c\x33\xd8\x97\xcd\xd9\x17\xb7\x30\xc7\x6c\xb6\xc3\xb8\x9e\x53\x0e\xfd\x30\xc4\xfb\x6c\x55\xa7\x83\x4e\x60\x98\xa8\xd5\xb9\x41\x83\x35\xf2\x43\xb6\x0b\xc3\xbb\xa0\x12\xba\xe5\x02\xd1\xce\xfd\x80\x27\x39\x92\xe9\x1e\x29\xd6\x9d\xee\x6f\x98\x67\x58\x47\x89\xd3\x8c\x41\x47\x3f\xdd\xcc\x8e\x3d\x23\x85\xbd\x6e\x7e\x16\x1c\x03\x67\x83\x7f\x55\xa9\x6d\x9e\x94\x10\x33\xab\xa2\x52\x3a\x55\xa4\xdd\x97\xc2\x47\x8c\x3f\x89\xeb\x66\x85\x62\xf7\x11\x21\x55\x50\xc1\xe6\x5e\x50\xfb\xee\x8b\xa1\x87\xfa\x54\xab\xd8\xbf\xe2\x41\x25\xd3\x74\xda\x63\xbb\x30\x45\xab\xb0\x52\x77\x5c\x4e\xf0\x16\x2c\x60\xc8\xaf\xfe\x2d\x0e\x50\xf3\x15\x3e\xd9\x35\x8c\x8f\x31\x56\x56\xf4\x2f\x22\x3c\xbd\x09\xd1\x63\x4f\xbe\xad\xb1\xa0\xbd\x09\xbe\xc8\x4e\x62\x2a\xe2\x4f\x1c\x6b\x77\x15\x39\x1c\x53\x64\x69\x17\x51\x0c\xef\xa5\x52\x24\x31\x15\x2c\x95\xa2\x5c\xe9\x02\xb0\x48\x63\x40\x2f\x95\x5e\x02\x81\xa9\xa9\xf2\x64\xf4\xc6\x82\xe9\x59\x6c\x53\x7f\x3d\xe5\x9b\xc7\x27\x77\xb6\xed\x25\xdf\x66\x1e\xff\x48\x2a\x4b\xec\x7c\xf0\x87\xfe\xf6\xa2\xe5\xf4\xe1\x9e\x7f\x1f\x73\xbb\xc6\x6f\x71\x9b\x53\xab\x86\x14\x8d\x83\x2f\xbb\x5e\x79\xcd\xfb\x95\x5f\xa7\xc7\xdd\x45\x29\xa5\xcc\xed\x55\xb3\xb2\x60\xa1\xfa\xd5\x6e\xf9\x0e\x95\xf8\xd7\xe2\x0e\x28\x56\xed\x75\xc6\x9c\x7c\xc5\xdd\xd5\xc0\x7e\xf6\xae\xa2\xb5\xef\xaa\x21\xa4\xfd\xd7\x1d\xf5\x2d\x0f\x60\x49\x30\x83\x16\x9d\x1a\xe7\x50\x52\xa6\x09\xa3\x46\xaf\xfa\x05\xe0\xf0\x4f\xc5\x78\x4c\xca\xf1\x2d\x43\xe0\x12\xb3\x03\x1d\x02\x5f\x3d\xf3\xb1\x4d\x3b\x76\x44\x51\xc2\x17\xc7\x27\x94\xb1\x9e\xb8\x70\x5c\xec\xf7\xeb\xc1\x03\x0a\x36\x3e\xd5\x9e\x83\x67\x0a\xa6\xd8\x7c\xc2\xf8\x99\x7d\xf1\xfb\xec\x01\x45\x97\x23\x1c\xe9\x2a\xa7\x50\xbc\x48\x6f\x3a\x23\xef\xad\xec\x13\xe8\xa3\xd5\x65\xe5\xbd\xd6\xbf\x50\xfd\x81\x11\xd5\xa8\x9b\x7e\x80\x6e\x88\xfa\x8a\xba\xa5\xd4\xbf\xda\xb2\xab\x62\xe1\x33\x67\xa9\x4d\x32\xc3\x18\xf4\x54\x69\x4f\x7e\x4f\xa2\xe8\x54\x47\x74\xa5\x8e\x28\x55\xaa\x0f\x00\xe4\x92\x30\x58\x56\x16\x5e\x12\x2e\xff\xf6\x69\xfb\x57\x6b\x7b\xdf\x0a\x61\xcf\x51\xb4\x57\xb5\x44\xce\xc6\x1b\x82\xd4\x08\xc4\x08\xdf\x16\x68\xf8\x1e\x00\x1c\x40\xc0\xf0\xd1\xd4\xc6\x41\xec\x82\xfd\x05\x36\x9f\xce\xb4\xdf\xde\xd7\x7c\x25\x6f\x3a\xfd\xe6\x14\xbc\x99\xd8\x79\x58\xaf\xfb\x8f\xb8\xee\xcd\x32\x04\xce\x5f\x43\x1a\xb7\xa9\x97\x1f\xc6\xf5\xe5\xae\x28\x64\x70\x7c\xc7\x68\xc8\x69\x09\x79\xe3\x26\xd6\xe7\x75\x25\xe9\xfe\x0a\x13\x86\x2c\x45\x2b\xfd\x83\x10\xcb\xec\x09\x15\x72\x7e\xe0\x80\x5c\xff\xd5\x90\x36\xea\x63\xaf\x21\x0e\x94\x57\xbc\xcd\x2c\x84\xc2\xe6\xc0\xb4\xc8\x00\x07\xb0\xc0\xe3\x18\x18\xef\x7a\x45\x0b\x78\xd3\xe4\x85\x5b\x5a\x24\xe2\x84\x62\xd9\x38\x15\x22\xdc\x2b\x97\xe0\x99\xfb\x13\x33\x62\x9d\xb9\x50\xd2\x5b\xaa\x13\x47\x0b\x66\x66\xdf\xed\x15\xd2\x01\xae\x81\xec\x5f\x15\x92\xc9\x47\x21\x9d\xdc\x15\xee\x93\xcf\xc2\xc5\x9b\xbd\x8e\x84\xad\x81\x20\xc1\xc7\xea\xac\x37\x2b\xbf\xc3\x93\x9e\x19\xa1\xb3\xbf\x84\xcf\xdc\x3e\xc8\x63\x33\x3e\xc8\xf3\xcb\x64\xd3\x8c\x77\x17\xb4\x9b\x22\xd5\x9b\xa8\xad\x54\xf8\x4b\x00\x3b\x52\xaa\xdc\x85\x93\x63\x0d\xd4\xff\x17\x3f\xbe\xec\xf5\x99\x26\x04\x8f\x89\xe5\xc7\xed\xd8\xce\x18\xc8\x06\x7d\x69\x16\xc1\x27\xa8\xac\x00\x86\x4d\xcc\x1e\x84\x2f\x18\x1f\x4c\x53\x7b\x39\xdc\x32\x6e\x48\x89\x12\x6c\xbb\xd6\xdb\xd2\x1e\xf3\x9a\x7a\xb0\x33\x36\x44\xe6\x1f\xb2\x71\x86\x7d\x1d\xb1\xf3\x29\xc2\x4a\x2b\x3d\xcf\xc7\x9b\x4f\x00\xa4\x1c\x11\x87\x7b\x10\xf4\xc4\x8c\xb0\x76\x22\xab\xd5\xbd\x13\x35\xa7\xd6\xf2\x37\x1f\x01\xd2\xc4\x9b\x46\xa4\x9b\xd0\x60\x91\x54\x44\x4c\x93\x3f\x7a\x51\x22\x32\xb9\x5c\x43\x8d\x1b\xeb\xe7\x55\xb5\xbd\xe3\xc2\x13\xa8\x7e\x94\x63\x8b\x5f\x8a\x3c\x33\x6a\x2c\xd5\x60\x39\x1e\x41\x57\x06\xd4\x38\xd2\x1d\xd4\x1c\xec\xbd\x02\x49\xa8\xe1\x30\x98\x09\x90\x60\x58\x55\xd0\x33\xda\xd5\x5f\xe1\xad\x24\xbd\xd1\x45\x51\x47\x5d\x65\x3e\xbb\xd9\x0e\x3b\x35\x2a\x01\x0b\xf6\xec\x84\x4f\x9a\xbe\xb6\x6c\x5c\xde\x27\xb5\x13\xdd\x3e\xe2\xef\xaa\x1f\x5d\xd1\x00\x78\x06\x70\x42\x6c\x92\x1a\x31\x49\x7a\xcb\x87\xe6\xe1\xeb\x18\x30\x1a\xcd\x2f\xac\x8f\x7a\x81\xa9\x7f\x61\x6f\x8d\x3a\x8c\x6f\x9e\x76\x98\xad\xf8\x06\x25\x57\xb3\xb4\x55\xe6\xd0\x78\x5f\x40\x71\xdb\xe0\x5a\x65\xa8\xee\xd5\xdb\xd2\x42\xa6\xae\x61\xaa\xff\x6e\x8c\x3a\x4c\x00\x78\x9e\xbd\xf9\x7d\x42\x93\x8c\x4a\x77\xe0\xf0\x71\x6f\xd8\xff\x86\xb7\xee\xee\x6e\x2f\xba\xa9\xa0\xb4\x7a\x7e\x72\x94\x90\x14\xfd\x86\xaf\x42\x6b\x5f\xdc\x07\x14\xa3\x7b\x54\x77\x71\x4c\xfa\xba\x9e\xed\x0d\xe8\xe8\x0f\xbc\xcf\xe9\x39\x00\x38\xd0\xac\xa2\x70\x8c\x5d\xe6\x13\xb0\xe1\x3c\xa1\xdc\x78\x5a\x80\xad\xa8\x00\x7e\x00\x9b\x04\x0e\xba\x8f\xbe\xb1\xa6\xfa\x30\x15\x85\x75\x6b\xc9\xed\x45\x91\x92\xf7\x6c\xe6\x15\x8c\xc2\x36\x88\x57\xdd\xf5\xd7\x4c\x4e\x7d\xda\x55\xd6\xbf\xa4\xec\x75\x7f\x0d\x69\x15\x2d\xc8\xaa\x8e\x33\xf9\x06\xfa\x95\xf4\x4a\x8b\x6f\x03\x75\xa5\xea\xff\x46\xf4\x47\x91\x00\x1e\x58\x03\x8e\x14\x89\xc9\xe1\x03\xb0\x70\xf7\xeb\xd4\x73\x6a\x36\x55\x9f\x3a\x4f\x8d\xa7\xe6\x1f\xe0\x26\xc4\x3d\x26\x68\x7b\x1e\x4c\x1d\x24\x21\x95\xf5\x9c\x96\x6c\xb5\x58\xdb\xf6\xf0\x8b\xd1\x8b\x32\x0f\xf5\xad\x93\x3e\xc2\xab\x95\x72\x2e\x1e\x23\xaf\xd3\x29\x92\x15\xe3\xd5\x60\x05\x80\x3d\xb6\xbd\xb3\x85\x93\xc2\xf2\xed\x16\xd2\x91\x75\xda\x07\xc4\xbe\xae\x51\xac\xeb\xd5\xdf\x6d\x32\x73\x83\x17\x57\xd7\x78\x8b\x8f\x3a\x5f\x89\x0d\xac\x63\xd9\x8b\x80\x72\xca\x0a\x22\x62\x21\xd9\xab\xe0\xbf\x96\xad\x18\x49\x67\x54\x55\xe2\x5d\x9e\xff\xf6\xa6\x9c\x28\xa7\x51\x07\x19\x90\x20\x7d\x42\xef\x4e\xa3\x3b\xf6\xb3\x16\x2a\x8f\xb2\x5e\x80\xe4\x6b\x1d\xef\x64\x7c\x1c\xda\x6a\x6a\x56\xd7\xbe\x47\xb6\x7e\x20\x38\x24\xfd\xff\xf5\x33\xea\x82\xb4\xa0\x56\x13\xda\x04\xdc\xc9\xdf\xa4\x0d\x62\xed\x71\xd8\x54\xc3\xbb\x83\x7d\x58\x34\x8d\xf0\x46\xa5\xe1\x88\xf2\xed\x04\xf5\xdd\x5a\xff\x33\x92\x1b\x03\x82\x16\x51\x4e\xfe\x40\x60\x43\xf1\x2e\x4e\x01\x51\x21\xab\x00\x67\xa1\x0f\x22\xe1\x76\x45\x44\x8d\x84\x64\xc1\x84\x71\xf5\x15\x37\xef\x62\xf6\x22\x6c\x8b\x03\xfe\x8b\xb7\x2c\xf8\x84\x77\xe2\x11\x1d\xd0\x43\x9c\x1e\x95\x21\x2d\x71\x4d\x4f\x0a\xb4\x28\xe9\x73\xb2\x08\x5e\x0b\x22\xa0\xf1\x00\xfa\xe1\xbd\x39\x09\x04\x84\x06\x31\xe5\x4b\xd4\x7a\x81\x3c\xdd\xa7\xc0\x80\xa5\x8c\xb3\x52\xaa\xd1\x39\xdb\x2b\x40\x15\xeb\x90\xb2\x08\xff\xe4\x29\x80\x60\x95\x56\xfd\x02\x70\xd0\x6e\x72\x17\x0a\x02\x8c\xbf\xeb\x22\x1c\x5f\x60\x18\x1e\xc2\x75\xfa\x2e\xb8\xfd\x18\xf6\x3a\x2a\xc7\x6f\xbb\x5d\xe7\x73\xb0\xa7\x63\x30\x3f\x2f\x6a\xfd\x45\x38\x07\xa3\x8e\x30\x67\x7d\xfd\xcf\xc1\xf0\x31\x98\x2d\xd7\x71\x0c\xd7\x7d\x0c\xd7\x29\x82\x5d\xf2\x80\xaf\x9c\xdc\xb8\xbb\x1b\xcf\xec\x6e\xbb\x46\x40\xf1\x5d\xb5\xeb\x19\xc1\x75\x9f\x43\xf3\x0c\x6f\x98\x44\xcf\x33\xea\xf2\x19\xae\xc3\x1c\x7a\xc2\xb5\xce\x21\x0b\x14\x9a\xd0\x32\x40\x39\xb9\xe5\x03\xad\xe3\x49\x37\xf5\xf7\x0d\x1c\x97\x68\x89\xf4\x09\x34\x5f\xa8\xe9\x9e\xd8\x17\x6c\xba\x77\x72\x4e\xc9\xef\x4a\x7e\xdc\x19\xfe\xc8\x61\x99\x7f\x2b\xab\xa3\x46\x89\xbe\x47\x4a\x71\x69\xf4\x69\x4d\x1e\xba\xaf\xbb\x1a\x82\xd1\xcd\x0f\x31\x24\x67\x3d\x36\x07\x38\xc3\xb4\x63\x31\xf9\x73\x91\x38\xec\x47\xc5\x51\x17\x68\x39\x92\x50\x24\x41\xbd\x17\x7e\xa1\xd4\xb9\xa4\xc3\x47\x0c\x94\xb1\xd9\x88\x66\x32\x37\xe9\x58\x25\xee\xfb\x2d\xb9\x4c\xd4\x4d\x0f\x59\xd8\xbc\xd0\xb0\xc6\xa5\xb6\xf4\xed\x42\xd6\x7d\xb5\xbe\xfb\x78\xcf\xff\x8d\x2d\x0e\xfd\x82\x2f\xce\x4f\x42\x4f\xdd\xd8\x70\x35\x90\x74\x65\xb9\x5d\xa3\xea\x07\x8a\x5a\xde\xd5\x88\x85\xf5\xa0\x82\x6f\xc2\x63\xfb\x9b\x0b\xa9\xcb\x09\xb0\x77\x28\xac\x78\x83\x17\xd5\xcd\x3e\xf9\x34\x8d\xc2\x51\x4f\xe3\x9f\x1d\x29\x51\xce\x49\xdd\x6a\x30\x71\xf7\xee\x45\x1b\xde\x5a\x86\x6f\x20\xd5\xbb\x88\x30\xd3\x03\x00\xfb\x00\x7f\x7e\x55\x48\xaa\x30\x29\x1e\xc2\x35\xe4\xeb\xa2\xf2\xbc\x98\x42\x77\xdc\x3b\x96\xd6\x8d\x67\x24\xe6\x16\xed\xd7\x7c\x59\x70\xea\x30\xf3\xb0\x58\x17\x25\x95\x77\xaa\xa6\xee\xf3\x3f\xd9\x8e\xbc\x39\x88\x6a\x15\xf6\xb4\x04\x9f\xca\xbb\xde\x20\x28\xd3\x76\xd0\x62\x65\x18\x07\x21\x9a\xa0\xf8\x8e\x5b\x6d\xf6\x39\x65\x88\x55\xe6\x6b\x5a\xa3\x56\xba\x1d\xfa\x61\x6d\xe0\x08\x23\x06\xc2\xbb\x27\xe3\x54\x16\x04\x41\xc9\xf6\xa2\x85\xb9\xb9\xe1\x46\x8e\x53\x19\xe7\x8f\xcc\x43\x30\xc9\x7e\xaa\x9b\x8a\x69\x3f\xd8\x82\x25\x04\x65\x97\x1c\xae\x92\x13\x2f\x29\x17\x94\x88\x3e\x35\xcc\xeb\x2b\x5a\x3d\xd9\x11\x91\x33\x3e\xa5\xa8\x7e\x12\x0e\x61\xb2\x22\x66\xd9\x0d\xa9\x54\x6a\x07\x4f\x96\x19\xb0\x5d\xaa\x4f\x01\xd7\x07\x8b\xde\x45\x22\x5c\xa9\xc7\xf7\xfb\xeb\xf1\x81\xd7\x0f\xc8\x4f\x8e\x75\x81\x17\x9d\x9e\xd3\x65\x3f\x36\x1c\x31\x3a\x7a\x13\x75\xae\xe5\xf3\xaf\x3f\x0f\x2b\x47\xc4\xda\xab\xfc\xce\x3e\x24\x65\xda\x3f\x0f\x91\xb2\xc9\xf0\xbd\xcd\x21\x4b\xeb\x32\x04\x33\x76\x9f\x75\xdc\xb5\x03\x40\x67\x30\xa2\x3e\x6e\xf7\x91\x65\x28\x65\x78\xd1\x4f\x18\x93\x41\x52\x57\x5c\x83\xfa\xb3\x9a\xf7\xfc\x36\xa2\x40\xe5\x3d\xf4\x2b\xab\xbc\xc7\x2b\x62\x9f\x0f\x8d\xf8\xc8\x0b\xcc\x65\xf7\x66\x79\xef\xf4\xaa\x0c\xce\x38\x84\xb1\x1a\x12\xcf\x40\xfb\x6b\x74\x13\x47\x3c\x5b\x35\x7e\xae\xa8\x4f\x4d\x44\x2d\x15\xc4\x25\xa7\xde\xd1\x69\x32\x2a\xe3\xda\x30\x3f\x45\xe8\x0d\x0b\x2a\xf7\x1f\x75\x63\x96\x71\x08\xe5\xc6\xfd\x5e\x92\xfa\x9f\xfd\x32\x09\x41\xf1\x57\xd1\x2c\x87\x4a\xa4\x5f\x0f\xf7\xcc\x51\x12\x45\x0a\x63\x62\x89\xb9\x31\x12\xd1\x02\x40\x4d\x20\x56\x42\x2a\x18\x90\x22\xac\xc5\x4d\xd4\x15\xb2\x8f\x06\x3f\x1d\x8e\xf0\x96\xc2\xff\x7c\x17\x5e\xab\xee\xd0\x4c\xf5\x91\x02\xf7\x27\x97\x98\xea\x53\xdb\xa4\xfc\x48\xd9\xa2\xc7\x57\x85\x0d\x0d\xe7\xe9\xe8\x55\x07\x7f\x88\xa7\x30\x46\x29\xb5\x4e\x57\xef\x2a\xe4\xbc\x61\xea\x6c\x70\x09\x80\x60\xf8\x5d\xdf\xd1\x12\x14\x3b\x09\x30\xc4\xf7\x30\x21\x54\xd2\x6a\x57\x94\xa9\x97\xa1\x37\x93\x3d\xc0\xd1\x38\xfa\x43\x40\x2d\x22\x2b\x19\x43\x0c\x8d\xa5\xc7\x26\x91\x30\xf3\x5d\x93\x65\x07\x5a\x86\x2a\x23\x6c\x5d\xb6\x6b\xd1\x87\xf0\x9a\x6e\x90\x92\x9d\xac\xf6\x82\x97\x8e\x76\x34\x55\xae\xcf\xc7\x75\xc3\xe0\x38\x98\x0f\xc9\x60\x8b\x22\xb1\x01\x49\x64\x1a\xe1\x89\x0b\xb6\xdb\x82\xd6\xaa\x49\x2b\x01\x83\x0c\x5e\x00\xdc\x82\x4b\x1c\x3f\x65\xca\xca\x43\xdd\xf2\x45\x2b\x31\xb2\xdd\xac\x55\x11\x91\x1d\x8b\x83\x12\x17\x93\x2c\x75\x00\x21\x3b\x5d\x44\xa7\x10\x26\x9c\x78\xc5\x63\x15\x01\x69\x7d\x1f\x3c\xb8\x3e\x47\x72\xde\x28\x1c\x02\x58\xd8\x08\x17\x21\x64\x33\xcb\x3b\xe0\x4e\x1d\xca\xc6\x23\xc4\xc0\x97\xe7\x78\x9e\xbe\x55\x4c\x9f\x84\x0d\x3f\x4f\x2a\x76\x22\x3b\x77\x7c\xbc\x7e\xe8\xa8\x98\x8a\x94\xbb\x70\x6a\xec\xb3\xaf\x42\xa7\xab\x14\xee\x60\x1f\xdb\x50\x64\xf1\x0e\xd8\xaa\xe9\xec\x80\x9e\xcf\x95\x99\xbb\xb4\xdd\x15\x5d\x8c\xb5\x85\x14\x59\x9e\x61\xc6\x2b\x22\x30\xa7\xca\x8a\x7d\xd0\xe8\x51\x60\xf6\xe3\x82\xfe\x7b\xf2\x0a\x74\x7d\x20\x40\x9e\x1a\xae\x48\x86\x50\xf1\x57\xfd\x69\xa5\x04\x2d\x59\xb1\x62\x13\x4a\xf8\xae\x02\x7e\x04\x0d\x6b\x4a\x62\x66\x20\x8c\x76\x23\x10\x62\xfd\x87\x23\x1e\x7f\xa1\xc4\xc4\x5a\x1e\xf0\x91\x4f\x8f\x0d\x73\xed\xa1\x14\x8d\xad\xbd\x89\x82\x9f\x62\xb7\x3e\x40\x23\x60\x6c\xf2\x9e\xe4\x88\x1a\x10\x39\x46\x48\xf0\x3c\x31\x3d\x73\xd4\x04\x08\xd6\x07\x3c\xf2\xe6\x2f\x05\x77\xd8\xdd\xea\xdf\xd7\x74\x9c\x05\xf4\x55\x02\xae\x6d\x51\xbe\xc0\x37\xed\xc3\xd8\x38\x2e\x4a\xa5\x86\x4a\x4c\xdc\xf1\xa1\xa8\xe0\xc6\x57\xba\xc7\x3c\x2c\x82\x6c\xa2\xec\x5a\x4f\x10\xf6\xda\xa3\x10\xca\x50\x83\x3c\x75\xb9\x6e\x4c\x11\x94\x43\x2e\x77\x85\x39\xdd\xc4\x44\x58\x86\x94\x19\x67\x05\xc1\xc1\x18\x15\x1c\x36\xcf\x9d\x79\x4b\x28\x5e\xa5\xb5\x70\x33\x44\x34\xaf\x4c\x3d\x96\x51\xd2\xa1\xc2\x04\x82\x30\x75\xb8\xf0\x36\x25\x51\x97\x63\xda\x12\x51\xda\x05\x9c\xe1\x5b\x2e\x37\x23\x64\xb1\xd7\xcd\xec\xe8\x88\xca\x43\x18\x70\x2e\xd5\x14\xf6\x3d\xb6\x81\x53\xe4\x25\x1d\x89\x8d\x51\x32\x58\xa5\x28\x77\x0e\x29\xb7\xc7\xb9\x98\x51\x5b\xb9\x35\x61\x54\x45\x85\x4a\x24\x88\x29\x7e\x69\x0b\x51\xb4\xb4\xde\xe8\x23\x9f\xae\xec\xd0\xdc\x4a\x70\xe9\x45\x58\xd4\x6f\x10\x24\xbc\x29\x56\x99\xbc\x93\x00\xec\xb2\x09\x29\x8b\x6d\x9a\x7a\x4b\xd7\xe3\x7b\x0e\x57\x6e\x60\xfc\x64\x5e\x11\xbd\xb9\x31\xc5\x35\x0e\xcf\x9c\x11\x32\x1a\xd2\x3c\x7d\x8f\xc8\x68\xd6\xdb\x3f\xbc\x23\xda\xd6\xab\x5e\xb6\xa7\x41\x14\x1a\x95\x18\xb8\xe8\x03\xe9\x91\x10\x18\xeb\x10\x19\x72\xdb\xa6\x9f\x9e\x14\x1e\xdf\x73\x78\x84\x90\x2f\xf4\xe3\xed\x37\x3d\xab\x7a\x3f\xed\xc2\xe2\x5b\x9c\x23\xfb\xba\xc1\xc6\x78\x3a\xcf\x9e\x9c\x09\x0b\xb6\xee\x74\xcf\xa7\xd2\xa7\x5c\xd1\xbf\x07\x33\xc8\x6b\xa4\xb0\xf9\xca\x50\x69\x7e\x51\x26\x56\x17\x5b\x21\xd1\xa4\x57\x35\x1e\x07\x64\x36\x8c\x2a\xd8\xa7\x6d\xce\x25\xa6\xac\x81\x13\x45\x06\x3d\xc7\x7f\x41\x00\xd3\xf9\x4d\xd2\xb2\xbe\x4a\xf1\x0f\xb0\xd6\x30\xc4\xc6\x01\x03\xc5\x5d\x8f\x6e\x30\x86\x3b\x9f\x51\x89\x3d\xf8\xaa\xd6\xc9\xaf\x68\x4f\xf8\x00\xc9\x09\x1b\xd4\x3d\xbe\xca\x5c\x73\xe1\x48\x45\x3d\x01\xe3\xc2\x00\x66\xd8\xa3\x27\x21\x43\x75\xbf\x3c\x57\xfc\x99\xc7\x94\xb9\x49\x41\x76\x59\xc7\xfe\xc0\xac\x76\xad\xb0\x21\x7d\x4e\xa3\x78\xa6\x1d\x2c\x91\x44\x2d\xda\x82\x83\x8d\xa7\x57\xf5\x7b\xa9\x9e\xd1\xcf\x5e\x76\x53\x93\x80\x10\xfc\x9c\xad\xc9\x52\xf0\x31\xde\x1d\xa8\xcc\xac\x6c\xb5\xb6\x5b\x4d\x7d\xb2\x64\xdd\x16\x76\x67\xe0\x93\x3f\x49\xb9\x26\x71\x34\x45\xf2\x1a\x4e\xf0\x39\x4f\x55\xd1\xe5\x94\x8e\xa3\x64\x20\xfa\x48\x22\x02\x03\x9c\x35\x36\xe1\x44\x59\xbf\xde\x9b\x1b\xaa\x91\xf2\xc7\xc8\xeb\xd1\xd5\x74\x1d\x42\x48\xab\x32\xe8\xb1\x70\xcc\x11\x97\xbe\xe1\xb5\xe0\xa2\xa8\x18\xee\xe5\x0e\x2e\x25\xa5\x1b\xfc\xb5\xdf\xb3\x43\x09\x5d\x30\x2a\x76\xdd\xb1\xc2\xc4\x82\x54\xdc\xa6\x9b\x4b\x1e\xa3\xf6\x89\xc7\x99\x46\x61\xf6\x3d\x87\xd9\xe5\x93\x3d\xfb\x6f\x09\x9a\x35\xc9\x09\xd4\x3b\x11\xd2\x58\x96\xe7\x6f\x32\x97\xe9\x42\x3b\xc6\xe5\x30\x95\x1a\xe9\xf2\x71\xa6\x58\x1b\xa0\xfa\x0f\xc2\x9f\x25\xae\x40\x20\xf1\x4a\xd5\x15\x0a\x31\x6c\x61\x37\xc9\xe5\xc4\xa1\x9e\xf3\x08\x47\x8a\x6e\x4b\xed\xd8\xb9\x6f\x4e\x94\x9c\x58\xa2\x30\x2d\x1d\x95\x84\xff\x1a\x94\x36\x28\x18\x9c\x4d\xf9\x41\xa6\x25\x74\xd4\x90\x41\xd1\x79\x7c\x30\x59\xcc\x2f\x3a\x15\x9a\xdf\x73\x68\x5e\x3e\x89\x4d\xf5\xc0\x80\xf7\x69\x2d\xee\x87\xac\x7a\x39\xfa\xb0\x4f\xd9\xfa\xff\xa0\x45\x8c\x2a\x7a\xff\xe9\xaa\x2a\x52\x94\xb8\xae\x8a\xf4\xe5\x6a\x33\x2a\xce\x26\xa9\xca\x43\x89\xc6\xb7\xf7\x75\xd5\x97\xb5\x0a\xaa\xd4\x25\x2e\xb6\x81\x0a\xd2\x83\x09\x52\x7f\xf3\x32\x74\x1c\x66\xa3\xed\xc4\x75\x4e\xac\xd3\x69\x52\x15\x84\x98\x0d\x40\xdb\xaa\x75\x5f\x9b\xda\xa6\x99\x24\x63\x93\x44\xb5\x69\x27\xd4\xdd\x9f\x3f\x69\x52\x85\xbc\x80\xc9\xa3\x39\xa8\x3e\x33\x44\x43\xaf\x53\xc1\x0d\x21\x90\x59\x53\x59\x53\x67\x47\xf9\x41\x6a\x51\x53\x61\x78\xaf\xc3\xaa\xb5\xb2\x57\x54\x59\x35\xce\xea\x77\x73\xb5\x14\x07\xb1\x23\x0f\x12\x90\xe4\x50\xca\xdf\x7e\x28\x47\xb9\xf4\xc0\x5b\x80\xce\xe6\x5d\xf7\xb1\xe5\xaa\x85\xcf\xd6\x0f\x36\xb7\x5a\xcb\x8b\x8a\xf4\xa2\x23\x70\x3e\x74\x79\x6b\x71\x87\xbd\x43\xff\x27\x56\xd5\x49\xfb\x9b\x2a\x06\x6a\xe9\x4e\x2e\x55\xb4\x2c\xac\xbe\xe7\xb0\xba\x7c\x20\x56\x97\xd4\x8d\xf7\xf4\xbe\x4b\xdf\x2e\x6c\xa5\x0f\x57\x29\xd3\x15\x2e\x7c\xd9\xda\xd5\xcf\xdb\xe8\xd8\x3e\x4b\x0e\x57\x6c\x63\x1c\xa9\x4c\x8c\xc8\x74\xd3\xde\x67\x5d\x92\xbc\x6d\xc6\x5e\x42\xa4\x92\x94\xb2\xad\x14\x03\x6c\xcb\xa8\xc4\xb4\x29\x83\xb5\xde\x18\xc4\xa9\x94\x2b\xc9\x67\xbf\xe2\x8b\x32\x3e\x96\x5e\xd1\x0a\x62\x97\x02\xc6\x43\x44\x39\x75\x2c\x08\x60\xab\x33\xf5\xcf\xfb\xbf\x06\x4c\x75\x13\x3e\xb2\xc6\xb8\xfa\x33\x5e\x53\x80\x15\x58\xc9\x07\x55\x52\x74\x33\x75\x63\xe3\x4d\xba\xb0\xff\xbe\x45\x00\xe5\x45\xd7\x78\xb3\x95\xa4\xeb\xa9\xf9\x4f\x1a\xf0\xc1\xa8\x32\x66\x12\x3b\xb4\x5c\x73\x0a\x75\x05\x89\xa8\xa8\xff\x52\x13\x7c\x5c\x1f\xca\x52\x93\x6e\x0a\x37\xda\x0a\x11\xe9\x1c\xe2\x6b\x7e\x4f\x72\x4f\x6d\xd2\xaf\xef\xf6\x9b\x4b\x6a\x9a\x77\x16\xda\xdf\x73\x68\x5f\x3e\x10\xed\xcb\x87\xf4\x6b\xed\xee\x43\xd6\xbb\xfc\xff\xd1\xd6\x05\x21\xbf\x88\x50\x43\x2a\x22\xa4\x58\x97\xfb\xa7\xaf\xa7\x2f\x7d\x3d\xbe\x8d\x5e\xb3\x03\xd7\xe4\x5a\x77\xe3\xa0\xa3\xd2\xc9\x10\x0a\x0e\x32\xe7\xbb\x52\xd6\x30\x35\xef\x98\x94\xfb\xee\xac\x8a\xf4\x72\xcf\x17\x83\x40\x36\x0c\xe2\xec\xca\x95\x41\xc0\x29\x2c\x70\x68\x7d\x84\xf5\x48\xb1\xa9\x23\xc0\x7d\x66\x98\xe6\x54\x2d\x01\xff\x43\xaf\x2f\x43\x46\xd9\x8d\x27\x8b\xd3\xa8\x35\xef\x64\x14\xcc\xa4\xf2\x0e\x1f\xd6\x1d\x65\x84\x09\xcb\x63\x94\x23\x00\x16\x87\x8d\xde\x42\xcc\xee\xdc\xb2\x19\x4f\xb2\xd2\x19\x4e\x93\x50\xd3\xfe\x74\x5a\x5e\x2a\x7b\xd8\x83\x05\x68\xd6\x4a\x0e\xb1\x9c\x49\x83\x15\x08\xd2\x06\xcf\x5c\x1c\x1f\xee\xb4\x7b\x7e\xe3\x74\x0e\xd1\x45\xa2\x0b\x33\x03\x20\x2c\x50\x91\xeb\x6e\x47\xae\xa2\xf8\x31\x81\x79\x96\x3b\x81\xd4\x8d\x7d\x6f\x86\xa6\xfb\x81\x8f\x76\x08\xb5\x70\x7a\xba\x09\x8e\xc7\x43\x7d\x75\xbb\xa4\x7e\x49\x65\xc6\xed\x13\x01\x44\xbc\xaf\xca\x1c\xb3\xaa\xe6\xa7\xe8\xd4\xa4\x14\xcc\x72\x4b\xe1\x8e\x4c\xca\xd0\xec\x08\x10\x5a\x51\x82\x5e\xf1\xcd\x06\x79\x20\x53\x27\xff\x5c\xbe\xdf\xf2\x40\x41\x2b\x15\x05\x19\x70\x81\x14\x83\x0a\x2f\xb7\x8b\xcc\x99\x1e\x16\xb2\xad\x88\x91\xa9\x13\x39\xfb\x37\xc4\xa0\x81\xca\x81\x2f\x4d\xd0\xb1\xbb\x19\x65\x77\x41\x31\x9c\xa6\xbb\xe8\xc6\x9a\xc4\x42\x90\xb1\x6e\x74\xa1\xf8\x8a\xb6\x45\x78\xcf\xf7\x92\xc0\x91\x89\x7d\xa3\xdf\x0a\x21\x88\x82\xd7\xaa\x7b\x9d\xa9\x27\x84\xa5\x38\x88\xd2\xc8\x17\x35\x7b\x09\x2e\x0a\x66\x56\xaf\xa8\xb4\x31\x68\x65\xe7\x23\x9d\x8e\x48\x4f\x5c\xc6\x16\x12\x2e\x8b\xa0\x7a\x06\x02\xf1\xf3\xf3\x44\x73\x7d\xed\xfc\x50\xa1\x06\x44\x43\x1f\x36\x40\xc5\x53\xf5\x4c\xe6\xcb\xfa\x28\x55\xb7\x6d\x07\x17\xe3\x1d\xbc\x12\xfd\x91\x51\x7d\x77\xc5\xb0\xd5\x1d\xed\xa9\x06\x6e\xd0\x10\x86\x75\x09\xfc\xae\xe8\x11\x94\x82\x80\xa3\x6c\xce\x99\xfb\xf7\xeb\x84\x2b\x7b\xbd\x49\xa4\x20\x37\xd9\x5a\xb7\xc7\x42\xc2\x38\x9d\xfb\xee\x8d\xd6\xa7\xc1\x78\xb2\x64\xc8\x15\x8d\x99\x90\xdd\xec\x8a\xc5\xc6\x37\x82\x07\x4c\xe9\x59\xa4\x34\x34\x52\x27\x05\xde\x40\x56\x1c\x7b\xd9\x20\x27\x44\xce\x12\x07\x9e\x99\xaa\x5f\x93\xb1\x30\x76\x0a\xa7\xb9\x99\x28\x3a\x0d\x5d\xd2\xd1\xfb\xbc\x20\x5a\xef\xe9\xf4\x90\xd2\x11\x71\x3e\x14\x23\xb3\x6f\x28\x9d\x21\x38\x06\x78\x61\xbb\x2d\x96\xfc\x34\xa9\x6d\x49\x0a\xd4\x4f\xfb\x7c\x36\x14\x76\x63\x1e\x7c\x00\x42\xe6\x89\xf2\x58\x76\x7e\xef\x46\x80\x00\x5b\xab\x4b\x20\x80\x3c\x79\xa8\x34\x8c\x2c\x67\xb5\x14\x7b\x13\x4d\xa0\x07\xb1\x4e\x27\xe3\x83\x39\x41\xbb\xa0\xd8\xbc\xa2\x1f\x34\x6e\xa3\xff\x90\x4e\xc5\x9b\xb8\xe9\xc0\x60\xa6\xca\x93\x4f\x72\x70\x0e\x1a\x8a\xc5\xef\x27\x6a\xde\xe3\x71\x8c\x98\x23\x98\x39\x6c\x1e\x45\x30\x70\xb2\x3f\x10\xea\x3e\x13\xca\x12\x07\xcb\x37\x59\xf2\xac\x13\x48\x6d\x36\x45\xac\x34\xd0\xa2\x43\xff\x22\x26\x76\xb9\xf7\x90\x4d\x6c\xb2\x1c\x97\x32\x6c\x56\xa4\xbe\xd9\x4f\x76\x84\x2f\x59\xe1\xc4\xb3\xa2\x4a\xb5\x22\x49\x15\x74\x0e\xb3\xc8\x54\xd6\xa1\x0c\x65\xa8\xae\xa8\x0e\xab\x0c\x71\x7c\xe6\xf0\xd4\x02\x5d\x16\x22\x23\x11\x12\x83\x98\x6b\x40\xbc\x3d\x31\x2b\xcc\x41\x86\x96\x1c\x66\x0e\x29\x68\x68\x31\x2e\xc4\xcc\x69\xe5\x33\x53\x75\xf7\xb5\x41\xab\x16\x28\x5a\x9a\xdf\x8f\x08\x2e\x73\x95\x45\xce\x94\x0c\xc5\x92\x63\x5d\x7d\x3b\xc8\x4d\x75\xa3\x7b\x1d\x3c\xea\x1a\x90\x2c\x1d\x16\x5e\x9e\xcf\xfc\x50\xa7\xb4\xc3\xa6\x09\xd9\x07\x18\xde\xd6\x58\x29\xd3\xbe\xe0\xa7\x45\xc1\x07\x48\x16\xca\x72\x89\xd6\xc3\xa0\x0e\x71\x5a\x72\x89\xd4\xa2\x21\x5a\x96\x79\xd5\xff\x00\xb3\x90\x23\x15\x39\x1b\x2f\x0d\x4a\x89\xe9\x80\x70\x2e\xac\xbf\xe7\xb0\x3e\x7c\x20\xd6\x87\xef\x53\xe6\xfc\x7d\x86\x9c\xff\x07\xce\x42\x2e\x35\xbd\x81\x00\xff\xaf\xdb\xd8\x2f\xa4\xf3\x65\xa3\x1f\x96\xcb\x8a\x84\x60\xc7\x98\x90\x9d\xc4\x13\xbc\xa7\xba\x4d\x12\x64\x19\x20\x8b\xf4\x12\x56\xac\xa8\x9f\xe6\x85\x84\xb6\xb8\x4c\x79\xb4\xa1\xb2\xf0\xde\xd6\x32\xc5\xc8\x0f\xd1\xf0\x32\xb9\x12\xf9\xa8\xf5\x7d\xe8\x18\xec\xf9\x06\xf9\xc1\x50\xf4\x5a\xb7\xf2\xad\x9a\x75\x1e\xb1\x59\x00\x23\x8a\x3d\xea\x24\xd8\x7f\x14\xad\xae\xa1\x19\x5f\x52\x82\x24\x7a\x14\x56\xd4\x8d\x88\x33\x14\x14\xd5\x48\x2b\xf2\xe1\x12\x38\xd3\x1e\x16\x43\xe1\x07\x5a\x81\x9e\x88\x7c\x26\x20\x37\xe1\x90\x08\xe1\xe7\x7a\x6f\x81\x57\x0d\x6e\x19\x85\x41\x21\xc1\x70\x4e\xcb\x12\x13\x21\xa5\x24\x94\xf5\xfb\x3c\xca\xab\x37\xe3\x34\x60\xf7\xa3\x38\x94\x04\x8e\x04\x92\x37\x94\x0a\x20\xa0\x7f\x66\x14\xf5\xbd\xd7\xae\xac\x89\xa3\xef\x51\x08\xe5\xed\x65\xc3\xaf\x28\x01\xfb\x62\x01\x75\x20\xec\x8a\x91\x51\xb1\xc4\x6a\x9b\xec\xc1\x04\x79\x62\x4d\x91\x55\xeb\x2c\xb1\x17\x52\x5c\x38\x9c\x96\x71\xd9\xb2\xe2\xad\x77\x15\x74\x3d\xd0\x90\xc0\xef\x7a\xef\xa5\x31\x29\xc6\xe9\x26\xde\x06\xb0\xbb\x61\x4a\xb8\x62\x57\x24\x0c\xba\xbf\xff\xb8\x59\xd8\xca\xf2\xfe\x97\x1e\xd9\x68\xda\xfe\xfc\x5c\xc3\x06\x61\xfb\xa3\xff\x00\x88\x29\x4c\x16\x7a\x41\xde\x3f\x87\x29\xc4\x73\x42\xb7\xf6\xfc\x32\xda\xec\xbf\xec\x80\xb6\x58\xe1\x17\x17\x6d\xcf\xc2\x0e\xf3\x6a\x8c\x45\x98\xd6\x92\x45\x43\xa9\x22\x0f\x45\xee\x5e\xe9\x61\x81\x89\x3c\x9f\x34\x4f\x33\x2c\x93\xcd\xbe\xf7\x40\xdc\xc8\x27\x95\xf0\xf3\xc3\xea\x0e\x1f\x36\x7a\xf0\xe4\x87\x2e\x1f\x3c\xea\xb9\x53\xe8\xdc\x8b\xc1\xd6\xba\x28\xb1\x9a\x2f\x2d\x16\x02\x4a\xfe\xaa\x91\x8d\xfa\x36\xa9\x12\x18\x75\x04\x1e\x85\xc8\x04\xd6\x32\x85\xa5\x4e\x3c\x5e\x4a\xc6\xfe\xa8\x78\x0c\x55\xb3\xe6\x06\x33\x86\xc9\xf7\x3f\x36\x1b\xd8\x9a\xf5\x87\xfa\x83\x06\x2c\xf4\x7c\x4e\x95\x4f\xcb\x8c\x53\x3b\x4c\x9a\x28\x5f\x4c\x98\x7d\x66\xc6\xf3\x02\xc9\xf1\xa6\xf5\x33\x18\x36\x51\x73\xcc\x98\x22\xbb\x0a\x02\xcd\x33\xae\x95\xbd\x6d\x9a\xee\xca\x8b\xcb\x51\x86\xdb\x4c\x30\x64\x69\xc9\xad\xac\x00\xf0\x98\x85\xdb\x37\xe7\x70\xcd\xc4\x1d\x89\xf9\x5a\xf6\xcb\xea\x9d\xc8\xf1\xef\xe5\xaf\x53\xe1\xea\xe7\x95\x6c\xac\xdd\xef\x3c\xeb\x4a\x98\x85\x2d\x7f\x4a\xe8\xbc\xf4\x26\xbd\x7a\x9a\xa1\x57\xfe\x8b\xbd\xde\xce\x03\x62\x3b\x2f\xcb\xcd\xbe\xf7\x20\x83\xce\x0f\x86\x3c\x7c\x58\xcb\xe1\xc3\x86\x0f\x1f\xba\xf9\xea\x61\xaf\x9c\xc2\x42\x71\x5a\xc6\x7d\xbd\xf6\x8a\x72\xff\xb6\x6b\xbe\x18\x9e\xbe\x27\x85\xd2\x99\x35\xa0\xf5\xe9\x32\x45\x8b\xcd\x24\x44\x5a\xcf\x6c\x34\xf1\x6f\x73\xbb\xef\x09\x99\xc7\x35\x69\x46\xdb\x52\x92\xdc\xb4\x62\x16\x31\x25\x6b\xd2\x8a\x0c\x91\x3c\x1b\x30\x08\x43\xc8\xf2\x63\x4d\x81\x54\x7b\x4b\xec\x55\x31\xe9\xf7\x44\x6c\xdc\x1c\xde\x77\xe5\x7d\xa3\xfd\x2c\x8d\x59\x81\x92\xfc\xda\x9c\xd4\x51\x9f\x61\x42\xb1\x38\xaa\x40\xc5\x72\x76\x7d\xb6\xd3\x6a\x6d\xd2\xb0\x4c\x40\x28\x51\xd2\x6e\xcc\xea\xa2\xd1\x38\x6b\xb1\x4b\x2f\x21\xc2\x28\xfb\x91\x79\xc3\xff\x52\xb6\xd7\xf6\x3c\xbf\x03\xe5\x02\x32\x32\xba\xfa\x86\xfa\x52\xcc\xb9\x81\x26\x50\x06\x78\xc7\x9a\x21\x56\xf9\x89\x29\xb4\x8a\x82\xbc\xa0\xc7\x8c\x4e\x93\xc0\x10\xe3\xa3\x69\xea\xf4\x1c\x21\xc8\xd7\x29\x51\xb8\x36\x25\x6d\xbf\x01\xcc\x4f\xb3\x94\xe3\xf4\x32\x01\xba\x48\xd6\x58\xb7\x92\x42\x3d\xb9\x09\x56\xcb\x45\xd3\xbf\x33\xce\x83\xa2\x9e\x46\xd3\x3e\x7d\x2c\xa1\x86\x5b\x5f\x9e\x19\x8d\xb1\xb7\x85\x84\x36\xfd\x75\x26\x0d\x6c\x65\xda\xfe\xed\xaa\x9e\xde\xc4\x43\x1b\xcb\x5d\x68\x26\x74\x04\x4a\x36\xe3\x1d\xc4\x06\x8d\xaf\xbd\xbe\x03\x0d\xe6\x09\x11\xf7\xba\x26\xac\xec\x09\xc7\x3e\x9d\x9e\x9e\x67\x9e\x2c\xab\x0f\xd0\xc4\xa9\x5c\x62\x54\x75\xde\x10\x66\xe4\xe3\xba\xe6\x2e\x85\x79\xa7\x30\x88\x2b\x20\x1a\xc4\x8c\x68\x83\xaf\x9b\x99\x8d\xae\xce\x62\x55\xde\x97\xba\xac\x7e\x18\x0a\x67\x9c\xa5\xe1\xb8\x86\x39\xc3\x97\xd8\x41\xa0\x7b\x09\x7d\xe8\xcd\xa5\x8d\xf4\x06\xd7\x1c\xeb\x75\x19\x1b\x74\x65\x35\x72\x22\xdf\x3e\x05\x41\xca\xac\x73\x79\x58\x0c\x4d\xe1\xc9\x52\x36\xb7\x51\x20\xf3\x6d\x0c\x68\x99\x46\x21\x6b\x6e\xbd\xad\x60\xc7\x7c\x8d\xa2\xfa\xe4\xd8\xb0\x8a\x7f\xb4\x0c\x95\xdd\xf7\xbd\xf8\x0b\xa5\xb0\x99\xe8\x0a\xf7\x93\xf5\x16\x18\xb7\x7e\x30\x52\x6f\xb6\x73\xd0\xff\xa8\xd1\xe8\x62\xf0\xdd\x1a\x1c\x84\x34\xd7\xdc\x46\xe0\x98\x5b\x72\xa4\xfa\xb2\x96\x2d\xc3\x4e\xcf\xee\x52\xdd\x96\x51\x53\xef\x56\xbd\x65\xe2\x1f\xaa\x84\x92\xa2\xb6\xa0\xcf\x1c\x2d\xfc\x06\xb3\x1e\xd6\xab\x32\x93\xe8\xdb\x86\xbe\xf8\xf4\x7b\x40\xbc\x6f\x42\x95\x09\x31\x08\x4b\xbd\x21\xe9\xe2\xb0\x71\x35\xec\xd5\x76\xfa\x00\xc2\x6e\xe5\xfa\x91\xb0\x13\x53\xf6\x9a\x20\xb2\x2d\x47\x22\x97\x66\x2a\x1a\xb7\x28\x97\xa7\x04\x7d\xea\x64\x93\xf5\x0e\x70\x67\xee\xfc\x5d\xa1\x2e\x23\x09\xcb\x0e\x48\xa7\xa2\x42\xcb\x88\xc9\xc5\x10\xe1\x17\x1e\x01\x9f\xaf\xa9\x5f\xe7\x64\x56\x68\x2a\xe8\x5a\x7c\xe0\x81\xde\xa8\xe5\xe7\x25\x74\x68\x72\x2a\x2c\x10\x46\xf4\x45\xf5\xda\x37\xe2\x1d\x26\xae\xe9\x7b\xae\x7c\x45\x84\x65\x15\xf9\x37\xa0\x62\xb5\xc1\x7d\x01\xa5\xbf\x37\x33\xdd\x3a\xb8\xd3\x6d\xd7\xaf\x00\x66\xbc\x07\x12\xc9\xf5\x7c\x09\x38\x7b\xdd\x90\x09\xf5\xd6\x46\xfe\xc8\x68\xc5\xb4\x1a\x51\x1a\x51\xc7\x32\xef\x88\x04\x5a\xea\x64\x26\xfe\x99\x1b\x3b\x11\xca\x5c\x8d\x94\xaa\x07\x1c\xd6\xaa\xdc\x58\x90\xf7\x06\xd2\x8a\x07\x1d\x18\xff\x20\x77\x10\x28\x67\xc8\x41\xb7\x9a\x06\xcd\xbe\x4f\xe1\x42\x47\x5a\xae\xd0\xe1\x4f\x8d\xc6\x31\xcc\xaa\xe3\xf1\x63\x07\x86\x09\xcc\xe3\x45\xe3\x11\x29\x62\x34\x27\xeb\x9c\x39\x9e\x55\x3a\xd3\x75\x21\x7d\xf9\xb8\x92\x3d\x8e\x15\x8d\x63\xee\x6f\xaa\xbb\x7a\x23\x77\x7e\x1a\xeb\x16\xfb\x8c\x69\xac\x37\x36\xfc\xbe\xcc\x4e\x63\x2e\x3d\xca\xce\x74\xe7\xce\x35\x65\x63\xfd\xd4\xc5\x6d\xdf\x92\xff\x46\x00\x28\x7e\x0a\xc7\x2f\xa9\x90\x95\xb6\x7c\x8a\x75\x71\x87\xdf\xd5\x1e\x6e\x84\x71\xe1\x3b\x07\x7a\xac\x59\xa1\xfb\x3c\x37\xf6\x0e\xa4\xb5\xe0\xbe\xa2\x53\x83\x42\x6b\x6a\xe1\xa5\xa9\x46\x61\x31\xb9\x12\x39\x58\xd8\x79\x2b\xac\x26\x6a\x4b\x3f\x89\xa7\x96\x85\x5a\x78\xd3\xe1\xd1\x36\x55\x2a\xdc\xbc\xf6\x36\x77\xe7\x68\x63\x37\x74\x37\x46\x93\x93\x8d\x9a\xd3\xc3\xdc\x09\x38\x36\x9e\xaf\xf7\x4d\x2e\x17\xd8\x1b\x53\x96\xb5\x12\x1b\x12\x86\x7d\x90\xe0\xff\xa1\x82\x73\x27\xfa\xb5\x3f\xfd\xda\x6b\xe0\xab\x7a\xb0\x97\xde\xd6\x3f\xf6\x0f\x25\x76\x76\xab\x8d\x0b\x93\xc1\xc9\x15\x64\x62\xef\x5f\xe1\x53\x91\xb7\x79\x01\xf8\x24\xe0\xb8\x33\x2a\xe3\xb2\xab\x87\x35\x41\x30\x67\x80\x3a\x4d\x87\x61\x19\xab\x27\xe4\xd8\x78\xdc\xc8\x46\x47\x00\x8a\x27\x8a\xab\x07\x08\xb1\x56\x9b\x3e\x89\x58\x42\xc9\x47\x96\x00\x60\x07\x85\x04\xde\x44\xcf\x37\x10\xd9\xa3\x97\x88\xbf\x62\xcf\x67\xf0\x1a\x4a\x06\x46\x32\x9d\x17\x2e\xbf\x1d\x30\x6a\x31\x55\x82\xe7\x80\x47\x6a\x75\xff\x49\x1b\x10\x10\xf6\x12\xb3\xbd\xa5\x38\xfc\x22\xfc\xa6\xe4\xc3\x33\x83\xc2\x85\xd4\x63\xab\x99\x90\xd8\x3d\x31\x23\xba\xc1\xa8\x6a\x29\xfd\x75\x85\xc2\xfd\xa8\x70\x08\x2c\xf0\x36\x9e\x92\x69\x0d\x19\x96\x14\x9b\xc4\xd7\x6b\xfc\x07\x19\xfa\x36\xc0\x19\xeb\x98\x44\x16\x02\xd3\x03\xf7\xb3\xd7\x06\x1d\xa2\x56\x72\x59\x86\x25\xca\x3f\x14\x2a\x36\x88\x0a\x56\xcf\xc5\xfb\xef\x59\x0f\x5a\x23\x5f\x10\x5c\xe2\xf7\x90\x01\x10\x34\x45\x43\xc7\x7f\xb1\x79\xae\xd0\x4b\x7a\x64\x27\x52\x84\x12\x29\x06\x28\x11\xdf\x91\xdf\xe5\xf2\x2d\x27\xe5\xed\x7e\xd1\xb0\xaf\x5c\x95\x6d\x01\x87\x30\x61\x2d\x9d\xcd\xc7\xe1\x0b\xcb\xd5\xa8\xfc\xb8\x64\x61\xb3\xbc\xbb\x02\x76\x81\x60\x62\x0a\x0d\x49\x35\xb1\x8d\x6b\xc0\xd5\xfe\xcd\x82\x8e\xf2\x67\xa1\x60\x82\xc0\xad\x93\x03\x21\x92\x79\x2d\x57\xef\x7c\x55\x07\x14\x9b\xc9\x6c\xb7\x39\xd2\x5e\x24\x4e\x23\x3e\x91\xba\xd2\x2d\xf4\x24\x63\x54\x76\xa3\x1a\x68\xf4\x63\xaa\x56\x0b\x50\x97\x69\xf4\x5d\x1b\x92\x14\xef\x62\xe0\x26\x2d\x5d\x78\xc8\x58\x9b\x8f\x8a\x60\xa5\x7f\x81\x3f\x53\x58\x42\x44\xa0\x14\xe2\x39\x23\x49\xc0\xb5\x13\xb5\x19\xc3\x34\x28\x85\xa2\x5a\x14\xa4\x4b\x83\x49\xa5\x2e\x75\x01\x56\xb1\x6a\x9f\xfa\xea\xdf\x69\x1b\x52\x2d\xe3\x2f\x22\x53\xd6\x8e\x5f\xcb\x11\xfe\x1a\x23\x7d\xa6\x72\x8d\xdc\x2b\xe1\xf5\x78\x99\x17\x81\x77\x85\xa4\xf3\x0c\xad\x38\x73\xd2\xd5\x2d\x5c\x69\xe4\x72\x6a\x3f\x06\xe4\x04\xeb\x2c\x29\x10\x0f\xed\x14\xc5\xe6\x71\x28\x5c\x63\x3c\xe6\x73\x87\x87\x08\x48\x85\x2f\x66\x2d\x90\xc9\x05\x53\xc4\x41\x93\xd0\x3e\x1b\x68\xb7\x70\x0a\x29\x35\xdc\x48\x2f\x30\x8b\x62\x50\xa4\xce\xae\x0a\x34\xf6\x14\xe1\xe2\x97\xca\x8b\x95\x3c\x8b\x2f\x25\xd1\xad\xca\xff\xa7\xda\x8e\xa0\xd8\x12\x50\xfc\x55\x72\x20\x3c\x9c\x71\x14\xa6\xe4\x2c\xd4\xf3\x20\x1e\x5a\xe8\x10\x1a\x86\xd3\xfd\xc3\x4a\xdb\x17\x55\x5d\x98\x7a\x3d\x48\xf5\xb2\xbd\xfc\x8c\xb6\x94\x0d\x52\xb6\xc4\x5d\x6a\x80\x08\x4c\x7b\x2b\xed\x57\x08\x39\xa5\x5b\xab\xc4\x26\x56\x13\xe4\x06\xbc\x83\x87\xfb\xb7\x09\x8e\x8c\x1b\xfe\x7d\xfe\x62\x81\x80\xde\xd7\x43\x77\x34\x6b\xf6\x61\x34\x0e\xdf\xc3\xed\x13\x95\x24\xfb\xc4\xda\x10\xdb\x4f\xc8\xa6\x49\x5d\xfb\xfc\xf2\x46\x6b\xc7\xe8\x28\xec\x88\x09\xae\xea\x15\x99\x84\x5e\x30\x95\x75\x7b\x0e\xc8\x53\x22\xb9\x54\x6c\xcd\xbb\xa1\x1a\xae\xfd\x0f\xee\x17\x13\x5a\x0f\xd8\x59\x5c\x78\x3b\xb0\x39\xac\x5e\x0b\x14\x48\x96\x69\x94\xbf\xe0\x7e\x18\x59\xb3\x81\x63\x45\x33\xad\x6e\xb4\x5b\x0d\x3b\x92\x32\x99\x90\x15\x02\x5b\x59\x34\x45\x27\x86\x2b\xd1\xc3\x64\xd3\x9d\xe7\x83\x47\xd9\x85\x0c\x7a\xd8\x6e\x86\xd8\x18\x20\x55\x15\x55\x70\x85\xf6\xa8\x6a\x25\x78\xe7\x4c\x68\x93\x9d\x62\xd9\xda\x34\x0e\xf5\xf6\xcf\xef\xa8\xd1\xd9\xa7\xf9\x05\xb6\xc1\x11\x26\x5d\xaf\x71\x4a\xeb\x75\x10\xd3\xf8\xc7\xac\x5a\x55\xed\xa1\xdb\x74\xf2\x36\x39\x99\xab\xc0\x46\xe0\xee\x41\xd0\xa8\x8a\xa3\x8a\x66\x43\x20\x17\xd1\x17\xfb\xdb\x3b\xc3\x13\xcf\xc9\xbe\x71\xc3\x6c\xd9\x20\x2a\x4b\xd7\x07\x5f\xe3\x15\x46\xf6\x39\x81\xbd\x8c\xbb\xde\x50\x30\x6f\xbf\x22\xfc\x4d\xe3\xc7\x61\x77\x3c\xd8\xc9\x66\x9a\xec\x5e\x44\x9b\x7a\x5e\xba\x10\x68\xab\x65\x53\x6d\xd9\x84\xd6\xf1\x83\xb5\x6d\x64\xac\x41\x63\x72\xd8\xbc\xda\xd8\xc6\x79\x1d\x4d\x35\x6b\x3c\xa5\xc6\xc1\xcb\x54\xca\x1c\xfa\xb0\x07\xe9\x0e\x9d\x02\xe5\x68\x2d\xc5\xe0\xb4\xfa\x60\xee\xf6\xde\x16\x13\xb4\xc0\xf3\x2f\x4b\x94\xed\x7b\x38\x08\xe6\xd5\x64\x03\xd0\x78\x61\x39\xd9\x0b\xe1\xba\x69\xac\xca\x58\x55\x4e\xe3\xf6\xf3\x6a\x24\xed\x45\x40\x27\x4a\xce\x21\x8b\x68\x23\xaf\x74\x10\xb9\x7c\x3d\x2b\xf2\x95\x6d\xd6\x97\x63\xee\x2b\xd1\x57\xa1\x66\xb3\x6d\x32\xbc\x21\xf1\xeb\x9a\xbd\x80\x26\xda\x66\xb1\xb7\x3b\x05\x9a\xe5\x3f\xba\x4c\x9e\x84\xa1\xe2\x2b\xa9\xbe\x26\x2f\xf8\x8b\xaf\x7a\xcb\xab\x06\x4b\xc6\xaf\xbd\x7a\xa8\x16\x3a\xc3\xd1\x52\x0a\x2b\x21\x5e\xb0\xe9\xe0\x8b\xe8\x86\x6b\x0b\x96\x8a\x65\xe7\xac\xa0\x99\x4f\xe7\xe8\x8c\x3e\xc8\x46\x37\xfc\xa1\xe4\x3e\xa0\x62\x5d\xd1\x5f\xd0\x6f\x07\xf2\x80\xaa\x02\x16\xd6\x00\x3b\x05\x12\x88\x73\xbb\x7b\xb8\x0b\x9b\xad\xd4\xac\xbb\xd5\x60\x3f\x5e\x1d\x84\x8c\xd3\xac\x60\x5f\xd5\xed\x5b\x43\x71\xcd\x80\xbf\x60\x59\x6b\xdc\x18\x43\xe8\x7a\x74\x51\x0b\xa8\xdb\xde\x7d\xa4\xc3\xdf\x81\x5e\x28\x1a\x35\x8b\x8d\x82\x93\x1e\x58\x4c\xbe\x2d\x12\xc2\xdd\x86\xc8\x5e\xad\xe8\x67\x19\xd6\x7d\x4c\xed\x6d\xc9\xc2\x53\x3a\x1a\x5e\xb6\xea\x20\x99\xee\x23\x77\x1a\x4f\xf0\xc9\x2a\x71\x2a\x4b\x65\xa1\xcb\x5b\x9b\x8d\xd5\x86\xeb\x84\x49\x18\x62\xd4\x3c\xb1\xcf\x69\xf9\xf3\xa3\xba\x47\x43\xe7\xc0\x01\xfb\xa8\x86\xcd\x7a\xd9\xfe\x55\xed\x9d\xdf\xec\x06\x7d\x35\xbe\xe0\x46\x0c\xaf\x7e\x99\xe8\x18\x64\x55\xda\x4a\x48\x82\x1e\xdd\xb1\x60\x91\xd7\x8d\xac\xfc\x25\x09\xee\xa4\x3e\x48\xb4\x8e\xe9\x7c\x3e\x3c\xfb\xd2\x93\x54\x16\x10\xf1\x11\x31\xd4\x49\xed\xd2\x7d\x21\x08\x68\xba\x61\xa1\xb9\x5f\xe7\x7c\x3d\xe5\x5f\x29\xf8\xec\xf8\x5d\xc0\x24\xb6\x09\x35\xa9\x60\x9a\xd1\xe4\xdf\x04\xb0\xc4\x2f\xfa\x9e\xa9\x61\x60\xb6\x19\xdd\xd0\xaf\x16\x80\x54\x83\x8e\x1c\x22\xaa\x6d\xbd\x1d\x75\xe8\x91\x34\xed\x85\xde\xcc\xcf\x01\x7d\x52\xb6\xa3\x1a\x76\x46\x7d\x30\xb0\x20\x02\x0a\x02\x9f\xa0\x02\x07\x15\xbd\x92\xb9\x63\xc4\x42\x1e\x41\x16\xa8\x21\xd3\xe3\x6e\xff\x89\x46\x4c\xb3\xd9\x51\x71\x9c\x20\x42\x16\x63\x30\x71\x25\x77\xb2\xd5\x4a\x49\x9f\x61\xc4\x34\x2a\xdc\x06\xc3\x0c\x11\x7a\xc1\xa7\x31\x93\x41\x92\xac\x00\x23\xdd\x24\xad\x7e\x02\x98\x90\x4d\x33\x16\x9f\xa4\xbc\xbf\x69\xaf\x04\x2a\xe2\x52\x18\x98\xac\x3d\xf1\x1a\xec\x60\x96\x31\xa0\x92\x44\x67\x8b\x19\x0f\x13\x58\xe9\x29\xb3\xa7\xfb\xb7\xe1\x9e\xd6\x16\x79\x15\xb6\x3c\x3a\x55\x16\xc3\xac\x59\x06\x27\xf8\x0f\xb1\x95\x19\x7f\x04\x5e\x7a\x9e\x65\xbc\x8f\xfe\x30\x9b\xe0\xa1\x2b\xa9\xaa\x06\x12\x93\x7c\xf8\x3c\x87\x26\x96\x2b\x23\xcc\x4e\xc6\x23\xdb\x16\x33\x35\x6b\x64\xb4\x70\x6b\xea\x79\xdb\xcd\xfc\x7c\x75\x2d\x41\xf3\x91\xd1\x35\xa7\x94\x47\x34\x50\xae\xe9\x7a\xf8\xd4\x6e\xf8\x21\xb8\xa5\x03\x84\x12\x15\x1c\x59\xc3\xc3\x33\x88\x91\xbe\x5f\x47\x8d\x26\x30\x85\xc9\x4a\x4b\x67\x72\x63\x98\xad\x99\x3c\x69\xce\xb0\xdf\x99\x2b\x9d\xbf\x35\xe1\x1c\x7a\xb1\x3b\x25\x27\xd8\x09\xe6\xec\x96\xb0\x92\xa7\x74\x99\x03\x59\xef\x62\x4c\xac\x29\xfa\xa8\x19\x79\xaf\x19\x46\x43\x98\x17\x99\xd2\xc4\x1f\xc4\x4d\x2c\x69\x86\x08\xf9\x0f\x31\xe5\x32\xa0\xd9\x97\x42\xa0\xaa\x68\xd2\x9b\xd5\x43\xc8\x99\xdc\x3b\x75\xb9\xcb\x15\xc8\x9a\x59\x08\xd3\x33\x46\x20\xfb\x53\x2c\x9a\x18\x2d\xba\x46\x7d\xd0\x64\xdd\x94\x18\xd7\x60\x0d\x44\x59\x8b\x03\xf2\x4e\x82\xf1\x4d\x88\x3b\x45\x8c\x72\xc9\x02\x99\xa8\x80\x89\x71\x06\x8f\xc5\xaa\x0b\xff\xdf\xbc\xce\x58\x23\x28\xd3\xdf\xa8\x31\xe9\x7d\xc3\x98\xfe\x9e\x94\x97\x20\x87\x7a\x13\xfe\x06\x60\xe5\xd9\x46\x4f\xaf\x5e\xd9\x7b\xcb\x85\x9b\xa7\x57\x4b\xda\x81\xf8\x53\xab\xed\x72\xd3\x36\xb4\xe8\x2d\x68\x81\x7a\xf6\x96\xf6\x94\x42\xc7\xe2\xb0\x58\x0d\xbc\xc0\xb6\xf3\xa1\x63\x29\x43\xf2\x6f\x7d\x2b\xf7\x6f\xdc\xb1\xed\xfa\x41\x49\xee\xd9\x9f\x01\xed\xcd\x24\x8f\x80\x8b\x36\x26\xa5\xd6\xc3\xf6\x0e\x4e\xfd\x4e\xf2\xb9\xa3\x69\x97\x61\x61\x75\xa2\x27\xa3\xd6\x24\xc1\x65\x72\x50\x7f\xc2\xd6\x1a\x6a\x94\xa0\x47\x30\x1f\xab\x1b\xea\x9c\x71\x90\xf5\xd1\x7f\x7a\x7b\x13\x96\x4b\x09\x8d\xb8\x49\x9d\xd5\x6e\x39\xa5\x59\x39\xf5\x4a\x62\x98\xea\xf9\x08\x30\x39\x6b\xd7\xc1\xf4\xd4\x67\x10\x27\x9c\x1d\xa7\x2a\xea\x0c\x8c\x9f\xc0\xc7\xb2\x72\x42\x9e\x64\x13\xed\x0b\x78\xde\x31\x13\xad\x67\xf5\x6a\x90\x46\x3b\xa1\x6b\x6c\x4d\x96\xb5\x4f\x0b\x15\x3b\xcf\x05\x45\x3e\xa6\xfa\x71\xdb\xf5\x2f\xa8\x06\x8d\x01\xfd\xb0\xe2\x32\x4c\x73\x16\xd7\xb0\xe1\x54\xc9\x7d\x1c\x1c\x8b\xd3\x26\x77\x40\xc3\x39\xb9\xd0\x12\x0c\xfb\x35\xf5\x5c\x0b\x09\xa6\xbb\x75\x32\x45\xf1\x7c\x73\xb4\xc7\x16\x69\x9a\x81\xed\x71\xb5\x7a\x6f\x89\xea\x70\xd6\xa9\xd1\x2e\x98\xd3\x15\x5d\x6c\x81\xfb\x64\xa2\x51\x7a\xcb\x62\xf0\x76\xc4\x94\xae\xf1\x84\xf8\x39\xeb\xb6\xe6\x94\xc8\x6b\x4e\xd8\x5d\x40\x05\xa1\x94\xd5\xd1\x70\xdd\x77\xb9\x00\x33\xbb\x5f\xf8\xc6\x0d\xf5\x46\xa8\x6b\x64\x5f\x26\x4f\x37\x2b\x3c\xec\x6b\xbf\x24\xe8\x2a\xc7\x97\xeb\x5b\x7c\x39\xd2\x41\x11\x8a\xbd\x0a\xfc\xda\xb4\xe4\x30\xd9\x4b\x0e\x62\xcb\x97\xca\x1e\x64\x80\x41\x05\x95\x1c\x9a\x9f\xae\x25\x6e\xc2\x00\x1b\xad\xc1\xbc\x91\xb2\x85\x53\x44\x86\x8b\xe1\x21\xa0\x86\x20\xab\x88\xc8\x2d\x28\x2c\x60\x7c\x68\x28\x82\xca\xf9\xe8\x3f\xa0\xa8\xf1\xac\xe3\x02\x88\xe1\x40\x0c\x89\xea\x5b\xe6\xf9\x19\xf4\x51\x2b\x6f\xa3\xda\xe8\x16\xe0\xf4\xb7\x09\x07\x5b\x83\x19\xcb\x44\x98\xae\x27\xce\x9d\xff\x9e\x32\x23\xbc\xa0\xa2\xe5\x3f\x73\x8c\x5f\xf6\xce\x28\x63\x4b\x6d\x4d\xa9\x83\x4f\x37\x38\x15\x08\x65\x19\x43\x21\x65\xba\xb6\x44\xf5\xf1\x16\xa7\x89\x7e\x53\x8a\xb0\xb3\x2f\xa8\x14\x6b\xf1\xf4\xa6\xc5\x01\xf9\x59\xb3\x4b\x53\x68\x33\xbd\x9b\x5e\x9b\x79\xa3\xaf\xad\x8f\x4b\x30\x46\x98\x75\x18\x2d\x14\x54\xe8\x13\x32\xfe\xb3\x3e\x5f\xa2\x2f\xc8\xfc\x4c\x96\x04\x2f\x43\x82\x58\xfc\xe0\x46\x72\xb0\x95\xf0\x02\xe6\x70\x6d\x68\xce\x0a\xd9\xc8\x01\xc1\x48\x01\x95\xde\x87\xea\x73\x98\xa8\xb4\xd8\x12\xbf\x92\x6b\x8c\xb6\x31\x7d\x09\xf0\xb6\x7f\xd9\x84\x26\xd3\x9d\x29\x6a\x1b\xbb\x10\x2d\x25\xee\x58\xdb\xd3\xbd\xac\x6a\xe3\xb4\x04\x4f\xa6\x92\x75\xe2\xd3\x45\x66\x55\x75\x8c\xa7\x8b\x01\xd4\x27\x28\x9e\xf0\x99\xe8\x23\x0c\xf6\x30\x03\x9e\xa8\x78\x6e\x85\x80\xee\x25\xaa\xa2\x10\xe0\x91\x64\x40\xe8\x19\xf6\xd1\xf4\x49\x3c\xd6\x4f\xe2\xd6\x3f\xcd\xf2\x58\xbf\x59\x33\x41\xf1\xf0\xaf\xb7\x49\x4f\x1c\x7e\x34\x4c\x4e\xa3\xed\xd5\x63\x2a\x7b\x9b\xf4\x6b\x6a\xd6\x6f\x0c\x1f\xfb\x4f\x72\x4d\xb9\x07\x87\x73\x28\x82\x5c\x03\xd8\x39\xc6\xef\x83\x8c\xc8\x9d\x3d\xf0\xdc\xed\x30\x2c\x4d\x68\xde\x80\x9f\x50\x68\x54\x77\x14\xc6\x58\x79\x08\xc2\x77\x41\x5e\x0d\xef\x8a\x18\xf3\xbe\x30\xaf\xba\x53\xbb\x88\x1f\xd0\x9d\xea\xfa\xef\x25\x65\xbb\x1d\x6b\x70\x87\x8e\x49\x0b\xdd\x0f\xc2\x90\x16\x8d\x1d\x68\x60\x64\x30\x87\x8b\x39\x53\xe7\x5b\x24\x11\x2b\xba\xc2\xe2\x02\xe3\xdd\x6a\xa4\x54\x73\xea\xe8\x59\xed\x23\x34\x53\xe2\xb5\x14\x48\x05\xc4\x24\xbf\x4a\x37\xca\xf2\x16\x7a\x15\x99\xb6\xe8\xd3\x96\x20\x71\x93\x1f\xb7\x55\x51\xc7\x28\xec\x4a\xbd\x4a\x24\x08\x79\xc1\xb2\x01\x3b\xdf\xc7\x31\xe6\xee\xb0\xc4\x2e\xe3\x55\xe1\xe8\xd8\x3e\x6f\x71\xc6\x5f\x50\x92\x75\x43\x4d\x26\xed\xb4\x52\x4e\xca\x2f\x7f\x73\x98\x49\x12\x87\xd2\x45\x03\xab\xc6\x70\x6e\x60\x65\x8b\x9e\xb4\x38\xd9\x00\x3a\x9c\x7b\x87\x51\xb8\xd8\x44\x65\x15\x10\x51\x1b\x71\x4c\x58\xeb\x19\x0f\x2e\xa7\x49\xb6\x87\x21\x25\xb1\x70\xbd\x3f\xdb\x48\x21\x4a\xd6\x6b\xd3\x6b\x68\x73\xb3\xfa\x87\x8d\xec\xe4\x9d\xa6\x4e\xf2\xec\x53\xe8\xe5\x5b\x25\xc3\xe4\x52\x3c\x9a\xfd\x88\xab\xa3\x31\xd4\x77\xb0\x58\x42\x29\x70\x63\x2b\x65\x48\x40\x8b\xd5\x7e\xa1\x80\xa4\xfb\x03\xa2\x03\xad\x2b\xb9\xda\xc8\x37\xd0\xd1\xc1\x0f\x66\x97\x69\x08\xdb\x92\x70\xc3\x1f\xa7\xf5\xac\xcb\x00\xcd\x5b\x6a\xf9\xb3\x49\x55\xd6\xe8\x97\x44\xc2\xd3\x83\x34\x33\x79\x62\x40\x0a\x28\xc3\xf2\x59\x75\x4f\x1b\x3f\x03\x9d\x8b\xdc\x82\x0e\x21\x5c\x1f\x42\xa5\x1b\xba\x53\xf1\x60\xd3\x5f\xbb\xa7\xea\xe8\x54\x3c\xea\x5a\x59\xd2\xec\x7f\xe6\x4a\x5f\x50\xa4\x8e\x28\xd2\x43\xc6\x2f\x60\x36\x87\xee\x7b\x73\xd0\xe8\xe3\x82\x1d\x42\x58\x6a\xe9\x6a\xc5\x30\xd0\x41\x85\x9a\xea\xbe\x4c\x11\xd6\xf2\x2f\x4e\x53\xa6\x3a\xf0\xb5\x44\xcd\x84\x5b\x59\xa9\xa9\xde\xd7\xd5\x94\x92\x05\xcf\x13\x73\xf8\x0b\x72\x89\x09\x99\xd8\x39\xe0\x25\xe7\x8c\x85\x4d\xae\xb1\xb9\x38\x39\x34\xc4\x06\xc4\x24\xef\x53\x89\xf9\x4c\x99\x84\x3e\xbd\xe9\x48\xca\x8d\xdb\xdd\xbd\x4f\x96\xae\x0d\xde\xb6\x69\xf8\x59\x03\x18\x3a\x95\xaa\x17\x65\xaa\x41\x06\x58\x90\xd6\x70\x77\x3f\x0f\xaa\xd8\x8a\x28\xf0\x01\xfa\x15\x18\x6e\x0c\xbf\xca\x3b\x33\x4e\xac\x3f\x15\xf8\x41\xc9\xb0\xdd\xcd\xd0\x56\xee\x4c\x7a\xd7\x6f\xd4\x0c\x08\x04\xad\xfd\x23\xa6\x8f\x57\xb7\x48\x11\x4e\xa5\x4f\x7e\x43\xcd\x28\x37\x5c\x84\x1c\xdb\xf6\x77\x91\x38\xbe\x55\x20\xf9\xb7\xd4\x10\x7f\xcb\x0e\x86\x6e\xdb\x7d\x91\x73\xf9\x51\x85\xe4\x77\xd6\x12\xdf\xe5\x14\x5a\xd3\x6d\x2a\x77\xc6\xa7\x7b\x5a\xbd\x63\x94\x96\x4b\x9e\xf0\xec\x4b\x46\xa4\xb6\x79\xcc\x83\x8a\xfe\xf3\x17\xaa\xbb\x7f\x91\x66\xc9\x99\x30\x0c\x4c\xf6\x32\xc1\x0f\x6c\x61\x90\x65\xf0\xc1\x9c\x84\xf3\x07\x74\x82\x8c\xcc\x15\x55\x96\x4f\x68\xe1\x69\x54\x85\xb8\x40\x7e\x63\x76\xf7\x28\x01\x49\xe6\x7e\x16\x8c\xdc\xe1\xcf\x93\xa2\x3e\xce\xbe\x4f\xca\x46\x87\x9d\x8a\xf4\x3d\x78\x3a\x8d\xbc\xc0\x4b\x5b\xc3\x19\xbe\x5b\x9b\x3d\xbc\x63\x37\x88\x86\x41\xe8\x18\xf6\xc8\xf8\xd3\x0d\xed\xb1\xc7\x96\x83\xd3\x18\xd4\xd6\x01\x0f\x60\x46\x44\xac\x40\x37\x49\x25\xec\x00\x27\xce\x57\xb7\xf5\x7d\xc0\x86\x04\x6d\x8b\xd6\xa3\x83\xfc\xeb\x1d\x1d\x95\x5f\xe5\x62\xf0\xc9\x8c\x11\x24\x2e\x21\xf9\x50\x04\x22\x3d\x22\x5f\x81\x70\x02\x84\xe4\xe0\x88\x33\x5e\xc4\xa8\x60\x44\x7a\x8a\x82\x7a\x64\x52\x60\x92\x59\xaa\x8f\x41\x65\x0a\x8b\x99\x55\xc2\x68\x2c\x4f\x65\x52\x2e\x19\x0a\x91\x98\x03\x43\xb9\x78\x55\xd5\x8f\x0e\xce\x92\xbf\x63\x4e\x7c\x61\x2c\xaa\x3e\x35\x68\xfe\xd0\xa4\x96\x9a\x2c\xcd\x1c\x67\xa9\x48\xcb\xb4\x5d\x95\xa3\x08\x03\x6d\x6d\xab\x2c\x5c\x4f\xb6\x36\x23\xe6\x9c\xd0\x16\x08\x4b\xbb\x43\x3d\x6c\x2d\xfa\x33\x52\xdf\x13\xea\x28\x20\xbb\x5e\xec\x69\xc3\xdf\x64\x4b\x89\xb8\x18\x9b\xb2\xe4\x67\x33\x23\xaf\xca\x6e\x3d\x68\xe8\xa7\x07\x6a\x2a\x54\x1a\x48\xf1\xd4\x12\x50\x11\x50\x58\xf9\x5f\x6f\xcb\x65\xfe\x18\x2d\xde\x0e\x8c\x74\x29\xe1\x21\x86\xf3\x94\x69\x71\x38\x4d\x84\x73\x7a\x71\xfd\xd6\x72\x79\xb5\xe0\xfc\xdc\x81\x11\x67\x40\xcb\xd9\xc8\x0e\x76\x94\xe5\x46\xfc\x4d\xe7\xfe\x43\xb3\xe2\x87\x26\xf2\xee\x34\x9b\x0f\x17\xd2\x1c\x78\x2b\x1e\x59\x29\x41\xbe\x17\x80\x97\x3a\x8b\x71\x3d\x30\x45\x4b\x8e\x51\xba\x29\x77\xa0\x9c\xd1\xad\x0a\xab\x90\xd1\x3b\x8f\x16\x5d\xac\xf4\x97\x35\x77\x71\x96\x3d\x6a\x93\x68\xb6\x58\x46\xc5\x8b\xdb\x09\x94\x61\xbb\xc9\x41\x47\x86\xa9\x7e\xd8\xfd\xb2\xec\xdb\x39\x91\xb8\x3c\xd2\xc4\x31\xd5\x59\x11\x59\xdc\xf2\x49\x5d\xde\xf0\xde\x62\x71\x09\x79\x17\x1c\x00\x80\x71\xd2\x3d\xbe\x62\xe4\x78\x00\xac\x72\x3f\x3e\xa5\x2b\x0f\x26\x49\xa2\xd0\x38\x9d\x38\xd4\xf9\x17\x97\x94\x50\x91\x99\x8f\x67\x79\x62\x51\xd2\x7e\xaa\x7a\x02\x8c\xd4\xbf\xc6\x31\x3a\x57\x5f\xc8\x07\xf8\xe8\x8e\x97\xcc\x2f\xb8\xf8\x54\x1b\x3a\x22\xce\xe9\xac\x1c\x16\x80\x8a\x28\x1d\xe4\xe3\x0d\xdd\x45\x87\xce\xf1\xa7\x8e\x1a\x5d\x49\x03\xc4\xef\x03\x26\xa2\x76\xcf\x63\x77\x74\x31\xc1\xf1\x62\x47\xbc\xcf\x72\x76\x52\x8d\xe0\x79\x5e\x76\x10\x60\x55\x08\x08\x00\x4d\xa5\x57\x92\x06\x38\x1d\x8c\x2f\xea\xaf\x85\x80\x6e\x82\x26\xb2\x22\x90\x8a\x53\x3a\xef\xa8\xef\xd3\x30\x42\x1c\x48\x0a\xeb\xd4\x19\x2e\x4b\x45\x63\xb7\x44\x9e\x94\x7e\x94\x95\xfd\xfb\x1c\x54\xb0\x3a\x59\x14\x21\xcb\x08\x2d\x84\x5f\x8a\x72\x82\x5c\x55\x4d\x0b\x24\xb9\x04\x18\xd8\xa1\xeb\x56\x82\xd7\x8c\x60\xe9\x8e\x8d\xd9\x8a\x4c\xe4\x15\xc9\x69\x49\xb0\xc8\x82\x51\x7c\x75\x4f\x30\x96\x87\x7b\x5b\xb9\x75\x78\x0b\x51\xa1\xc4\xae\x76\x25\x17\x7b\x31\xea\x6d\xec\x30\x93\x5b\x89\xb1\xda\xab\xfb\xd8\xba\xab\xbf\xb6\x1f\xfb\x6e\xab\xc1\xcc\xa9\xe8\x86\x72\xd7\x90\x7c\xff\xab\xc5\xd4\x45\xbd\xec\xe2\x2f\x35\x18\x93\x3a\x3b\xd2\xa9\xa7\x4f\x42\x84\x6f\x1b\x26\x2c\x8f\x01\x47\xec\xa1\x58\x18\x0c\x0d\x61\x59\x16\xd7\x6d\xec\xb5\xb9\xba\xf1\x34\xc0\xdf\xa7\x70\x0b\xcd\x9a\xa5\xf2\xcf\x53\x29\xff\xd2\xed\x85\x72\xde\xd1\x86\x49\xff\x5b\x24\xb3\xf6\x30\x73\xfd\xa4\x97\x0f\x42\x6c\x54\xf7\xc8\xc3\x82\x65\xaa\x4c\x0f\xc6\xb7\x51\xc1\x67\x31\x8c\x27\xe3\x0a\x6c\xb1\x7a\x6f\x26\x4d\xe5\x67\x47\x2f\x5b\xcc\xb9\x03\x90\xe7\xb3\x35\x46\xcd\xa6\x20\x81\xff\x82\x41\x29\x38\xa3\x0f\x19\x4b\xb3\xfe\x69\x78\x4b\x53\xea\x61\x4e\x65\x62\x3a\x85\x65\x56\xbc\xf5\xe1\xd9\xd3\xc9\xfa\xb4\x3c\x3c\xb9\x2c\xec\x6a\x9d\xcb\x46\xea\xea\x3e\x59\xff\xe7\x0e\x4f\xaf\x9e\xf2\xf4\xea\x12\xe4\x97\xc4\xd3\xab\xed\xea\x81\x3a\xb6\xce\xf6\x5f\xc4\x5f\xbd\x9a\x7e\x7c\x8b\x7d\xfa\x3c\x87\xc6\xf1\x2c\x43\xc4\x39\x82\x98\x53\x38\x99\xc9\xe3\x0e\xe7\x2c\x0d\xf5\x5e\xc5\xfb\xc1\x25\xe1\xda\xb3\x07\xbe\x7c\xd7\x4b\x38\x6d\xd3\x74\xe0\x29\xd8\x1b\xbb\x3a\xcd\xe2\x84\x7a\x61\xd2\x87\x69\xb8\x79\x1a\x79\x2d\xb6\x21\x3c\xbc\x76\x03\x27\x38\xc4\xdb\xd4\x18\x00\x2d\x5d\xf2\x5b\xa4\xbb\x01\x5a\xd6\x34\x4e\xaa\x32\x69\x52\x12\xac\xde\x2f\x62\x90\x70\x4c\xce\x73\xd9\x35\x0a\x16\x92\x3c\xde\x1d\x44\xd5\x82\x4c\x46\xdc\xfb\xfb\x37\x29\x9d\x62\xd4\x51\x27\xa4\xb1\x9a\xc4\x75\x2e\xf8\x57\x12\x6e\x9f\x6a\x4c\x32\x6d\xa6\x0a\xb4\x98\x8f\xd3\x97\x56\xd3\x61\xcc\xcd\x0f\x14\x23\xde\xd2\x49\xdb\x11\xfc\x01\x31\xb9\x89\x10\xa5\xa2\x80\xba\x3c\x4e\xa4\x35\xd5\x97\x6e\x26\x49\x13\xe7\xef\x3d\x9c\x2f\x1f\x8c\xf3\xa5\x78\xf2\xdd\x7a\x72\x51\x46\x98\xf4\x21\x4d\xdf\x00\xdf\x67\x51\x2e\x3f\x97\x6a\x38\xcc\x1f\xd3\x94\x07\x01\xd8\xe0\xf4\x7f\xf6\x2d\x06\x6a\x4b\xfe\xf8\xaf\x79\xa9\x7e\xc8\x35\xf5\x1d\xbc\x9a\x40\x5e\xc2\x81\x66\xf4\xb5\x7e\x8b\xa1\x1d\x27\x06\x76\xd1\xa8\x18\x66\x1d\x9f\x23\x6b\xcb\x7a\x65\x3c\x23\x48\xd8\x65\xbd\x09\x9d\x7c\xbc\xbe\xd7\xdf\x00\x81\xe9\x09\x69\xa5\x6c\x41\xdd\x04\x6c\xed\x36\x9f\xdc\x83\x3b\x60\xa5\xbe\x04\x08\xfc\xe1\x83\xfd\x48\x5a\x4a\xd2\xed\x0b\x8f\xbc\x81\x80\xaf\xf5\x6d\x24\x18\x8e\xbc\x63\x0f\x91\x3b\xfe\x7f\x63\x23\xd4\x95\x8f\x65\x07\x4c\xb2\x08\x6e\x12\x75\x79\x0a\x52\xd2\x9f\xdd\xee\xbf\x87\x76\xba\x4c\xeb\xc9\xca\xfb\x1d\xa1\xc0\x50\xa4\x2a\x84\xea\x9a\x42\xba\x59\x26\x98\x9f\xa6\xf4\xe3\xd8\xca\xb5\x6c\xaa\x16\xa6\x36\xee\xa9\x37\x4b\xcc\xf6\xb9\x74\xe0\x58\x30\xf0\x26\xaa\x7a\x9a\xd0\xa7\xa4\x24\xbb\xa1\x7f\x4c\x02\x74\xcb\xbe\xc7\xf6\x84\x0e\x85\xe3\x4f\x44\xe3\x47\x81\x5e\x40\x27\x92\xa1\xf6\x20\x96\x2c\xa3\x2f\x75\xc8\x90\x81\x39\xf1\x15\x21\x0f\xa2\x1e\x00\x78\xc8\x91\x19\x78\xb4\x07\xb0\x1c\x11\x37\x8b\x90\xe6\x8e\x98\xd8\xca\xf5\x54\x7b\xee\x65\xbb\xd0\xba\x60\x6c\x57\x0f\x81\x0a\x7f\x51\x57\x5b\x53\xba\xd5\xae\x9a\x76\x40\x8c\xf9\xe4\x4d\x5f\x92\x92\x6e\x93\xd2\xa3\xe2\xd1\x44\xf5\x7b\x0f\xd5\xcb\x07\xa3\x7a\xf9\xb0\xbe\x4b\x13\x1f\xb6\xee\xc5\x6b\xfd\x45\x1e\x84\x8b\xb0\x11\xae\xc2\x4e\xda\xf5\xe7\xd6\xfc\x93\xf0\x17\xbf\x5d\x0a\x13\xda\x1d\x39\x62\x1f\xb2\xca\x2b\x6b\xf1\x28\x18\x7a\x27\xae\x84\xa6\xd7\x10\xb3\xaa\xaf\x8f\x52\x33\x8b\x52\xda\xec\x12\xb1\x98\x5c\xe4\x01\x84\xc9\x98\xcd\x24\x4d\xf4\xc0\x25\x86\xbc\x9b\xca\xff\x40\x3e\xf2\x3a\x7c\xfc\x03\xb7\xc9\xd2\x3e\xf3\xfc\x5b\x04\x50\xce\x41\xdf\x9b\x69\xd1\x96\x16\x9b\x47\xd6\xa5\x14\xad\xee\x0b\x74\x53\x7d\xec\xa9\xa1\xcb\xcb\xd5\x6c\x94\x9c\x6f\x2a\x48\xc6\x1b\x30\x1b\xd1\xba\x30\x06\x3f\xdc\xe7\xfb\xba\xd9\x73\x0b\xf1\x67\xe9\x03\x2c\xb8\xcf\xd7\x7b\xb0\x6b\x1e\x4d\x00\xcb\x63\x98\x36\xfe\xd8\xc3\xf4\x3b\xb4\x06\xcc\x08\x48\xe1\xd2\x3e\x99\x36\x89\x26\x5c\x42\x98\xa7\xc9\x60\x79\x3f\x25\xf5\x76\xf3\xfb\x4b\xb2\x11\x2d\x70\xcb\xc1\xfb\xff\xba\xdc\x56\x3d\xb6\x5b\x22\xd7\xc3\x5a\x18\xfa\x6a\xcc\x72\x6a\x6d\x56\xd5\xde\x7d\x8a\xa3\x27\x79\x30\xc1\xba\xac\x68\xbe\x68\x3d\xe1\xa5\xc4\x82\xcb\x12\x1c\x45\x94\x23\x5f\xf0\x8c\xe6\xa3\x2d\x66\xf0\x8f\x32\xf5\x56\x26\x1b\x9e\x61\xab\x4a\x4f\xe6\xf8\x76\x1b\xec\xf9\x36\x19\x4e\x3b\x70\xf0\xbc\x3d\xb4\x14\xa6\xb7\xd8\x6e\x82\x44\x64\x69\xbf\x3a\x57\x8f\x41\x09\x0c\x75\xb1\x28\xfb\x1a\xfa\xb1\xa4\xe9\xc4\x5e\x35\x6a\x58\x13\x06\x57\x24\xb8\xac\x85\x99\xa4\x84\xec\x19\x4f\x7d\x8d\x5a\x59\x86\xb7\x4b\x7d\xde\x26\x91\xb9\x50\x00\x03\xee\xf8\x05\xd5\x5b\xa0\xb6\xfe\x52\xf1\x62\xe9\xd7\x1a\x26\x14\x89\xc6\xbc\xb4\x7b\x9f\xb0\xe1\x77\x80\xd6\xac\x2c\xa1\x7a\x9e\x40\x5d\xfb\x44\x6a\x25\xd7\x7d\xe4\x65\x2f\xa4\xb6\x84\x80\xba\x3c\x0f\xf8\x53\xec\x1d\x5b\xcd\xc5\x33\x67\x2f\x2f\xa0\x2b\xa9\xf8\xa9\x51\x28\x9e\x70\x45\xc9\x88\x13\xfc\xcc\xbe\x52\xb8\x30\x41\x79\x40\x82\x3b\xe7\xf7\x50\x78\xa4\x61\xd3\xb0\xa1\x68\xfd\x15\x43\x3a\x81\xf4\xa3\x2f\xb0\xa4\xbb\x1b\x9c\x46\x2a\xe2\x06\x38\x1a\xd2\x63\x11\xa6\x85\x22\x32\xb8\x2e\x61\x87\x79\x9b\x4f\x7f\x1a\x42\x84\x20\x7e\x0f\xe7\x8f\x8d\xaf\xb0\xb7\x72\x79\x9e\xbe\xfa\xd1\x47\x40\x79\xe3\xeb\xb3\x99\xdd\x3e\x81\x6c\xa7\x24\x2c\xe2\xcf\xec\x0c\xdc\x65\x58\x24\x69\xc3\x17\xc1\xbf\xa3\xdb\x77\x81\x94\xe7\x44\x9f\x34\xb6\x6e\xe8\x83\x09\xbe\x59\xa6\x02\x81\x0e\xed\x80\x1b\x4a\x9c\x7a\xd9\x21\xf9\xe2\xc4\x07\x76\x27\xfd\xa3\xff\x2a\x5e\xfa\x4a\x94\x04\x57\x85\xfa\x6d\x71\x8a\x3f\x88\xfd\x56\x5c\x5c\x6a\xd7\x34\xb4\x3e\xb7\xbe\x9e\xac\x45\xe2\xbc\x31\x54\x48\x81\x24\x37\xb2\xc6\x34\xb7\x96\xb5\x70\x8e\xd5\xc3\x59\xd8\xe2\x2b\x88\x8d\x10\x8a\x74\x74\x2c\xec\xa1\xc6\x1a\x57\x61\x0d\xba\xc8\x96\xc6\x0c\x0b\x0d\xf5\x45\xc2\xd7\x83\x47\x31\xa9\x98\xe0\x2d\xb3\x4c\xa5\x22\x17\xdb\xd6\xa9\xff\xf1\x2b\x3e\x32\x7f\x24\xe8\x1d\xfd\x16\x6c\x35\x30\xa4\xab\xa3\x6e\xd2\xcb\xad\x6d\xe4\x4d\x05\xf5\x85\xe8\xf7\x07\x4e\x97\x48\x21\xe0\xe9\xfc\xe6\x94\x00\xdc\x1b\xda\x5f\x75\x3c\x8f\x0d\xbc\xaf\xe0\x81\x8b\xe9\x86\x19\xe3\x69\x64\x29\xc8\xd2\xa8\x0c\x6e\xd6\xd1\x80\x8f\xf3\xa5\xe3\x3c\x86\xc2\xef\x4c\x15\xfe\x92\xb3\x65\xec\x14\xbd\xa9\x3a\x63\x24\xaf\x19\xa4\x2e\x02\x8f\xdf\x82\xb5\xa0\xa0\xef\xec\xf0\x42\x7b\x8a\xb6\x9e\x40\x61\xd0\x0e\x96\x94\x57\xdc\x26\x22\x4b\x41\x7e\xc8\x68\x49\x19\x5c\x6b\x09\x1a\x7d\x0b\x92\x25\x7d\xd4\x3c\x8b\x28\xfa\x2b\x7b\xaa\x14\xb9\xf3\x94\x2c\x2a\x59\x72\xa7\x64\x2d\x05\x2c\x5d\x21\x24\x62\x2b\x14\xb8\x88\xd4\xcb\x83\xf1\x72\x20\x0c\x11\x7b\x61\x69\xc4\x3a\xc5\x42\x24\xda\x82\x1c\x53\xdf\xa3\xe3\x1a\xc1\x43\x89\xad\x23\x74\xf4\x14\xa6\x17\xff\xd8\xf6\xa8\xb4\xcd\x52\x36\xc7\xaf\xa9\x1e\x82\xa6\x7b\x20\xeb\x03\x72\x12\xdc\x15\x05\x75\x82\x60\xaf\xeb\x71\x94\xa0\x59\x3a\x97\x98\x1e\x4b\xdb\xa1\xf1\x6f\x24\xb3\x94\xc3\x11\x75\x1a\x13\x80\x41\x5a\xe0\x44\xe9\xd0\x41\x32\xee\xc4\x92\x4f\x90\xa3\x6d\x9c\x54\x34\xf5\xa0\x13\x3a\x07\xd6\xf5\xf4\x60\x4e\x4e\x94\x63\x2f\xb7\x62\x46\x9b\x89\x22\x2d\x7b\xca\xa4\x51\x9b\xfa\x74\x34\xd1\xa5\x83\x2e\x64\x23\x48\x75\x35\xa7\x6d\xa5\xb5\xbe\xba\x36\x98\x26\x18\x3c\xea\x3b\x77\x17\x76\xda\x70\xc1\x22\x7b\xad\x9f\x54\x43\x88\x70\x17\x3c\x21\xc3\x89\xcb\x4e\x28\x9d\x5f\x5f\x01\x03\x0d\xc1\xbb\xe1\xe0\x88\x41\xfa\x5e\x16\x20\xa4\x74\x21\x6f\x3c\x48\xd2\xae\x2e\x90\xdb\x26\xf1\x88\xd2\x22\x50\x19\xcc\xf4\x27\xaf\x4e\x54\x37\x65\x00\xef\xb8\xb4\x7c\x22\x43\x60\x20\xb3\x5a\x2e\x6b\x49\x60\xf7\x80\x5c\x32\x65\xea\xd7\xeb\x4d\x0d\xe8\x0d\x36\x52\x26\x4c\x35\x20\xf2\xbf\xb9\xd8\x8a\xf1\xdd\x0a\x5a\xda\xce\xc8\x65\xa2\xa4\x38\xbc\xc8\x7c\x12\xe7\x2a\xcc\xc0\xa1\x01\x9d\xd2\x61\x91\xd3\x06\x61\x80\x7d\x8e\x54\x77\x16\x3c\x83\x9c\x5a\x77\xd8\xe2\x37\x80\x41\x34\x8f\xc4\x69\xf7\x2f\xa3\x2a\x5c\x33\x66\x82\x5e\xa0\x26\x89\xd8\x24\x93\xca\x6b\x77\x79\x75\x44\x9e\x8a\xd4\x2d\x9b\x19\x63\x48\x09\x47\xe2\x7d\x2b\x09\xcf\x13\x34\xc0\x91\xca\x73\x86\x88\x3c\xa5\x08\xe9\xc4\x4a\x02\x07\x38\x2f\x31\x98\xc1\x17\x03\xbc\x71\x10\xe7\x45\x0e\xbf\x9a\x4b\xca\x13\x1b\x27\x2a\x34\x3e\x7c\x06\x5e\xe4\x7f\xe9\x1d\x4c\xd7\x7c\xf9\x27\x9b\x25\x64\x49\xd5\x43\xf0\xfd\xfe\x82\x54\xe4\xfd\x0f\xf9\x97\xbd\x86\x27\x65\x40\x49\x1d\x21\x0f\x4a\xbc\x72\xa8\xc3\x18\x10\x6b\x99\xe8\x10\x51\xa8\x42\x54\x89\xdb\x7f\xd4\x4e\xa9\xad\x6a\x2d\xb7\x28\x1c\x29\x52\x2a\xc5\x10\xa8\xc4\x26\x78\x51\x19\xcf\x52\x0b\x42\xe6\x07\xad\x1b\x79\x42\x76\x51\x5d\x95\x0b\xa3\x1a\x88\xa8\xaa\x8a\x80\x7c\xad\x62\x16\x8f\xe7\xe5\xa5\x8e\xd5\x86\xa6\xff\x66\xc7\x18\xc0\x93\xfb\x57\xf9\xde\xc3\xaa\x9e\xe0\x93\xba\xe2\xa2\x47\xfd\x88\x11\x2b\x93\x20\x6a\x76\x0f\xca\x93\xab\x35\xa0\x9d\xfc\xb8\xc4\xf7\x1f\xf2\xbf\xec\x70\xc8\x97\x2f\xfa\x21\x79\x71\xe9\x99\xa6\x7b\x4a\x92\x85\xcf\xc1\x65\xd9\x58\xa0\x2f\x9f\x96\x63\x56\xc4\x51\xd1\xdc\xdf\x91\x44\x24\x54\x8e\xa4\x2e\xc9\xa7\x5e\xd9\xee\x66\x50\xb6\xe0\x9e\x98\xe8\xec\xc1\x3e\x27\xef\x61\x9f\xba\x74\xb2\x16\x12\x21\x83\x9f\xa8\x31\xa1\xa3\x26\x7b\xa5\x0f\xf0\x43\xd2\xc8\xa8\x78\xc2\x09\x23\x3a\xc9\x8c\xae\x5a\xb7\x10\xfa\x97\x67\xdf\x7e\x5b\x71\xa0\xab\xba\x99\x92\x46\x19\x3a\x93\x5e\x2e\x7e\x91\x16\x52\xee\xde\xfd\x0e\x97\xa4\x63\xd2\x3a\x2c\x1f\xbc\x64\x1a\xd7\x2c\x25\x61\x12\x1c\xed\xf4\x74\x59\x2d\xdd\x33\xb9\xd8\x0b\xae\x07\x68\xd5\x74\xde\xfd\xfe\x31\x4e\x37\xf0\x4e\x45\xaf\x19\xe1\xc4\x41\xa6\x02\x65\xd6\xf7\x3c\x02\x5b\xc2\x47\x77\xae\xa9\x14\xb7\x6c\x3b\x97\xac\xef\x32\xd9\x7c\xee\xc0\x33\x27\x29\xfd\xed\xdb\xe2\x5d\x76\x3c\xc4\xcc\x2e\xc2\x52\xb0\x35\x08\xef\x24\x38\x40\x79\x17\xbf\x37\x61\x83\x7a\x56\xd1\x7b\x16\x66\x73\x1e\xe9\x73\x9a\x34\x91\x7e\xef\x21\x7d\xf9\xa4\xa6\x1c\x68\x1f\xc2\x71\xde\xde\x9b\x7f\xf7\x6b\xbe\x78\xe3\x85\xc6\x66\x98\x35\x18\xa2\x0b\x3e\x6d\x5d\x6c\x58\x04\x8f\x99\xe7\x7f\x45\xc2\x46\x14\x08\xa5\xec\xe7\xd0\xb0\xef\x0c\x10\x71\x1a\x10\x78\x9a\x7c\x86\x4a\x0a\x59\x32\x68\x44\x64\x88\xed\x7a\x36\x2c\xc2\x4f\x15\x26\xd6\x35\x94\x0e\x5b\xf6\x8c\x5c\x79\x55\x0a\x57\x26\x94\x96\x3a\x62\x5c\x6d\x0a\xcd\x10\x41\x72\xc2\x6c\xd8\x6e\xe7\x6c\x1a\x04\x26\x92\xbd\x13\xc2\xa2\xad\xc4\xe4\xf4\x24\x51\x9c\x98\x7f\xef\x61\xfe\xf2\xc9\x9e\x53\x63\xe1\x0f\xab\x5f\x3e\x6c\x7e\xf1\xfc\x25\xd8\x13\x0f\xf9\xe3\x43\x36\x6a\x29\x01\x5e\x12\x9c\xfe\xaf\xcb\xa0\xc6\xac\xcc\x69\xfd\x6e\x2f\x78\xa5\xc4\x9b\x12\x1f\xba\xd4\x79\x0a\x33\x15\xcd\xa8\xe1\x88\x51\x43\xd3\x27\xf6\x40\xa4\x72\x71\x8f\x93\x96\x32\x8b\xdf\x95\x3b\x67\x79\xdf\xff\xf5\xf7\x6e\xcd\x72\x0f\x8e\x75\xcd\xda\x1d\xcc\x22\x3f\xfb\x51\x4a\xc2\xb4\x90\xe3\x57\x49\x84\x18\x51\x6c\x52\xc9\x15\xb2\x8b\x9b\x15\xc8\x26\xcf\x72\x5f\x8a\x6e\x04\x37\x2d\x54\x41\xb5\xdd\x57\x92\x15\x6f\xb2\x23\xe3\xe4\xe9\x89\xd1\x34\xb7\xc5\x94\x85\x95\x85\xe8\x8a\x95\xbc\x8f\x88\xc8\xe2\xd8\x5b\x79\xad\xc9\x4a\x78\xaf\x34\x9a\x2d\xd7\xb1\xa8\xc3\xe3\x32\xc4\x3e\x20\x6d\x9c\x1d\x80\xa1\x3e\x5c\x6c\x8a\x7b\x4c\x95\xf3\x86\xfa\x52\xdb\xe2\xad\x14\xf7\xad\x76\xaa\xcd\x06\x1f\x21\xb0\xc0\x87\x20\xa9\x95\x56\x29\xb1\x07\x1f\x78\xe9\xfb\x3f\x3c\x13\x49\x60\xba\x83\x4b\xb7\xdf\x87\xe9\x00\x92\xc1\xd7\x0c\xa5\xff\x77\x04\xd7\xc2\x97\xd5\x4d\xe5\x7c\x1f\xde\x73\x72\x74\x06\xf1\xdb\x92\x02\xf0\x8a\x5b\xe6\xf2\xa5\x65\x96\xcd\xa3\x69\xe1\x6b\x0c\x87\xaa\xda\x34\xdb\x65\x95\xf3\xe1\x28\x5d\x6a\x99\x54\xf8\x7b\xff\xd0\x2e\xa3\x42\xd9\xbd\x6d\x0b\x94\xf4\x34\xe6\x2a\x87\x81\x57\x0c\xbe\xdd\x02\x79\xc2\xff\xfc\x43\x16\xe5\x83\x51\x7d\xf9\x10\x76\x8f\xd9\x5e\xb1\x65\xbf\x23\xef\x46\xfe\x57\x97\xf2\xd7\x91\xa9\xa9\x25\x55\x1c\xdd\x64\x86\x48\xbc\xab\xc7\x9c\x70\x03\x40\x10\x57\x19\x68\x9e\x8e\x1b\x79\xaa\x59\xec\x12\x1b\x9c\xf0\xa5\x70\x80\x58\xa8\x25\x7d\xf4\xc7\x03\x71\xce\xd3\xe0\xdd\xa8\x76\x9f\xae\x7f\xf7\x5b\x1d\x88\x7a\xdd\x93\xef\xaa\x7b\x56\x84\xff\x68\xf9\x28\xe7\xff\x0b\xaf\xd9\x1b\x9a\x50\xed\x18\x94\x77\xdd\x3a\x98\x59\x6a\xce\xa5\x18\xe6\x85\x79\x80\x0f\x5e\x37\x29\x17\x74\x41\x19\xc6\x19\x99\xe3\xbb\x5a\x35\xbb\x00\xc7\xfc\x8c\x7d\xbb\x32\x00\xdd\x29\x66\x63\x8f\xf6\xd4\xdc\x02\xd9\xa8\x84\x15\x0c\x02\x51\x7b\x64\xb2\xf3\x92\x47\xe4\xf2\x15\x16\xbe\xef\x63\xe6\xfb\x38\x23\xdf\x3b\x6c\xf9\xde\x62\xc7\x07\xe0\xf0\xd2\x6a\xb3\x72\x6c\xe4\x8f\x0c\xcc\xc5\xa1\x0d\x07\xc4\x44\xf5\x8e\xc9\xea\xf9\xba\xd5\x0c\x28\x90\x1f\xee\x19\x9a\x2d\x3b\x20\x33\x6e\xf5\x33\xe7\xc8\x88\xb3\xf6\xef\x0e\xa4\x4b\xd6\x52\xc7\x40\xff\x88\x45\x07\x22\x77\x23\x3a\xaa\x63\x08\x79\xe4\xe6\x53\xca\x6a\xd0\x41\xe7\x0b\x5c\xfe\xe9\xd5\x0a\x4b\x6f\x95\x84\x30\x55\xae\x5f\x75\x8a\x3e\xb8\x50\x2a\x8e\x8e\x4a\x80\xf6\x0c\x01\x76\x1f\x26\x54\x52\xf8\x41\xfc\x8e\xa9\xef\xb6\xe0\xf5\x4f\x0f\xce\xea\x6b\xfd\x47\xe5\x67\x67\x9f\x81\x99\x07\xe9\x82\x51\xe7\xc2\xd9\xc3\xcb\x81\x26\xcc\x0a\x78\x66\x72\x3b\xf9\x73\xe4\x3f\x6d\x78\xde\x97\xb9\xea\x3f\xc6\xcf\xf4\xc3\x7c\xee\x54\xe3\xb1\x76\xf4\xc3\x2c\x65\x93\x37\x6a\x42\xd3\x38\xdf\xdd\x90\xce\x49\xc9\xb7\xb7\x3e\x28\x9f\xb1\xec\xfe\xe8\x74\xaa\xe6\xed\xa7\x9f\xaa\x5f\xdc\xaa\xfd\x3f\xaa\xf7\xf8\xe2\x54\x75\x1d\x3d\x57\xeb\xbc\x2e\x51\x11\x4c\x29\x46\x66\x72\x3e\x31\xd0\xcd\x62\x5a\xfd\x8f\x4e\x1f\xe5\xf5\x7a\x20\xe5\x13\x31\xdb\x4a\x59\x49\x98\xa5\xa9\x60\xb0\x69\xd0\xdd\xd2\x67\x5e\x14\x9e\x31\x37\x5d\x74\xf6\x94\xac\x06\x16\x21\x2b\x97\xca\x6f\x29\x7f\xfc\xd4\x4f\x7b\x9f\xa9\xbf\x7e\xa8\xa6\x8a\xe8\x6c\x3e\xd2\xdd\xe8\xad\x41\xbd\x68\x78\x02\x20\x34\x6c\xd0\xae\x64\xad\x48\xbf\x0c\x35\x06\x28\xea\xc6\x5f\x9a\x66\x3b\x59\x89\x20\x17\xf2\xdc\xf9\x92\x7e\x3a\x13\xbe\x0c\x74\x83\x79\x58\xc3\xe7\x3e\xf6\x30\xf4\xa7\xe3\xee\x1b\xcf\x10\x5b\x3a\xbb\xc3\x0f\x0b\xba\x07\xbb\x2e\x79\x93\x46\x59\x9b\x58\x57\x8f\x04\x0c\x46\xd7\x8e\x7f\xc4\xc0\xf8\x7e\x92\x45\x3a\xec\x9d\xe8\x39\x8d\xb2\x83\x74\x30\xc5\x88\x48\x07\x0d\xbf\x17\xec\x2f\x84\xf2\x3f\xf8\x19\x55\x7c\xfb\xc5\x2b\x2b\xb8\x5a\xdb\x8c\x19\x89\x5d\x13\x28\xd5\xe9\xa9\xc3\x41\x99\x81\x22\x3f\xd4\x1a\x5a\xde\x17\x29\xa7\x30\xf7\x6b\xe8\x5b\x7b\xeb\xce\x0a\xea\x0b\xd5\x4c\xc5\x50\xe5\x85\x93\xb0\x9c\x3b\x61\x35\x5e\x34\xe0\xc9\x2b\xd8\xd7\x6f\x7b\xf3\xcb\x4c\x37\xd8\xd5\xd2\x0d\x66\x3d\x25\x22\xc3\x1d\xc5\xe9\xcf\x46\x2e\x2a\x1b\xb5\x71\xa9\x23\xa9\x3c\x86\x24\x95\x3f\xb9\xbb\x01\x09\x53\x29\x8e\x11\x66\xa5\x21\xa8\x5f\x4f\xee\xa7\x6c\xb3\x6f\x66\x7c\x98\xe5\x1a\xa1\x30\xe3\x59\x8a\xb1\x93\xa9\x16\xf7\x88\xad\x59\xdf\xc5\x99\x77\x9c\x6b\x89\x29\x3d\xe1\x85\xb0\x0d\x05\x77\xb9\x17\xbc\xb3\x26\x3a\x45\x1c\x5b\x58\x6b\xcc\x0e\xc7\x89\x19\xc7\xa2\xe0\x34\x13\x95\x70\xb0\x3b\x85\xde\x64\x51\x14\x75\x56\xf6\xca\xe3\x37\xe5\xae\x7d\x0f\x53\x09\xc8\xa5\x77\xc4\x59\x11\xb6\xb6\x00\xdd\x96\x32\xf8\x48\xec\x45\xf9\xaa\xf7\x19\x1d\xbd\x28\xc6\x01\x61\xeb\x95\xd3\xe5\x27\x76\xab\x02\x82\x35\xa1\x1b\x1b\xec\x49\x2e\xe4\xb7\x29\x47\xfd\xab\xbd\xfe\x29\x4d\xf9\x5a\xc4\xbf\x18\x67\x88\x87\xf9\x48\x67\x20\xbb\xde\xe9\x80\xe0\xa2\x36\xfb\x1d\x55\x80\x88\x76\x05\xd7\xfc\x50\xc8\x8e\xc8\x0b\x5e\xcb\x28\x5a\xbb\x61\xaa\x82\x9e\xed\x92\x81\x82\x52\x52\xc7\xc3\x09\xde\x7e\x6b\x3e\x02\xfd\xf6\xa2\x7b\xdc\xb3\xb6\xeb\x29\x40\x57\xf4\xcb\xa0\x99\x01\x7a\x6c\x8f\x84\x90\x80\x7d\x05\x6f\xa5\x05\xec\x84\xcb\xc7\xe4\xb4\x3d\x9e\xfe\xd8\x9e\x0a\x75\xec\xb5\x46\x6e\x2a\xef\x75\xdc\x15\xce\xfb\x83\xcd\x2e\xb8\x1c\x48\x2d\xd2\x37\x4d\x31\x13\x5e\x9a\xdc\x6c\xbf\xb8\xc9\x3c\x0c\x43\x6c\x16\x2f\xc7\x1a\xfe\xba\x31\x32\x1a\xda\xd3\x0a\xf0\xfe\x1d\xa0\x52\x5e\xe4\x12\xf8\xfb\xc2\x84\x2b\x28\xda\xd0\x44\xb4\x50\x39\x4e\xe0\xbc\xe5\xa4\x2d\xff\x08\xf3\xe3\xf4\xd0\xb7\x29\x3c\x9a\x32\xe6\x83\x01\x3d\x23\x3d\x35\xaa\x2a\x19\x11\xdf\x4a\x7e\x66\xf3\x90\x91\x94\x6e\x8f\x71\x21\x94\xf1\xa2\xab\x17\x9c\x0c\x4f\xd6\xf3\x61\x30\x66\x70\xb2\xae\xf5\xb7\x4a\x45\xe3\xc6\x96\x50\x18\x0c\x3a\xbd\xd2\x9a\x5f\xdf\x00\xce\x34\x22\x32\x40\x89\xb6\x2e\x00\x6a\x7c\xe0\x33\x31\xa1\x4d\x42\x04\xdd\x28\x82\x73\x59\x39\xfe\x00\xc6\x95\x02\x58\x0e\xd6\xc1\xf2\xba\x63\x54\xd4\x4c\x72\x1d\xb1\x4f\x68\x87\xaa\x65\xfb\xfa\x70\xe3\xfd\xd5\x46\x26\xd5\x84\xa0\x1a\xe2\xce\xe2\x46\xd3\x22\x56\x4e\x4c\xf4\x3c\xb9\x84\x4f\xd6\x0a\x07\x48\x1e\x95\x7c\xcc\xe0\xe2\x75\x4c\x1e\x66\xa5\x91\x38\x06\xc1\x09\xa0\xe2\x78\xbb\x6e\x3e\x91\x02\xd7\x85\x17\xc0\x61\xc9\x51\xe4\x29\xcb\x4d\x80\xb8\x73\x53\xba\x02\xc4\x14\xc2\xaa\x32\xb2\x8d\x9d\x27\xac\xb2\x26\x4a\xe9\x7f\xb5\x71\x95\x6f\x21\x64\xaa\x59\x6f\xfa\x80\x3e\xbb\x60\xc4\x47\x9a\xaa\xf9\xc2\x23\x16\x1a\x9a\x97\x39\x8f\x7e\x61\x9e\x6a\xfe\x1b\xd7\x06\xba\xd1\x6b\x84\x02\xc3\x88\x5d\x8a\x51\xf6\x62\xe2\x0d\xf7\xae\xc4\xc7\xe7\xb3\x31\x49\xde\xfb\xba\x10\x1c\x21\x69\x0d\x69\x6f\xb5\x80\x86\xcb\x11\x8c\x46\x8e\x93\x60\x77\x08\x79\x18\x33\x66\x6c\x63\x49\x88\x62\x5e\x68\xa2\xdc\x19\x12\x69\xec\xca\x35\x2f\x35\x76\x0e\x9f\x78\x61\x5f\xb8\x07\x61\x7d\xde\x9c\x77\xa4\x3c\x15\xaa\x68\x7d\x5e\x53\xa6\xdd\xc3\x07\xa5\x9c\x30\x79\x2d\x03\xf2\x50\x85\xf7\xd4\xf2\x8b\xb4\x30\x93\x4f\xc7\x42\x33\x88\xd6\x85\xbd\xfa\x96\x4c\x54\x5e\x82\x14\x49\xa4\xdf\xe4\x0f\x95\x8e\xb4\x62\x79\xd2\x86\xf6\x31\x4c\xf6\xe6\xe7\x1c\x96\xa8\x0c\x59\xec\x54\x0e\x1c\x89\xb6\xa5\xf8\x72\xc3\x91\xfc\xd1\xc9\xdb\x96\x38\x21\xeb\xa1\x03\x54\x52\xdd\xc8\xaa\x1e\xbb\xd7\x6d\x33\xa5\x8b\x47\x06\xe6\xf7\x6e\x14\xc2\xf3\x4d\xc1\x09\x43\x79\x2b\xa2\x85\xe3\x22\xf3\xa6\x83\x35\xe1\x05\x19\x10\x68\xcd\x37\x30\x47\xb6\x7b\xfe\x83\x06\x5d\xa6\x78\x2e\x1f\x76\x65\xc9\xda\xe0\xd2\x6e\x1a\xd2\x6f\x39\xb8\x59\x50\x0f\xbf\xb6\x6c\xff\xd6\xb5\xdf\x06\x15\xde\xd2\x40\xd9\x25\xac\x73\xe9\xc9\x8e\x66\x37\x20\x39\xcd\x0d\xd5\x87\x0c\xf2\x83\xc6\xd0\x07\xfd\xab\x22\xb4\xa3\x84\x77\x23\xa6\xe0\xd0\x44\x66\x80\x41\xa3\x24\xb9\x88\x33\xb3\x9a\x46\x01\x6e\x50\xaa\xe0\xb0\x3d\x31\x5b\xd7\x66\x18\x6d\x07\x75\x79\xa5\xa7\x57\x4d\x65\x54\xa7\xa3\x03\xd5\x5f\xb7\xe0\x9e\x13\x18\x72\x13\xc9\x23\x25\x2a\xbc\x5c\xe0\x00\xe2\xd8\x7d\x89\xf2\x19\xc6\xbe\x4f\xcd\xda\x89\x87\x6a\x89\x95\x49\x14\xdb\xe9\xdf\x1a\x85\x38\x80\xe1\x5a\x4a\x67\xe2\xff\x36\x72\x65\xbb\x16\xcf\xd0\x10\x22\x04\x62\x9e\x66\x31\x8b\xd5\xd8\xfb\xcd\x75\x8b\x1d\x22\x6d\x2f\x33\x18\x92\xba\xec\xe2\x67\xc2\x19\x4f\x98\x74\x00\x73\x25\xe9\xb8\x55\x90\xcd\x88\x77\x0b\xef\xbb\x34\x52\x30\x40\x1a\x9d\xa9\xef\x75\x07\x64\x27\x7a\x6c\x08\xa7\xe1\x74\x12\x32\x70\xfa\x1f\x6b\x22\x3c\x7f\xbc\x4a\xa7\x84\x0d\xf9\x94\x4c\x7f\xd1\xc9\x90\x40\xc6\xca\xa2\x85\xe2\x60\x66\xab\x52\x5b\x41\xea\x66\x6d\x53\x80\xba\xd8\x32\x38\x9e\x96\xba\xf3\xea\x4b\xa2\x32\x07\x01\x7b\x86\xd3\x95\xe1\xb4\x18\x36\xc2\xc8\x8e\xcd\xe2\x17\x32\xd3\xe6\x4b\x22\xc5\xe8\x31\xfd\x51\x2c\xcf\x8a\x27\x9a\xac\xa9\xbb\xc4\x2d\xa2\xdc\xdc\xbc\x0d\xb2\x86\xb3\x90\xa1\x60\x0f\xc7\xc8\x10\x4d\xa6\x76\x6a\x4e\xec\x49\x42\x14\x09\xe6\x90\x94\xd1\xbb\x4c\x28\xf5\xd4\x44\xdb\x56\xd4\x26\xd3\xc6\xa4\xb2\x46\xbd\x88\xc0\x85\xb8\x0a\x55\xb3\xad\x3f\x66\x36\x0e\xa1\xed\xa3\xec\x9f\xce\x3f\xec\x08\x65\x04\x99\x9e\x57\x2a\xc3\xbb\x79\x5a\x00\x29\x9a\xf7\x38\x76\x9c\x59\x8d\x95\xd6\x6c\x38\xe5\xbf\x69\xbf\xaa\x8a\xc6\xe9\xaf\xed\xaa\xec\x48\xe6\x9b\x4c\xb6\x67\x5d\xfd\xf8\x6c\xcc\x1e\x99\x99\x70\x25\x09\x5e\x2e\xfd\xf8\x85\xf8\xcd\xb3\xb7\x01\x38\x05\xb3\x99\x9a\x3b\x2d\x44\x73\xa5\x77\x8a\x1e\x64\xfe\x60\x4f\x24\xc1\x31\x8e\x4c\x9e\xb2\xf6\xa7\x6b\x68\xb3\x4b\x8f\xd2\x84\xd4\x45\x97\xab\xe3\x5b\xc7\xfa\xcf\x9a\xda\x2f\x5b\xc6\x60\x04\x1c\x11\x2c\xb8\xc0\x85\x70\xc8\x5d\xd6\x81\xc2\x22\x75\x6e\x07\xb4\x6e\x6a\xe5\x28\xf8\xb7\x25\xbb\xfd\x15\x60\x77\x76\xf8\xad\xca\x0d\x04\x1a\x50\x5c\x5b\x1a\x72\x6e\x7d\xab\x85\x03\x12\x80\x88\x02\x4a\x20\x49\xab\xfb\x07\x28\xfb\x22\x05\x2f\x16\x92\x3b\x6d\x00\x32\x21\xd5\x6d\xa5\x4d\x77\x38\xe6\x1a\x25\x6b\x39\x04\x4c\x48\x9d\x37\x2c\x06\x34\x0f\xea\x04\x6b\x8f\x45\x06\x2c\x90\x73\xe8\x48\x37\x78\x2e\x0b\x87\x66\x76\x9c\xbd\x9c\x66\x66\x54\x65\x95\xf8\x48\x36\x7e\xcd\x7a\x2d\x56\xad\x40\xd1\x8d\x97\xba\xee\xe4\xa7\x9d\xdf\x3d\x97\x5c\x24\x8b\xe2\xcd\x15\x4b\x56\xac\x49\x3e\x4d\x78\x16\xed\xaf\x9c\x28\x4b\xaf\x24\x14\x13\x3e\x84\x9f\x77\x2d\x49\xa1\x8d\xdc\x4e\xd6\x5d\x64\x3b\x64\x8f\x4e\x62\x32\x4a\x9c\x1d\x1f\x7a\x1e\x23\x1c\x72\xe6\x49\x46\xdc\x7c\x55\xc6\xbe\x6e\x28\x07\x2c\x94\x04\xa8\x88\x4c\xc5\x9c\x37\x92\x4e\x58\xa2\xe2\x66\x25\xa6\xe4\x06\x74\x5c\x6e\xc6\xc0\x00\x35\xaf\x59\xb2\xec\x38\x60\x64\xa4\x3c\x58\xa2\x22\x2b\x8b\x60\x81\xa5\x1a\x2a\xe5\xf7\xec\x66\x01\xda\x1b\x5d\x08\xfb\x6a\x08\xdf\x10\x17\xe3\xa3\x5e\x54\x31\x9d\xdc\xb8\x34\x49\x3b\x35\x51\x41\x53\x3c\x98\xf3\xd2\xa3\x01\xce\x38\x20\x66\x5a\x49\xd3\xb0\x7f\x92\x94\x8a\xbe\xd4\x0a\x90\x77\x8e\xc8\x8b\xa8\xee\x1f\xc4\xd3\x3e\x75\xa9\x04\xc2\x10\xa9\x4c\x44\x99\x64\xcd\x5f\x23\xed\x86\x44\xea\xad\x6e\x0f\xf6\xf1\x97\x4c\xf1\x88\x2c\xf8\x48\x2b\x75\xe6\x3f\x75\x5c\x5e\x2c\xfa\x76\x12\x32\xdf\x85\x54\x49\x35\xee\x3b\x15\x68\xa8\xca\xc4\x57\x27\xb2\x33\xf3\x64\x09\xb3\xe7\x6b\x5a\x0d\x13\xa7\x12\x38\x57\xa2\xf8\x6d\x73\x92\xbc\xa9\x0a\x05\x04\xe5\x2b\x90\xfc\x4b\x72\x50\x2b\xbf\x44\xca\xe5\xc0\xad\xdc\x9d\xb1\x4a\xe4\xc2\x47\xba\x7d\xca\x60\xc6\x38\xd4\xa6\x9f\x4f\x5d\x78\xc0\xd0\xbc\xb0\xda\xb4\xd2\x3d\x3e\x75\xe5\x95\x18\xe9\x31\xf4\x7f\xfe\x41\xa9\x33\x79\xe8\xb5\x2a\xff\x81\xa5\x31\x25\x90\x15\x48\xc3\x4f\x2d\xbc\x03\x4e\x64\x55\x0b\xfe\x03\xab\xf2\x42\x8c\x01\xb9\xb5\xaa\xb1\xf9\xf2\xd3\xa7\x1f\xcf\xf2\x37\x8c\x75\x19\x84\x45\xd1\xeb\x75\x6c\x34\x52\xaa\x23\xb1\x77\xe7\x95\x31\xc0\x5a\x4d\xca\xb0\x3e\xc0\x4a\x5e\xc4\xdb\xb9\x45\x2b\xc2\x59\xc1\x40\x98\xe2\xf5\x3e\xf0\x13\x19\xba\x62\x53\x3e\x13\x84\x8f\x1c\xc7\xe1\x0d\x7d\xed\x26\xe9\xfa\x36\x2c\xff\xee\x3c\x81\xa6\x54\x49\xdc\x27\xf3\xb3\x55\x6c\x9e\x92\x3c\x41\x69\xb3\x04\x63\x7d\xd5\x9c\x45\x7b\x76\x86\xb1\x32\x87\xff\xa1\x24\x08\xca\xc4\x07\x7a\x9d\x78\xd1\x2f\xa8\x42\xbb\xa0\x57\x17\x88\x16\xf4\xc2\x1b\x0d\x61\x54\xf9\x2b\x05\x9e\xdc\xca\xdd\x93\x31\xc1\xd0\x06\x92\xc9\x27\x53\x37\xd0\xd2\x6b\x6a\x59\x4d\xfa\x11\xe9\x85\xf6\xfb\x21\x33\x8e\x0a\x76\x49\x31\x7a\x96\xd2\xd8\x62\x84\x00\x55\x88\x70\xb7\x3f\xb7\x6f\x82\x20\xaf\x17\xea\xfb\x1c\xcb\x9c\x2b\x22\xb6\x56\xeb\x73\xb6\x59\xf7\xec\x7f\xb3\x4f\x08\x04\x26\x07\xbd\x68\x06\x56\x53\x73\x68\x88\x08\x25\x94\x85\xf9\x3c\x1c\xfa\xdd\x50\xe9\x1e\xf4\x8d\xbf\x99\xf9\x25\x2f\xb2\x53\x5e\xe6\xa5\xcc\xbc\x2b\x0d\x1a\xc3\x87\xb5\x2c\xa5\x01\xba\xaf\xe7\x55\xac\x5a\x73\x50\x2b\x8f\xd8\xe8\x41\xf7\xa2\x5d\x5a\x8c\xa2\xda\x93\xbc\x27\x99\x4f\xec\xdf\x99\x59\x35\xc5\xab\x9e\x14\x9b\x59\xf1\xe7\x09\x99\xed\xed\xf9\x50\xbd\xf3\x5a\x42\x90\x54\xa3\xde\xf0\x3e\xd3\xf5\x31\xaf\xee\x4c\xd7\x65\xd5\x71\x63\x5d\x11\xc7\xc1\x2e\x88\x17\x76\xf3\x21\xea\x2f\xdc\x9d\x94\x96\x1a\xff\x66\xe6\x7a\x01\x2a\x75\xf0\x0b\x87\x0d\x81\xfd\x55\x81\xe0\x36\x50\x88\x75\xa1\xdb\x71\xa5\x2e\x59\xb8\x21\x51\xd6\x8d\x4b\x83\x88\xec\x83\x63\x9c\x7c\x6c\xf6\x05\x04\x9e\x42\x14\xdf\xd5\x3c\x54\x04\x2d\xf0\x98\x5c\x12\x40\x2f\xe5\x13\x3c\xa1\xe0\x21\x3d\x5c\x22\x17\x4f\xa9\xe0\xe5\x61\x0e\x97\x59\x7a\x58\x65\x73\x51\x8c\x0d\x9c\x8e\x03\xd4\x3e\x16\x38\x04\xef\xee\xfb\xb4\x65\xad\xcb\x3e\x93\xcd\xd3\xa1\x6a\xe8\xc7\x69\x30\x33\xd9\xbf\x28\xbe\x30\xca\xb5\x2c\xd7\xd4\x08\x2d\x48\x97\x4c\x3a\x63\x9b\xc6\x4c\x7e\x0b\x30\xd0\x22\xdb\x78\x71\x86\xe3\x7a\x67\xd8\x1a\xea\x80\x5c\x09\xea\x9d\xb7\x23\x71\xd7\xa1\xb1\x0d\xf2\x84\x4f\xec\x82\xa8\x1f\x3d\x6c\x0f\xaf\x0f\xd8\xfe\x5d\xf5\x2b\x4c\xef\xf5\xd9\xd3\xc4\xe9\x76\xb8\x4f\x57\x17\x56\x3a\x27\xa0\xe2\x84\x16\x90\x2d\x55\x92\x42\x4a\x09\x11\x48\x45\x86\x3f\xa7\x30\x81\x2c\x23\xcb\xbc\xc4\xdc\xaa\x13\xb5\xf0\x98\xdf\x3d\x16\x0f\x8f\xe9\xdd\xe3\x28\x06\xba\xc9\x5c\xbd\x42\x36\xc0\x63\x5a\xe5\x41\x82\xf4\xc0\x65\x7a\xf0\x83\x1e\xab\x15\xf9\x70\x67\x27\xc1\x4d\x9e\x53\xaf\x92\x61\x2f\x31\xd2\xa4\xa8\x7e\x60\x32\x1c\x32\xdd\x96\x5e\x12\xf2\x4d\x01\xf3\x30\xda\xa6\x11\x8f\x4e\xd0\xce\xb4\x04\x86\x3e\x86\x12\x3a\x36\xa6\x98\xb1\xd6\x02\x02\xd4\xf7\x67\xe0\x35\x54\x64\x9e\x52\x78\x47\x5e\x5f\x09\x61\xd4\xa8\xad\xf2\xeb\xaf\x41\xbc\x32\x20\x47\x36\x85\x17\xee\xf1\x25\x48\x43\x50\x7a\xd6\x5d\x56\x8d\xf3\x3c\x2e\x29\xc3\x0a\x6c\x19\x20\x71\xb9\x2a\x6a\x2a\xac\x6f\xfe\xaf\x3f\x42\x12\x77\xc1\x16\x59\xcf\xf2\x9c\x5d\x9c\x9f\x4f\xc5\x42\x2d\xcc\xbb\xa0\x70\x0e\x43\x31\x9d\x7f\x62\x79\xa0\x0b\x49\xa1\x55\xcb\xe8\x79\x3d\x39\xf3\xba\x0e\x4e\xc7\x4d\xbd\x7d\x8d\xe3\xbe\x33\x12\x9d\xd4\x63\xca\x9d\x58\x7a\xd0\x7b\x55\x39\x2b\xaf\x81\x1c\xda\x3c\x84\xd2\x7d\x4f\x89\xc8\x8a\x06\x2f\x0c\x74\xa4\xad\x71\x26\xb0\x6a\x5d\xdc\x41\x35\xb9\xc4\xa7\xd6\xc0\xf6\x13\xa5\x6c\x6f\xd5\x90\x77\x52\x37\xfd\x5e\x17\x90\xa8\x25\x78\x54\x7d\xea\xe2\xaa\x8e\xb1\x16\x56\x3c\x8a\xf3\xf2\x73\x7f\x61\xdc\x97\x9b\xc6\xa6\x6b\x6f\xb1\xb8\x61\x62\xa2\xa9\xee\xcf\xc7\xba\xbc\xa4\x5b\x3e\x2d\xc1\xc6\x61\xed\x16\xeb\x9d\x8c\x18\x36\x52\x5e\x30\x4c\x69\x7e\x2c\x84\xab\xb6\xf1\x95\x1b\x8b\xe5\x55\x54\x3f\x55\xc2\x3f\x76\xee\x93\x1b\x39\xac\x45\x41\xd2\xe7\xb0\xb5\xb5\x80\x62\xf7\xa9\x37\x6e\x99\x14\x16\xf2\xb5\x41\xfa\x39\x3c\x6e\xeb\x00\xf5\xbd\x92\xdc\xe6\x4b\x4b\xfd\xf7\x12\x0d\x48\x5f\x73\x1c\xae\x8d\xa7\xd8\xda\xd9\x95\x96\x9a\x7a\x9b\xe8\x2c\x48\x43\x9a\x33\x41\xb0\xc1\xb3\x78\x66\xe3\x4c\x09\x08\x1a\x8f\xaa\xa9\xe5\x34\x1b\x1a\x08\x28\x1e\x77\xd1\xa4\xcc\xd7\x38\xb4\x53\x41\x78\x85\x4c\x50\xb2\xef\xfb\x04\x69\xff\xa4\x0a\x8d\x46\x9b\xf4\x9f\x7a\x42\x91\x7b\x81\x1a\xf8\x82\x82\xec\x75\xbd\x9a\xb6\x47\x0b\x71\xe1\x1d\xa3\x8d\x63\x0a\x54\x41\x29\xb3\x9f\x6c\xc5\x16\xaa\xca\x39\x3e\xa2\xe0\xf9\xbc\xa8\xdc\x0c\x03\xbf\x99\xd1\xd4\x2d\x05\x55\x69\x4d\x5c\x5c\x5c\xb6\xdb\xe7\xc6\x18\xfb\x63\xb6\x83\x33\x73\xba\xa6\x72\x19\x7d\x0c\x04\xd8\x6a\x23\x05\x03\x83\x4e\x76\x49\xae\xa5\x50\xb2\x60\x60\x5d\x2c\x16\x9f\x7d\xd3\x5e\xc4\x95\x7c\x7c\xeb\xbe\xaf\x98\x6b\x29\xf4\x37\x26\x10\x94\x72\x5b\x7b\x42\xda\x98\x4c\xee\x9a\x52\x7b\xdc\x82\x52\xb5\xc3\x38\xeb\x56\x89\xb8\x43\x7f\xe1\xce\x6f\x66\xbe\x75\x5b\x28\x04\x84\xaf\x6b\x61\x39\x32\x31\xe4\x09\x9b\x21\xdb\xb8\x9f\x1f\x3c\x43\x65\x3f\x3f\x89\x01\x33\x07\x4c\x7c\x9b\xc0\x4a\x04\x77\x0f\xe1\x47\xda\xb1\x94\x3b\xe6\x7c\x26\x1e\x3a\x6f\xbf\x97\x78\x76\x05\x65\x7d\x10\xd2\xbd\x15\xe0\xce\x7a\x76\xb1\xe0\xbb\x37\x55\x8f\x6c\xf9\x7b\xe9\xbb\x43\x42\xb6\x8c\x49\xba\xfc\x8b\x8e\x55\xe0\x5e\x56\xad\x57\x48\xc8\x81\x30\xb0\x67\xb9\xda\x92\x20\x74\x2c\xae\xfb\x63\x19\xde\x58\x9b\xf8\xd2\x77\x99\x30\xfa\xa8\x55\x5a\xb1\xc1\x19\x67\x25\x12\xc1\x74\xca\x8d\x37\xe8\x32\x34\xcd\x0f\x56\x84\x5c\x06\x12\x45\xf7\xe8\xbc\x48\x62\x04\x5f\x27\x20\xb9\xcd\xf3\x02\x43\x9b\x84\xcc\x31\xdc\xbe\x23\x0c\xb0\x6f\xb9\xec\xbb\x28\x0b\x90\x8d\x50\x5b\x32\x04\x72\x45\x5c\xd9\x1f\x5b\x68\xd3\xa1\x0e\x39\xa5\x1f\x8d\x58\x89\x85\x96\x5b\xcf\xdf\x72\xe9\x9e\xa3\x75\x38\x7b\x69\xcb\xb1\x17\x59\xb0\xca\x74\x86\xe8\xeb\x44\x34\x92\x3f\x18\xff\xed\xf0\x77\x3d\x1f\x0c\x88\x13\xb0\xc9\xe9\x99\xff\x85\x79\x82\x4f\xe0\xc6\x2a\x31\xec\x14\x98\x6d\xf9\x44\x56\xd6\xa0\x6f\x96\xba\x72\x08\xb0\x9b\xcf\xc7\x07\x47\x80\x4e\xc7\x05\x1e\x47\xd9\xf1\x40\x86\xd1\x8d\x3f\x51\x06\xe4\x4d\xef\xfb\x7e\x3b\xfc\x37\x71\x28\xc2\x38\xcb\xcb\xba\x26\xed\x93\x36\x72\xc9\x7a\x8c\x09\x7a\x39\xde\xc4\x89\xdf\x3f\x6c\x89\x4b\x7a\xce\x77\x9f\x65\xb8\x05\xaa\xff\x19\x01\xea\x44\x43\xc8\xe8\xd5\x6c\x16\xff\x4a\x61\xb9\xe7\xe6\xc2\x6e\xfe\xa4\x17\x18\xaf\x9e\x34\x53\xea\xb3\x15\x94\x65\x8f\x7f\xb8\xcd\x5d\xce\xbe\x7a\xad\x71\x71\x1c\x4a\x14\x8c\x89\x07\x20\x92\x28\x48\x6e\x93\x11\x16\x44\x45\xf6\x9e\x07\x27\x8d\x5e\x6c\x78\xfd\x3f\x3f\xb4\xbe\x8f\x1b\x21\x5e\xb6\x4b\x5f\x6c\x6e\x94\xde\xfe\x8f\x0e\xe9\xa2\xed\x4a\x70\xa9\xe0\x76\x82\xe9\xfb\xfe\x9a\x64\xc9\x6e\xe4\x0a\x72\xfd\x7c\x28\xd4\x20\x5e\xf0\x7c\x32\xf3\xf2\xc4\x21\xa3\xcd\x9a\x3f\xc0\xd7\x12\xc1\x02\x17\xf8\x14\xf2\x24\x7f\x17\x93\x97\x17\x5f\x6e\x6e\xcd\x7c\x97\x4a\x91\xec\x0b\x93\x2e\x76\x7d\xdd\x6f\x9f\xbb\x53\xc2\xbd\xd2\xed\xbb\x55\x0d\x13\x09\xb1\xdf\xda\xab\x35\xaa\x96\x4c\x2a\xc3\x47\x19\xbe\x23\xb7\x5e\x5c\xf9\x5b\xcd\x7d\xe9\x4a\x66\x53\xb6\x4e\x42\x00\xd3\x80\x6d\x9f\xbe\x02\x2a\xbf\x32\xd9\xa8\x20\x28\x97\xee\x3f\x79\x6c\xa4\xb9\x31\x7a\xd2\xec\x84\x73\x5b\xa3\x4f\xd0\x09\x14\x96\x42\x4c\xc7\x55\x3c\x16\x23\xf6\x00\xb4\x4e\xd3\xcf\xab\xc9\x65\x92\x4f\x07\xcf\x10\x87\x3c\x5b\xc8\xb3\x79\x23\x3e\xe8\xe2\xee\x3d\xaf\x8f\x6f\x90\xb8\x66\x0e\x9d\xde\x1e\x40\xe2\x76\x2c\xc3\x5c\xd1\x84\x09\x8e\x84\x74\xf9\x03\x2b\xf1\x60\xdc\xdf\x53\x24\xa4\x4b\x97\x78\x67\xea\xe7\x85\x18\x09\x37\x55\x63\x67\x5c\x9f\x93\x9b\x8c\x26\xc8\x7a\x52\x93\x29\x44\xbd\xaf\x46\xb3\x21\xf2\x59\xad\xe9\x6b\x92\xd2\x1e\x1a\x25\x79\x02\x5b\xe6\x26\x41\x3b\x72\xc0\xc3\x7a\xb2\x4b\x58\x8d\xfe\x57\x8d\x39\xdc\x37\x99\x25\xba\xe6\x92\x36\xe4\x8c\x17\xfd\x68\xe6\xdb\x56\x17\x31\xf2\x52\x98\xae\x90\xbd\x8f\x43\x3e\xbc\x58\x44\x41\xe9\x78\x00\x65\x94\x72\xbf\xfa\x55\xee\x1b\xec\x90\x52\x3e\xcd\x00\x46\x2e\xab\x6e\xb4\xfd\xb7\x7f\x8d\x65\x42\x81\xcf\x7c\xdb\x68\xd7\x66\x42\x22\x7d\x16\xb0\x42\x26\x8e\xc7\x35\x26\x8b\xb8\x55\xbb\x76\xdf\xe0\x33\x0e\x40\xa2\x41\x68\xaa\x9a\x75\x03\x50\x05\xdf\xae\x95\xd2\x49\xd6\x7d\xa6\xa7\xe0\x04\x56\xaf\x79\xee\xc4\x7e\x73\x11\x9e\x24\x14\xe0\xd3\x73\x45\xa6\xe4\x23\x67\x40\x21\x20\xd2\x5c\x52\x79\xcb\x8e\x1d\x9a\x8f\xcf\x79\xa9\x27\xae\x2d\x37\xe1\x77\x5a\x28\xf6\x99\x98\x0d\x1a\xb5\x7b\x3d\x5f\xc1\xca\xd1\x64\x60\xdd\x09\x5a\x30\xe7\x65\x85\xec\x7c\xaf\x86\x42\xc2\x7f\x16\xee\x30\x0b\x1e\x57\xd7\x10\x56\x56\x15\xf1\x25\x01\x2c\x95\x60\xf7\xab\xfa\x10\x9f\xdd\x7a\xe6\x72\xee\x4e\x51\xb9\xe2\x49\x24\x20\x2c\xa8\x56\x10\x84\xc2\x2e\xa7\x4e\x4c\x89\x52\x03\xbe\x6c\x5d\x44\x9a\xac\xed\x07\xc0\x88\x72\x99\xd9\x74\xf7\x10\x96\xc4\xfb\x54\x68\xf9\x3c\xd5\xb0\x7f\xd6\xe3\xae\xa6\x33\xe3\x16\x2d\xfa\x22\x84\x10\x54\xb2\x5d\x90\xa8\x60\x1a\xe4\x5b\x42\x32\xc0\xf5\x9c\x27\xa8\x87\xca\xf4\xe9\x49\x7a\xb4\xfa\xa2\x8f\x08\xd3\x96\x64\x47\x85\x3c\x51\x7f\xd3\xc0\x7b\x86\x07\x22\x3d\xf0\x51\x76\xfe\x47\xfa\xca\x23\x57\x79\xb7\xcf\x85\xac\xe6\x68\x83\x3b\xa8\x2d\xcc\xff\x5c\x64\x0e\x1e\xec\x02\x2c\x0a\xbd\x0b\x3f\x25\x6b\xe1\x3d\xd5\x12\xf9\xb3\x72\x07\x58\x3f\x1c\xff\x3a\x39\x57\xaf\x4b\xab\xdc\x56\x55\x70\x89\x73\x62\x7a\x8a\x20\x75\x67\x53\x33\xbe\x1e\xe2\x2d\xfc\xd6\x5c\x12\x36\x77\x63\x97\xa0\x82\xeb\x72\x30\x00\x0d\x0d\xdc\x9a\xd5\x73\x82\x98\x4f\x08\xa0\xb5\xef\x65\x29\x30\x38\xb8\xd8\x52\x3c\x64\x10\xf4\x74\x50\x60\xd2\xd2\x41\xeb\x2d\x00\x96\x09\x41\xc4\xbc\xa2\x0a\xb3\xd1\x84\x8e\x53\xf7\xd3\x57\xe4\xc6\x62\xb6\x00\x23\x1a\x8f\x4e\xee\x58\x9d\x60\x57\x6c\x0d\x21\xfe\xe4\x45\x9e\x3f\x51\xd5\xb0\xf3\x0b\x0d\xe4\xa3\x45\x7c\x62\xb4\x23\x0f\x91\x48\x49\xb6\xe0\xe9\x11\x50\xd2\xe9\x91\x03\x67\xe6\x00\xb9\x31\x55\xd4\xe9\x01\xaa\xf9\x36\x56\x11\x63\xe3\x57\x21\xc8\x10\x52\x2c\x10\xc1\x0d\xce\x1f\xbd\x44\x10\xb9\x12\x3d\x7a\x96\xed\x30\x4e\xd9\x1e\x2c\x3b\xa0\xce\xa7\x1f\xba\xbc\xa0\xc3\x7c\x7a\xe6\x1f\xdf\x1d\xc0\x3a\x38\xe8\x4b\x3a\x89\x72\xe7\x8e\x14\x78\x2a\x86\x97\xfd\xdd\xc5\xd6\xd1\xbb\xc8\x40\x92\x46\x7a\xe4\xbb\xc5\xd3\x0c\x33\x5e\xc4\x39\xb2\x4b\xa4\xcf\x46\x50\x30\xb7\x86\x04\x75\xd9\x08\x58\x90\x98\x16\xe9\xd3\xd2\x87\xb4\x45\x68\x9e\xd8\x59\x02\xf9\x12\x5f\x55\xcc\x7f\xed\xab\xf0\x08\x73\x2d\xa2\x76\xe5\x87\x4d\xed\xf5\xd5\xfe\x3a\x72\x31\xbe\x59\xa9\x58\xe2\x27\xae\xcf\x98\x18\x21\x9e\x22\x24\x7b\x90\x81\xf2\xf3\x08\x52\x92\x12\x4f\x1d\x56\x13\x6a\xdd\xe1\xd4\x72\x16\x91\x4c\x1f\x0b\x1f\x97\x43\x80\xbc\x5a\x5f\xd2\x54\x80\x3f\xec\x12\xa1\xb0\xf2\x1a\x21\x52\xd2\x05\x45\xe3\x90\x4c\xf8\xdf\xe5\xea\x37\x94\xe2\xd9\x71\x0a\xd2\x54\x4b\x29\x6b\xbf\x5c\xa2\x9e\x28\x2a\x1b\xd4\xa2\xda\x48\x7d\x62\x84\x6d\xfd\xf2\x72\x72\x1d\x0d\xa2\x5d\xbc\x28\xce\xde\x25\xf1\xfc\xa1\xa8\xee\x65\xe4\xa6\x1b\xbd\x51\x21\x68\x4c\x0d\x0a\xf3\x5f\xd0\x8e\x3f\x68\xfb\x55\x2d\x5b\x6a\x93\x63\x73\x2b\xac\x21\x52\xa6\x71\x7b\x22\x3e\xa7\x62\xed\x4f\xc4\x91\x7f\x6a\x01\x36\x78\x9a\xdf\x3c\x46\x07\xdf\x97\x71\xb7\xe4\xbd\xd1\xac\x7d\x8b\x2b\x33\xc5\x13\xb4\x84\xd1\x98\x61\x57\xca\x43\xa9\x80\xf3\xd9\x83\x4c\xcd\x7a\xfe\x6a\xff\x39\xc2\x11\xa8\x64\xe7\x6b\xb9\xe9\x3f\xeb\x6b\x37\x7e\x52\x1d\x25\x60\x06\xc1\x6e\xea\x07\xf6\xcc\x03\x12\x09\x89\x60\x7b\xca\xab\xcb\x78\x09\x3a\x22\x79\x2e\xf0\xfe\x82\xa2\x8c\xc7\xa4\x99\xfa\xd6\x36\x04\x92\x9e\x1e\xc2\x9f\x23\x21\xe8\x1d\x1c\x69\xa7\xa7\x7e\xb4\x4f\xb3\xf9\x01\x36\x2e\x3b\x9b\x68\x69\x11\x21\x2e\x0f\x56\x90\xc6\x69\xc9\x81\x88\x85\x3c\x33\x21\xa0\x90\x5d\x50\xeb\x7c\x83\xfe\x5c\x08\x1b\xaf\x04\xe4\x47\xfa\x35\x15\xcf\xee\x46\xd6\xce\xcf\xfd\xfb\x96\x6e\xab\x6f\x66\xa0\x9c\x9e\x4e\x00\xc8\x2f\x81\x86\x98\x60\x25\xbf\xc6\xc1\x2c\x63\x1b\x4a\x8c\x74\xf6\xd6\xce\x5f\x6f\xae\x58\x4d\x70\xb4\x88\xdb\x0e\x1a\x27\xb0\x08\x6c\x52\xe7\x0a\x2f\x59\xc0\x9e\x54\x78\x04\x85\x7d\x6c\x60\xed\xc6\x76\x16\xa0\x0a\xa4\x4d\x4e\x11\x9a\xdf\xd7\x75\x20\x5d\x4a\xdc\x5a\x49\xfb\x62\x4b\xd4\xb6\x11\x9e\xf1\x99\xd6\x60\x82\x15\xd3\x08\x07\x97\x21\x68\x32\xfd\x56\x87\x5c\x01\x91\x02\x9a\x9a\x11\x1e\x56\xc8\x03\x11\x26\x05\x93\x67\xdf\x2a\x6f\xb0\x2f\xf6\x82\xeb\x25\xe2\x3a\x98\x22\xd5\xda\x2a\x35\xa4\x1c\xce\x14\x4f\x0b\xc5\x2d\xb3\xfa\xf3\xeb\xf7\xf5\xba\xfe\x4f\xb1\xcc\xcc\xa6\xe5\xab\xe2\x88\xfd\xe4\x34\xaf\xe7\x94\xc1\x6f\x2f\x75\xdf\x6a\x7b\xd2\x6e\xb3\xf7\x44\xea\x75\x49\x01\xed\x4b\xf5\x55\xf8\x8f\xe1\x34\xbf\x78\x0a\x26\x7e\x37\xec\xd8\x4a\xf0\x6a\x41\x95\x15\xab\x3e\x86\xbd\x0e\x6d\x0a\x80\xfd\x80\x6e\x69\x2b\x0f\xd4\x74\xad\x5f\x6c\xfa\x52\x69\x79\xa6\xaa\x39\x34\xca\x86\xea\x80\x00\x70\xf2\x68\xf6\x62\x63\x6e\xb9\x9e\x20\x30\x92\xa9\x7e\xff\x04\xc1\xc2\x6b\xbb\x1b\xf2\x5e\xfa\x3d\xf8\x8c\xf6\xa8\x00\x77\x11\x01\xa5\xa7\x32\x9e\x6a\xed\x3b\x44\x3b\x46\xfb\xf0\xbc\xec\x65\x4a\xb3\x26\xe4\x65\xc5\xdf\x21\xaf\x6e\x75\x6a\xcb\x41\x4f\x73\xfb\x97\x1b\x74\x11\x1d\x94\x2e\x37\xba\xe6\x6b\x2e\x20\x39\xf9\x82\x29\xae\x51\xde\xec\x63\x74\x2e\xd4\x36\x0c\xec\x63\x92\x74\x8f\x6e\xe9\x89\xa0\x46\x76\xc6\x09\x3e\x60\x93\x90\xc9\x6f\x0d\x7e\xe5\x27\x6a\x8e\x18\x77\xe2\xa4\x25\x6a\x11\x66\x47\x88\x87\xb0\xb8\x4c\xd8\x6a\x8e\x78\x7a\xbf\x1e\x9c\x90\xcb\x48\xd3\x38\xb7\x87\xbe\x15\x69\xdd\xda\xd9\xf1\xd9\x44\x05\x97\x94\xe0\x47\x09\xd0\x14\xf9\x84\xc8\x93\xf9\xeb\xc2\x32\x75\xf6\xa4\x20\x19\xb9\xf0\xf9\x1c\x3e\xf1\x17\x62\x2d\x8d\xe0\x94\x67\x3e\x7a\xa4\xbf\x10\x51\xbd\xeb\xf3\x09\x29\xec\xa7\x62\xbf\xab\x84\x6b\xcf\x1f\xb7\x2c\xfb\x2d\x8f\x1a\xbf\xc2\x2e\x30\x04\xa9\x11\xa7\x0f\x38\x1e\x2b\x71\xe2\x2b\xe3\x89\xf7\xa5\xae\x0e\x23\x62\x06\xac\xd9\xa8\x06\xcc\x51\xa4\x8d\x35\xe5\xdb\xac\xa9\xb7\x56\xd3\xf2\x5c\x19\x57\x94\xdc\x05\xe7\xdd\xf9\xde\xe0\x80\xb5\xab\xe0\xef\x18\xda\xcc\x1f\xac\x5f\xaa\xa8\x97\xb8\x77\x73\x58\xf6\x8d\xb1\x33\x9d\x9f\x3f\xfd\x1d\x05\xfe\xd5\x76\xe7\xad\x3e\xbd\xdd\xc2\xfb\xdb\x52\xdb\x8c\xba\x83\xc7\x4e\x70\x2d\x2b\x4c\x97\x03\x4b\x57\x9e\x0e\x30\x97\x82\x03\x9a\xe5\xea\x35\xe0\xf3\x91\x8f\xa5\x6a\xc3\x82\xe3\x5a\xf1\xad\x32\x6d\x5d\x40\x12\x90\xe3\x7a\xfe\x8c\xcb\x98\x16\x9c\xc3\xce\x16\x0b\xe7\xa2\x70\x27\x01\xbe\xb7\x03\x8e\x00\x66\xd8\x46\x61\x49\xdd\x91\x08\x0f\x62\x5c\xe5\x14\x04\x10\x39\xca\x9a\x54\x03\x1e\x0a\x46\xe0\x55\x79\x4c\xd0\x02\x54\x9d\xa1\x64\xd8\xa2\xf9\x60\x27\x60\x31\xc7\xe0\x3c\x21\x4a\x5d\x24\x4e\x93\x50\x28\x3a\x0d\xd9\x54\xf5\x78\x28\x38\x88\x4f\x28\x5f\x5f\xed\x29\x43\xde\x19\x22\x0b\x3a\x45\xa0\x17\x29\xe2\xf0\x72\x56\x4a\xc1\xa3\x08\xc5\xe8\xd5\x76\xcb\x28\x37\x3d\xb8\x54\x11\xa2\x38\xca\x37\x40\x5c\x80\xb1\xf0\xcd\xb4\x88\x65\xd2\x55\x74\xc9\xcb\xe4\xa3\x10\x2d\xc2\x83\x1c\x1b\x42\xda\x79\xd7\xc0\x80\x5e\x2c\x16\x1a\x13\x6b\xd5\x92\xbf\x13\x0f\x1b\x4b\x2c\x85\x61\x3d\x3b\x20\x82\x56\x14\x99\x5c\x0a\x2e\xfc\xa9\x8b\x4b\x2b\xa5\x2b\xab\x61\x90\x12\x18\x45\xbb\x28\xb4\x78\xdf\xce\xb1\x10\x58\xa7\xaa\xae\xe7\xc7\x80\x71\xc4\x57\xc7\x92\x03\x86\x3d\x89\xdc\xbb\xe8\xed\x94\x88\x57\x92\x6b\x79\xce\x64\xe3\x27\x0a\x0b\x71\x0e\x5c\x63\xae\x10\x39\xf4\x9d\x56\x25\xd6\x08\x66\x82\xa1\x2b\xa8\x51\x49\x94\x7a\x0c\xa4\x34\xd0\x16\x7b\x65\xcd\x10\xd5\xbc\x04\x0e\x0c\xa1\xcd\x03\x06\x1d\x47\x3d\xb9\x40\x3f\x59\xab\x38\x34\x28\x3a\xa2\x49\x19\x30\x19\x92\x89\xc2\xfd\xc2\xae\xb6\x36\xd6\xec\x80\x47\x08\x6e\x24\x16\x2d\x4b\xac\xf8\xa1\x15\x47\x87\xbc\xed\xbf\x47\xa6\x56\x6e\x36\x46\xb9\xb2\x41\x77\xb7\xaf\x3f\x36\xce\x80\xf3\xc8\xf8\x88\xe8\x7c\x14\xd5\xf2\xa5\x4c\x6e\x5c\x4b\xec\x42\xee\x94\x86\x97\xd2\x96\x47\x54\x8b\x90\x85\x54\x42\x3b\x76\xe4\x61\x1f\x9f\xc1\x87\x8d\x09\x75\xb1\xdb\x69\x61\x0f\x70\x2d\x3e\xbd\x69\xd1\x07\x66\x6b\x73\x51\xae\x96\x07\x73\x40\x31\xdb\x68\x80\xee\xe0\xa1\xb1\x5d\x20\x70\x87\xa4\x90\xbf\xb4\xde\x70\x2d\x08\x3e\x00\x31\xb9\xa1\xb4\xca\xf7\x20\x33\xcd\xc3\xc6\xb9\xa2\xf0\xf5\xf8\x45\x98\x83\xa7\xad\x45\x55\x3d\x54\xae\xad\x87\xca\x99\xe9\xd1\xcf\xdb\xc3\x45\xf0\x31\xc0\xd1\x0a\xb8\xac\x17\x3f\x8e\x66\xd7\x72\x08\x2c\x03\xfb\x61\x5c\x07\x77\xff\x51\xd0\x40\xc8\x06\xe7\x92\x91\xe6\xc1\x81\xb7\xdc\x3d\xec\x3a\x94\x94\xb1\x92\x4a\xcf\x77\x5d\x06\x94\x91\x76\xb3\x20\x24\x0e\x47\xfd\xae\xc0\x73\xee\x5f\x82\x90\x76\x7e\x41\x2f\x4a\x16\xe4\xb9\x6c\xa6\x8c\x27\xd7\xea\xb1\xaf\xf3\x29\x02\xaa\xe7\xdf\x5c\x88\x70\x86\x68\x39\x63\xab\xf3\xdd\xf1\xb9\x61\x47\xe8\x4f\xf2\x45\x5d\x63\x06\x38\x82\x0e\xd4\x66\x68\x4c\x83\x76\x95\x20\x1b\x66\x82\xab\x22\x8b\x5a\x9f\x44\xea\x27\xa0\x5a\x02\x3f\x16\x54\xe4\xe6\xba\x0f\xf5\xb0\xc2\x48\xbd\x48\x11\x1d\x61\x22\xda\xb7\x46\x8e\x91\x74\xcb\x47\xb2\xa3\xf2\x72\xf2\x20\x6b\x3c\xeb\x47\x56\x50\x4f\xcd\x30\xe4\xc4\x41\x37\x8c\x30\x07\x59\x5b\x37\xb9\x36\x29\xd0\xdb\x5f\xc3\x5f\x28\x1d\xf6\x98\x34\x1d\x84\xb1\xe2\x0d\xaa\xd8\x3c\xf5\x6c\x10\xc8\x1b\x68\x78\x20\x06\xd5\x54\xfb\x0d\xcd\xcf\xd6\x9c\x46\xa7\x64\x7e\x50\x4f\xda\x6e\xd3\x51\x09\xa4\xcc\x2d\xa8\xc3\x99\x71\x8a\x32\xa4\x97\xda\xaa\x08\x81\x2b\x5d\x29\xbb\x48\x28\xc3\xfd\x2a\xf2\x8c\xe1\xc9\x1e\x41\x0c\xc3\x86\xe1\xc9\xe4\x33\x40\xfb\xa6\x40\x95\xa7\x4c\x8c\x84\x8e\xae\xe2\xad\x82\x99\xc7\x49\x9f\x6b\x05\x57\x21\x70\xad\x85\x7a\x42\x8a\x1a\x47\x50\x27\x55\x0c\x40\x32\x77\x8a\x8f\xe6\xe8\x74\x10\x06\x36\xcc\x57\x9d\xe5\x6e\x7b\xd3\xba\xf9\x56\xd4\xc5\xfe\x1a\x27\xde\xc3\x9b\x2e\x28\x8a\xa6\x92\xc7\x67\xc5\x0d\x04\xc8\xa4\x31\x38\xf4\x62\x7a\xcb\xca\x43\x03\x6a\xac\x5b\x95\x12\xeb\xcc\xde\xb2\xd7\xd2\x84\x06\x77\x81\x38\x8e\x44\x48\x2c\x3c\xc0\x1c\x03\x93\xc8\x6c\xfe\xab\x07\x90\xca\xf2\x55\xa4\x87\x8a\xfd\xa1\x61\xb8\x54\x68\xda\x92\x7d\xc0\x70\x6e\xe6\x5c\xc6\xea\xa5\x9f\x5d\xa5\xc1\x12\xe8\x0a\xc9\x53\x24\x17\x69\xd4\xa8\x0e\xc9\x74\xf2\x50\xc8\xa7\x63\xab\x64\x0d\x96\x65\x6f\xbe\x45\x94\x15\x69\x13\xf1\x20\xa5\xc9\x45\xc0\xc4\x29\xaa\x9f\x05\xa4\x17\xb9\x30\x92\x85\x0e\xcd\x00\xaa\x55\x0c\xd1\xa3\xd1\xe1\x5a\x1d\xf1\x8b\x0a\x14\x29\x41\x89\xbb\xb8\xfe\xce\xb2\xde\xf8\x2f\x78\xfb\x3b\x2b\xc6\x8f\xc2\xcf\x74\x32\x47\x32\x68\x78\x19\x63\x7b\xc6\xba\x4e\xcd\xac\x9e\x61\x25\xca\xb5\x41\x33\x4c\x2d\x3b\x27\x6a\x67\xab\xc7\x14\xaa\x52\x72\x42\xee\xc4\x78\x91\x44\x31\x99\x7b\x77\x09\x9a\x63\xe8\xa4\xfa\xb7\x23\xde\x7b\x7a\x1e\x93\xe0\xf7\xad\x09\x49\xbf\x87\xcd\x31\x53\x5a\x69\x4b\x53\x1c\xeb\x82\xcd\x2a\x52\xf0\x9d\x32\x0c\xb6\x73\x2f\x5c\x14\x72\xd5\xb9\x28\x06\xb8\x8d\x4d\x9b\xef\x57\xaa\x6b\x0e\xfa\x8d\x92\xb2\xce\x64\x5f\x48\x2a\x79\xc3\x2d\xd4\x6a\xca\xd1\x80\xcf\x07\x45\x10\x9e\xaa\x16\x02\x32\xb6\xa4\xb5\xd8\x58\x8f\x3b\x46\xa7\xd7\xb0\x92\x77\xdd\x05\x5b\x66\x27\x0f\x7e\xd8\xe4\x5d\x1e\xbe\x39\xd5\xa1\x0d\xf6\x5d\x52\x1d\xb8\xc3\x47\xda\x5a\x50\xaa\xfb\x8e\xdd\xc9\x05\xa3\x96\x0b\x63\xbb\xf3\x21\x72\x37\x7f\x68\x4d\xfe\xb1\xab\x48\xfc\xc3\x07\x64\xdb\xf4\x43\x67\x8f\x76\xf3\x4e\xab\xaa\x77\xab\x92\xae\xdc\xe9\xc0\xab\x7b\xf7\x56\x18\x46\x76\x96\xa1\x62\x9a\xa8\xe0\x00\xf4\x91\xdf\x80\x99\xfd\x11\x63\x26\x7a\x20\x98\x6c\xa2\x72\x05\x30\x8c\x7e\x9e\x54\x1f\xef\xda\x60\x95\x74\x23\x2b\x52\x55\x22\xbf\xa2\x18\x38\x50\x6a\xd2\x1c\xf9\x1a\x3f\x3e\x77\x57\xc3\x96\xa6\xe3\xe9\x72\x50\xdb\x88\x00\x4b\xf8\x18\xea\x9c\xaf\x31\xd7\x27\x1e\x33\x54\xd2\x37\xc0\xc0\x27\xf8\x84\xa0\x79\xad\x54\xd1\x90\xe5\x46\xae\x42\xb5\x6e\xe6\xb6\x6b\xc6\xf6\x40\x6a\xbf\x17\xaf\x39\x07\x9f\x17\xdf\x34\xc6\xbb\xbb\xd5\x66\x55\xc9\xb6\x07\xae\xeb\x34\xae\xb8\xe6\x9a\xf2\x5d\xdb\x54\xed\xdf\x4a\xd4\x30\x3f\x28\x82\xc9\x47\x7c\xba\x02\x8b\x61\x9f\xea\x62\x4f\x21\xe3\x38\x9b\x89\x4d\x74\x48\xe3\x20\xd4\x4a\x8f\xb7\xcf\x90\x79\x4d\x72\x9a\x72\x8e\x61\xeb\x90\x13\xcf\x37\xdb\xa5\x67\xf9\x10\xd4\xbf\x82\x2d\x0a\x4d\x6f\x25\x78\x21\xf6\x73\x51\x97\x80\x40\xf6\x8f\x31\xf7\x8b\xf0\xe8\x1a\x0f\xa8\x83\x6e\x66\xe8\x76\xc1\xaa\x67\x50\x1b\xc0\x39\xeb\x36\x96\x12\x1b\xaa\x82\x1f\xd8\xeb\xaa\xff\x8e\x36\xc1\xf1\x24\xbf\x05\x20\x66\x45\xa0\x0e\x9f\x35\x7b\x53\x1f\x34\xe9\x9c\x48\x0d\x6e\x6b\xc8\x29\xf8\x53\x1d\xa9\xd8\x10\x48\xbe\xfa\xf9\x6e\x6b\x01\x26\xc1\xa1\x0a\x6d\xe1\x49\xb7\x3c\x23\x56\xe3\xbd\x80\xbc\x6f\x00\x48\xed\xfa\x75\xb0\x87\x61\x44\x82\x13\xd6\xce\x83\x2d\x27\x54\xf9\x22\x08\x59\xcb\x04\x1c\xd5\xbb\x7c\x9a\xac\x4e\x15\xf2\x17\x9a\xf7\x24\x48\x20\xda\x43\x20\x04\xca\xbc\x0b\xec\xa6\x07\x0b\x73\x39\x02\x3f\x60\x83\xab\x13\xf0\x7a\x62\xf0\x38\xda\xb3\x69\xd6\x36\x7a\x57\x0d\xdf\x40\xd4\xdc\xb8\x7c\xfd\xf1\xb4\x2d\x91\x89\x4f\x4b\x22\x67\xab\x74\xfb\x78\x27\x45\x3f\x94\x00\xdc\x8a\xfc\x02\xb9\x99\x40\xb7\x25\x13\x02\xe9\x51\x42\xf8\x60\x0c\x09\x96\xb4\xe5\x11\x58\x59\x36\x36\x76\x0d\xfe\xe8\x14\x3c\x18\x68\xae\x61\xf4\x46\x1a\xe2\xab\xce\xf1\x76\xbc\x4a\x96\x17\xa1\x48\x1c\xea\xd3\x07\x47\xba\xa5\x90\x7d\x99\x6a\x38\xb6\xb0\xd8\xb2\xf8\xdb\xd1\x92\x96\x2d\x52\xf7\x84\x01\x2a\xeb\x0b\xda\x07\x60\x0d\xaf\xc2\x65\xf8\x63\x1f\x2c\x9c\xac\xae\x17\x5e\x94\xd2\x2f\xc0\x08\x0d\x5d\xbc\x15\xb8\xdb\x82\xf0\xc9\x27\x40\xe3\x48\x08\xb2\x8f\x05\xb6\x3e\xe0\x79\x49\x4d\x31\x99\x88\x51\x1f\x5a\x83\x7a\x0e\xef\xc7\xb5\xcf\x56\xcb\xbe\x37\xac\x95\x35\xa5\x11\x9d\xa8\x91\xd1\x0a\xc5\xa0\x66\xbd\xf5\x06\xf6\xd3\xff\xc9\xa3\xda\xf7\xe4\x15\xb2\x85\xdd\x0d\x04\xd4\x7b\x4b\xe3\x88\x27\xb7\x1a\xf4\x5c\x4c\xaf\x54\x7b\x37\x70\x73\xa3\xc1\x91\xde\x93\x0d\x48\x65\xc2\x19\xad\xae\x10\xdf\x02\xcf\x19\x43\x51\xac\x97\xd1\xaa\xe6\x92\x24\x50\xd8\x63\x08\x73\x91\x5a\xc3\x8d\xc6\x82\x7e\x26\xe0\x33\x7c\xf4\x82\xaf\xce\x35\x88\xc2\x95\x41\xc2\x5b\x92\x17\xc1\x8f\x84\xbb\xec\x20\xbe\x05\xce\x23\xf3\x48\x5f\x71\x2a\x56\x23\xe9\x55\x55\x62\xa8\xf8\x8e\xe9\x0f\x3a\x67\x9a\x7d\xf0\xbe\x64\x82\xe2\x4d\x55\x03\xfc\xe2\x9c\xf2\x14\xc9\xca\xb6\xe0\xe9\x26\x01\xdd\x7c\x9a\x7c\x6b\x86\x48\xe2\x63\xb6\xe4\x23\x85\x1e\x3d\x0b\x70\x88\x3a\xd9\xab\x35\xba\xdf\xdb\xb1\xda\x2d\xc7\xe6\x2d\x48\x9f\xa8\x21\x04\x1c\xe6\x10\x54\x50\xfe\xc6\x4b\x6b\xe2\x33\x9e\x75\x2d\x46\x85\xad\x29\x3d\x4f\x20\x47\xd3\x38\x90\xc5\xb5\xa3\x51\x7f\x56\x8f\xf1\x8d\x4c\xaa\xba\x2e\xf5\xa3\x8f\x70\x2f\xaa\x97\xe6\xae\x91\xa7\xb9\x6e\x5a\xe9\x92\x7e\xda\xb2\x7d\xd6\xef\x94\x06\x50\x97\x6b\x69\x9a\x97\x2c\xe3\xee\xf0\x93\xbf\xd5\xd2\xd7\x51\x10\x10\x43\x68\x86\x9e\x07\x18\x9f\x8e\x58\xa2\x7e\x3a\xb1\xb3\xf8\xb4\xb7\xb0\xb2\xd0\xa2\x88\x28\x46\xc0\xe5\xdf\x1d\x90\xcf\x3d\x0c\xa9\x8f\x2e\x63\x5b\xd2\x68\x03\x2d\xf5\xd4\x30\xd9\x77\xea\xe1\x16\x9c\x4c\x7b\x60\x23\x06\xa8\x00\xed\x58\x2f\xc2\x62\x43\xb1\xf9\x23\x95\x36\xef\x9a\x82\xca\xce\x9b\x7b\xcd\x52\x8e\x40\x1b\xe8\x00\x8d\x75\x7c\xf3\xb2\xf6\xb8\x03\x9b\x19\xc4\x3d\xeb\x48\x5a\x31\x00\x52\xc6\x87\x39\x00\x45\xfa\x91\x83\xcb\x10\x9c\x42\x1f\x3a\xb4\x9f\x63\x7a\x13\x1e\x50\xcd\x38\x4f\xb0\xe3\x68\x28\x1b\x07\x52\x6a\xf4\x5d\xed\x62\x93\xa8\xb5\x27\x37\x21\x3a\x1c\x26\x9d\x76\xa5\x36\x14\x6a\x09\x67\x4d\xc7\x85\xd0\x2d\xcf\x91\x02\x39\x87\x9d\xa8\x68\x71\x77\x2f\x36\x81\xb6\x4f\x79\xcc\x6c\x17\x72\xbb\xc8\x7a\x41\x66\x8e\x41\x29\x0d\xaf\x9e\x0b\x41\x5c\xaf\xd5\x49\x57\x4d\x4a\x44\xe3\xf0\x4a\x0f\x67\xb6\x69\x4e\x42\x07\x8e\x22\x52\xa4\xeb\x75\x10\xac\x8d\x3d\x40\x2e\x50\x4a\xac\x17\xc7\xa1\x97\xd9\xec\x12\x88\x05\x48\x85\xd9\x16\x58\x30\x28\x59\xcb\x5f\xfb\x34\x85\x3c\xee\x28\x14\x06\x24\xa9\xed\xa1\x9f\xd7\x22\xed\xc6\x99\x79\x31\x19\x7b\x75\x0d\x21\x54\x73\x6d\x86\x7d\x1a\xea\x4e\x09\x21\x06\x70\x85\x2e\x74\xd2\x8e\x11\xad\x1e\xfd\x2d\xb4\xec\xc9\x20\x21\x92\x2b\x1b\xc6\xe2\xf3\x3e\x48\x10\x2f\x56\x45\xdd\xfd\x84\x42\x5d\x39\xc6\xd8\xeb\xcc\x7e\x82\x62\x7e\x76\x26\xcf\x97\x83\xec\xb5\xcb\xd9\xcf\xd5\x5d\x62\xaf\x5a\xce\xc7\xba\x2b\x8c\x5b\x42\x85\x99\x92\x2b\x3c\x78\x42\x85\xd7\x23\xa1\xc2\x24\x25\x53\x98\xb6\xc4\x0a\xef\x9e\x58\xbb\xf3\x62\xec\x34\xf6\x84\xf1\xd8\x7d\x4f\xe7\x6b\x99\x7d\x47\x11\x28\xb6\xe2\x41\x70\xd1\xf3\xca\x46\xd6\x36\xf4\xec\xb1\xdf\x0d\x38\xcd\xc4\x0f\x59\xc8\xce\x55\x78\x57\x61\x88\x43\xd5\x88\xb3\xe2\x7a\x9a\xb7\xb2\x3e\xeb\x9c\x50\x6e\x5a\x4e\x64\xe9\xd4\x7e\x3e\xf1\x9d\x14\xcd\xc6\xb0\xd5\xc8\xd3\xda\x49\xc5\x3c\x79\xf8\x10\xbb\xf1\x7b\xf6\x20\xcf\x6a\x0f\x00\x4c\x9f\x20\xb2\x01\xe1\xc3\xd0\xbb\xb6\x3e\x8f\x1d\xae\x93\x7b\xb5\x0e\x9d\xa6\xcf\xaf\xb3\x99\x72\x46\x3d\xfd\x9b\xbd\x44\xff\x14\x27\xb2\xa1\x9d\x48\x1b\x0d\x77\x4b\x6f\x32\xf6\x7b\x53\xbe\x6b\x07\xb3\xe0\x53\x06\xa8\xab\x8d\x61\x41\x32\x04\x57\xcf\xd3\x1d\x3f\xd0\x01\xef\xfb\x09\x90\x7c\xae\x95\x8e\xc4\xfb\xd0\xdc\xc0\x38\x3c\x67\x62\x0b\x45\x65\xd5\x1e\x11\x7a\xfa\xdb\x6a\xad\x5f\xa7\x36\x53\x77\xcd\x1f\x74\xae\x06\x70\x93\x38\x26\x66\xe5\x46\x0c\xe9\xae\xb2\x4d\x36\x8e\x7a\xd4\x05\x57\x68\x3a\xf2\x08\x31\x34\x96\xcf\x35\x78\xdb\xb8\x92\x66\xed\x5d\x81\xf1\x35\xd3\xaa\x1d\x06\xda\xa8\xf8\x4d\x69\x2d\x68\x0a\x8c\xd4\xb1\x65\xc3\xe6\x26\xea\xc4\x01\x3e\xcf\x7f\x4b\xa5\x94\x2c\xfb\x6a\x2d\x10\x71\x3d\x41\x7b\x03\xb9\x60\xf0\x08\x5f\x63\x51\xf8\xf5\xbc\x53\x25\xed\x41\xa3\x81\xb6\xb2\x5f\xb2\xc7\x9b\xd8\x5f\x53\xdc\xdc\x36\xbb\x4a\xbd\x25\x32\x42\x9b\x9f\x8f\x80\xea\x6f\x2d\xba\xd8\x5d\xfc\x3a\xef\xe7\x2f\x7a\x8e\x13\xc7\x1a\xa5\xd5\x2b\x4a\x50\x13\x93\x3d\xd9\x0f\xb2\xfb\x84\x26\x84\xc1\x45\xa1\x2b\xa2\x57\x7f\x24\x00\x4e\xa1\x7f\x09\x5b\x5b\x81\x54\x54\x4f\x78\x7f\x7f\x7f\x34\x04\xe4\xc1\xe5\xaf\x5d\x7d\xff\x3b\xad\xf7\x8d\x93\x1f\x68\xf4\x63\xad\xeb\xbb\xd2\xdd\x4e\x14\x77\xd1\x6f\xe2\xcb\xf1\x87\xf4\xf5\x4f\x72\xe5\x00\xdc\x61\x52\x3f\xa0\xdd\x32\xdc\x3b\x15\xfd\xda\x5e\x5e\x67\x88\xab\xde\x1e\x55\xf5\x25\x48\xea\x67\x2a\xc7\xda\xd2\xae\x3d\x62\xc8\x73\x2a\x99\xf6\x4e\x90\xbb\x00\x6c\x18\xfe\x3a\x31\x0f\x2d\x98\x42\xd9\x60\xd5\x76\x11\x3f\x00\x0b\x8a\xbf\x26\x76\xa8\x68\xc0\xb8\xb9\x98\x01\xac\x9a\x98\x41\xd1\xe8\x07\x12\x4d\x31\xd8\xe5\x85\xb6\x27\x68\xd4\xcc\x89\x77\x66\xe6\xdb\x7f\xba\x3e\xcd\xc0\xd8\xcd\x5e\x3b\x29\x89\xec\x41\x78\x38\x50\x56\x22\x15\xa4\x44\xa1\x38\x40\xd1\x75\x11\x1a\x12\xe7\x79\xb0\x90\xce\x87\x57\xb9\xa1\x5e\x0e\x84\xa8\x6a\xda\x46\x72\x7b\xd9\x90\x57\xaf\xb1\x3b\xb2\xb6\x1d\xb4\xb6\xc2\xf7\x1c\x2d\x3a\xa1\xcc\x79\x91\xa6\xa0\xbd\x84\xda\xfc\x11\xfd\xea\x69\xf1\x38\xb3\x92\x02\xfa\x60\x84\x74\xc3\x10\x4a\xbc\x2e\x26\x57\x9a\xfa\x3e\x3f\x76\xd7\xff\x7d\xf5\xaa\xe9\xae\xa6\xea\x91\x5d\xaf\x1f\x6d\x65\xa5\xe3\x33\xd7\x48\x0f\x85\x7e\xf4\xb0\x80\xcc\xf4\xf2\xcf\x08\x28\x74\xa8\x74\x5f\x28\x1f\xf9\x76\xdb\xad\x24\x4b\xb3\xae\x59\xeb\xb8\xea\x55\x4b\x26\x02\xd3\x8a\x92\x3a\xe1\xad\xbc\x8f\x2d\x14\xed\x37\x00\xd6\x29\x97\x5c\x73\xce\x3c\x82\x58\xba\xa2\x1d\xc7\x95\x03\x14\x15\x74\x6d\xfa\x3c\xc5\x00\x58\xf8\x68\xe9\xa6\x22\x58\x5b\x50\xbd\x77\x71\x51\x62\x42\x97\x38\x97\xeb\x25\x83\xaa\x93\xb5\x12\xaf\x86\xf3\x6c\xdf\x2e\xb6\x0f\xae\x71\xc7\xd9\x8d\x43\x2e\xb3\x17\x67\x12\x7b\xcd\x4c\x44\x18\x48\x19\x31\x1b\x76\xb8\x86\x8b\xfe\x11\x95\x07\x64\x1a\xed\x24\xf7\xb8\x87\x5e\x1f\x82\x92\x31\xfe\x4b\xee\x0a\xf9\x8e\x69\x9c\x5a\x6e\x37\x83\x77\xd5\x2e\xf6\x1f\x6a\x3e\xaf\x42\x36\x00\x06\x3b\x87\xce\x20\xf6\x96\x3e\xa6\x1d\xf1\xeb\xa1\x57\xd5\x16\xcd\x29\xd3\xaa\x0e\x4c\x9f\x81\x6e\x48\x7d\x35\xf3\x9d\x78\xe2\xa8\xc3\x6c\x35\xc7\x81\x88\x3d\x65\xc5\x2e\x48\x24\x57\x61\xf1\x0b\x81\xda\x9f\xe1\xa3\x63\x5e\xda\x05\x79\x17\x7b\x04\x51\xaf\x17\xf6\x89\xbf\x4b\xa5\x17\x65\xa7\x73\x72\x1c\x77\x55\xd5\x5a\x2d\x90\x2b\xbc\xa7\x69\x75\x75\xab\xdd\x0c\x36\x66\x38\xed\xd2\x20\xce\x1e\x1c\xae\x1e\xd3\xd5\x23\x0c\x57\x55\x5b\x42\xa9\x12\x90\xad\xcf\x2b\xe4\x6a\x62\x90\xf6\x08\x07\x28\xb7\x0d\x5d\xe7\x85\xb5\x74\xc5\xd7\xcf\x7d\xb1\x4e\x99\x09\x88\xbf\xdf\x5e\x1b\x3f\x92\x76\xd2\xae\xd0\x66\x10\xee\x8c\xe2\x1f\x37\xe1\x18\x89\x14\x3c\x03\xd2\x20\xc7\x6a\x39\xac\x4c\x41\x44\xca\x19\x20\xc9\x28\x87\x90\xcf\xea\x20\x7f\x03\x0f\x51\x6a\x94\x77\xd8\x67\xa9\xe0\x81\xa5\xc9\xbe\x5e\xc0\x79\x82\x51\x1a\xae\x34\x99\x24\x8f\xfb\x3d\xf8\x79\x12\x4e\x76\xf2\x5e\x89\xde\x0d\x90\x1f\xc9\xbb\xa8\x9f\x5c\xb0\x94\xec\x98\xba\xe7\x32\xa4\x8b\xdf\x14\x9c\x8c\x3f\x25\xac\xda\xfa\x5d\xfe\x49\x81\x95\x3d\x0c\xd9\xa7\x7f\x8e\xd5\xd8\x3c\xf0\x31\xef\x2f\xcf\xda\xa9\x1f\xd7\xa1\x41\xbf\x3d\x23\x5e\xf6\x66\x44\x01\x6c\x4d\x6e\x9e\x32\x54\xeb\x61\x27\x88\xbe\x56\x4e\x5e\xae\xc7\x9a\x3b\xd9\x0a\x33\x81\xab\xb9\xb3\x13\x85\x1a\x3c\x76\x14\x17\x3c\xdf\xfd\xd9\xb3\xd2\x7a\x06\x94\xa6\x30\x81\x09\x91\x23\xb7\x51\x52\xec\x6e\xa2\x30\xa4\xe1\x79\x2a\x1a\xb2\x3b\x50\xe6\x70\xc4\x8d\x36\x6e\xfc\xd1\x7c\xea\xb2\x37\x66\x37\x4b\xfe\xf3\x91\xc0\x69\xa6\xc5\x57\x71\x10\xe5\x95\x48\xc4\x81\x96\xab\x20\x1d\x6e\xfa\xa4\x4f\xda\x53\xa8\x44\x88\x01\x23\xf1\xee\x02\x62\x3f\xdd\x5d\xb1\x4d\xfa\x9c\xb2\x33\x1b\x77\xef\x40\x52\xd1\x2d\x3b\x59\x9a\x59\x75\xb7\xd9\xd0\x17\x3b\x42\xd3\x5c\x52\x88\xc6\x05\x61\x08\xea\xc8\x66\x63\xb5\xd0\x90\x64\xcf\xdc\x19\xa2\x78\x1b\x3e\x83\x0b\xa2\xa9\x41\x5a\x37\xed\x90\x43\x20\x87\x59\x49\x92\xa7\x07\xdd\xcd\x89\x08\xe0\x43\xea\xca\x0a\x23\x30\xb0\x76\x48\xa4\x1c\xef\x4c\xd9\x3e\xf3\xd8\xf0\x73\xc1\x90\xba\x71\x18\xf2\x90\x2c\xd1\xef\x37\x63\x02\xba\x1d\x21\xc5\xdb\x30\x4b\x47\xd6\xc6\x98\x78\x89\xec\x32\x24\xc9\x82\xf9\x71\xba\x2c\xb3\xe6\xd9\x69\x69\xdd\x2c\x5b\x47\xe3\x49\x9b\x49\xbd\xe0\x01\x5f\xb5\xb5\x71\x46\xea\xac\xe4\xae\xbe\xd2\xbf\xa2\x7d\x7a\x48\x68\x20\x53\x00\xa7\x93\x49\x69\x64\xe3\x48\x4c\x61\x55\x4b\xca\xbf\xfb\x6c\x3c\x23\x14\xa8\xab\xde\x73\xa5\xb4\x97\x60\xa4\x12\x48\xe4\x29\x7b\x3b\xa8\x19\xef\xa3\x45\xc6\x41\x45\xbb\xb6\xc6\x77\x5b\x82\xd9\x82\x76\x2d\xc0\x1c\xd6\xa0\x67\x68\xc6\x3b\x38\x4a\x03\x8a\x91\x0f\x03\x7b\x97\xdc\xd1\x37\x52\x02\xd8\xd3\xa0\x7c\xa0\x78\x0d\xa4\x56\xc5\x3f\x1d\xee\x91\x6e\x6e\xba\xa6\x9d\xae\x68\x69\x53\x9f\x71\x89\x14\x00\x48\x55\xf9\xc9\x1f\xcf\x1b\xba\x69\xfc\x40\xd8\x6b\x6f\x54\x00\x8e\xef\x88\x8e\xc3\x14\x72\xc4\x73\x10\x4e\x62\x4d\x7c\xef\x82\xb8\xd7\xa8\x9a\x18\x0c\x8c\x49\x11\xf6\x0c\xb1\x63\x65\x3f\xd2\x88\x4a\xfc\x32\x0a\xf8\xd3\xf1\xff\x59\x2b\xe0\xdc\x2d\xa0\x5f\xa9\xe0\xc1\x35\x9e\x2b\x70\x06\x77\x25\xf2\xaa\x34\x6b\xd1\x09\xd0\x82\x2a\x9b\xa7\xd5\x34\x94\x80\x0c\x39\xbe\x07\x7a\x66\x6e\x60\x97\xac\xf3\x48\xb6\x70\x55\x66\xc6\xcd\xb2\x3d\x85\x01\xd4\xcd\x18\x0a\x9d\xd9\xc2\xfa\x98\xf7\xdb\x55\x62\x17\xfc\x18\xb9\x7c\x08\xa1\x2a\x05\x82\xeb\x97\xa0\xd0\x83\xc4\x14\x81\xc6\x57\x03\x82\x1d\x13\xdc\xaf\x32\xd6\x91\x3d\xbe\x6c\xdd\x0d\x60\xee\xf2\x65\x26\x00\x76\x54\x06\x3b\x12\xcc\x68\xaf\x96\x5f\xd6\xfe\xe1\x2e\x01\x8f\x51\x19\x4e\xdb\x80\xa9\x0f\x6e\xc6\x12\xf3\xa3\x3a\xf6\xa7\x68\xaa\xc3\x2c\x6e\xa6\x76\xec\x66\x5f\x4a\xee\xe4\x5d\xe7\x19\x7a\xec\x01\x8a\xb9\xa4\x64\xb3\x69\x27\x29\x75\x4b\x71\x1a\x44\xbd\xd0\x4d\x24\xa5\x95\x7f\xd5\x9d\xa3\xda\x4f\xec\x49\xbc\xdf\x21\x7b\xd4\x2f\x59\x30\x9d\x35\x0e\x3f\xc2\xad\x25\x17\xd5\x7c\x59\xe7\x9d\x93\xa4\x4e\x95\x97\xe7\x53\x3b\xea\x08\xb5\x09\x90\xec\x7a\x0f\x22\x9f\xb1\x73\xf1\xbc\xbb\xbb\x91\xaa\x14\x4a\x1b\x18\x72\x5e\xd5\x1e\x64\xd8\xf9\x68\x07\x8d\x00\x92\xaa\x1d\x68\xae\x81\x5e\x0c\x9e\xf2\x5d\xc2\xd4\xf9\x57\xb1\x69\xa8\x8b\xe7\x2d\x30\x5b\x19\x51\x43\xe9\x7b\x91\x35\x89\x1f\x75\x66\xec\x92\x05\xa2\xd8\x71\xf8\xfd\x8b\x16\xa8\x15\xde\x7d\xc5\xaf\x8a\x68\xc7\xca\xfa\xac\x2e\x30\x66\x28\x23\x88\x21\x5a\x95\x2b\xca\x80\x50\x6d\xd0\xc9\x86\x41\x20\xc9\x42\x87\x73\xb1\x52\x4c\x83\x58\x3d\x62\xf4\xec\xfc\x2e\xa2\xcc\xd7\x84\x52\x7b\x62\x25\x01\xcb\xb7\xd0\xc8\xbe\x48\xeb\xb7\x68\x82\x5a\xbe\x5b\x6c\xd0\x6c\x63\x91\x91\x58\x55\x74\x03\xc6\xc9\x17\x19\xbe\xe1\x8e\xbd\xfb\x8d\x4c\xae\x8f\xfd\x94\xb9\x14\x7e\xcf\xa4\xa1\xdc\x5b\x7d\x03\x4d\x18\x3c\x7b\xe2\x9d\xb7\x49\x7a\xc0\x1e\x78\x31\xae\xa3\xec\x86\xc9\xde\xc0\x57\xd7\x3f\x60\x88\x29\x1d\x8f\xce\x1f\xd3\x93\xe8\xa9\x53\x23\x93\x9e\x06\x0c\xd3\x39\xb6\x3e\xb8\x4e\xca\x18\xee\x78\xc1\x5f\x5c\x2e\x57\x05\x6e\x29\x7c\x3e\xf2\x4d\x7d\x97\x78\x51\x0b\x80\x9d\x51\xfb\x2e\x72\x12\x05\x22\x2a\x89\x7f\xf2\x9f\xa7\x9d\x7e\xf4\x4c\xf4\xc9\x12\xe4\x94\xfd\xc2\x59\xb1\x5f\x81\x35\x34\xa3\xac\x18\xbe\x06\x46\x74\xf6\x33\x1b\x50\xb3\x0e\x88\xe5\x5f\x21\xd1\x2d\x6f\xa5\x83\xd3\x55\xe5\x11\x1b\xeb\x40\xc7\x35\x35\x9c\x45\x58\x7a\xef\xa8\x16\x33\x9e\xa8\xe3\xc2\xd8\xe8\xdb\x01\x8c\x33\x0c\xc9\xe7\xf5\xe7\xca\x9f\x05\x54\xd5\xf0\xf1\xaf\xcb\xa0\x27\x5c\x83\x24\x1f\x3c\xb8\xb6\x2a\xa5\xf5\xf9\xd3\x4f\xca\x59\xad\xef\x39\x52\x0f\x4a\x0a\xc6\xf3\xd9\x83\xcb\x78\x8d\x64\x8a\x0d\x63\xa8\xa5\x14\xbf\x53\x95\x52\x97\xbf\xd8\xfa\x58\xc4\x56\xec\x06\x24\x2f\x88\x57\xc1\x77\x99\x3d\x01\xcc\x2e\x08\x03\x92\x07\x00\x9b\x17\x3f\x40\x17\x68\xa0\xbb\xcd\x7d\x47\xc7\x10\x70\x18\xfd\xa5\x6d\x9b\x7d\x39\x39\xdf\x00\xa0\x07\xdc\x58\xa7\x95\xa5\x24\x21\x09\x0d\x95\xed\xca\x73\x76\x18\xd4\x10\x04\xd2\xb0\x12\x3c\xa3\x05\x14\xd9\xa8\x46\xa0\xbb\x3e\xb2\x4a\xd4\xaa\x56\x49\x01\xfa\x9a\xce\x3a\x5f\xb0\xbc\xf7\xd0\x0c\x3b\x7d\xa4\x16\x10\x29\xc7\xae\x77\xcf\x4e\xb8\x79\x4b\x0d\xa0\xc8\xbf\x2d\x8d\x71\xd7\x8b\xd4\x90\xc5\x56\x09\x22\x53\x83\xf2\xd1\x2a\x19\xd4\x4c\xca\x57\x15\x38\x59\x82\x98\x21\x8e\x56\x4f\x48\xfe\xde\x24\x78\x1e\x34\x12\x33\x2e\x80\x55\x08\x1a\xc0\xd6\x09\x04\xb1\x5a\x84\x25\xd5\x8e\x5a\x81\xbd\x81\x84\x95\x22\x0a\x05\xd3\x5a\xe2\xfd\x6b\xc8\x8a\x23\xba\xfe\x86\x72\x0b\x20\xc9\xfd\x13\x34\xf0\x2b\x69\x9e\xb9\xc6\x09\x50\xa5\x48\xe0\x3e\x98\x01\x1d\x8d\x6e\x9c\xa8\x29\x15\x5e\x4b\x35\x7d\x70\x76\xc6\x21\xb4\x53\xf1\x54\xaf\x99\x89\x14\x62\x1e\xdc\x84\x08\x7e\x61\x19\xeb\x75\xc4\xb5\x89\x60\xc7\xe3\xb8\x85\x9e\x7f\x6c\x08\x1e\x78\x1e\xfe\x0a\x10\xf6\x25\xad\x70\x97\x4e\xb8\x47\xb8\x33\xa5\x80\x78\x39\x78\x19\xf0\xec\x67\x68\xf9\x28\xc5\xe2\x94\xb4\xcf\xe9\x45\x9a\xe1\xb6\x16\x55\xd8\x72\xe0\x91\x71\xf5\x57\x75\xdc\x84\x39\xaa\xe4\x1c\xb7\xdf\x82\x4d\xaa\x45\x6b\x80\x31\x3e\x06\xf1\xa6\xef\xee\xa3\xfa\xa1\x55\x3b\x61\x7f\xc4\x56\x18\xa3\x93\x70\xf9\x9c\xa8\x9d\x64\xc1\xf9\x52\xd4\x26\x01\x7e\xf2\xd1\x24\xe4\x24\x09\xbe\x45\x88\x75\xb5\x85\x76\x33\x7d\x79\x15\x53\x81\x7b\xbc\x89\x80\x38\xae\x0f\x2b\x88\x53\x49\x5c\x37\x12\x44\xc7\x79\xc4\x90\x18\x6c\x30\xf9\x06\xe0\xd5\xc9\x33\xd4\x0b\x36\xd1\x5f\x73\x3f\xdc\x21\x24\x88\x7c\xf8\x8c\x73\x39\x7e\x59\x51\xfd\x6d\x60\x03\xa5\x5b\xd7\x40\x76\xd6\xd9\x40\xf0\x8a\xf7\xd5\xb9\x15\x73\x36\xc0\xbd\x6d\xcd\xec\xeb\xd8\x55\x4c\x20\x0a\xa0\xea\x23\xa6\x21\x6c\x31\xe3\xdb\x69\x9b\x92\x4e\x38\x5d\x4f\x77\xa8\xd3\x1e\x96\xf9\x5d\x00\x60\xaf\x11\xd0\x1a\x6a\x4c\x1c\x04\x55\x41\x51\x8e\x19\x9d\x21\x0d\xac\x74\xe2\x69\xb2\xf4\xa2\x67\xdc\x38\xfc\xc3\x3f\xff\xa2\xd4\x08\x98\xfa\x0b\x77\x9a\x61\xe6\xcf\x81\x58\x37\xae\x75\xeb\x1e\x48\xa5\x17\x99\x05\x5e\xa5\xce\xf1\x6f\xc0\x7e\xa3\x93\x19\xe1\x68\xd4\xd3\x26\x6b\x52\x13\x6c\xc0\x87\xe8\x61\xb8\xd3\x09\xfa\x4f\x8b\x3c\xdb\x97\x54\xd6\xb9\xd5\x7b\x9e\xd6\xf1\xea\x1c\xa4\x5a\x03\xb1\x74\xd7\x63\xa3\x67\x99\x73\x0d\xb3\x21\xe9\x4d\x4a\xa3\xa2\x14\x75\xed\x36\x4e\x90\xfe\xc4\x2b\xa6\xbc\xf0\x57\x9e\x8b\xff\x78\xf9\x11\x3d\xea\xc8\x54\x1a\x08\x9b\x08\x37\xe4\x02\xd3\xd4\xe1\x8f\x48\xe7\x76\x1f\x27\x2c\x69\x02\x4d\xa1\x8c\xe4\xa2\x01\x9e\x90\x9b\xb3\x23\x3e\xb9\x7a\xc9\x2c\x10\x1e\xb4\x0b\x5f\x71\xe7\x76\xd2\x5e\x03\x00\x1a\x56\x09\xf9\x2d\xe2\x1b\xd1\x32\x9f\xee\x0c\xa4\x1f\x57\xb5\xc6\x0f\xbc\xac\x13\xa1\xc0\x89\x00\x26\xf4\x6e\x6a\xe6\x41\x9f\x12\x0f\x37\x06\x9b\x81\xf7\xf5\xe0\x0c\xa2\x55\x03\xa0\x48\x87\xb1\x13\x78\x8d\x28\x03\x33\xf2\x23\xa8\x08\xa1\x71\x67\x56\x98\x1c\x6c\x26\xdf\xe0\xcc\x7a\xb8\x61\x42\x53\x1a\x8b\x03\xe1\x1d\x89\xc7\x11\xb0\xfd\x15\xd5\xba\x40\xf5\x7c\x93\x35\x1c\x25\x57\xe3\x32\x71\x87\x9e\xa5\x6e\x2c\x9d\x17\x03\x1c\xc5\x9c\x2f\x82\xd2\x53\xb1\xc2\xa6\xa0\x46\x6c\x8f\xc6\x78\xd4\xf4\x15\x2f\x57\xf2\xda\xa8\x30\xd4\xe6\x24\x13\x6f\x65\x02\x8a\x33\x1a\x94\xc9\x74\xdf\x53\x11\x2b\x4a\x72\xe2\xcc\x9c\x6e\x83\x72\x18\xba\xfe\x3a\xc5\x06\xbe\x4f\xcb\x26\x8d\x8d\x22\xea\xf6\x13\x1c\x64\xda\x12\x2b\xc1\x4c\x1c\x78\x62\x28\x4f\xf4\x5a\xd5\x62\x77\xed\x7c\x03\x2c\x65\x59\x0a\x01\x8f\x93\xea\xe9\x71\xdf\xc9\x26\x68\x6b\x8e\xb1\x18\x25\x64\x37\xe3\xd9\xd5\x0e\x35\x76\x8d\x0a\x1c\x00\x74\xa6\xfe\x6a\x61\xfa\x84\xe8\x91\x72\x6a\xe8\x3c\x52\x4c\xc3\x23\x31\xe9\x3f\x16\x40\x0d\x70\x24\x22\x15\x6c\x1d\x69\x4f\x88\xa7\x5c\xd4\x83\x6e\x31\x0d\xad\x4a\xd1\x07\x8d\x98\x2a\x27\xaf\x05\x57\xd1\xe5\x81\x90\xb8\xbc\x7c\x0b\xfe\xc7\x6a\x1d\x99\xe0\xda\x9c\xb6\xf1\xf6\xa8\x4a\x61\x60\x11\x29\xc1\xd5\x13\x05\x47\xa1\x40\x85\x0e\x68\xe4\x6f\x7c\xda\x3f\x4f\xb7\x21\x50\xb5\x58\xdc\x08\xd4\x8f\x6d\x1b\x0f\xd5\xda\x7a\x61\x3a\xd6\x98\xaa\x27\xae\x5e\xca\x52\xd4\x7c\x45\xa4\xde\x03\x4a\xae\xe4\x82\x48\xea\x11\xd1\xb8\x03\x45\xba\xfe\x59\x39\x18\x51\x95\xf6\x18\x97\x22\x4f\xcc\x1e\xb3\xe2\x15\x2f\x8b\x8d\x86\x09\x18\xad\xb6\x6f\x53\xc2\x10\x69\xda\xf1\x1e\x26\x0e\x35\x63\x1b\x20\x2b\xd8\x90\xd4\x0a\x7a\xbe\xc0\x00\x56\xb6\x79\xe4\x0a\x5d\xad\xac\x77\x16\x1c\xe5\xc1\x38\x4a\x09\x52\x95\xa7\x47\x21\x14\x23\xbf\xfc\x2c\xa6\x08\xad\x70\xd0\xea\x70\x5c\x96\x9d\x3a\xa6\xdc\xa4\x13\x1c\x1b\x9e\x42\x41\x43\xd1\xc0\x61\x5a\x0a\x32\x4b\x6b\x5f\xe4\x54\x24\x4c\x22\xec\xb4\x7a\x64\x27\x94\xa2\x80\x8b\xe2\x02\x2e\xc4\xed\xa7\x9b\x7a\x2e\xb4\x81\x9c\xad\x41\x8c\x68\xa7\xf7\x35\x61\x17\xe5\x1d\x26\x48\xb5\xee\x32\x2d\x79\xc3\xed\x36\x63\xb1\xda\x21\x8b\x8e\xcd\x62\x16\xe9\x2a\x70\x5d\x59\x85\x74\xda\xf9\xca\x17\xfd\xd9\xea\xe6\xc3\xc2\x50\xe7\x68\xa8\x4b\x68\xa1\x2b\x20\x32\xd9\x10\x04\xbe\x04\x66\x4f\x06\xa9\x14\x72\x49\xd8\x82\x68\x6c\x86\x80\x12\xc6\x9e\x7f\x7a\x14\x49\x03\x61\x9a\x32\x15\x4f\x57\x1e\x30\x48\xfe\x72\x04\xf9\xa5\xf1\xa6\x83\x81\x36\xd2\x59\x4d\x14\x73\xfb\x64\x18\xf7\x62\x53\x7f\x9f\xf3\x2d\xef\x82\x2b\xe7\x02\x2c\xcd\xc6\xbe\x8c\x33\x64\x52\x26\x7b\x45\x25\x32\xa0\xa1\x23\x22\x80\x4d\xe1\xb1\x6d\x10\x93\xc6\x89\x97\x7f\xd5\x19\x28\xf2\x32\x0c\x70\x9e\x4c\xeb\xa9\x5a\x3d\x58\x24\x05\x29\xe1\xe0\x9c\x94\x17\xf6\x95\xea\xa0\x65\xe6\x50\x09\xb1\x6f\x05\x58\x32\x6d\xe0\x0c\x0d\xac\x60\x3e\xe4\x73\x2b\x06\x83\x94\x95\xbd\x9b\x02\xe0\x75\x3e\xd3\x16\xdf\x00\x67\x8b\x2b\x50\xe2\x52\x6e\xc6\x89\xb8\xd2\x7c\x7d\xc4\xe6\x7b\xa3\xc1\xa5\x87\x2a\x38\x6a\x9d\x7b\x36\x4a\xb3\x13\x5d\x71\x4f\x09\x02\xf5\x2a\xcd\xe2\xd5\x3e\x16\x74\xd9\x8b\xea\x1c\xc6\xe8\x4a\xd3\x38\xf2\x69\xbb\x56\x30\x46\x83\x9a\xcd\xf7\x54\x43\x3f\xab\x9f\x05\xa5\xfb\x9b\x66\x83\xb7\xec\x6a\xb1\x00\xf8\x42\x9a\xea\xab\x8b\x00\xe6\xfb\xb4\x51\x1a\x32\xf4\x93\x89\x47\x31\x9c\x9f\x1f\xbc\x6b\xaa\x5c\x41\x8a\xfd\x0a\xb3\x70\x9f\xb5\x72\x64\xb8\xa4\x14\xbd\xe5\x64\xc2\x91\xa9\xc3\x5c\xad\xe6\x9c\x4e\x58\xa1\xd7\x08\x4e\xe8\x8e\x12\x23\x84\x4e\x48\xfd\x95\x44\x4c\x98\x29\xa2\x21\x49\x3e\x03\x45\x17\x29\x75\x91\x59\xc8\x50\x37\x18\xa1\xf7\x13\x40\x14\xe2\x08\xaa\x69\x08\xd2\xe0\x72\x21\x8d\x4c\x85\xca\x7f\xb4\xb8\xc5\x13\xaf\x30\x34\x0a\x15\xba\xac\x4e\x19\x90\x18\xf8\x38\xb3\xb8\xf9\x69\xba\x1f\x0e\x6b\x81\x70\x3c\x1b\xe7\x78\x50\x88\x38\x7b\x13\xae\xc0\x5c\x17\x66\x2c\x84\x3e\xd5\x7b\xa0\x7c\x20\xa5\x33\x26\x67\x0b\xae\xe4\x2b\xa1\x51\x1c\x42\x4a\x1e\xe0\x8e\x84\xc6\x6b\xf5\x7f\x3f\xd9\x4c\x56\xa8\x6c\xfe\x64\xd1\xac\x6b\x39\xa0\x44\xcc\x7f\xde\x40\x45\xaf\xc3\xd1\x37\xc0\xfa\x77\xcd\xfb\x48\xb3\x44\xf0\xba\x28\xaa\xb9\x84\x89\x0a\xe8\x82\x2c\x82\x2c\x83\x65\x43\x8d\x67\xd3\x47\x96\x5e\x59\xc8\x95\x4f\xe8\xbd\xaa\xd5\x48\xf6\x63\xa0\x34\x1a\x36\xdf\xd3\x8b\xa3\xa6\x60\xa9\x6c\x46\xc2\xd9\x46\x2a\xda\x68\xa3\x40\x21\x50\xd4\xef\xd1\xd5\x26\xf6\x43\x22\x1f\x4e\xbd\x6d\x9a\x05\xc5\x3e\xd7\x00\xe8\x80\x71\x8f\xb5\x9b\x35\x95\x01\x81\x6e\xaa\x8e\xa6\x02\xa6\xf1\xa4\xcb\x13\xde\x55\x68\x32\xa3\xe0\xa7\xc0\x07\x0b\xf2\x76\x4f\x11\xdd\x95\xe7\xc6\x88\xd7\xdc\x6f\x3a\xf9\x24\x12\xcb\xe0\x3d\xb3\x77\x6a\xf4\x26\xee\x32\xa1\x8d\xb2\xcc\x1c\x4c\xab\xd7\xe3\xd1\xdd\x5a\xec\x56\xe9\xf6\x27\xda\xce\xd1\xa3\x1a\xce\x3a\xed\x66\x84\x95\xb3\xd3\xf7\xeb\x46\x1d\xf3\x3f\x0d\x1b\x59\x65\x14\x45\x7c\x03\xd3\xe3\x22\xa4\xaf\x98\xc7\x27\xd1\xe1\xc2\xfa\x80\x7b\x7f\x7f\xa1\x9d\xfb\xd7\x9c\xbf\x16\xfa\x4b\xe7\x64\xbb\xb1\xac\xe1\xdf\xfa\x06\xba\xc8\xbe\x94\x7a\xf6\x9e\xb5\xed\xb6\xe5\xc6\xba\x86\xfc\xd9\x95\x6d\x1e\x80\xda\xe6\xa8\x80\xcf\x89\xb9\x55\x51\xc1\x3a\x27\xeb\xcc\xb0\xc6\x13\x99\x16\x20\x2b\x1a\x5a\xe1\x41\x63\xa1\x52\x43\x85\x43\x38\x07\x0a\x7e\x50\xb3\x97\x2a\xf8\x32\x0c\xe7\x7c\x90\x01\x83\x16\x66\x5d\x3d\x56\xf1\x26\xa8\xf2\x17\x67\xb8\xf0\x0a\x33\x79\x3c\x36\xdb\x57\x74\x8d\xfb\x75\xd3\x1b\xa8\x6c\x6a\x80\x93\x13\xe0\x47\xad\x56\x36\x34\x34\x64\xc1\x36\x2c\x71\x42\x3a\x4f\x51\xc9\x12\x97\x50\x7c\x97\x28\x48\x86\xcb\xca\xb6\xc5\xd9\x4c\xae\x89\x2a\xe0\x53\x0f\x53\x13\xe0\x8d\xdb\x54\x8d\x44\x82\x51\x2b\x99\xc4\x12\xba\x74\x93\xc2\x2e\x7c\x95\xce\x27\x9a\x02\x99\x1f\x94\x30\x13\x17\xb4\x3d\x64\xcd\x0f\x0a\x03\x06\xcb\x88\x73\xdf\x78\x60\xaf\x91\xee\x4d\x99\x55\xcf\x31\x1a\xbb\x9f\xf1\x85\xd6\x80\x23\x8f\xd4\x39\x56\xc5\xd0\x90\x05\x25\x26\x79\x08\xc2\x93\x35\x97\x87\x64\xd3\x67\xff\x99\x03\xcb\x28\x3b\xcb\x97\x32\x54\x98\xe4\x79\x54\x44\x14\x80\x53\x3f\x6b\x15\x33\xe2\x84\xad\x89\x36\x34\x17\xbc\x60\xdb\xa2\x75\xcd\x05\x2f\x4a\x4b\xa3\x55\x0d\x60\x72\x01\xec\xd8\xf5\x57\x85\x50\x10\x0e\x21\x2a\xea\x1b\xe9\xf2\x35\x7e\x08\x6a\x7e\x35\xba\x96\x42\x36\x58\x1a\x43\x03\x16\xe8\x02\x62\x22\x5e\xe7\xd6\x95\x99\x97\xb7\x98\xc7\xda\xd6\xe2\xd0\x7e\xec\xc1\xa5\x9c\x03\x69\x89\xdf\xab\x8c\x7a\x2c\x57\xf8\x4d\x2d\x67\xd5\xf1\x97\xa8\x52\x95\x42\xa6\xa4\xf0\xf1\x48\x32\xbb\xf6\xa4\x6e\xa7\x1d\x3c\xbb\x3a\x8e\xcb\x58\x07\x33\xaf\xb4\xe9\xb1\x7a\x5e\xa0\xce\x78\xdc\x96\x04\x84\xfc\x52\xc0\x12\x14\x9a\x45\x0a\xc2\x71\x5b\x6c\x89\x8c\xd0\x13\x6d\x70\x38\xe0\x80\x69\xe0\xc9\x9d\x84\x14\xa6\xc4\x23\xe8\x42\xb0\x7a\xeb\x9e\xe0\xce\xa2\xc2\x81\xad\x96\x7f\xd4\xd2\xa4\xcb\x35\x9d\x28\x61\x56\xb9\x7c\x94\xdb\x07\xfa\x39\x1c\x95\x41\xf4\x2d\x31\x21\x44\x01\xc3\x62\xbb\x10\x32\x40\xe9\x5d\x7e\xe1\x85\x2e\xd0\x5b\xc5\xc4\x4c\xc0\x22\xa3\x7a\x9f\x4b\xe1\x0a\x2f\x94\x34\xc0\x31\x7e\x70\xed\x98\x08\x40\x86\x81\xc5\xf0\x9f\x88\x05\x07\x9a\x88\xb5\xb1\xef\x1e\x24\x06\x1b\x40\x09\x21\x23\x14\x13\xf0\x78\x61\x9f\x4d\x4f\xed\x49\xd6\xc5\x53\x38\x81\xa9\x13\xa9\x85\x46\x9a\x78\x84\x89\x5e\x34\xa5\xfd\x79\xdf\x03\x00\x35\xfc\x86\xce\x50\x26\x84\xcc\xfe\xba\xee\xca\x1b\xf9\x5f\xd9\x61\x91\xc4\x50\xd8\x37\x92\x8a\x69\xa2\x17\xf3\x58\x75\x4d\xf9\x24\x1b\xc7\x7f\x38\xd2\xa4\x8c\x5a\x53\xc3\x35\x0d\x88\xfd\x0f\x84\x7e\x1d\x0a\x20\x80\x3b\x6d\x7b\x1e\xfe\xb6\xab\xa8\x58\x0b\xf3\xe7\x8c\x13\xb8\xbd\x99\xee\xb8\xda\x73\xeb\x8e\xd9\x47\x7c\x2d\xcc\x1c\x2c\xd1\x7b\x76\xb7\x09\xaa\x3b\x77\x89\xce\x07\xb1\x2e\xe1\x0e\x0c\x89\xe7\x28\x0f\x26\x96\xc9\x18\x85\x95\xaa\x8e\x4e\x3d\x47\x48\xf9\xaa\x34\x81\xb0\x95\x89\x74\x97\x46\xf5\xeb\x38\xe8\x98\x7d\x14\x40\x3c\x81\xa2\xc0\x49\x89\x61\x6e\x02\x2e\x19\xd4\x2b\x7c\x84\x74\xdd\x65\x34\xff\x63\x47\xef\x42\x04\x8c\x3d\x43\x8d\x6d\x68\xdf\xbd\xef\x6f\xf7\xf1\xad\xf1\xea\xb4\xa7\x22\x23\xa1\xc8\x39\x04\x08\x03\xc5\x32\x76\xd1\x58\xe2\x28\x13\x87\x88\x98\x89\x02\x42\xea\x5d\x55\x97\x71\x12\xff\x09\x5a\x18\xce\x7d\xa9\x2e\x80\xc4\xb2\xad\x57\x99\x94\x7d\x57\x2d\xbf\x40\x38\x67\xbf\xa1\x72\xf8\xf7\xe9\x78\x39\x43\x36\xf7\xe0\x1f\xc0\x73\x1e\xe4\x17\x0b\x8c\x3f\xbe\x17\xf0\xd9\x80\xeb\xc7\xef\x32\xe2\x6c\x02\xad\x04\x3a\x22\x29\xc1\x7f\xee\xd5\x1c\x02\xa3\xc7\xe1\xdf\xb7\xc0\x69\x42\x60\x3a\xbb\x6a\x1f\xb4\x60\x8b\xce\xca\xb6\x40\x0f\x9f\xe8\x7f\xd0\x22\xcf\x88\xd2\x74\xd4\x5f\xf5\x88\x57\x04\x54\x24\xc2\x60\x89\x43\xfd\x9a\x60\x6e\x8f\xbd\x74\xf2\xfb\xa9\xe9\xfe\x56\x64\x27\x69\x62\x6a\xab\x27\xb5\xa4\xa5\x3a\x8a\x56\x20\x80\x30\xf5\xe9\xd8\xfa\xd0\xe2\x1c\xea\x13\xb3\x94\xa9\xe5\x8a\x35\x5d\x29\x0b\xa0\x79\xd6\x73\x81\x67\x4d\x48\xa9\xb2\x98\xe0\xae\x25\xc8\x72\x8f\x57\x45\x77\xec\xc0\xd3\x72\xdc\xa2\xee\x33\x51\xd5\x44\xa8\xd4\xeb\xa9\xb2\xd0\x13\xd4\x2d\xf4\x33\x45\x9e\x16\xa7\x48\x66\x5c\x18\x08\x3c\x42\x05\x00\xb2\x4f\x09\xf9\xef\x37\x12\x5c\xc0\x48\xdd\x7e\x3b\x7e\xb2\x78\x7f\x83\x08\x6e\x82\x21\xd3\x1c\xc8\x74\xf5\x88\x8d\x59\xf2\xc7\xd6\xa9\xfd\xb9\xd0\xbb\x19\xa7\xd6\x3b\xb1\x65\x6d\xdb\x98\x36\x0e\x02\x52\x39\xfd\x7b\x4c\x89\x62\x3f\x3d\xba\xa8\x0f\xbc\x93\xa8\x6a\x79\x6d\x45\xf9\xe6\x29\x83\x8c\x74\xc1\x22\xe0\x46\x4a\x02\x32\x22\xf5\x5c\xea\x28\x6d\x9a\x61\x1a\x79\x61\xfa\xa4\x4b\x20\x19\x57\xf2\x19\x6e\x9a\xe4\xf4\x69\xe9\xa6\xc9\x4c\xeb\xa6\xf5\xf7\x11\xa0\x1c\x13\xa5\xd8\x58\xa4\x04\x1e\x0a\x55\xc0\x7d\xd0\xc5\xd6\x1e\xab\xef\x1e\x2b\xef\x1e\xb3\x15\x11\x3b\x94\x0e\x88\x3f\xbd\xea\x0b\x98\x78\xc5\x37\x1a\xac\x0d\xe8\xdd\xf0\x90\xcc\x2c\x39\x7f\x1a\x6d\x26\x76\xf8\xa3\xf9\xc7\x7e\x6b\x1e\xfb\x2d\x0c\x89\xc7\xc0\xa7\x9d\xbc\xae\x76\x57\xfa\x79\xe5\xd0\xa1\x07\x26\xe2\x12\x5e\xf3\x55\x38\x8a\xdb\x25\x83\x34\x2d\xc3\x16\xe7\xb5\xe7\xdd\xfb\x90\x38\xee\x7f\xb5\x6a\x76\x0a\x87\xd3\xdd\x1b\x4a\xda\xeb\xc8\x78\xee\x9d\x03\xad\x28\x83\x37\xb8\xac\xcc\x85\x6d\x1a\x42\x63\xaa\xf5\xb5\xdb\x7f\xfa\x67\xa1\x37\xb3\xa6\x34\xad\xa6\x38\x96\x42\xa3\xab\x27\x5e\x3d\x58\xd8\x91\xdf\x06\x6c\x0b\xbf\xef\x03\x2f\xda\xfd\x96\xdf\xb2\xe0\x9a\x06\xe4\x9b\x7a\x4e\x60\xb8\x07\x76\xc1\x9f\x9f\x78\x8e\x14\x21\x77\x65\x7f\xf0\x2c\x36\x4b\xb1\xbf\xbc\xce\x64\x0d\x05\x09\xb9\x4d\x83\x50\xf2\x5e\x44\x0e\x67\x59\x68\x4d\x01\xf3\x8f\x90\x60\xe6\xe6\x1b\xd4\xf5\xf5\x5f\x7b\x86\x33\x77\x5d\x3a\x54\xff\x8b\x58\x65\xf5\x5c\xbc\x58\x1f\x71\x14\x88\x46\xd3\x47\x52\x9d\x50\x0e\x5c\x30\x66\xcc\xdc\x88\x9b\x88\x91\x29\x60\x0a\x36\xad\xbd\x38\x49\x10\x13\x74\x9f\x15\x52\x72\x5f\x10\x53\xfc\x12\xed\x5d\xa8\xa5\xeb\x80\x45\xe8\x56\x4f\x48\x44\x52\x64\x3a\xf3\xfe\x18\xf5\xc7\xdf\xc2\xbe\x4b\x92\x66\x0a\x47\x1e\x36\xa0\xe8\xeb\x35\xee\xe5\x20\x4d\x55\xbf\x11\x1f\x7b\xcb\xae\x50\x68\xfe\x34\x54\x3f\xb6\xe8\x96\xb2\x16\xf2\xbb\x50\x8e\x36\x98\x89\x57\x6f\xcc\xee\x7e\x53\x43\x78\xf4\x69\x28\x40\xcb\xc1\x49\x7c\x96\xa8\x48\x6d\x87\x52\xc6\x2e\x51\xfb\xf7\xe9\x7e\xb8\x69\x4b\x98\xcb\x48\xce\xba\xbc\x39\x91\x99\x4b\xa5\xe8\x6b\xda\xc9\x1f\x42\x98\x5b\xe0\x85\x94\x4b\x33\xd6\x8d\xb5\x81\x71\x17\x5c\x68\x7d\xfe\xa3\xb0\xdb\x1f\x26\x27\x18\x44\x1c\xae\x8b\x3c\x43\x90\xe5\x1f\x4c\xa1\x18\x18\x7c\xca\x40\xe2\x19\x9f\xc0\x82\x05\xf6\x81\x4e\xdb\x61\x3e\x49\xa0\x08\x4f\x94\x5b\x48\x4f\x69\x66\x8b\x0d\x91\x33\x05\x04\x58\x90\xae\x49\xfe\x1c\x79\x78\x23\x95\x65\x65\x30\xb9\x99\x6f\x46\xdf\x35\x7a\xeb\x9b\x74\x52\xf3\x84\x81\xe6\xb2\x6c\x72\x7c\xdb\xb1\x16\xb5\xfd\xc7\xef\xc8\x53\xd6\xa8\x7f\x55\x4a\xb9\x88\x72\x15\x29\x21\x3a\xd7\x3b\x71\x2b\x68\x34\xaa\xb0\x90\x0f\x5b\xde\x61\xfe\x1d\x13\x1d\x64\xeb\x52\xf6\x07\xc3\x5b\x7f\x90\x2c\x2f\x41\x1b\x2c\x05\xaa\x61\x20\x60\xed\x0e\xac\x6c\x8e\xe9\x37\xcd\x42\xdc\xe1\xcd\xc6\xd7\xf2\x53\x13\xe1\x50\x32\x09\x66\x9b\x80\x8f\x8e\x4e\xe2\xa5\x20\xdd\xbc\x11\x92\x8b\x42\x7d\x7b\x34\x2f\x0f\xcb\xb7\xee\x03\x6c\xd1\xb3\x3b\xfa\x6b\x00\x81\x00\xe6\xc7\x27\x67\x48\xa9\x0b\xf7\x1f\xeb\x47\x0f\x8c\xf4\x95\xd8\x92\x8a\x1c\x0b\xff\x18\xa2\x6e\xc2\xcb\x64\x3c\xbf\xea\x56\x8d\x11\x39\xda\x1f\x70\x65\x35\x4e\x3b\x4b\x87\x1b\x9a\x9c\x2b\x44\x26\xd7\x96\x0e\xa9\xed\x71\x55\x96\x94\xa4\xd3\x33\xe0\x6f\x21\xf5\xf6\xf6\x7f\x9b\x60\xae\x84\x27\xea\x5f\xbc\x42\x30\x6a\xac\xfb\xe6\x8f\xdd\x07\x37\xa6\xa6\x0b\xc4\x54\x07\xed\x81\x16\x44\x63\x55\x69\xc0\xab\x5c\x1a\x4e\xfa\x0a\x8b\xb3\x4a\x07\xad\x6e\xd6\x68\x2c\x48\xb6\x6d\xc3\x7c\x85\xb9\xad\x11\xcf\x7c\x02\x01\xb7\x72\x3c\x1a\x8a\xfd\xbd\x91\xc7\xe6\x3e\x32\xa7\x67\xcd\x8f\x63\xfc\x15\xfe\x63\x8e\x3d\x98\x8f\x15\x6e\x91\xa6\xd2\xbb\xd7\x83\x7a\xba\xc4\x52\x70\x53\x61\x70\xc5\xab\xe8\x69\x79\xb8\xa6\x73\x7b\x6d\xaf\x2b\xb3\x21\xe8\xab\x21\x20\x4f\xe7\xb9\x7f\x4c\xbe\x7a\xcf\x22\x44\xa5\x5e\xc3\x29\xec\x34\x0d\x15\x31\xd0\x4a\x0f\x05\xac\x07\x97\xf0\xed\x6e\x68\x49\x36\x47\xab\x55\x1f\x0c\x47\xdb\xc5\xfd\xe0\xda\x00\x9b\x98\x35\x3b\x04\x6a\x5b\xf5\x9f\x51\x07\x9e\xb5\xbd\xdc\xd8\x73\x7e\xd9\xf8\x88\x58\xf9\xcb\x7d\x25\x56\x82\xa3\x33\x18\xe5\xbf\x7b\xf1\xb9\xff\x28\xb3\xbe\xde\x00\xe0\xcb\xbb\xfe\x5b\x97\x99\x74\xf9\x34\xa6\xde\x7d\xab\x48\x8e\x12\x8e\x4b\x2c\x5b\xd2\x90\x2f\xe3\x27\x96\x46\x4e\x6e\xbb\xf6\x34\xf7\x30\x4f\xad\xfc\xbe\xb4\xc6\xad\x84\x4b\x5f\xd8\x49\x7c\xfd\xaf\x90\xd7\xe7\x6d\xa1\x1c\x9a\x48\xc1\x15\x05\xa4\xec\xa3\x0d\x1b\xd8\x01\x08\x18\xf8\xa2\x74\xb9\xc6\xd5\xf5\x5e\x19\x57\x8f\x7d\x96\x46\xc3\x5c\x00\x4b\xf5\xa6\x88\x57\xe3\xa9\x53\xa4\xff\xaf\x57\x36\x25\x07\xb8\x49\x7e\xd7\xa9\x1e\x6d\x2e\x06\x40\xd7\xa8\x8b\x46\x18\xb6\x42\x81\x84\xe6\x5f\x20\x61\x78\xec\x09\x04\xdc\x44\x0a\xa2\xed\x3a\x6e\xc9\x4c\x32\x58\x09\x30\x04\x5f\x07\x4e\x33\xef\x5f\xb4\xb8\xf7\xec\xfb\xc5\x15\xda\x40\xff\xd1\x31\xad\xe4\x56\x5c\x37\xb2\x94\xa5\x68\x5d\x2c\x44\xf8\x84\xdd\xf1\xcc\x80\xbf\xaf\x3c\xcb\xa5\x61\xcb\xd8\x5c\xa8\x92\x68\x87\x3d\x7c\x56\x58\x3e\x2d\x06\x01\x65\x11\xf5\xec\x2f\x6f\x74\x22\xd5\x07\x7a\x66\x2b\x84\x3d\x8c\xab\xca\xed\x98\x6d\x18\x7d\x4a\x73\x2c\x4f\xfe\xd0\x81\x66\x85\x7b\xd0\x2e\xb6\xd8\xa6\x90\x1a\xc0\x2e\x7e\x5e\x79\xbb\xf6\x34\x4e\x00\xc0\xdd\x99\xe0\x59\xae\x93\x02\x17\x29\x2f\x1d\x00\x4d\xc4\xc6\x42\xd0\x84\xb4\x7a\x2e\x9d\xc2\xe4\xe1\x9c\xed\xf0\xea\xc6\x2e\x4f\xd1\x72\xce\x8b\x92\xaa\xe0\xca\xe4\x32\xff\x0b\x09\x8f\x6d\x1f\xaf\xba\xd1\x67\xda\x13\x2c\xfa\x79\xda\xad\xfc\xf6\x71\x9d\x20\xaa\xdf\x40\xda\x45\x9f\x49\xb7\x8b\xce\x0a\x27\x5d\x94\xd7\x2e\x30\xaf\x3a\x65\xb6\x6f\xf7\x62\x0b\x2f\x6c\x50\xa7\x2a\x9d\xd6\x3a\x15\x4c\x11\x4f\x9a\x1f\x12\xec\x38\xd3\x21\x58\x98\x07\x10\x6b\x21\x97\x72\xfa\x7a\x7e\xc6\xdd\xea\xde\x7e\xdc\x85\x00\xa8\x70\x53\x63\x0c\xb4\x12\x78\xce\xe4\xeb\xee\x75\xed\xd2\x73\xdb\x76\x65\x80\xfb\xb4\x1d\xbb\x00\x39\xfc\x9a\xaa\x29\xa5\xaa\xe4\x2a\x05\x6a\x33\x5a\x02\x08\x48\x46\x03\x8d\x01\x27\x8c\x6b\x1f\x7d\x9e\xd0\x93\x74\x77\xea\x39\x76\x09\xc3\x68\x14\xc8\x5b\x27\x12\x12\x1a\x36\x44\x53\xf8\xc0\xe7\x7c\x86\x12\x99\xa8\x8b\x27\x20\x7c\x45\xa9\x1f\xc7\x61\x5f\x37\xbb\x6b\xd7\x45\xe1\x0f\xc6\x84\x17\xe0\xbc\x0b\x6a\x4c\x0f\xe7\xe4\xbd\xb6\x5f\x5d\xc5\x1e\x7e\xec\x8c\x93\xb5\x9d\x0c\xd0\xa9\x32\x78\x11\xe4\xf4\x67\x58\x30\x4d\xb5\x8f\x06\x56\xe0\x54\x59\x98\xf7\xc6\x3b\x3f\x41\xc3\xe9\x79\x62\x13\xea\xfb\x75\xee\xa1\x0a\xc4\xd0\x37\x68\xb8\xa4\x2b\x08\x1b\xb6\x15\x29\x3d\x75\xd6\x3b\x8f\xd0\xbe\x10\xf2\x72\x1f\x17\x3e\x81\xd1\xd6\xa6\xb8\xb2\x8f\xc3\xec\x5f\xa7\x03\x45\x99\x0f\x03\x08\xe7\xb4\x0c\x01\xff\x72\xf7\x9e\xac\xa7\xaa\xd3\x9c\xee\x55\xd2\x6e\x89\xce\xe1\xac\x39\x68\x87\xff\x0a\x30\x18\x33\xe5\xc8\x69\x15\x1c\xde\x79\x2a\x44\x2b\x20\xb8\xa2\x63\x0a\x6d\x22\xb9\x3c\xc7\x25\xcb\x5b\xb9\x6e\x9b\xce\x05\xeb\x92\x57\x2e\xf9\x03\xdb\x04\x3a\xe8\x71\x99\x5f\xb2\x42\xa8\x78\x73\x89\x92\x7e\x2e\x3c\x97\xe4\xb6\x08\x09\xeb\xec\xe2\x5f\xe9\x8e\xeb\x3f\x4a\xb1\x8e\x67\x42\x3a\x9e\x87\x5d\x45\x7d\x00\x09\x1a\xb2\xd5\xa8\xf7\x62\xa0\x36\xf4\x23\xd6\x82\x56\x28\x1a\x78\x52\x41\x66\x3c\xc9\xa0\xa8\xf4\xc2\x8c\x08\x98\x66\xb8\x33\x88\x23\xf2\x68\x8d\x9e\x2d\xff\xc5\x11\x05\xe8\x42\x55\x41\xb3\x5a\x85\x27\xe3\x45\x5e\x05\xf2\x76\x92\x2f\x4c\x65\x82\x89\xd8\x18\x89\xce\x34\x1f\x75\x4a\x68\xf8\xdc\x74\x48\xa4\x19\x54\x35\xa7\x67\x06\xf4\xdb\x8f\x93\x18\xc4\xce\x1c\x14\x34\x63\x8f\xc9\x85\x33\xd9\x1d\x76\x17\x49\x68\x65\x68\x14\x76\x7a\xd7\x01\x21\xd4\x27\x0f\x07\x94\x69\x67\x99\x00\x8d\x6a\xe9\x99\xc0\x55\x48\x3a\x2f\x24\x53\x77\x35\x04\xbf\x54\x65\x42\xbf\x63\x07\x4f\xce\xdb\x22\x94\xd8\x57\x80\x35\xda\x67\x40\xf9\x9f\x83\xd1\x28\x0c\x45\xb8\x3d\x6d\x75\xb2\xbb\xed\xd2\xe4\x88\x6c\x6b\x13\x07\x5a\x36\x2a\x7d\x9a\x98\x74\x60\xd8\x6d\x9d\x88\x08\x09\xc6\xb7\x93\x1b\x19\xc4\xa8\xb0\x2f\x8c\xd9\xf3\xd1\x52\x1a\xbf\x6c\xa3\x0a\x43\x13\x54\x35\x4d\x2d\x77\xdf\x37\x5f\xa2\x4f\x0f\x74\xab\x25\x2f\x78\x54\x34\x8d\x15\xb8\x89\xac\xd4\xf7\xf4\x28\xfc\xf2\x66\xa7\xdf\x6b\xf2\x1f\x5b\xc1\xa2\x57\xe6\x58\x7a\xe7\x33\xfa\x58\x01\x78\xcb\xdc\xe8\x8c\xe0\x47\xb1\x61\x67\xa9\x30\x2a\x2d\x14\xc7\x5b\x24\xd5\xa1\x91\xa0\x8a\xfb\xae\x6b\x83\xe4\x37\xb9\x42\xc6\xf9\xee\x92\x40\x51\xef\x2f\xff\x78\x41\x01\x95\xb0\x57\x4c\xa2\xeb\x35\x07\x4f\x9f\xf0\x97\x10\x6a\x51\xa2\x66\xc8\x85\x5a\x5b\x14\x45\xba\xbc\xea\x6e\xfe\x69\x6d\x43\x37\xc0\xa9\x0c\x88\x8d\x60\xfa\x96\xa3\x10\xce\xd7\x32\xfc\xd8\xf6\x74\x57\xc1\x21\x1a\x7b\x28\x33\xae\x89\xae\xb8\xfa\xd7\x89\x1f\x2d\x47\x6b\x64\x7b\x06\xca\xf6\x97\x98\xf3\xfc\xc7\xf6\x62\xcc\x94\xd5\xf3\xff\x3d\x7d\x15\xa9\xa2\x95\xea\x6e\x4a\x92\xd7\x27\x81\xb7\xc6\xcf\x33\x1d\xdf\xb0\x89\xbe\xf2\x73\xb4\xdb\xe1\x09\x43\x37\xb8\xe4\x76\xd9\x5d\x24\xf8\x15\x0e\x34\xdf\x25\x0b\xf4\xf9\xc6\xad\x12\x9f\xe8\xe6\xde\xc3\x26\xbf\xb9\x6f\xd3\x0b\xb2\x58\xe2\xd5\x6f\xe3\xdb\x7c\xea\x58\x19\x75\xb3\x8b\x51\x8d\x0e\x85\x12\x19\xd3\x3c\x29\xf0\x26\xfc\xa9\x24\x28\x64\x28\x22\xb5\x28\x46\x08\x5c\xf1\xef\xae\x5a\xc7\x08\x44\x96\xf6\xbe\xd1\xb2\x94\xd2\xc4\xc3\xc4\xd6\xf1\x3c\xaf\x05\x1d\x70\x2d\xea\x78\xcd\xfb\x19\x83\xe3\x80\x4b\x16\x8c\xe1\x15\x0f\x6f\x32\xde\x9e\x3e\xde\xe4\x72\x7c\x4a\xa7\x2a\x94\xd8\x5a\xf7\xd2\xce\xf6\xf2\x03\xa7\x73\x39\xaa\xce\x4c\x7e\xa0\x46\x07\x89\xc2\xc3\x47\x7c\x78\x2e\x2f\x9a\x2f\x92\xed\x8a\xd9\xbc\xab\x9a\x97\x77\x79\xf9\x7b\x91\x37\x48\x10\x13\xff\x5a\xc7\x5e\x7d\x1e\xba\xd5\xaf\xb5\x6b\xb4\xff\x90\x4a\xa6\x76\x3f\x8d\xb5\x8f\x6f\xc1\x44\x67\x86\x2f\x96\x41\x3e\xf8\xc1\x77\x7e\x88\x26\x85\x82\x3f\x5e\xc5\x65\x23\x3b\x1a\x37\xea\x08\xc9\x50\xfe\xc0\x4d\x44\x6b\xe0\xa9\xd4\xfc\x79\xee\xdd\x73\x0e\x96\xb6\xd6\xf5\x4a\x6d\x81\xa8\x5a\xa9\x01\x47\xf0\xa6\x01\x02\xcf\xda\xad\xdd\x29\x79\xec\xa8\xeb\x7b\xd9\x80\x54\x92\xca\x76\x3c\xbf\xda\xee\x15\x09\xe4\xc4\x57\x24\x78\x54\x66\xfe\x56\xee\xf1\x94\xce\x8e\x7a\x33\xcb\xa7\x1c\xe9\xe6\xb5\x77\x97\x0e\x11\xf8\x6c\xed\x40\x40\x2f\x08\x6e\xc7\xdc\xbf\xb5\xf6\x41\xa6\xd7\x3a\xc0\xae\x65\x38\x1a\xd2\xbb\x2a\x88\xa2\x95\xa9\xa3\x43\x48\x6e\x93\x87\xfd\x5b\x4b\x27\x2b\x5f\xa8\x46\x3c\x9d\x7b\xb2\xfe\xe5\x21\x78\x73\x62\x29\x0b\x06\x48\x41\x86\x63\xc9\x68\xcb\x8d\x2e\xe3\x75\xe5\x62\xd7\xd3\xd5\x38\xf4\xf2\xe9\x9a\xfe\x28\xdf\xac\x27\x8c\x8a\xb7\x66\x3c\x8d\x15\xa1\xb9\x92\x3d\x35\x75\x0f\x81\x6c\x14\x67\xb8\x61\x8e\x45\x5c\x51\xd9\xa3\x0a\xf9\x6d\x79\x79\xb4\x8f\x47\xba\xd9\xb8\x87\xd1\xa2\x76\xd3\xc7\x7b\x14\x54\xc7\x55\x3a\x2f\xeb\x00\x4b\x69\x4c\x1e\x06\xc3\x46\x05\x8c\x8e\x48\x53\x6d\xb4\xba\xc3\x48\xf4\x62\xfc\x35\x47\x24\xf2\xb6\x37\xaa\xe8\x76\x06\x79\xae\xb0\xdd\xe5\x4e\xb8\x56\x83\xcb\x8f\xba\x73\xc5\x16\x89\x3e\xba\x76\x65\x90\xf2\x7c\x14\xbf\x6f\x21\x3b\x50\x0c\x97\x9d\xe3\xb4\x75\x8d\x6d\x47\x97\xda\xbe\x44\x94\x11\x96\x19\xbb\xb8\x72\xd7\x4e\x03\x5e\x06\x3f\xc0\x86\x83\x32\x83\x53\x24\x61\x66\x96\x48\x87\xfb\x2d\x75\x73\x48\x51\x5b\x3f\x0c\x49\x42\xc2\x54\x9d\xf3\xdf\x5f\xac\x2c\x00\xc9\x02\xb1\x91\x4d\x21\x90\xe6\xb5\x7f\x92\x45\xa4\xb8\xba\x4a\xd5\x76\xab\xb9\x17\xbd\xc7\x53\x8a\xac\xf4\xc4\xee\x29\x6b\x0d\x9d\x81\x32\x9a\x8d\x99\x03\xf3\x0a\x51\xd5\xb4\xec\x8f\x1a\x24\x2c\x2f\xbc\x16\x4a\x0a\x53\xdd\x08\x2f\xfe\x07\x4b\xbb\x0e\x07\xee\xea\x2c\x66\xa7\x5c\x66\x40\x56\xd3\xaf\xdf\xcb\x32\xe9\x24\xde\xe8\x9b\x68\xb0\xe5\x17\x6c\x37\x4f\x87\x5e\xb0\x3f\xf2\xd8\x2b\x48\x74\xce\x8f\x0f\x91\x4c\xa1\x2f\xba\xd6\x83\x04\x29\xbd\x35\xe5\xbc\xfe\x1a\x69\xd7\x7a\x1e\x7a\xca\x9f\x5d\xed\x3a\x43\x9f\x9f\x55\xca\x3f\x7a\xf0\x5e\x54\x3e\x18\xd6\xef\x2d\x44\xdd\xac\xa7\x6a\x93\x51\xa3\x16\xa8\x3c\x7f\x43\xa9\x76\x47\x33\xc2\x69\x39\xb2\x4e\x32\x76\xaa\xc8\x82\x4a\x7e\x74\x67\x93\x39\xe0\xeb\xb1\x5e\xa4\x6d\x75\x68\x3c\x1f\x04\xb2\xb1\x38\x47\x8c\xb3\xb4\x50\x3c\xf0\x88\x5f\x1f\x08\xf0\x61\x2b\xca\x82\x8a\xeb\x5a\x1a\x84\x19\x33\xb6\xd4\xe2\x6a\x54\xfc\xf9\xac\xf5\x02\xae\xfb\x73\x17\x33\x4e\x0c\xd6\x01\x97\x29\xc6\x6f\x2a\x0c\x8b\x0c\x58\x80\x36\xc7\xa5\xd3\xc0\x3a\x96\xaf\x6f\x80\x44\xc3\x87\x52\xfb\x31\x04\xbf\xdb\x9e\x5a\xda\xa2\xc7\x9a\xf9\x86\x60\x4e\x29\x32\x96\x47\xc8\x0b\xb5\x49\x14\x94\x15\x1e\x0e\x5a\x00\x82\x28\x45\x46\x5c\x91\x9d\x82\xe8\x44\x3d\xe0\x4b\xf5\x41\x14\x78\xc5\xed\xd2\x17\x0b\x7e\xe8\xa8\x04\x0a\xa2\xbe\xb2\x0c\x72\x65\xb9\x56\xc5\x8b\x80\x05\x9e\xcc\x7c\xf0\x20\xff\x1d\x0d\xeb\x11\x48\xf1\x66\x21\x29\x28\x5b\x8b\x8e\xf8\x60\x52\x45\xfa\x08\xb6\x68\x0f\x5c\x7f\x75\x6a\x33\x81\xb9\xab\x48\x6e\xb8\x98\x15\xff\xa6\xd6\x5e\x68\x6d\x16\x99\x48\x58\xae\x54\x8d\x4a\x28\x31\x74\x25\x56\x2f\x4c\x09\xb3\x11\x8a\xb6\x83\x4b\x21\x92\x6f\x1f\x84\xfd\x44\x1a\xba\xc6\xdb\x67\x7f\xdf\xb8\xc6\x14\xd8\x4c\x32\xa1\xc7\x81\x2a\x52\x75\x99\x83\x00\xfc\xac\x9c\xbe\x6f\xdf\x81\xd4\x22\x3d\x17\x91\x91\x71\x63\xd6\xb8\x4d\x26\x11\x34\xe1\x36\x68\xb1\xe9\x46\x76\xde\xfa\x4d\xe3\x88\xc7\x87\xac\xb6\x61\x16\x2a\x0f\x03\x4b\x14\xa5\x75\xae\xa0\x4e\xcf\x84\x50\x72\x5f\x70\x3f\xbe\x5a\x90\x83\x0e\xa2\xbb\x43\xbc\xa6\xbc\xb5\x8d\x4a\xda\xcc\x92\x00\x2a\x77\xb0\xea\x67\x57\x06\x12\x80\xe6\xa1\x1d\x8c\xaa\x5c\x04\xa7\xe9\xba\xd4\xd7\x6d\xb6\x74\xcf\x48\xe1\x2c\x8a\xc6\x5f\xb9\xaf\x63\xc8\xc6\x5a\xee\x1c\x01\xe2\x54\x58\x9b\x7f\x7e\x9c\x00\x9c\x37\x9e\xce\x5f\x90\x75\xbc\xe5\x7b\x99\x06\x2e\x60\xa8\x32\x10\xa0\xbc\x95\x0c\x36\xfe\x2c\x8a\xa4\x94\xa7\xcb\x32\x65\x65\xed\xbe\x33\x01\x44\x04\x4b\x52\x1a\xe9\xeb\xe3\x76\x66\x07\x3d\x96\x1d\x02\x10\x4c\x43\xf4\x1d\xd9\xcf\x42\x4c\x92\xc7\x9c\x17\x12\x65\xfc\x2d\xa3\xc7\xff\x25\x68\xd2\x43\x60\x14\x6f\x39\xc8\xa5\x65\x0f\x16\xc3\x4d\x3f\x10\xe3\x2e\xf2\x80\x1a\xed\x77\x3b\x9b\x60\x30\x8f\x1e\x33\x46\x7a\xcf\x5f\x35\x67\x46\x86\xe2\xce\xd9\xa2\x16\x04\x06\x43\x4f\x45\x4d\xed\x96\x82\x44\xde\x37\x5e\x56\x7b\x4a\x8a\xc6\x94\x58\x66\xa2\x23\xce\xed\xff\xa1\x18\xbb\x65\x2e\x43\x62\xe8\x19\xf1\x9a\xcc\xa0\xa4\x24\x4a\x09\x82\x91\x36\xae\x8b\xf3\x55\xed\xac\x0f\x43\x5a\x9b\x65\x0b\x83\xa8\x03\xc9\xf3\xf6\xd7\xba\xb0\x84\xe5\x68\x3f\x21\x5d\x8d\x2f\xca\x3c\x59\x77\xde\x5e\x7b\xac\x4e\xcf\x8a\x67\x1f\x06\xf4\x65\xc2\x0b\xa1\x3c\xf3\x04\xe6\x46\xa4\x15\xc2\x12\x0b\xd4\x90\x17\x8b\x78\x86\x65\x5f\x84\x0c\x42\xe1\x9c\x5f\x58\x36\xb3\xc1\xaf\x91\x66\x6a\xcf\x3f\xb3\xc1\x6c\xe6\x50\x44\x36\x88\x2e\x46\x10\x6b\x4c\xc8\x0d\xa8\x60\x25\x92\xa5\xf2\x9e\x34\x94\xa1\x2f\x38\x23\xbd\xfa\x56\x80\x9e\x99\x03\x2d\x88\x58\xfe\xa4\x20\x05\xb5\xc4\xd0\xef\xc6\x2c\x75\x35\xe7\xd0\x78\x7c\xfa\x58\x96\xbc\x06\x79\x01\x54\x98\x7d\x1c\x91\x39\x3d\xd7\x4e\x68\x89\x68\x10\x31\xca\x21\xb6\xa4\xf8\xe1\x64\x60\x5e\x58\x10\x3c\x58\x4f\x37\xc5\xde\x3e\x2b\xfb\x28\xa0\x34\x31\x53\x9d\x88\xba\xa6\x04\xd7\x58\xd0\x6f\x24\xd5\x74\x9a\xb1\x72\x32\x94\xb3\x2a\xd9\x1b\xc0\x8b\x72\x94\x42\x4c\xd8\x47\x46\xd9\x46\xc6\x00\xb9\x40\x3d\x88\x0d\xd8\xbd\x0e\x6f\xd5\x9d\xab\x2d\xc0\xc6\x67\x33\x05\xc5\xe4\x3e\x65\x36\xbe\x5f\xea\xc5\x22\x00\x2f\xb9\x66\x63\x04\x1e\xfc\xf6\x15\x2b\x83\xac\x01\x82\x6a\x39\x87\xfc\xe8\xca\x56\xc3\x2e\xf4\x9e\xc5\xe7\xb9\x2b\x62\xc5\xa5\x67\x67\x1c\xdd\xea\x3f\x04\xa2\xc9\x78\xc8\x1f\x31\xf9\x55\x6f\x0e\x4a\xaf\x30\xcc\x32\x1e\x17\xca\x0a\x99\x5d\xe6\x2f\xbc\x6d\xa0\x83\x85\xcb\x88\x6f\x14\x70\xe0\xa8\x76\x53\xe7\x04\x5a\x9b\x55\x4c\x65\x83\xc7\xc8\xcf\xc1\x41\xd6\xe7\x36\x72\x80\xf8\x76\x6e\x49\x29\xa2\xec\x91\x91\xcc\xa4\x74\xfe\xf2\x1c\x7a\x41\xdb\x06\xef\xce\x60\xb1\x40\x14\x20\x7a\x36\x8a\x31\x43\x29\x8a\x74\x20\x7c\x9c\xa8\xce\x02\x0a\xe2\xd0\xac\x01\x94\x29\xbb\x48\x87\x22\x67\x1e\x4a\xb3\x45\xae\xe9\x13\xf0\xb1\x9f\xb6\x74\x94\xd7\x79\xa8\x30\xdc\x0b\xd9\x9f\x86\x6c\xad\xde\xec\xc3\x3a\x67\x15\xf1\x80\x4b\x72\x25\x52\xcd\xae\xec\x4d\xfc\xec\x69\xcf\x5f\x1e\x89\xc4\x45\x65\x92\xf6\xeb\x87\xb0\x39\xa3\x90\x2c\xfb\xd2\x36\x39\xf2\xd9\x1b\xef\x65\x81\xfc\x54\xec\x3b\xd7\x8a\xd1\xf2\x6a\x9e\xf6\xdc\x76\x57\x23\x41\x49\x23\x3f\x05\x29\x96\x59\x99\x90\x64\x11\x9f\x6d\x8e\xf4\x74\x31\xc2\x93\x34\xb2\x63\x8d\xe8\x38\x46\x6f\xe6\xb2\x3d\x06\xd3\xe5\xed\xf5\x88\x4a\xf2\xef\x6c\x8e\x43\x23\x84\x33\x26\x89\x4a\x16\x72\xbf\xb2\x5c\x8e\x4c\xa3\x4f\x9b\x33\xa8\x3b\xdb\x1e\x18\x6d\x18\xb6\x47\x96\x4c\x69\x05\x36\xa1\x22\xb5\xdd\xf8\x30\xec\x1e\x75\xf0\xac\xe9\x2e\x0a\x9f\x2d\x0f\xc1\x50\xda\x3d\x1e\x7a\x95\x68\x2e\xb2\xa8\x77\x07\x30\xb8\x7f\xea\x3c\x9b\x9b\x1e\x3a\x4d\x16\x78\x5e\x14\x59\x86\xf8\x96\xd7\x2f\xc0\xa3\x64\x78\xc5\xa3\xc5\x38\x7d\x93\xcd\x72\xd1\xa1\xe9\x91\x9d\x35\x15\x31\x6b\xb5\x35\x85\x9b\x01\xc9\x29\x97\x43\x9e\xb7\xe4\xe5\x62\x72\x6c\x36\xac\xde\x0d\x29\x32\xa8\xdf\x61\x49\x24\x7a\x7c\x83\xae\xe4\x9d\xa7\x2d\xe4\xfc\xcb\x80\xfb\x8b\x8f\xea\x9b\x1b\xf3\x0b\x9c\xcd\xe3\xc9\xf8\x5b\x14\x52\x8d\x0a\x4b\x39\x44\x9c\x2b\x77\x23\xf9\x06\x6e\x52\x23\x61\x2a\x79\x6f\xba\xf2\x3d\xa9\x78\xcb\xa7\x43\x57\x15\xcc\xfd\xc4\x76\xb0\x62\xe2\xd8\xec\xca\xd2\x5d\x91\x06\x58\xab\x78\xc9\x73\x89\x32\x86\x6e\x27\xc1\x4a\x15\x99\x6e\x34\xc1\x59\x6c\x28\x30\xa4\x89\x57\x23\xc7\x0c\xb9\x79\x49\xa7\xa0\xb0\xbf\x94\x28\x5f\xa6\x02\x08\x14\x12\x59\x5f\x76\x9f\x1e\xa5\x8d\x44\x1f\x2b\xeb\x1b\x5c\xab\x09\xbd\x68\x8d\x26\xc4\xb4\x36\x13\x30\x88\x03\x19\x31\xcb\x3b\x89\xe1\x43\x26\x99\x9d\xbe\x99\xa0\xd3\xb1\xa2\xac\xe0\x2f\x4b\xbe\x40\xc0\x30\x10\x32\x92\xf8\xcd\x0b\x93\x39\x86\xbb\x87\x19\x6f\x42\x82\x3a\x53\xa4\x35\xea\x6b\xd1\xba\xdf\xbd\xb7\xfa\xf3\x41\x3d\xd8\xcc\xd8\xa0\x74\x2d\x98\x34\x2b\x9b\x53\x6b\x9a\x47\x2f\xb8\x5d\x36\xb5\x77\x80\xba\x5b\xd5\xeb\x6d\x79\x60\x46\x8e\x5a\x3e\x0e\x23\x40\xab\x80\x2e\xe5\xbb\x70\x49\x5c\x57\x51\xac\x97\x64\x32\x52\xf8\x1c\x90\xcc\x9f\x1f\x4c\xa1\x4e\xda\x84\x3b\x51\x13\xec\x70\x6e\xc8\xac\x5e\xb8\x1f\x04\x75\xf2\xc4\x76\xf9\x64\x6e\x59\x0a\xfb\x13\xcc\xd8\x46\x99\x60\x33\x5b\x05\xc4\x34\x2b\xa1\xa5\x38\x6f\xdf\x27\x2c\x75\x95\x1a\x31\xc1\x16\x4e\xc2\xf7\xb0\x6d\x0b\x0d\x26\x70\x2a\x9b\xba\xf1\xae\x2f\x31\x55\x10\xb4\x51\xfe\x78\x6a\x64\xb4\xe9\xfb\x05\x82\x6d\x69\xdb\x13\xbf\xa2\xc5\xbc\xc1\xb6\x74\x42\x8f\x35\x9c\x5f\x25\x59\xe5\x5f\xed\x0f\x4b\x50\xa6\x67\x84\xd9\xdf\x25\x9b\xe2\x1a\x1c\xc0\xe1\xf3\x2d\x3c\x05\xd7\x26\x07\x9d\x16\xa7\x15\x75\x01\x5c\x31\xb6\x8d\xb3\x26\x97\xa2\xb2\x77\xd7\x8b\xeb\x0b\xfb\xd7\x17\xc5\xb9\xa1\xf7\xab\xe1\xe1\xc3\xd8\x3d\x56\x5f\xc2\x00\x53\x8f\x40\xe9\xea\x56\xe1\x97\x81\xfd\x8d\xe1\xc5\x95\x0b\x1b\x5e\x25\x8f\xe7\xb6\x71\xfe\xf4\x3d\x36\x35\xbd\xa8\x34\x67\xc4\x89\x1b\xf2\x70\xa9\x6b\xb3\xa7\x67\xc8\x07\x8d\xee\x1c\xea\xf0\x65\x52\x82\xc6\x86\x05\x63\x5b\x99\x0b\xf8\xe3\x8f\xbe\x84\x92\x23\x64\x20\x1b\xe7\x20\xbd\x22\xc7\xe4\x11\x64\x12\xf3\xdf\xdf\x4e\x83\x43\x43\xf2\x06\x59\xcb\xd8\x0c\x5e\x22\x35\x11\xea\xab\xb7\x27\xaf\x47\x31\xf5\xcd\x51\x08\x0f\x99\xbe\x7e\x34\xea\xea\xc7\xc2\xaa\xa4\x4f\xbc\x83\xbe\xf6\x42\xfb\x99\xfd\xa0\xdd\x1b\xc9\x2e\xb8\xac\x13\xd1\x5c\x5a\xd0\xf2\x0a\x81\x57\xbd\x13\x6b\xa3\xa9\x45\xb7\x21\x10\x77\x28\xf4\x6b\x37\xa4\x2e\xb4\xa7\xae\x36\x93\x7e\x00\x8c\x76\x14\xf5\x5d\x29\xec\xb0\xd2\x7f\xcf\xcd\x22\x1a\xd1\x2c\xb1\xd4\x18\x2e\x39\x65\x27\xc3\x7f\x04\xf6\xdb\x56\xcf\xa5\xd7\x53\xe0\x6c\x84\x6c\xf9\xc0\x3b\x8c\x5c\xf1\x48\xfa\x9d\x3d\xcd\x6d\xd3\x4d\x93\xf2\x9a\x14\x57\x95\x36\x97\x5f\x45\xd7\x86\x45\x5a\xdc\x2f\x42\x3b\x82\x9f\x3c\x80\x0b\xe4\x0f\x4b\xb7\x69\x05\x9e\x37\xa3\x98\x9e\x65\xda\x2d\x34\xc7\x68\xed\x9b\xa8\xe0\xfa\x02\x40\x4b\x81\x5f\x08\x50\xbc\xf3\xce\xe1\x43\x59\x7b\x5f\x70\xc3\x13\xc6\x5c\x2e\x0f\x5c\x46\xe5\xd6\xfa\x2b\x20\x1b\x29\x8f\xf4\xde\x62\x71\x55\x75\xe8\x2f\x70\xf9\x16\xca\x8a\x38\xdc\x58\x91\xd3\xd7\xea\x08\xe5\x39\x13\xd3\x26\xe5\xa1\x38\x59\x70\xcd\x81\x12\xed\xe7\x87\x67\x04\xdf\x82\x3e\x59\x5a\x5c\x66\x74\x90\xd4\x23\xaa\xee\x4b\xf9\x98\xbe\xb2\xa9\x43\xcb\x23\xeb\x73\x38\x14\x2c\xda\x34\xcd\x6d\x3a\x52\xe4\x68\x3a\x83\x61\x08\x0b\x58\x27\x25\x3c\xab\x04\xfb\x42\x35\x69\xc9\x3d\x0e\x92\x40\x5a\x77\xb0\xaa\x7e\x1e\x45\x8a\xe1\x35\x05\xf6\x05\xcc\x59\x81\x4d\xbe\xec\x77\x5a\x3e\x99\x79\x78\xaa\xaf\x07\x22\xf2\x67\x85\x28\x16\x84\x30\xc7\x28\x12\x83\xca\x01\xb6\x51\x24\x86\x9d\x03\xb7\x61\x12\x93\xcf\xc0\x57\x93\xc4\x66\xc6\xf0\x6c\x14\xc9\x89\x89\x0e\xc4\xba\xf9\x40\x1a\x24\x29\xe1\x6c\x36\x24\x9a\x72\xe2\x4c\xe0\xb5\x01\x1a\xd2\x85\x35\x91\x3e\x1c\x89\x61\x19\x59\xcc\x1a\xfd\xd6\x31\xf7\xac\xd8\x69\x1f\x43\x8a\xb5\x57\x11\xe7\x65\x9c\xf4\xb3\x10\xba\x4d\xcb\x4c\x3c\xae\xc6\xb3\x36\x04\xcd\x96\xfe\xb8\x7a\x1e\xf1\xd5\x51\x15\xa5\xde\xe1\xf3\x62\x82\xa0\xf0\xcd\xf9\x88\x0f\xf2\x2a\x96\xef\xf3\x2b\x99\x40\xe6\x4f\x57\xc5\xed\xdd\x0f\x97\x09\xa3\x2c\xc1\x45\xf6\xe2\xe0\x68\xae\xd2\x3f\x2a\x73\x90\x35\x12\x9f\x11\xab\x6b\xf3\x30\x0c\x04\x9c\xf6\x38\xb8\xca\x4d\x3b\x52\x53\xf0\x77\x32\xc9\x49\x1c\x93\xf7\x19\x67\x2d\x40\x31\x27\x4f\x04\x62\x50\x2b\x5e\x34\x00\xf3\xf2\x31\x3e\x91\x81\x88\x02\x85\x19\x0d\xf0\x95\xdf\x0f\x11\xea\x6b\x5a\x0b\x9e\xab\x98\x93\xa4\x2b\x03\x40\x0b\x12\xc8\xdd\x2c\x4d\x11\x4c\xcf\x2d\xef\xd1\x2f\x0d\xca\x25\xfb\x33\x6f\x73\x46\xeb\x3f\x11\xdc\x8a\xbd\x49\xd9\xa7\x2b\xbc\xfd\x1b\xcf\xd8\x55\x49\xeb\x2d\x5b\x90\x1d\xca\x63\x32\x44\x11\xa1\x96\x78\x22\x39\x68\xdd\x70\xf1\x2c\x1b\x01\xce\x98\x19\x80\x39\x3d\x51\xeb\x25\x71\x58\x9b\xf7\x68\xf2\x93\xe0\x72\x57\x65\xd6\xcb\x40\x6b\x0e\x9a\x31\x5c\x77\xd6\xc2\x07\x01\x54\x97\xeb\xc0\xac\x46\x76\x16\xcd\x17\xc6\x22\xe5\xaf\x1b\xcf\xd2\xc3\x27\xf8\x87\xf4\xc0\xd7\xb4\xb0\xec\x35\x54\x53\x3c\x7f\x61\x44\xd7\x52\x84\xda\xa3\x70\x37\x32\xb0\x04\x2a\x7b\x98\xa6\x43\xac\x31\x71\x98\x83\x36\xa9\x3b\x3e\xc4\xbe\x3c\x73\x05\x40\xbe\xf8\x16\xc5\x8f\x1d\xe1\xcc\x0e\x86\x4a\xe5\xe4\xa9\x8f\xd2\x23\xa3\xd9\x43\xf1\x9e\xf3\xe8\x51\x3a\x0f\x6c\x33\xf3\xdd\x93\x6f\x90\xc1\x86\x34\xcf\x9e\x66\x82\x1b\x0e\x2a\x25\x25\x27\xf1\x85\xa8\xf0\x96\xfa\xf9\x9d\x9d\x34\x3b\x32\xdd\x48\x59\x0e\x00\x05\xcb\x6a\x62\xaa\x4c\x08\x00\x42\x22\xa2\x78\x1f\xce\x2a\x1b\x0a\x92\x44\x7e\x8c\x82\xad\x7c\xaa\xb7\x38\xc9\xca\xbb\x4d\x56\xa3\x60\x1b\x9f\x36\x16\x51\xd7\x7d\xcb\x03\x67\xaa\xed\x6a\xd9\x9f\xeb\x3b\x3d\x08\xfe\x0d\x5a\x60\x4e\x85\xe1\x3b\x08\x14\x16\x3d\x58\xa7\xd6\xad\x4f\xbb\xac\x9e\xea\x36\x2f\xa5\x95\xe3\x1b\x55\xec\xbf\xf2\xcc\x41\x99\xf2\x02\xe1\x50\x08\x4c\x83\x48\xd6\xc2\x4d\xe7\xbe\x41\x74\xf1\xd9\x64\x3d\x55\x83\xb8\x2a\x20\xc6\x68\x34\xb1\x91\x3d\x59\x83\x8b\xba\x5e\x46\x1e\xbd\xd9\xe7\x7e\x1b\x81\x48\x85\x96\x18\x97\x54\x33\x84\x8d\xa8\x6c\x05\x09\xbc\x19\x4f\x90\x0f\x5f\x7c\x92\x21\xb0\x45\x43\x40\xb5\xc9\x97\x15\x36\x29\x71\xb9\xf4\x48\x2c\xb1\x02\x2c\x95\x2a\x6e\x3e\x19\x29\x7f\x7b\xad\x55\x84\x15\x83\xec\xcf\x5c\x11\x14\x71\x45\x46\xb5\x6b\xca\x9d\xf2\x61\x12\xfc\xe3\xed\xd3\x6c\x56\x8d\x9e\x9b\x68\xe6\x5f\x96\xed\x96\x88\x26\x71\x50\xe6\xc9\x41\xe3\x56\xa9\x6a\x99\x4d\x4b\xd5\xa5\xd4\xde\x9a\x2f\x0a\xf3\x27\x03\x58\xc5\x1d\xb4\xaf\x20\xd0\xd1\x29\x1e\x66\xab\x3b\xdc\x11\x22\xc2\xd9\xe2\xda\xf8\xd8\x02\x5b\xf9\xd9\x22\xcf\x2f\x0b\xd7\x45\x4b\x5e\x27\xf2\x6b\x8f\x07\x61\xbd\xf7\x57\x99\xc2\x90\x5e\xa0\xfa\xbe\xd9\x4a\xe4\xe8\x39\xd5\x1e\x51\x9b\x13\x01\x49\xe9\x89\xc3\xa8\xba\x5d\x21\xa6\xf6\x5e\x05\xd5\xc9\x91\x4a\x43\x7c\x89\x71\x9e\xbf\x05\xba\x55\x99\x97\x7f\x69\x9a\xe3\x4a\x77\xdc\xa9\xa4\xbc\xb2\x76\xc6\x23\x17\x3b\xd0\x77\x77\xf9\x72\xb6\x86\x7a\x69\x75\xb1\x22\x34\xba\x38\x5a\x62\x07\x88\x94\x0b\xd8\x54\xc4\x88\xbd\x7c\xfe\x50\xfa\x2f\xd0\x80\xa4\x10\xf0\x3a\xab\x6c\x0c\x74\x7e\xcc\x6b\xe9\xcb\xf5\xba\xe1\x82\xd0\x02\xf3\x4b\xcb\x8f\x89\xa8\x16\xfe\x1b\xd0\xb3\x80\x3b\x14\x5e\x24\x03\x6d\x94\xa9\xa4\x8c\x31\xe2\xfc\x54\xca\xcb\xa5\x80\x0a\x7b\x3f\xff\x39\xc5\x42\x14\xed\x1a\x66\xaf\x2c\xdf\x3b\xac\xe7\x57\xb2\xe4\x36\x62\xc6\xe7\x7a\x16\xc7\xd0\x76\x8c\x32\xf2\xba\x7f\x57\x4a\xd0\xcc\xe4\x15\xc2\x21\x31\x0e\x4f\xaa\xa6\x11\x87\x1d\xce\x16\xc7\xd5\xb8\x6f\x70\x19\x5b\x36\x4d\xca\x11\xc5\xa2\x03\x95\x7e\x41\x55\x21\x23\x35\xcc\x37\x06\x91\xc1\x85\x19\xc1\xb4\x40\x2a\x4e\x85\x5c\xc8\x2a\xd4\x84\x89\x69\x6f\x53\xbf\xf9\x40\xa6\xff\x78\x27\x74\xd0\x99\x78\xec\xc2\x19\x94\xfc\xed\x08\x52\x16\x65\x05\xad\x0a\x81\x34\xf0\x30\xa5\x42\x48\x70\xe5\x14\xd9\x54\x71\xb9\xda\x6b\x45\x52\x15\xd6\x60\x15\x53\xb0\xf0\xfb\x2d\xb6\xe5\x87\x9b\x6c\xac\xbb\x38\x47\x16\x47\x55\x63\xf5\x21\xc7\xa2\x90\x84\x18\xad\x43\xe9\xa3\x16\xba\x02\xcd\xa9\x27\x4c\xa1\xf9\x37\x33\xff\x06\xee\x95\x8c\xd8\xae\x37\x2e\x2e\x42\x06\xc4\x3c\xf9\x08\xca\xd8\xe5\xc8\x12\xde\x56\x00\xf7\x13\x40\x71\x33\x8c\x1b\x03\xc6\xe9\xf5\x4b\x87\xc8\x81\x18\x6f\xde\xe4\xc9\x7f\x65\xdb\x2c\xf9\x45\xf6\xbf\xc2\x33\xe1\xf7\xce\x7f\x1e\x70\xab\x04\xc3\x56\x8e\x08\xd6\xd8\xad\xf1\xd5\xd3\x72\xdb\xb5\xa7\x92\x56\xe1\x47\x1f\xa1\xb3\x85\xc1\x45\x6e\x32\xca\x3a\xe4\x35\xf7\x42\xf5\xc4\xd6\xe1\xf2\xba\xad\x3e\xbe\x70\x81\x02\x08\xbe\xcb\x11\x42\xf0\xa6\xff\xfe\x7c\xf2\x4f\x83\x3d\x3a\xf2\x97\xab\x1e\x71\xc5\xcb\x51\x58\x89\x5c\xe1\xc2\x9f\x32\x79\x64\x57\x90\x80\x1c\xfe\x9d\x47\x1d\x0f\x16\xdc\xbd\xef\x46\xb2\xfe\xe5\xb9\xcf\x59\xb0\x03\x26\x89\xb5\x24\x4b\xb5\x47\xf8\xaa\xf6\x52\x7f\x4a\x5e\x5f\x53\xfe\xce\x50\x49\x45\x66\x48\xdb\x0e\xff\xfe\x6b\xe1\x4f\x23\x5b\xde\x9d\xbc\xd0\xd7\x7e\x35\x6b\x82\x72\xd4\xbc\xbf\x9d\xdd\x3e\xc1\xfb\xf3\xbe\xbf\x59\x19\xcf\x66\x54\xcd\xd8\xcc\xdb\x57\x32\x70\xed\x6f\xe6\x50\xf7\x17\x5f\x6a\xa2\x3c\x60\xfb\x85\x78\x40\xf7\x7c\x81\x0e\x76\xc2\xad\xc5\x3b\x31\x63\x58\x88\x2b\xa8\x98\x57\xb3\x6b\xf4\xb2\xff\x59\x77\xaf\x1d\xb4\xa0\x0b\xdc\xfb\x63\x58\xcd\xf5\x1a\xbf\x45\x04\xa3\x19\xaa\x18\x2c\x03\xfe\x19\xa0\x55\x5e\x9c\x00\x3f\xb5\xcb\x7f\xc3\x90\x54\x18\x2a\x3e\x4d\x45\xa7\xf4\x6d\x2b\xf2\x59\xe1\x52\xff\x1a\x1a\x0a\x04\x28\x24\xc4\x2b\x21\x7e\xf5\x54\x11\x37\x49\x0d\xec\x86\x48\xed\xbe\xe9\x1b\xaa\x9b\x78\xd5\x14\x8a\xd6\x31\x68\x9c\xc2\xcf\x00\x97\x5a\xe8\x4c\x00\xd0\x97\xcc\x15\x05\x95\x46\x43\xd8\xb7\xe1\x76\xa3\xa6\x04\xe4\xd2\xb6\x46\xd8\xc0\xf1\x2a\x3e\x41\xe4\x97\xe9\x93\xec\x3e\xea\x4c\x5b\x07\x6b\x40\x09\x43\x76\x0d\x90\xfb\x5b\x89\x19\xe4\x9c\xf7\xca\x1a\x59\x26\xc1\xc0\x45\x22\xca\x88\xfd\x83\x7c\x6c\xe8\x30\xbe\x37\x38\x97\x06\x37\x4b\x65\x41\xcb\x7d\x86\xbb\xf7\xa7\x04\xaf\x07\xc5\xb0\x51\x55\xc4\x2e\x7f\xc1\xcd\x2e\x1e\x1a\xd8\xae\x11\x71\x6e\xbf\xf6\x84\x93\xfa\x99\xf7\x40\x6d\xda\x07\xf5\xc9\x9f\x09\xde\xa7\x74\xc2\x27\x74\x52\x27\x3d\xb5\xd7\xd7\x2c\x0a\x28\xf2\x69\xfc\x32\xb7\x66\xb5\xd7\x06\x0f\xc4\x5d\x9f\x34\x23\xd6\x7c\x47\x89\xb7\xac\xf9\x0a\xfd\xd0\x75\x9e\xc0\x85\xaf\x0a\x55\x6f\x9f\x9b\x78\x9e\xc6\x35\x16\xfb\x28\x35\xcf\x8d\x94\xa6\xf7\x8d\x4a\x09\x37\xf6\xe1\xce\x6b\x2e\xe7\x9d\x11\xa6\x4a\x49\x87\x56\x0d\xf7\x89\x33\x6c\xbc\xd7\x1a\x02\xc0\x09\x3b\x48\x5a\x79\xf9\xb1\x17\xb2\xec\x7f\x25\x37\x8b\x73\x57\x82\xf4\x8e\x85\x95\x0e\x1b\xf6\xa5\x1d\x6f\x00\x22\xf3\xd8\xc5\x84\x5d\xd2\x5e\x4a\x22\xcb\x52\x10\xa3\x68\x5e\x5e\x9b\x42\x29\x8c\x66\xf9\x05\xd7\x20\xf4\x4d\x2c\x59\x5a\x38\x64\xd3\xb5\x64\x1f\xe5\x24\x14\xcb\x68\x8a\x90\xd5\xfc\x12\x48\x0c\xef\x41\xb1\xed\x09\x92\xdf\x0a\xda\x06\xc4\xa3\x74\x5a\xaf\x14\x42\x8a\x07\xea\xde\x3d\xe9\xf7\x36\x53\x79\xed\x2b\xb8\x06\x57\x77\xca\xe5\x9a\x5f\xf4\x9f\xb7\x03\x31\x51\xb4\xcc\xda\x16\xb3\x17\xbb\x71\xd3\xd9\x80\xb0\x6f\x63\x11\x0c\xe4\xf3\xfb\x74\x7b\xec\xb9\x4d\x01\x2b\x4f\x16\x40\x48\xae\x4f\x16\x60\x97\x71\x45\x2f\x41\x77\x8e\xb6\xf4\xe1\x6e\xdf\x6e\x3b\xe2\xb2\x23\xe6\xa3\x18\x6f\x8c\x29\x86\x37\x1e\xa1\xb7\xba\x9c\xf9\xf3\xa1\x69\x1f\xfd\x21\xfb\xb9\xbe\xba\xf7\xde\x61\x64\xd6\xba\xfd\x21\x4b\x41\xe3\xe1\x33\x0c\x6d\xf5\xcc\x68\x15\xde\x52\xcd\xd9\x37\x5c\x7c\xbf\xca\xa0\xf3\xb7\x1e\x94\x26\xc9\xf8\xa8\xfc\x0e\x0c\xe0\xa4\x3f\xa9\x78\x5f\x28\x59\x7b\x9d\x81\x78\xe1\xd7\xda\x12\x66\xe0\xb6\x9f\xf0\x26\x29\x14\x38\x76\x57\x4b\x34\x8f\x1c\xfc\xd6\x38\xa6\xf2\xb4\xb3\x7d\xf2\x8b\x4c\x1c\x8c\xf9\xac\x90\xc4\x18\x1f\xdf\x0d\x9d\xbb\x14\x82\x12\x1b\x56\x52\x7a\xb0\x87\xa2\x82\x0f\x01\x07\x77\xfa\xa3\x41\xf6\x1e\x29\x44\x17\xcd\xc8\x4d\xaf\xbc\x29\x07\x04\xd8\xe7\x76\x60\x9c\x89\x06\x40\x9d\x74\xc4\x9c\xf3\x63\x02\x6a\xd1\xb4\xdc\xfd\xd0\xfd\x0e\x5b\x27\xb0\x8c\x1e\x43\xe4\x08\xe0\x88\x22\xa5\x17\x72\x1c\x8f\xdc\xb3\x1c\xcb\xdc\xc5\x9a\xfc\xa1\xa6\xf8\x0d\xbd\x98\xdd\x46\x97\x84\x06\x47\x37\xb1\x9d\x6b\x95\x60\x6b\x7c\xad\x36\xc3\xa5\x13\x7a\xa7\xfe\x28\xaa\x94\x5f\x62\x26\x4d\x29\xa5\xf2\x40\xcf\x00\x80\x51\x9e\x7a\x12\x94\x63\x1b\x99\x89\x4a\x38\x44\x58\xcb\x45\x8e\x25\x27\xcd\xf9\xcc\x5c\x3c\xa5\xac\x52\x39\x31\x4b\x82\x77\xf5\x2b\x4f\x96\x0e\x6e\x84\xed\x3c\x8f\x8b\x63\x1f\x77\xd0\x3c\xfe\xf9\x21\x8e\x8b\xbc\x63\xbc\xd7\x22\x00\xeb\x9b\xd9\x53\x65\x1f\xd9\x53\xaa\xaa\x47\xac\x62\xcc\xc9\x34\x9a\x2a\x23\x6a\xc8\xa1\x27\x0a\xc7\xf5\xd5\xd8\xcf\x4c\x0f\xe2\xbd\xf1\x4c\x42\xf8\xd8\xcd\xf7\x06\x2d\x65\x83\xc9\xed\xb8\x89\x6f\xbb\x01\x17\x0d\x31\x76\x23\xaf\xf2\xd9\xbb\x28\xe6\xcd\x79\x19\xc3\x73\xa9\x6e\x28\xe4\x03\x52\x62\x08\x81\x24\x6e\x6e\x8c\x3a\x07\x70\x85\x5a\x2e\x8b\xc9\xff\xa8\x45\xb7\x9b\x5a\xac\xd4\x15\x02\x33\xbf\x1c\x69\xa4\x35\x2a\x04\x88\x55\x67\xd5\x36\x30\x66\xe5\xc3\xdd\xc0\x0c\xd0\x3d\xe9\xd7\x6a\xd1\xe6\x3d\x5e\x7e\x00\xf5\x4c\xde\xcd\xb2\x5f\xc3\x2a\xc6\x3a\xe7\xcd\x75\xb6\xfc\x9d\x4a\x2e\x4b\x42\xca\x5a\x42\x9b\x1e\x60\xa7\xa0\x60\xbd\x7c\xcc\xd5\xab\x9a\x3a\xca\xd9\xd7\xf6\x36\x53\x2b\x50\x77\x31\x83\x22\xe5\xf2\x22\x03\xe8\x23\x4f\xfb\x0e\x8a\x66\xe3\xa2\xc5\x42\x0f\x27\x10\xb7\x92\x93\xd3\xaf\x6b\xcf\x04\xc1\xaa\x6c\x07\x6a\x19\xf6\x8d\xfc\x15\x87\x5e\x77\xe6\x52\x7a\x1a\x4c\xf2\x17\x30\x1a\xf7\x0a\xc1\x0c\xee\x85\x8c\x67\x54\xb7\x26\x33\x21\x43\x39\x7a\xec\xb5\x5b\x6f\x81\x7a\xd6\xcc\x9a\x05\x0d\x29\x01\x05\x1f\xe1\x2e\x9d\xf2\x0a\x79\x65\xbb\x68\xba\xf0\x56\x60\x1e\x8e\x82\x0e\x70\xaf\x40\xd2\x85\x42\x4e\x2f\x98\x20\x3f\x65\x3c\x63\xdf\x49\x76\x05\x68\x02\x08\xf5\xc5\x98\x19\xb9\x07\x5b\x8b\xbc\x90\x9f\xf2\x22\x00\xad\x47\x4f\x71\x6a\xd0\x99\xc0\x2f\x8c\xf7\xd3\x68\x6c\x67\xfd\xac\x5f\xa4\xa7\x1b\x67\x60\x83\x17\x57\xcd\xe3\xef\x52\xc9\xac\x07\xfc\x3f\x6e\x34\xb3\xaf\x59\x6f\x55\x73\x10\x73\xa0\xad\xe0\x2e\x66\x72\x93\xaa\x08\xdb\x93\x51\x4c\xf9\x59\xdf\x73\x82\xc8\x98\xb7\xbd\x7f\x3a\xd1\x7e\x25\x87\x1d\xf9\x22\x67\xac\xe9\x8b\xce\xf6\xdb\xa6\x03\x39\x83\x58\x53\xa7\x29\x1f\x73\x03\x9e\x96\xda\xcf\x44\x8e\xdc\xfa\xca\x7e\xde\x4f\x45\x34\xce\x6e\x9b\xe5\x70\xcc\x5e\x3f\x0e\x46\xfd\xdb\xa2\x61\xed\x9c\x6a\x5e\x09\x0d\x8e\x45\xa2\xc4\x03\xa8\x70\x1a\x1d\xba\x55\x3a\x91\xf4\x63\x5f\x76\x8e\xf0\x3b\x74\xef\x55\x20\x54\x08\x23\xe7\xbc\x96\xa7\x7a\xc4\x38\xa9\xfe\xe7\x6b\xe1\x09\x61\x87\xee\xa7\x1b\xf2\xf5\x1d\x86\x2d\x34\xca\x96\x26\x7a\x8a\x5c\x1b\x54\xa6\x9d\xbd\x02\x0e\x1e\x76\x1f\x44\x42\x5f\x28\x61\x7e\x57\xec\x0a\x2e\xed\x96\xf0\x92\xc0\xdd\x76\x78\x75\xcd\x6a\x7c\x35\x8d\x0c\x67\xeb\xac\x4e\x99\x59\xe3\x8c\x06\x42\xbc\xa3\xa3\x4d\x8a\x07\xda\x06\x55\x6f\xc7\xdf\x11\x38\xf3\xeb\x62\x5d\xd0\x65\xad\x3b\x90\x95\x09\xd7\x39\x1e\x60\xfd\x01\x12\x7b\x54\xa4\xd1\x0e\x05\x65\xa2\xa2\xd9\x22\x54\x21\x89\x0f\xa4\xf2\x50\xf9\x56\x56\x89\x21\x16\xaf\x24\x49\x84\xa7\xea\xa2\xd9\x22\x2b\x79\x2e\x83\xac\xed\x22\xcf\xe4\xaf\x28\x8d\xb2\x59\x5a\x4b\x2f\xd7\xc8\xeb\x88\x9b\xc7\x75\x6a\x05\xad\xc4\x3e\x5b\x4f\xef\x87\x7f\xb9\x20\x3b\x97\x62\xfd\x36\x89\x57\xb2\x4b\xd6\x80\xfe\xf0\xb0\x9f\xdf\x8d\xe1\x20\xc2\x6a\xce\x3e\xcd\x8b\xa7\x72\x01\xcf\xd5\xc5\xb8\x80\xff\x46\xec\x8c\xc0\x1d\xd0\x2c\xe5\x3c\x79\x3a\xbb\xec\xaa\x0c\xeb\x06\xc5\x8e\xf2\x8e\xf0\x23\xbf\x68\xa7\xb8\x14\x4a\x5e\xb9\x4d\x66\x2f\x27\x53\xf5\x4a\x19\xd9\xd6\x5a\x65\xb3\xc5\x9d\x53\xe6\x7b\x9a\x2c\x0f\x6d\xc6\x92\x5c\xbf\xda\xed\x54\x3c\x59\x8e\xd8\xdb\x98\x37\x85\x98\x5c\xa3\x13\xcc\x9e\xc7\xac\x94\xa2\x54\x42\xfb\x6c\xf4\x81\x94\xc4\x26\x8a\x07\x26\x4f\x80\xae\xc7\x01\xee\x32\x03\x81\x8e\x58\x6d\x2a\xd9\xbc\x25\x6a\x54\x2e\x8c\xaa\xdd\xc0\x82\x67\xd0\x97\xbe\x10\x15\xaf\x3b\x88\x2c\xd0\x77\x8d\xa0\x84\x36\x55\x2d\x37\x54\x9e\x03\x07\x9e\x1e\x86\xb2\xeb\x4b\x54\x83\xc0\xff\x60\xf1\x66\xb9\x79\x8f\xea\x92\x98\xc1\x9c\xfa\x13\x8b\x65\x8d\xf1\x56\xa4\x40\x1d\xe9\x60\x82\x2b\xc3\x1a\x05\x95\x33\x93\x8a\x2d\x69\x3d\x1d\x67\x52\x98\x43\xca\x5e\x05\xfb\x91\x91\x6a\x10\x0b\x99\xa8\x33\x32\xa7\x9e\x70\x4b\x51\x4d\x73\x8d\xe5\x35\x0a\xf6\x90\x25\x9c\xa7\x8a\x84\xf1\x94\x4f\xfb\x64\xb9\xef\x66\x0f\x3d\x4d\xa7\xaf\x1a\x43\xf1\x3c\x8f\xf0\x06\xb6\x9b\xe7\xf9\x04\x8d\x68\x3e\x2f\xb8\x1e\x21\xf1\xaa\x23\xf0\x8b\xdd\x14\xdd\xbf\x7d\x6a\xce\x6b\xc0\x19\xe5\xd2\xe0\xd4\x33\x01\xb4\x85\x64\x46\x60\x24\xf6\x03\xc9\x59\xdf\xf1\x11\xd8\xf6\x92\x65\xd7\xcc\xba\xa8\xc9\xc2\x41\x58\xbf\xef\xb5\x5b\x15\x86\x89\xa1\xa3\xa6\x88\xce\xb2\x74\xdc\xc0\xfd\xe3\x2f\xaf\xb9\x4b\x3b\x0e\x08\xab\xa6\xe5\xf4\x37\x78\x72\x58\x33\xa8\xd7\xcd\x33\x7b\xf0\xaa\x9e\x4a\x4b\x5b\x5b\x3d\x34\x74\x07\xba\xc7\x78\x6c\x0d\xd9\xf2\xe1\xbe\x61\xde\xf8\xb9\x65\xf7\x79\x3f\x4b\xa6\xe1\xe9\x99\xa7\xde\x05\x3b\x4a\x45\x5f\xde\xa3\x56\xb2\x38\x7b\x9f\xf0\x4f\x25\xcf\x8b\x6f\x57\x7a\x54\x9c\x20\x0c\x67\xbb\xe2\x86\xab\x4a\x2b\x3d\x69\x11\x30\x3d\x29\x89\x0b\xe3\x6b\x45\x90\x32\xc2\x62\x48\xc6\x9a\x8f\xe7\xf2\x5c\x56\xeb\x99\x4d\xed\x36\x18\x0f\xde\xf6\xec\x0c\x63\x12\xe8\x46\x0b\x86\x0f\x85\xfc\xa7\x69\xb2\x64\xb3\x08\x4b\x33\x98\x34\xf4\x05\xf0\x96\x74\x78\x0c\x37\xbe\x2f\xab\xba\x92\xf7\x05\x30\xe5\xa1\xec\x1f\x39\xd3\x87\xb3\xdc\xce\x03\x07\xf9\xc8\x3b\xa3\xab\x93\x2e\xb7\x96\x02\xde\x01\x9b\x2e\xb6\xfd\x47\x00\xa3\x0e\xec\x6c\x02\x3f\x1a\xe4\x65\x4e\xd2\xb8\x9e\x12\x1e\xee\xed\x0d\x58\xea\x3f\x21\x5c\x76\xb3\xea\x3e\xc5\x65\xa7\x2a\xff\xbb\x9b\xfd\xb0\xdb\x0e\xa0\x2c\xad\x7d\x7b\xc1\x57\xd5\xb3\xf7\x4a\xad\xd6\x8c\x0a\xa7\xd2\x50\x25\xd5\x71\x1d\xce\xcc\x06\x53\x27\x1c\xa4\xe4\xd7\xc9\x8f\x34\x7b\x5b\x86\x2f\x7b\x5f\x65\x1b\xcd\x1d\x1b\x2a\x0c\x7a\x5a\xf6\x14\x18\xbb\x49\xce\x2f\xa2\x3d\xff\xd5\x6d\xdd\xce\x5b\x3e\x71\x62\xee\xd2\xf3\xbb\x6a\x3e\x3b\xc2\x95\xb9\x70\x20\xa2\x00\xf4\x15\x4c\x9d\x9b\x0a\x80\xef\x7e\xa8\xd4\xf7\x1e\x5e\x75\xd9\x73\x3d\x0c\x18\xa3\xc5\x7a\xd5\xc9\x73\x6f\x0c\xdd\x26\x5e\x75\xb6\x6a\x15\x9a\x19\x8b\x5e\x3f\x33\x97\xc6\xd2\xa6\x0b\x99\x9a\xb9\x49\xf5\xea\xcb\x4e\x86\xaf\x5f\xef\xd3\x02\x08\x23\xe8\xfe\x02\x0a\x59\x20\x3c\xd4\x1a\x2b\xb9\xb6\xfc\xac\x57\x37\xa9\x95\x4b\x49\x6c\x18\x38\x69\x92\x7e\xe4\x28\x18\x72\x94\x7a\xe9\x8f\xe7\x8c\xbd\x2a\xbd\xf7\x8b\x1a\x81\x27\xc5\x88\x92\xe8\x1b\xf6\xb7\xd0\xde\x79\x97\xa2\xc0\x64\xc5\xf1\x32\xe1\xc7\x37\xf6\x01\x5f\x0f\xc0\x8d\x82\x1f\xa4\x18\x54\xd2\xf0\xc6\x28\xaf\xca\xe5\x13\x53\x87\x10\xf7\x26\xaf\x4e\x2a\x65\x18\x97\x41\xb7\xd0\x05\x39\x82\x23\x5d\x56\x96\x32\x3c\xea\x81\x80\x90\x3e\x0c\x05\x31\x08\x59\x8e\x24\x2a\x6d\x52\xf0\x87\x75\x5f\xf6\x32\xab\x1d\x97\x05\xab\x6d\xa9\xc9\x3b\x02\xb9\xe6\xcc\x5d\xe6\xab\x03\x3d\x79\xcc\x8c\x80\x6c\x64\xa1\xa1\xb2\x9f\xd6\x6a\x48\x41\x6c\x08\xc9\x49\x33\x84\x3b\x54\x53\x9b\xf9\x03\x27\x72\x91\xc5\x29\xa7\x12\x7a\x54\x02\x9f\xbd\x07\x8e\x59\x35\x6d\xc2\xd7\xc5\xb6\x32\xa4\x6e\xea\x23\xae\x52\x57\x38\x34\x1f\x08\x1c\xa1\x70\x12\x2b\x32\xe4\x62\xbb\xab\x82\xc9\x5c\x10\x32\x5b\x43\x9d\x01\xf0\x84\xcd\x25\x81\xe7\x4d\x23\x5f\xc4\xac\x14\xa2\x69\xd3\x00\xa9\xe6\xa7\xf9\x3b\x88\x1e\x99\x1f\x65\x75\xe0\x49\xa0\xa5\x25\x0d\xd7\xa5\x3b\x95\x8e\xb6\xc8\xbd\xd5\x4f\x08\x94\x07\xa7\xd3\xa8\x13\xcb\xd2\x7d\x2b\xdc\x1a\x5f\xce\x58\x17\x00\x8a\xb8\x0f\xdd\x81\xbe\x01\x7b\x35\x2c\x51\x6a\xca\xdf\xac\x8b\xd4\xe4\x85\x5b\x63\x33\x8b\x52\x4a\x28\x34\x14\x51\x5f\x28\xb7\x2a\xd3\x99\xd6\x90\x80\x5b\x53\x9b\x45\x49\x4b\x2f\xba\x68\x43\x75\x27\x4b\x45\xf5\x45\xc8\xad\x6b\x8d\xb2\xf1\xe9\x74\x51\x2a\x00\x52\x2a\x80\x67\xd2\x40\x49\x18\x21\x33\xc8\x17\x92\xec\x79\x2c\xdf\x90\xcb\x88\x15\x6c\x38\x23\x00\x25\xec\x53\x86\xf7\xa5\x74\xc6\x2a\xf5\xcc\xf0\xaf\x60\xab\x28\xa8\x9a\x4c\xb5\xb4\xa4\xd7\xb3\xa9\x64\xc8\xcf\x8c\x30\xd2\x3f\xe6\x46\x77\xa5\xf8\xbb\x4a\xb2\x47\x75\x8d\x67\x0e\xfd\x27\xe9\xc0\x81\x2c\x81\x3f\xea\xbe\x30\xff\xc8\x4d\xb7\xbd\x3f\xe7\xaa\xe4\x85\xf5\x3b\xe8\x1f\x86\x14\x73\x9b\xf2\x8d\xbe\x03\x93\x0c\xcf\xcb\x7c\x64\xd2\xa9\xaa\x72\x0f\x14\x42\xd1\xcf\x18\x1a\x90\xba\xfa\x79\xe2\x7c\x00\x16\x09\x8c\xee\x9c\x9a\xeb\x40\x94\x94\xcf\xd5\x0c\x87\xe9\x95\xc4\xde\xd5\x2c\xa2\xb9\x10\xc5\xaa\xcc\xbe\x80\x54\x00\x61\x25\x65\x52\x58\xa3\xfc\x3b\xec\xbd\x43\x59\x96\xbe\xa5\x18\x4b\xa9\x4d\xa1\x6a\x18\x14\xd7\x1d\xbf\x61\xe7\xb2\x9b\xd1\x2b\xda\xed\x85\xc5\xd6\x0d\x27\x44\x17\x54\x30\xfe\xb1\x58\x0d\x09\xd6\x05\x8a\x50\x9c\x8d\x02\x1e\xa3\x5d\xfe\xd9\x9a\x99\x5d\x56\x2e\x0b\xe7\x3f\x36\x18\xe5\xa9\xe1\xa9\x74\x23\x46\x8d\x94\x16\xdb\x38\xbc\xdc\xb0\x50\xbb\x71\x86\x6e\xd4\x46\x43\x65\xbd\x2d\x60\xc5\xba\x62\x06\x69\x34\x60\x6b\xbd\x2a\x37\x80\x8d\x0f\x78\x84\x82\xa5\x55\xe0\x91\xef\x62\xdc\x89\xa8\xee\x5e\x98\xf4\x87\x96\x95\xfa\x9e\xaf\x51\x43\xe9\x05\x72\x33\x21\xad\xd5\xd0\xcb\x83\x2c\x94\xb2\x97\xb7\x24\x27\x59\xa1\xf9\x69\x9a\xe6\x74\x7d\x91\xf1\x7f\x3a\x64\xf2\x4b\x2b\x32\x7f\x8f\x14\xf0\x77\x9f\xbb\xb0\x7d\x8b\x7d\x88\xdf\xf1\x1e\x98\x1e\xb5\x70\xdb\xa8\x82\xa9\x8e\xa4\x18\x83\x2c\x79\x16\x95\xc4\x31\x2e\x5e\x56\x4b\x64\x75\xa6\x48\x1e\x14\x82\xfe\xaa\x6b\xda\x3d\xb5\x47\x20\x65\x07\x73\xa1\xae\xfe\xe3\xcd\xb9\x90\x9f\x7d\x53\xa7\x6d\x80\x56\x6d\x70\xa9\xfa\xe7\xf7\xce\xe1\xb7\xa7\x19\xeb\x1d\xb0\x5b\x4c\xa2\xee\x30\xad\x25\x70\x53\xa9\xe2\x38\xe2\x9e\xaa\x27\x51\xde\x6c\xae\xb9\xe7\xcd\xc3\xb9\x78\xd5\x8f\xc1\xb3\xc5\xd3\xdc\x28\x5d\x3d\xd0\x46\x61\xb1\x2f\x9e\x74\xd3\xaf\xf8\xfd\xc8\x02\x51\x2c\x75\xf7\xfa\x70\xb6\xc8\xfa\x89\xb6\xf0\xbf\x87\xdf\xf3\xf3\xca\xff\x27\xeb\xc9\xd1\x24\x0d\xa9\xc5\xe5\xbe\x73\x14\x92\xeb\x56\x71\xb5\x79\xf0\x33\x22\xb7\x9b\x9b\xf1\x67\xbe\x20\xa3\x66\x94\x8b\x2b\x4b\x59\xbb\x74\x2c\xd0\xf9\xab\x89\xec\x14\x7d\x00\x52\xa8\x2a\xde\x16\x33\x9b\x5f\x16\x55\x06\xc5\x3f\xf3\xb1\x37\x0e\xbe\x6f\xe0\x88\xef\x4e\x81\x0c\x0a\x32\x7f\x99\x2d\x16\xb7\x36\xc6\x09\x43\x94\xc1\x72\xd3\x4b\x2a\x90\xc0\x54\x59\x60\x52\x95\xdf\xd1\xe9\xe6\x95\x85\xa6\xa2\xbc\x24\xc3\x8b\x5d\xbe\xa1\x31\x24\xbb\xb3\xe8\xc4\x77\x96\xd8\xce\x55\x45\xd1\x6b\x72\x6c\xa0\xcb\xc8\x77\x37\x89\x13\x23\x05\x7a\x31\xdf\x77\x0c\x6b\x6b\x94\x42\x9c\x8c\x97\xba\x93\x5e\xc4\x45\xc2\xf1\xc0\xc4\x48\xe6\x68\xbc\x46\xcf\xc1\xa3\xe2\x72\xd5\xea\xc9\x5d\xba\xaf\x18\xef\x94\x19\xd9\xcd\x5f\x8a\xa6\xd9\x32\xdf\xf4\x8b\x8a\x0c\x1d\x44\xc1\x1c\x95\xa2\xa8\x40\xe0\xaf\xa6\x05\x41\x0e\x31\x44\xc6\x1d\x73\x0d\x4b\x42\x4a\xfe\x7c\x77\xe4\xc7\x47\xcd\xac\x5b\x75\x01\xd1\xcc\x28\x33\x22\x27\xf2\xcb\x07\xd2\x9a\x24\xf2\x23\x0c\x1a\x62\x22\xb3\xb4\x4c\xf0\xfe\x00\xb9\xf5\x33\xc6\x5b\xe7\xb0\x65\xc8\x67\x14\x2d\x10\x1e\x10\xa9\xcd\x00\xc2\xa3\x74\x6c\xb7\x28\xad\x78\x6d\xc0\x4e\x12\xf2\xcd\x80\x17\x30\x72\xc2\x20\x27\xab\x52\x2c\x0a\x35\xca\x51\x95\xb4\x62\x26\x23\xe5\xbd\x18\x05\x0f\x90\xe1\x8c\xef\xd0\x1a\x65\x00\x95\x12\x5a\xc4\xa1\x60\x7d\xfe\xad\xa3\xd9\xdf\x84\xbc\x72\xac\x86\x37\x83\x63\x2e\x91\x5e\x1b\xbc\x33\x44\x8e\x9d\x59\xc2\xda\xf3\x7a\x2c\xc6\x3a\x8a\x8b\x1d\x43\xa3\xd4\xd0\xbf\x48\x19\x7a\x2e\x66\x2c\xda\xc3\x6a\x39\x6d\x62\xa3\x83\xa3\xba\x52\xa4\x85\x0a\xcd\x75\x87\xff\x7c\x06\x29\x56\x5c\x6b\x32\x50\x06\x30\xe1\xac\x69\x39\x26\x05\xcf\xc5\xf5\xff\xa6\xdf\x0d\xd7\x18\x34\xb6\x21\x19\xc0\xda\x43\x52\x9a\x57\x02\xa4\x28\xa7\x90\x16\xeb\x5e\x29\xda\x93\xef\x7d\xe7\x77\x33\xee\x58\x71\x73\xb9\x8f\xa8\x35\xde\x5d\x8b\x04\xb2\x79\xdb\xa2\xa1\x9c\x4d\x64\x34\x1e\xa3\x5c\x36\x27\x82\xb2\xa4\x86\x37\x66\x8f\x6f\x5e\x93\xa4\xd1\x5c\x47\x2c\x56\xee\x19\x67\x1d\x48\xfb\x3e\x77\xe9\xd3\xf1\xf1\xc5\xdb\xc8\xc1\x93\x0c\x28\xe1\xc5\x92\x72\x10\x7a\xf6\x43\x12\xfd\xbe\xa5\x9e\xac\x97\x30\xb6\x36\x57\x1e\x69\xc3\x46\x0c\x43\xa3\x34\x86\x1e\xd2\xf1\x49\xe8\x8c\x74\x35\x5d\x83\x95\xdf\x59\x55\x77\x51\xca\x6e\x43\xd7\x80\x52\xc9\xf0\x1e\xd2\xca\xa2\xb2\x59\x32\x21\x17\xcb\x51\xb6\xaa\xac\xe5\x04\xca\xb3\xa2\x9e\xb9\x4f\x07\x1a\x43\x5d\x68\xb3\xbd\xb6\x45\x1b\x22\x5a\xed\xf7\x0a\xc8\x96\x02\x4e\xe9\x55\x3d\x4a\x9b\xb9\x85\x5a\x3a\x4a\xb5\x67\x3a\x26\xe7\x32\x51\x5f\x68\xb0\x8c\x92\xf8\xb3\x58\x7c\x59\xae\x67\x50\x5f\xf0\x89\xa2\x1a\x77\x66\x80\x24\xc2\xe4\x73\x06\x13\x70\x2a\x8d\x90\x5e\x75\xa7\xb1\x7a\x25\x61\x45\x1e\x93\x09\xd6\x61\x54\xd6\x9d\x36\x4c\x33\x2e\xf1\xb9\x36\x9c\x18\xaa\xa3\xb0\xf6\x63\x65\x79\xe3\x07\xa2\x6a\x82\x76\x72\xf7\x4a\x20\xd4\x7e\x84\x56\xfa\xc9\x7c\x30\xeb\xb9\xd2\xc6\xc6\xbf\x21\xf7\xbb\xda\x7a\x86\x1e\x1a\x46\xcd\x86\x7f\x88\x35\xbd\x5e\xb5\x2a\xdb\x4d\x57\xb2\xc5\x73\x0c\x9f\x47\x93\xbd\x8c\x2b\x33\xeb\x69\x1e\xe5\x86\x64\xeb\x79\xc5\xe2\xe9\x1e\x60\x78\x2d\xfe\xbf\x2f\x09\xd7\x5d\x38\xa4\x01\xa2\x6f\x1b\x08\x24\x2c\x51\x78\x4e\x2b\x84\xbe\xf6\xf2\xd1\x5f\xc1\xa3\x8e\x87\xd2\xa6\xa2\xd7\x22\x37\x9e\x94\xea\x11\x1b\x80\x20\x4a\xde\x4e\xd0\x30\x12\xb8\x0a\xc4\x36\xb9\x5a\xd0\x09\xbb\x77\xa5\xe0\xd0\x6d\xb4\x8a\x80\x6c\x4f\xcd\x12\x70\xd3\x1a\x30\x42\x73\x51\x64\x34\x8f\x7f\x02\xf2\x06\xbc\xd0\x86\x4d\x3a\xb1\x1b\x6a\xef\xc1\x6b\xf9\x9b\x0e\xb2\x97\xbf\x7c\x36\xf3\xbd\x7a\x88\xd6\x4c\xf9\xdb\x9a\x89\xf5\x4a\x59\x15\x3d\x06\x9f\x77\x66\x5f\x3e\x25\x2a\xcb\xa0\xf3\xe7\xc9\x8e\x8e\xcb\x81\xdc\x0c\x4b\x05\xe9\x3c\xcf\xae\xfd\xeb\x6b\x88\xe7\x5a\x40\x2e\x19\x29\x2f\xda\x74\x44\x75\x38\xb4\x2b\x0e\xbc\xc0\xfe\x1d\x30\x80\xb7\x51\x87\xdd\x0c\x7c\x23\xfa\x6d\xdf\x76\x62\x1d\x76\x82\x9e\xa8\x79\xcf\xb8\xb8\x84\x51\x39\x73\x82\xf9\xc1\x02\xa3\x5e\x55\x60\x85\x55\x96\x62\xfe\x1d\x13\xff\x7c\x80\x6c\x16\xab\x5d\x7c\x99\xb1\x2e\x59\x4f\xbb\x8a\x32\x05\x3e\xc8\xd6\x07\x62\x3f\x9d\x94\xbb\x25\x45\x9f\xe8\x83\x17\x42\x56\xc5\xc8\x63\x1d\x05\xc0\x6c\x48\xe7\x4d\x95\x30\xf3\xfc\xe2\xeb\xce\x4d\x58\x82\xeb\x7d\xfd\x3c\xb1\xf3\x95\xa3\x6a\xde\xe3\x61\x11\x47\x52\x72\x96\x3d\xf7\xbf\x4b\x85\xd9\xc3\x97\xb6\xcc\xd7\x8e\xb6\xbb\x1d\x96\x24\x9d\xe0\x8e\x4e\xdc\x5e\xaa\x74\x25\xa6\xec\xd6\xc2\x6d\x4a\xba\x97\x3c\x21\xa6\x6e\x11\xa4\xc5\x88\xd8\xed\xde\x7f\x73\x53\xf3\x2a\xd4\x9e\x48\xd3\x13\xce\x9a\x6d\x58\xf8\x95\xd5\x41\x44\xbe\x65\x06\x9d\x51\x96\x5e\x9e\xa1\x4b\xca\x92\x87\x3b\xa6\x5c\x94\xca\x38\x84\x02\x6a\x66\x2f\xcb\x61\xcb\x1b\x66\xfe\x60\x6a\xb4\x76\xd2\xaa\x7c\x0b\xbe\x48\x50\x35\x11\xfe\x14\x6a\x70\xb7\x39\x66\x07\xed\xdf\x85\xe1\x76\x0b\x1e\xfe\x95\xd5\x34\xde\x08\x25\xda\xd7\x76\x54\xb7\xac\xa3\xd1\xed\xf5\xc4\x6a\xe6\x8d\x88\x6e\xbe\x5a\xc9\x29\x3f\xf6\x9d\xa3\x03\x06\x2b\xd8\xdd\xff\x47\x8f\xdd\x8e\xe9\x19\x84\x3a\x2c\x38\x6c\x8e\xbf\x4f\xc7\xb4\x4c\x6b\xbf\x39\x0a\xe2\x89\x19\xcb\xa8\x61\xba\x51\xdf\x8a\xb7\x47\x92\xaf\xda\x77\x18\x79\xc5\xd9\x07\xc8\xfb\x02\x83\x23\xe9\xa0\x4c\x02\xf9\xd0\xd1\x09\xdd\x8d\x3b\xdc\xbd\xa0\x82\x6d\xf2\x2a\x46\x6f\x3f\x54\x64\xaa\xb6\x6c\x50\xbe\x5a\x4f\x92\x50\xd7\x91\x9a\xc1\x03\x7a\xd7\x78\x68\x2c\x36\xee\xd9\xa7\x4f\xeb\xd2\x49\x5f\x48\x58\x3a\xcd\xd8\xc7\x38\xfb\x14\xc5\x2c\x5f\x2e\x41\x72\x6c\x9c\x19\xe9\x0d\x2a\xde\x13\x34\xc8\x3f\xd0\x32\x08\x95\x3a\xf1\x30\xb8\xb4\x00\x10\x97\x8d\x32\x91\x72\x1f\xfc\xda\xfa\xe4\x01\x34\x6b\x73\x28\xbd\x0a\x9a\xb2\x35\x33\xe0\xa2\x1d\xeb\x79\x24\x20\x3d\xee\x9e\x1d\x89\xf4\x7e\x40\x4b\xc2\x41\xba\x5e\xd8\x49\xb5\x10\x42\x74\xab\x67\xbd\x10\x83\xf7\x4f\x1d\xce\x93\x7f\x24\x9b\xa8\x1e\x27\x8b\xd4\xec\xe9\xcc\x2f\xca\x96\x93\x7f\x51\x8f\x50\x43\x3e\x4a\x35\x86\x40\x86\xc1\x1f\xdd\xa2\xb4\xab\x1c\x56\x52\xbb\xe3\x0d\x56\xde\x13\x5e\x6e\xb6\x72\x4c\xde\xc4\xc4\xa4\x93\xf4\x82\xae\xfb\x80\x92\xc4\xe7\x7e\x97\xc9\x40\x08\xed\x32\x0b\xb5\x24\x08\x08\x81\x53\x5e\x77\x6d\xf7\x87\x1e\x7f\x1b\x6b\x0e\x3d\x74\x20\x3f\x2c\x42\xe8\xfd\x14\x0d\x54\x5c\xaa\x05\xc5\x23\x3c\xac\x50\x7b\x3f\xae\xf9\x0c\x0b\xeb\xac\xae\x3e\x12\x30\x6c\x84\x36\xb5\x93\x0c\xa7\x87\xce\x28\x28\x61\xf4\x25\x66\x34\xad\x6a\xa5\x6e\xc9\x25\x44\x47\x4f\x49\x03\x99\xfd\x5e\x65\xe2\x92\x71\x99\x9e\x34\x87\x9e\x1e\x1a\x7b\x41\x75\xb1\x39\xea\x4b\xa2\xda\x5c\x60\x2a\xa7\x51\x04\x77\x49\x81\x3f\xef\x19\xb7\x40\x97\xb5\xce\xa2\x17\xd9\xa4\x09\x95\x65\xb5\x38\xe8\x6e\x34\x61\x41\xaa\x96\x4e\x2f\x46\xa5\x30\x71\x3f\xe9\x32\x51\xe6\xd3\x4c\x55\xbe\xb0\x33\x52\xd0\x39\x55\x95\x38\xe0\x7f\x88\x17\xd1\x46\xb7\xb4\x50\x10\x3d\x8c\xf2\x6a\x92\x0c\xd6\xbe\x2c\xd4\x32\xd7\x66\x6c\x1e\xfb\x27\x32\x1b\x56\xb0\x85\x78\x61\x9b\xb5\x1e\xa5\x2b\xed\xa7\x93\x61\x9f\xf3\x5e\x66\x2c\x65\xd2\xab\xc8\x66\xf2\x9f\x2a\xce\xb8\x6b\x2b\x8d\xf2\x50\x20\x92\xbd\xf0\x9b\x65\x38\x18\x51\x50\x90\xb0\xfc\x79\x51\x4a\xb6\xb5\x14\xa4\x28\x88\x01\x49\xcc\xf5\x59\x1b\x35\xe3\xbf\x8b\xf5\x82\x59\xdd\x24\x4c\x0d\x04\xa7\x6e\xce\x87\x9b\x86\x15\x9b\x5b\x95\xa9\xeb\xff\x67\xbe\x16\x90\x37\x1c\x53\x79\x3d\x61\xc9\x13\x34\x22\x9e\xcc\x74\x95\x4c\x22\x39\xb0\xe5\x93\xa3\xb3\x99\xe7\xc2\x34\x4b\x45\x5d\x59\x42\xa0\x0f\x11\x34\xef\xd3\x0c\xfd\x30\x41\xfe\xc5\x1f\x14\xfc\xe4\x61\xe8\x36\x82\x4f\xff\x88\x91\x6f\x59\xbf\xa7\x71\x9b\x8d\x84\xed\xd1\x72\x25\x71\xf7\x75\xf4\xb5\x00\x45\x1e\x1d\x3b\x97\xaf\xbb\x92\xc5\x60\x61\xcc\x62\x21\x13\x4a\xd6\x46\x77\x20\x54\x2f\x4f\x0e\x5d\x37\x7a\x9e\xaf\x12\x01\x9d\x30\x7b\xa1\xc5\xe1\x7d\xf7\xed\xc9\x8f\x65\x18\xa9\xb1\x56\x4e\x3b\x34\x05\x9b\xf7\x98\x38\x93\x23\xeb\x31\xe0\x51\x94\x42\x33\x3a\x8b\xde\xbf\x2f\x51\x79\x1c\xa2\x85\x2d\xf7\xbf\x3d\x3e\x26\x36\x3d\x70\xb2\xb7\xbb\x1e\x35\x28\x24\x95\x47\xeb\xe4\x8d\x41\x9b\x36\x1f\xbf\x39\xe4\xd0\xbb\xcd\x67\x2f\x98\x4a\x81\x33\x65\xc7\xf8\x09\x68\xc5\x05\x32\xad\x35\x1f\x48\xbc\x79\xc8\x5b\xce\x1d\x9f\x2c\x1e\x4a\x60\x94\x61\x77\xa6\x1c\xa7\xf5\x0c\xef\x19\x7f\x23\xb8\x08\xa7\x8f\x05\x7d\xe9\xeb\x3b\xb5\x2d\xad\xaf\xb1\x32\x1c\x7d\x4e\x96\x2f\x1e\x5d\x9d\x82\xf6\x0e\x3a\x23\xc0\x3f\x23\xb5\xbc\x6c\x6e\x0e\x2f\xc4\xa1\x98\x5d\x97\x53\xdb\x56\x3a\xba\x24\x99\xe9\x1d\x81\x6a\xd0\xe3\x14\x51\xda\x2b\x1f\x9e\x16\xc5\xcf\x40\xbd\x71\xf8\x4f\x05\xa5\xd4\x08\x0c\x4c\x8f\x00\xc3\x64\xc0\xca\xfb\x3b\x29\xbd\x8c\x46\x54\x5f\x7d\xab\x89\x5a\x1f\x6a\x8e\x8a\x51\x64\x3c\xac\x18\x3c\x35\xed\xd0\x69\x3a\xaa\x44\xed\x7a\xe8\x35\x7c\x44\xbf\x6a\x06\x1f\x40\xd3\x5d\x20\xe3\xea\x8e\x83\xa2\xf2\x92\x37\x01\xee\x96\xd2\xaa\xfd\x5e\x3f\xa3\x38\x2a\x51\x2d\xbb\x31\x2d\xac\x6c\x20\x9b\x23\x9b\xe5\xba\xb4\xfb\xd2\x55\x92\x86\x27\xbe\x9b\x42\x7e\xc6\x74\x2a\x1d\xb6\x36\x32\x20\x2d\x72\x63\x88\xd6\xfc\xb8\xd3\xa1\xaa\x2c\x2d\xa0\x90\xff\x15\x56\x2b\x42\x1c\xfd\x8c\x9d\x47\x3e\x06\x74\x03\xb8\x39\x01\x30\x40\x8a\xac\xc8\xbe\x03\x21\xe1\xcc\xad\x47\xbb\xb3\xb2\x00\xbb\xaf\x80\x39\xce\xee\x16\x5b\x9f\x66\xfb\x20\xcf\x47\xfc\xb9\x2c\x38\xde\xd4\x97\x6c\xec\xc8\x0d\x98\x92\x13\x26\x5e\x29\x7c\x2f\xc7\xf9\x33\xad\x49\x64\x88\x70\xd6\xff\x61\x66\x83\xfc\xad\x7f\x2b\xde\xf3\x6f\xe2\x7f\x08\xb9\xb9\x27\x08\x9e\x8a\x14\x14\x11\x6a\x8f\xec\x77\x5f\x98\x3d\xf2\x76\x41\x15\x34\x5d\x82\xc8\x12\xe4\xdf\xbc\x64\x68\x08\x66\xdf\xda\x50\xaf\x60\xcc\x5b\x1c\x76\xd5\x51\xde\xe2\x76\x1e\xf3\x58\x49\xec\x7e\x13\x24\x08\xeb\x28\x5a\xbd\xeb\x1e\xd7\x28\xda\x45\x4f\xde\x98\x0a\xd2\x17\xbe\xd5\xad\xba\xdb\x0e\x4f\xfb\x44\x56\x5c\xc0\x47\xa6\x26\xc3\x90\xe6\x21\x91\x34\xa9\xd2\x0f\xd0\x2b\x31\x50\x5d\x9a\x1b\xdb\x5b\x4d\x2e\xfe\x2d\xb4\x81\x3f\x0b\x40\x6a\x0e\xfc\x5b\x3d\x0b\xff\x46\x69\x23\x33\xe0\xf3\x2c\xa7\x5d\xc6\x6b\x38\x82\x9b\x35\xb4\x45\xd0\xa4\x81\x91\x58\xcb\xab\x16\xe8\x40\x81\xa4\x86\x08\x96\x10\xa6\x27\x9c\x7a\xe4\xdf\x8f\x16\x02\xb8\xd4\xeb\xa3\xd1\x69\x91\xcd\x41\x0d\x2d\x48\x98\x9b\x76\x6c\xd0\x52\xe5\xc5\xb0\xa4\x36\x15\x24\x29\xc1\x5a\x9c\x15\x94\xa8\x63\x7d\xc1\xa4\xb1\x0d\x99\xdf\x7b\x46\x6d\x5b\x75\xc0\x98\x26\x1e\x73\x25\x5c\xbb\xb4\x9a\x50\x5d\xf2\xe3\xc1\xb0\xd9\x04\x07\xb5\xfa\xcb\xef\x79\xe3\xce\x98\x1e\x65\xed\x50\xec\xa0\x9b\xf1\x82\xcf\x68\xcb\x2d\x36\x72\x66\x7a\x46\x13\xfe\x15\x12\x8c\x80\xe7\xad\x9e\xc8\xdd\xd4\xe1\x56\x95\x6c\x14\x57\x25\xfe\xab\xd1\x43\x4e\xa4\x4b\xd0\xde\x44\x72\xa1\x57\x94\x6a\xe9\x79\xfb\x7e\x14\xb8\xc1\x9b\xb3\xa5\x4d\x07\x54\xbc\x78\x09\x09\x81\x07\x08\x49\xb4\xcb\xb0\x91\xdb\x72\x6b\xe6\x27\x6c\x87\x07\x08\x8e\xd0\x99\xaf\x46\x56\x25\x9c\xe3\x5b\xd4\x88\x8c\xa3\xb5\x7a\x2f\xdf\xb8\x8d\x94\xb5\xa1\x43\x9a\x81\x45\x3c\xff\xdc\x57\x86\xd6\x9a\x59\x2a\x4e\x50\x28\xf0\xa8\x70\x6e\xf4\x8b\xa7\xc4\xa1\x1c\x4c\x8c\x08\x91\x44\xb6\xff\xb3\xdb\xc1\xf8\xad\xa4\xcf\xd7\xe1\xe8\xb0\x8a\x88\xe0\x1f\x40\xab\xd1\xbc\x24\x74\xd5\xbd\x34\xcf\x0d\xde\xa2\xfe\x06\x91\x8a\x10\x35\xc9\x4f\x01\xff\xba\xb7\x78\xd1\x70\xf3\x6f\x94\xb7\xc2\xbc\x08\x95\xfb\x8a\x12\xba\xaa\xb4\x2a\x46\x62\x75\x45\xa2\x87\x99\x36\xb2\x6a\x10\x44\x2b\x58\x1b\xee\x01\x51\xf1\x66\x29\x67\x54\x49\xfd\x36\xf2\x89\x74\x42\x89\x9a\xf6\x40\xb3\x8d\xdc\xc4\x24\x00\xa5\xda\x1a\xb2\x5a\xa5\x31\xaa\x7b\x02\xd1\x83\x27\xfb\x4d\x84\xd9\x4f\x91\x0c\x59\x30\x96\xc7\xd8\xde\x06\x91\x7d\xa6\x86\x9b\x5c\x5a\x5a\xdb\xdb\x48\xee\xe0\x60\x4e\x71\x51\x52\xeb\x2b\x41\x2d\xba\xc1\xd8\x18\x5f\xdb\xc4\x42\xec\xe9\x35\xc9\x77\x4b\xe6\xde\x34\xeb\x42\x68\x6a\x68\x69\x2b\xa3\x9a\x92\x5f\x7d\x75\x47\x71\x0f\x25\xb0\xfd\xe6\xc4\xd8\x82\x1a\x93\x51\xd9\x8b\x79\x69\x8e\xa6\x65\xf7\xa7\x64\x85\x21\x40\xeb\x50\x50\xbc\x2b\x01\xdf\x82\x57\xb7\x2f\xc8\xf9\x89\xb4\xad\x20\x56\xbf\x32\x1f\xb6\xca\xf0\x7f\x77\x78\x68\x50\x0f\x29\xc4\x9c\x24\xa3\x87\x32\x48\x96\x53\xf7\x95\x9a\xa8\x93\xfa\x59\xc6\x47\x20\xf4\xbf\x7d\xc5\xf7\x29\xd8\x5a\x60\xe5\xcd\x36\xdf\xaa\x9a\xa7\xd6\xa1\xd6\xff\x6c\xec\xef\xd3\xfc\x26\xc3\x5d\xda\xc7\x86\xee\x76\x7a\xff\x55\x04\x77\xd3\x7c\x79\xe4\xf4\x6f\xce\x23\xb7\x21\xfd\xbf\x55\x5b\x28\xe0\x66\xbe\x8f\xba\xb4\x6e\x5c\x82\x55\xfe\x9d\xb6\x6c\x4d\xda\x72\xdf\xb2\x76\x69\x2a\xdd\xf7\x82\xfc\x94\xf2\xf4\xae\xa2\xee\x12\xcf\xc7\x35\xb7\x8f\xa8\xa4\xac\xa1\x1c\xfe\x38\xed\x81\x5f\xd6\xf9\xad\xfc\xd2\x3a\x44\xb0\xb7\xf3\x6d\x8b\x19\xf2\x4b\x73\xff\x9b\x1e\x78\x68\x1a\x92\x0a\x39\x81\xa4\x2b\xed\xa1\x2d\x7c\xd5\x7c\x74\x76\xfe\xa4\x2b\xf5\xc5\xa6\x04\xf3\xdb\x15\x73\x13\xc3\xca\x7a\x96\x8e\x06\xf6\x85\xc9\x2f\x90\xaf\x66\x69\xc9\xb9\xdd\xe4\x56\x2f\x1b\xbc\x97\x8a\xcd\xa4\xe6\xb6\x15\x76\xe8\x4b\x51\x10\x3b\xd7\xb3\xa5\x79\x1c\xf3\xff\x3d\xf2\x9d\x55\xb0\x45\xab\x7f\xa6\x11\x19\x79\x59\x0b\xed\x2a\xd0\xf7\x1e\x95\x0e\xe7\x62\xdc\xa0\x7d\x7b\x21\xff\x1e\xbf\x8b\xa1\x31\x2b\x9b\xa4\xef\x7d\xdc\x9f\x03\x5a\x42\xb3\x8d\x7a\x83\x8f\x4a\x17\xcf\x8f\xa3\x19\xf7\xd1\x4f\xad\x57\x3f\xa4\x40\xce\x20\x0b\x89\xd3\x25\x8b\x64\xe6\xed\x50\x30\x3d\x22\xa7\xd4\xbf\x7b\xe3\xda\x9a\xcd\x08\xb9\x82\xde\x4f\x89\x80\x80\x89\xd6\x1f\x08\xc1\x99\x2f\xd8\xdd\xa3\xa3\x88\xe8\xf4\x1d\x5c\xbe\x26\x0f\xc1\xfe\x25\x7a\xfe\xf2\x5e\xce\x6e\x5e\xdf\xf3\x2d\x16\xef\x35\xbd\x39\xcc\x0d\xd3\x55\xd8\x65\x38\x7a\x55\xcb\x6c\x09\x0c\xe8\xd3\x6f\x12\x0e\x67\x0e\x68\xda\xe1\xe3\x44\xd8\x9f\x35\x63\x13\xa6\xf4\x17\xc5\x03\xfe\x6a\x74\x8d\xdd\x3b\x2d\xfd\xe3\x13\xfe\xeb\x38\x6e\xbb\x6e\x20\xe4\x6f\xa8\xfe\xf6\x68\x96\x9b\xef\xec\x11\x7e\x0f\xdb\x56\xf9\xfa\x53\xea\x66\xa5\x6b\xee\x61\xc2\x2c\xcd\x45\x66\xf2\xaa\xe6\x63\xe7\xb7\x71\x0c\x75\x6d\x79\xfb\xbb\xe9\x22\x36\x57\x5e\xb1\x6a\x37\x17\x67\x76\xd5\x6e\x4b\x79\x96\xc2\x5a\xbf\x34\xfb\x22\x54\xf1\xc1\xe5\x92\xb6\xc9\x86\xef\x91\x27\xae\xac\x40\x1c\x5e\xd6\xb7\xb1\x93\xc7\xad\x9e\x1a\x44\xf5\xca\x4b\xc1\x9f\x07\xad\x19\x0f\x6a\xe3\xc0\xb6\x8e\x9d\x2e\x19\xa0\x42\x5e\x17\xb6\x0e\xf4\x3a\x68\x91\xc9\x23\x84\x16\x6b\x29\x07\x92\x97\x61\x1c\xa1\x0f\x5e\xf0\xd7\xf3\x6c\xb7\xde\xb0\xc2\xcd\x18\x6c\xdc\xa6\xca\xff\x02\xc9\x13\x5d\xc3\x94\x9e\xf6\xb5\x37\xcd\x6a\x4f\xd6\x92\xe3\x83\x3e\xbd\xda\xdf\xec\xbb\x0f\x63\xb4\x57\x43\x3a\xec\x75\x16\x62\xdb\xcc\x4d\xaa\xc3\xa6\x17\xa4\xe1\x98\xc9\xc8\xd5\xba\x53\xc2\x97\x39\xe2\x85\xee\x09\xbb\xbe\xae\xc1\xdb\xab\x3c\x30\xe5\xaa\x53\xe4\x03\x6b\x09\x4d\xa4\x40\x38\x9d\x4b\x59\x79\xd2\xc6\x6d\xe4\xac\x3d\xe0\x47\x07\xa6\x1d\xcd\x09\x70\xdb\xf7\x3d\x36\x18\xe1\xb6\x6a\xb9\xbc\x4f\x81\x53\x38\x43\x63\x3b\x10\x25\x4a\x21\x25\x20\x82\x16\xdf\x4e\x71\x98\x31\xc8\x1e\x01\xcc\x5f\x68\xe5\x3e\x2e\xab\x05\x12\xd3\xd9\x9b\xdf\x5a\xcf\xc0\x15\x18\x2b\x75\x4b\x15\xce\xfe\xa7\x80\x46\x6d\x23\x45\x80\xd2\x72\x10\x3f\xe9\x63\xa0\x6e\xe5\x08\xc5\xab\xdc\xb0\x70\x8a\x11\x7b\xc2\xfe\xc4\xc8\xf3\xc4\xc7\x06\xf9\x8c\x1f\x27\xcf\xc3\xff\x6c\xa3\x94\x24\x94\x14\xf5\x41\xc7\x89\x2c\x1d\xeb\x54\x9c\x88\x3e\xe6\x66\x92\x40\x40\x84\x49\x81\x21\x90\x96\x1a\xcf\xcd\xd9\xae\x3c\x37\x83\x7f\x5d\xd6\x84\x9a\xf1\x1d\x3b\x0a\x7d\x3a\x43\x7b\xbf\x94\x8b\xab\xc5\x47\xfc\x5d\x70\x22\x02\xfe\x09\x0e\x83\x01\x58\xee\x6e\xa0\xbc\xee\xd8\xac\x71\x6c\x3e\x02\xfa\x0f\xaa\x75\xa0\x7d\x49\x99\x9d\xbd\xdf\x73\xd0\x4b\x39\x60\x8a\x35\x1b\x62\xb9\xc9\xe6\xad\x18\xff\xb4\xf3\x7c\x9e\xb2\xb8\x28\x03\x26\xe0\x95\x4d\xc4\x8c\x5b\x4e\xde\x74\xcd\x66\x7c\xe3\xb7\x6e\x2a\x30\x21\x58\xd0\x08\xfa\x94\x2c\xe0\xd4\x9b\x4e\x52\x9a\x84\x56\xd1\x24\xf6\xd7\x22\x47\xc5\x5e\x06\xb6\x26\x00\xfe\x2d\x9f\x9b\x7d\xdd\xe4\xdf\x7e\xf5\x73\x3b\x46\x4e\xa5\x34\x18\x30\x3b\xa7\x21\x18\xf4\x4e\xad\xf9\xb8\x22\x7f\x5c\xeb\xb8\x86\x2d\x39\xf5\x11\x63\xe4\xd9\x55\x1e\x55\x1a\x5b\x8c\x8a\x62\x3b\x5b\x85\x12\xad\x9b\x50\x75\x8e\x2d\x46\x18\xe7\x99\xd0\x04\xb1\xf3\x80\xae\xd1\x98\x88\x30\xb4\xd9\xe8\x2b\xa9\x09\x57\x5a\xaa\x4f\x5f\x5b\xd3\x90\x71\xcc\x20\xd3\x92\x51\x64\x93\xba\x61\x74\xe7\x26\x11\x4f\xa5\xf7\x8f\x1e\x16\x2f\x75\x35\x04\xc0\x36\x1f\xee\x52\x65\xba\x6d\x7d\xcb\xaf\x28\xf1\x8f\xd1\xcf\x82\x6a\x1e\x85\x8a\xd7\xd8\xd8\x5f\x79\x6b\x0f\xf2\x77\xab\xc1\x81\x1a\x0a\x13\x2a\x0a\xd2\x95\x35\x16\x7a\x2a\x7a\x7b\x6c\x88\xd4\xe3\x7c\x22\x39\x90\x97\xba\x9a\x3f\x40\xea\x62\x7e\xc3\x24\x16\x14\x01\x4e\xbc\x8c\x32\x88\x9b\xc4\x9f\x2a\x0e\x3d\x07\x15\x7c\xc1\x5a\xfc\xad\x35\x65\xc6\x0c\x2d\x82\x41\x71\xbb\x7c\xcd\x82\x32\xde\xa0\x1c\x4b\x04\x48\x54\xd3\x99\xa7\x52\x46\xbc\xc0\x43\x42\x45\xad\x5c\x54\x84\x15\x5c\x7f\x96\xa6\x5e\xf0\x9c\xe2\x0b\xa5\x42\xf6\xc6\xa1\xfb\x9d\xef\xd1\x75\x02\x69\xe2\xfc\x48\x89\xd0\x94\x3a\x81\xfb\x67\x4a\x9f\x5d\x3f\xf7\xf6\x90\xe2\xc2\x3c\x69\x55\xb4\xa1\xa8\xe4\xbf\x63\xba\x68\x88\x5b\xa6\xdc\x70\x9c\x47\xb4\x2d\x94\x59\x11\x2c\x13\xbc\x50\x15\x92\x97\x75\xc5\xf4\xf1\x30\x90\x77\xfa\x46\x98\x55\x01\x6b\x04\x0c\xeb\xff\xcb\xdc\x33\xb7\xf0\x7a\x4a\x01\xbf\x87\x99\xf8\x11\x59\xab\x40\xda\xa3\x28\xf7\x6c\x1d\x4d\xa2\x32\x3d\x19\x23\x09\x9a\x5c\xcf\x5d\xc3\x4e\x6d\xfc\xeb\xd1\x57\x83\xc6\x1e\xf6\xac\x49\xd9\x2e\xc6\x4f\xa6\x2f\x51\xf5\x7c\xa7\xc5\x38\x10\x1a\xa5\xa4\x4a\x68\x77\xed\x52\x4f\x03\x56\x44\x60\x55\x84\x51\x71\xa5\xdb\x73\xac\x43\xfb\x07\xf6\x7a\x09\x6a\x38\x4e\xc7\x19\x10\xcb\x2b\x42\x65\x31\x71\x83\x64\x49\xf5\xaf\x9c\xfe\x17\x42\xe9\x0e\x5a\x80\xa5\xef\xe2\x8e\x95\xcb\xdd\x8d\xd7\x90\x98\x5f\x54\x97\xda\x9b\x8f\x4c\xd7\xf3\x10\xba\xf0\x9b\xf5\x55\xd7\x5d\xbd\x5b\x58\xdc\xa9\x6a\x4a\x22\x56\xe1\x87\xc8\xd8\xf3\xbb\xe9\x95\xca\xa9\xf6\xf7\x7d\xa6\xf7\xab\xfa\x26\xa1\xb5\x41\xa9\x38\x3e\xba\x4c\xd6\x8c\xb1\x7e\xf2\x20\xea\xa1\xa1\xe3\x42\xbd\x42\x37\x08\x8d\x8a\xad\xa0\x80\x5c\x94\x34\x8c\x7c\x07\xb3\x61\x4f\xc0\xc5\x2f\x30\x2c\x9f\x0c\x9f\x90\x99\xd2\x8e\xf5\xac\xf7\x80\x03\xa1\x19\x01\x94\xbe\x3b\xbf\x49\x75\x3d\xdb\x34\xdb\x5b\x07\xd5\x0b\x0c\x7b\x31\x6d\x40\x5f\x66\x94\x3e\x0e\x05\x03\x5e\x95\x55\x8e\x9c\x05\x7e\x84\x30\x3b\xb4\x60\x67\x36\xbe\x9e\x59\xad\xb3\x1f\x76\x08\xcd\x5d\x1b\xaa\x15\x64\x46\xe9\x06\x27\x81\x37\xf0\x53\x1d\xda\x2e\x89\x4c\xb9\x5f\x49\x6e\xfe\xcf\xb5\x37\x2b\x1d\xf8\xcb\x5d\x29\xbc\xf3\xef\xfa\x94\xdd\x1b\x31\xe8\x29\x28\xea\xdd\x45\xa0\x26\x5b\xdf\x61\x61\x26\x60\x61\x59\xfc\xc7\x93\x5b\xfe\xa3\xd8\xdd\x00\xf8\xd7\xa3\x7a\x42\xdc\xb2\x01\x64\x74\xb2\x4c\x88\x19\xbe\x2b\xd4\xcf\x8b\xdf\xd2\x80\x3a\x8e\x14\xd5\x53\x6c\xa4\xbd\x13\x87\x21\x59\xf8\x4d\x42\x6d\xa3\x07\xfa\x0f\x75\xa2\xfd\x2d\x01\xbc\xc5\xee\x2d\x97\xd7\x03\xf4\xc2\xf3\x15\x9f\xbd\x4f\x93\x87\x7b\xa3\x7b\x37\xef\xca\xbc\x34\x5e\x02\x6c\xe6\xec\x2d\xec\x2e\xf9\xbd\x87\x62\xcf\x3f\xb8\xb2\x46\xe1\x81\x95\x22\x49\x06\x08\x14\x90\xfb\x30\xb8\xe8\x62\x38\x84\xdf\x6b\xf9\x78\x14\x0a\x8c\xe2\x55\xbf\x59\x8d\xd4\x6d\xbd\xc6\xbb\xc5\xae\x5a\x0b\xd0\x54\xd7\x0d\x58\x64\x7b\xe1\xd3\x5d\x8d\x81\xe8\x9e\x79\xf0\xc9\x65\xc0\xad\xd6\xdf\x78\x1e\xd5\xf7\x1f\x1f\xb9\x7a\x2f\x09\x82\xc5\xff\x23\x2e\xf6\xff\xe1\x3b\xb0\x4f\xc5\x04\x66\x49\x1b\x4d\x76\xcc\xc3\x9f\xd3\x9d\xb0\x85\x91\xab\xfa\xe8\xa0\x80\xa1\x87\x70\x58\x50\x00\xfa\x21\x14\x8f\x49\xa9\xfb\x02\x5e\xdd\xbe\xb0\x85\x70\x48\x5f\x07\x2c\x1f\x13\xec\x33\x7d\xb4\x92\xac\xd6\x02\x1a\x35\x74\x37\x56\x5b\xe4\x92\x08\x29\x7a\x5d\xe7\xcf\x22\x8f\xf8\x9f\x06\xfb\x89\xf9\xf5\xc6\x80\x66\x02\x80\xee\x59\x89\x78\x35\x0d\x42\x0a\xe1\x2a\x48\xcd\x45\x87\x42\xb0\x24\x30\xd3\xe0\x72\xcd\xb0\xc9\x78\x74\x8c\x34\x91\x58\x02\xa9\x60\x9d\x68\x05\x08\xbd\x5a\x8d\x27\xe8\x60\x9e\x5a\x8f\x66\xee\xa3\x53\x85\x46\x38\x65\x71\xa6\x5e\x46\x4b\x75\x55\xe5\x5a\x06\x59\x09\x1e\x99\x5f\xaa\x5c\xba\x36\x71\x74\x93\x7f\x4e\x91\xc5\xa7\xef\x7a\xff\x18\xbd\xaa\x2a\x1b\x9c\xd8\x23\xfa\xe3\x13\x76\xde\xe6\xe0\x1e\x8f\xe1\xe7\x6f\xbd\xfb\xf0\x9c\xbf\xf7\xe0\xa3\xdf\x35\x8c\x7b\xaf\x80\xaf\x8e\x07\xd7\x2f\x07\x64\x57\x1c\xf2\xfd\x7a\x1c\x92\xf7\xbc\x32\xe8\x1f\x3c\xec\xf9\xc0\xf4\x79\x1e\xb0\x0b\x9d\xe9\xf5\xa4\x71\xfe\xff\x0f\xda\x31\x48\x16\x1f\x59\xd9\xcf\xdf\x46\x65\x29\x60\xf0\x73\xde\xf9\xe8\xf3\x6b\x88\x1d\x9c\xde\x55\xa0\x7c\x40\xe1\xd4\x55\x2d\xbd\xbd\x4f\x6d\x00\x9f\x7c\x56\xe9\x0d\x21\xd5\xdc\x8b\xe6\xe3\x86\x97\xab\x58\x8f\x5e\x0a\x30\x02\x05\x30\xc9\x50\x89\x49\x2f\x9e\x1b\x2f\x02\x55\x33\xd5\x88\x2f\x5a\x05\x05\x83\x2e\x5f\xfb\xe2\x45\x29\xfc\x98\x3d\xd8\x0e\x69\x13\x86\x07\x58\x92\xcb\x6a\x7c\x7e\x08\x94\x69\x34\x41\xe6\x74\xcc\xd3\x4f\x2e\x4d\xd5\x0c\x87\xb0\xba\x53\xc4\xb0\xd5\xdd\x90\x50\xf1\xce\x33\xa0\xc3\x96\x37\xdb\x2b\xb4\x2a\x2c\xe1\xde\x21\x14\x9e\x59\xfb\x7c\x1b\x0e\x0d\x64\x37\x02\x9e\x27\x55\x05\xb4\x57\xc7\x1b\x9f\xb7\x2f\x4f\x03\xc8\x7b\x07\x1c\x82\x84\xf7\x9c\x17\x9f\x38\x9b\x58\xd0\x00\x8f\x87\x26\x2f\x5e\xfe\x84\x2d\x34\x8b\xbf\x9c\x5c\xb3\x79\xde\x84\xa4\xdc\xeb\xb4\x46\x28\xae\xdf\x57\xcc\x32\xc1\x75\x4c\x2d\x13\xb8\x5c\xd3\x9c\xd5\xd6\xc5\x95\x5c\x92\x78\xae\xed\x37\x3e\xb5\x9e\xdf\x5b\x36\x4a\x83\xb3\xb8\x5d\xbd\x6c\x52\x78\x67\x7d\xa8\x4f\xd7\xfb\x1f\x35\x2f\x77\xf4\x9a\x09\x55\x2c\xe9\x10\x7b\xd7\xd3\x7a\xad\x4b\x33\x97\x76\x18\x75\x06\x59\x7c\x2c\xad\x24\xeb\x46\xfb\x90\x89\x2e\x72\xdf\xd4\xdc\x97\x8f\xc4\x37\x7c\xfa\x97\xa2\xa4\x2f\xfb\x53\xc3\xed\x20\x21\x88\xd8\x27\x66\x3e\x58\xc6\x69\x13\xf7\x39\x4f\x5e\xe9\x2b\x69\x94\xb2\x7e\xd4\x87\xb8\xe5\x59\x93\x05\xcf\xa9\xa8\xfb\xf7\x0d\x0f\x3d\x4f\xa7\x2e\x6d\xcf\x64\x1e\xe3\x4f\xe2\x63\x83\xc1\x89\xb1\x63\x0c\xad\x18\xc5\xd6\xbe\x91\xd5\x4a\x76\xff\x8f\xa5\xe4\x4f\x6f\x5f\xa1\xa2\x75\x9b\xdc\x22\xac\x60\x68\x02\xf3\x40\xe8\xca\x00\xfb\x69\x18\x12\x89\x95\xb7\xdd\xe4\x9d\xfd\x25\xad\x2f\x38\x6d\xe4\x79\x5d\x9a\x14\x25\x3c\x29\x33\xed\x79\xb0\x57\x58\xd7\x8e\x86\x80\x05\x4e\xab\x20\xeb\x84\x4e\x19\x13\x29\xaa\xba\x53\x5d\x8e\x39\x00\x3b\x48\x20\x8b\x2e\x75\x15\x8b\xd3\x56\x52\xad\xc4\x7f\x14\x8a\x7a\x9a\x8d\xd4\xb2\x06\xf6\x1f\xc0\x74\x66\x39\xa0\x1a\x77\x07\xd4\x24\xd3\xf0\x57\x46\x92\x8a\xea\xc8\xcd\xca\xf9\xd9\xcd\xad\x23\xea\x6b\x5f\x66\x60\x6e\x5b\x0d\xdf\x45\x2a\x65\x3d\xc6\x9d\x66\x03\xd4\xf6\xde\x95\xd6\x01\x72\xad\x89\xee\xb2\x34\x1b\x5e\x10\xad\xc3\x4f\x69\x32\xfb\xde\x6c\x20\xd6\x23\xeb\x6a\xc3\xa9\x92\x2a\x4b\x9c\x47\xcb\x1b\x38\xe9\xf1\x80\xba\x1c\x1f\x5c\x85\xd8\xd0\x8f\xb5\x4c\xbe\x87\xd2\xbd\xbd\x1b\x04\xe5\x6a\x9f\xf0\xbd\xd8\x48\x73\x6c\xe5\xce\x1b\x97\x86\x16\xd7\xb3\xa2\x4e\x3f\x58\xde\x23\xf2\x8d\x59\x8e\x30\x7c\x4e\xfb\x60\xf2\x6c\x7e\xb1\xf1\x22\x23\x65\xf6\x77\x15\x35\xb3\x11\xae\x1b\x7c\x3f\x6f\xa1\x79\xec\xca\xe5\xa3\x1d\xd5\x42\xeb\x25\xa4\x45\x3f\x46\xd8\x5d\x59\xd8\x92\xc6\x2e\x9d\x25\xf8\x46\x52\x24\x6b\xea\x79\x6d\x44\x13\xcd\xc6\xa6\xeb\x2b\x68\x95\xe4\x24\x14\xa0\x5c\xaf\x79\x68\x42\x34\x7c\x05\xea\x97\xc3\x7f\xb0\x33\x08\x5e\xb3\xf7\xc4\x65\x90\x4b\x94\x50\xd1\x39\x4e\xba\x1e\xfc\xb4\x1d\xd5\xd7\xa4\x87\xda\x97\x22\xa9\xaf\x95\xd9\xe8\x14\x7a\x0a\xa3\xd5\x60\x5a\xbd\x72\x91\xa5\x97\x14\xd2\xed\xdc\x82\xdc\x0f\x06\x65\x95\xb1\x82\x62\x14\xf2\x32\xe6\x85\x01\xcc\x6f\x3f\xbf\xcd\x6f\xa6\xb7\xfd\xcd\x75\xd6\x9f\x26\x43\xe7\xe9\xb4\x17\x9d\x7a\x1f\x96\x52\x53\x21\x0c\x51\x55\x26\x84\x37\xa8\xb9\xd4\xc4\x20\xdd\x7a\xad\xf7\x83\x07\x7d\xa2\x1e\xc9\x52\x49\x02\x05\x59\x57\x17\x7b\x9b\x85\xa4\x1e\x63\x53\x29\x8e\x37\xa7\x7c\x8e\x8c\x5b\x9e\xb8\x7f\x7e\x9b\xd4\xe6\xad\x58\xfa\xb1\xb3\x6e\x78\x97\x26\x9c\x63\x26\xf5\x32\x53\xa4\x16\x51\x9c\x79\xe3\x06\x51\x42\x45\x90\x99\xca\xfd\xa1\x52\xb6\x29\x2c\x86\x99\xf7\x6d\xec\xef\x60\xde\x1f\x6c\xb9\x2a\x68\x58\x5e\xbc\xad\x8c\x74\x07\xe8\x15\xac\xe2\x93\xcd\xf6\xe8\x3c\x49\x1f\xa5\x39\x0b\x1b\xd0\x91\xbf\x50\x8b\x32\xe9\xfe\xde\xca\xf2\x86\xe7\xb1\x12\x88\x84\x19\xca\xe2\xdf\x09\x3d\xf1\x6c\x17\xe2\xc3\x65\x6f\xc5\xab\x65\xbb\x26\x49\xf5\x9a\xce\xf0\xc5\x4d\xca\x1b\x02\xa9\xb1\x28\x5a\x09\xa1\xe8\x4f\x74\xb8\xa4\x2b\x8a\x7f\xf8\x11\x47\x7f\xab\xa7\xf5\x70\xd8\x95\x72\xdb\x74\x5b\x8d\x10\x61\xae\x86\xa5\xb9\x0b\x01\xe1\x4c\x6a\x17\xdd\x5b\xc6\x0e\x81\x67\x93\x37\x68\xda\x8e\x39\x88\xcb\x1f\x3d\x65\x37\x26\x47\x65\xd4\x5b\x45\xa4\xbe\x85\xa6\x38\x0b\x40\x50\x63\xb2\xf5\x3d\x82\xc6\xa3\x58\x02\x1a\x2a\xec\xee\x54\x49\xa2\xb1\xc2\x0e\xe1\x74\xd2\x20\x5d\x06\x0b\x91\xd1\x59\xc9\x87\x76\x4e\xb8\xd6\x9a\x52\xc0\xc8\xd1\x14\x4e\x51\x2d\xaa\xe3\xd7\x37\x36\xdb\x5e\x33\xe1\xf2\x8e\x36\xa5\xd5\x72\x70\x7a\x60\x3a\x7f\x7f\xea\x15\xed\x73\xb3\x75\xdf\xfe\x1c\x0c\x29\x4f\x20\x2f\x70\x6a\x69\x58\x68\x97\x19\xf3\xb6\x03\x07\xc5\xe6\x1c\x8a\x0f\xfa\xc1\xc7\x6d\xbc\xd8\x0e\xee\x9a\x47\x3f\x19\x22\xa9\x3a\xfc\x94\x3c\xee\xe7\x58\x2e\xfa\x56\x16\xea\x71\x4a\x91\xc4\x22\xbf\xc4\xfc\x33\x2f\x0f\xfe\xd5\x57\x12\x7f\x77\xca\xf4\x3e\x7f\x1c\x8c\xa2\x11\x41\x22\x60\x0a\xd9\x86\x71\x47\x36\x1e\xbf\x46\xec\x49\x2b\xa8\xdc\x60\x90\x87\x52\xc1\xff\x74\x86\x1d\x46\xcc\xef\x40\x0f\x37\xcc\xa3\x60\x56\x91\xb8\xe3\x7d\x50\x8e\x1d\xbb\x29\x94\x61\xf6\x0a\x86\xe2\x39\x0d\x67\x14\xc0\xf2\xe9\x54\xd2\xdc\x2c\x00\x7a\xbc\x3c\x8d\x51\x8a\x16\x02\xa2\x35\xb3\xdb\x71\x84\x42\x3e\x72\xeb\x55\x90\x2b\xed\x42\x13\xf0\x17\x54\x54\xc7\x01\x9c\x20\x29\x4d\x24\xa0\xd1\xb1\x6d\x7e\x84\x1a\xf2\x31\xd2\x60\x45\xb5\xa5\x0b\xd5\xcd\x3a\x1d\x4b\x02\x57\x8e\x56\xc7\x03\x29\xdd\x49\xdd\x4b\x05\x74\xf4\xaf\x25\x80\x3d\xe7\xdd\x0a\x9d\x5b\x0a\x4b\xd3\x77\x1f\x82\x61\x04\x92\x66\x27\x1f\xfb\xb4\xf2\x3b\xea\x49\xab\xb2\x6d\x1e\x03\x08\x6a\x1c\x42\x97\x53\xfc\xcb\x33\xb0\x94\x6d\x4f\xd5\x0f\x8c\xe6\x18\x65\x36\xe8\xc6\x64\x1f\xd4\xa2\x2b\x3d\xbd\x3a\xf4\x74\x5b\x99\xbf\x31\xf3\x21\xd1\x33\x5b\x51\x95\xe2\x54\xbf\x2a\x4c\x03\xd3\x3c\xb5\x00\xe1\x52\x77\x6c\x76\x28\xff\xf5\x73\xd6\x0d\xef\x73\x66\x76\xc0\x6e\x80\x41\x21\xea\x17\x6d\xb3\x9d\x5f\x7a\xe9\x22\xfb\x01\x24\xe5\x4e\x17\x79\xea\xab\xd1\x1d\x3d\x9c\x11\xa4\xe2\xf5\x58\x02\x71\x66\x4c\x96\x20\x1a\x4b\x27\x9c\xbe\x0d\x11\x0b\x0c\x15\xe3\x19\xdf\xe7\x9c\xc3\x14\x7f\xb0\xf5\x37\xc2\xa6\xa3\xc5\x68\x11\x4f\x71\x81\xa7\xf2\x24\xa3\x75\xc7\xc7\x1c\x9d\x47\x13\x7a\xf5\xbd\xed\x9d\x5a\xb5\xbc\x18\x2b\xd2\x29\x2d\xe8\x54\x99\xd4\x37\x82\xdd\x6c\xd3\xec\x3c\x46\x99\x4a\x88\x06\x8c\xf8\x1a\x14\x6f\x4e\xef\x15\x9e\x93\xcf\xd8\xd0\xc9\xc4\x6d\xc5\xae\x0a\xce\x88\xf3\xb8\xd9\x8c\x45\x94\x61\xe4\x84\xca\xe6\x5e\x56\x6b\x05\x53\x57\x34\x92\xf0\xa9\x94\x6e\xc8\x5d\x7f\x8b\x38\xb4\xbe\x5f\xfc\x7e\xf0\x15\x3b\xbf\xf9\x1d\x3b\xbd\xf9\x77\xf6\xfa\x6e\x90\x39\x7e\xf7\x12\x19\x0f\x24\x54\x5b\x97\x77\xe4\xf0\xb0\x6b\x6f\xa6\x47\x9a\x94\x0d\x83\xad\x8b\x79\x6c\x18\x90\xc0\x12\xa7\xcb\x82\x4e\x4b\x85\x29\x3a\xd9\x2b\xc1\x82\x13\xef\x35\xc4\xde\x24\xdf\x68\x52\x65\x3c\xc5\xd5\xc6\xb9\x2d\x1c\x26\x90\xd0\x74\xb8\xa9\xec\x7d\xf6\xc1\xee\x70\x88\x5c\x6d\x19\xe5\x11\x4a\x28\x38\xb9\x3f\x0e\x4d\xed\x72\x39\x02\x8d\x43\x94\x53\xec\xcf\x6f\x87\x36\x4d\x8c\x5f\x88\xb0\x54\x0f\x40\xcb\xdd\xc6\x7d\x17\x0f\x55\x80\x5d\x1a\xb0\x44\x50\x93\x7e\xa8\xf1\x40\xd2\x0d\xd9\x76\x41\x27\x71\xbc\x1c\xd5\x28\xf2\xf8\x57\xee\x57\x76\xe2\xea\x4c\x2f\x7e\x73\xa3\x0f\x98\xda\xdd\x7f\xdc\x7d\xa7\x5e\xb9\x30\xe4\xa3\xed\x6f\x5e\x77\x4b\xc4\x71\xc8\x1f\x94\xca\x05\x3c\x4a\x58\xf5\xe5\x97\xbd\x0f\x81\xb3\x3a\x1c\xc1\x3b\xde\xaa\x87\xfa\xf3\xaf\x18\x69\xb8\x9a\x2b\x3f\xf4\x8a\x87\x8e\x9c\x21\xcc\x1e\x85\xda\xc6\xfe\xf1\xb0\x2e\xd8\x7c\xeb\xfa\x37\x7e\xb8\xb6\x63\x10\xc7\x4f\x3e\x73\x55\x48\x7e\x05\x39\x95\x43\xef\x9a\xaf\x66\xb0\xfb\x13\x9b\xbe\xef\x7a\xec\x4c\x96\x9b\x8d\x30\x70\xe4\x32\x28\xb2\x7f\xa5\x92\x8a\x6f\x6c\x09\x37\x97\xfe\xf1\x57\x0f\xef\xf3\xf6\xd4\x25\x8e\x56\x7f\x2c\xa1\xc9\x85\xd5\xcb\xae\xfb\x0a\x6c\x4f\xc5\xc2\xa0\xe0\x82\x79\x8e\x2b\x8a\x75\x4b\xbd\xcb\x07\xfa\x57\x7e\x78\x4f\xdc\x8f\x3c\xbe\xcf\x3b\x5e\xbd\x47\xde\xbd\x5f\xcd\xfb\xf1\xa1\x74\x7a\x4a\xce\x05\xc6\x3d\x9b\x8d\x7e\x5c\x3c\x9b\x79\x4d\xdd\xa7\x59\xfa\x9a\x6a\x59\xee\x0c\xc6\x96\x77\xc2\x8e\xdc\xdd\x84\x36\xaa\x76\xbe\xd5\xc7\xe1\x24\x58\x37\xba\x67\xf6\xf2\x01\x8d\x4c\xd5\xc6\x70\xb2\x3c\x54\x29\x07\x92\x28\xfe\x48\xb4\xc7\x04\x69\xe4\x1d\x4b\x86\x03\xb2\x12\x8d\x53\x3e\xae\xa6\x76\xcd\xdc\x69\x43\x4f\x10\x13\x3e\x46\xf8\x1c\x92\xb9\xc3\x39\x44\x9c\x3b\x42\x8d\x69\x28\x9c\x05\x7d\x27\x8a\xa1\xdc\x70\xda\x23\x23\x02\x63\x98\x19\xf5\x86\x06\x5d\x7d\xcc\xbc\x3b\xb0\xc9\x74\xea\xcd\x95\x6f\x64\x3f\x2c\x06\x9f\x4c\x27\x21\x8b\x93\x02\x15\xd1\x34\x15\xd5\x49\x9a\x2c\xd3\xb4\x30\x75\x09\xa1\x50\x5c\xb9\xed\x55\xdd\xc6\xe8\x59\xd8\x5c\xa0\x20\x84\xbf\x5e\x27\xeb\x47\xc4\x61\x04\xad\x6c\x6e\x1b\x0e\x58\xe3\x1a\xec\xdb\x8d\xe3\xdc\xaf\x0d\x55\xfe\xdd\x88\x85\x50\x64\xfe\x5b\x24\x21\x58\x09\x4f\x23\xea\xf6\xb9\x09\x82\xd3\x9f\xec\x90\xe6\x30\x11\xb3\xb0\xfe\x88\x07\x2b\x33\x0b\xbe\x24\x9a\x80\x33\x64\x1f\x8c\xb7\x5c\xb2\xc4\x43\xae\x27\x1e\x5d\x5e\x4e\x94\x2a\x07\xfa\x0e\xd9\x44\x3d\xf5\x0e\x67\x88\x14\x06\x9b\xca\x85\x7d\xc9\xfd\x7b\xaa\xe8\xd8\xcd\x97\x8b\x57\x66\xcf\x4a\xc9\x97\x7c\x19\xef\x2e\x69\xed\xe0\x6d\x54\x55\x01\x68\xf5\xdc\x66\xaf\xc4\x0a\x0a\x7b\x21\xff\xc6\x86\xf5\x24\x50\x58\xad\x00\x04\x46\x99\xf1\x5b\x9e\x48\x6d\xcc\xce\x44\xa7\x2f\xa1\xda\x92\xa8\x3b\x5a\xc3\x6f\x49\x71\x1a\x0e\xb5\x2e\x1a\x13\x1b\xfd\xdf\x5e\x65\x8d\x2d\xa6\x92\x13\xcb\xa6\x88\x7b\x55\xd1\xd5\xf3\x04\xa1\x65\x62\xe5\x6c\xd9\x25\x9c\x8a\xaf\x7a\x00\xca\x4c\xda\xbb\x2c\xbf\x2e\xf5\xf6\xcb\xf8\x2c\x8d\x04\xa9\x66\x4a\x5a\x12\x85\x32\x00\x1a\x8d\xf4\x33\xe8\x69\xd5\xcd\x1e\x44\xb8\xe5\x22\xeb\x79\xec\x87\x63\x7b\x2a\xd6\xe4\x86\xb8\x88\xf2\x6a\x6c\x43\x2c\x05\x68\x38\x62\x68\xff\xe6\xec\x50\x78\x85\xee\x62\x41\x8e\xa7\x1f\xf2\x08\xde\x0d\x1a\xdb\x32\xc0\x20\x61\x87\x2c\x19\xf4\x1d\xb3\x7b\xf9\x1d\xc2\x02\xe7\xe0\xf2\xed\xfa\x06\x20\x05\x9f\x42\x01\xbe\x9a\x34\xe8\x36\xbb\x35\xf7\xf1\xb4\x4b\x6e\x22\x0c\xc1\x34\x19\x38\x13\xdd\x77\xb8\xff\xb1\xfb\x0d\xb7\x07\xd1\x3e\x78\x15\x5a\x21\x6c\xd8\x68\x5d\xff\x6e\x50\x7d\xd7\x78\x2e\x4b\x07\x49\x04\x4e\x6b\x5e\x6a\xb0\xe5\xbf\x7e\xdd\x02\x47\x25\xff\x45\x0e\x82\x51\x2b\x13\xa7\x90\x5b\x6d\x7a\x2c\x35\xaa\x51\x83\xba\xdc\x50\xb1\xe7\x9f\xdb\x83\x82\x15\xd7\x04\x75\xb2\x5a\x47\xbc\x7a\x83\x82\x2e\x0f\x73\xec\x36\xe4\xdd\xba\x5b\x6b\x0c\x2a\x10\x8f\xf5\x1a\x26\xe1\x82\xe4\x18\x4f\x23\xa3\x47\x91\x13\xd1\x19\xc9\x15\x79\x23\xaa\x9d\x59\xa7\xa2\x49\x55\xa7\x24\x18\x7f\x56\xc9\x71\xda\x22\x46\xc6\x0f\x0d\xad\xa1\xb9\xca\x24\xa6\x2b\xf1\x18\xf0\x2f\x1b\xb4\x7d\x24\x29\x13\x39\x7d\x22\x34\x6e\xd0\xb7\xcd\x6d\xb8\x91\xf1\xc5\x11\x55\xde\xbd\x5d\xd3\x79\x1f\x7c\xae\x96\x6a\x5e\x75\xe3\x52\xaa\x02\x74\x36\x06\xff\xfe\x28\x4e\x4d\x9e\xfa\x7b\x83\x46\x8a\x12\x59\xf4\x64\xee\x3e\x6f\x3a\x97\x40\xd7\xf5\x60\xe1\x59\x44\x32\xc4\x7c\xe0\xf1\x43\x23\xd5\x7b\xa4\x0b\x7f\xf1\x71\xd7\x1e\xb3\xe5\xcc\x33\xfc\x97\x4d\xc7\x1e\x3f\x4f\xdc\xb2\xfd\x1f\x55\x16\x2d\xf0\xc0\xef\x4f\xa1\x19\xc2\x29\x70\x66\xe1\xe5\x78\xc9\x18\xb3\xdc\x18\xd2\xbf\x19\x05\x0b\xed\x1f\x23\x61\xd4\x69\xba\x53\x15\xc0\x52\x38\xb4\x15\x4b\x76\xc7\x5f\x50\x85\xc2\xb5\x1e\x25\x2a\x28\x06\x1c\xce\x18\x6c\x7c\x6c\x0a\xd4\x15\xde\x57\xac\x53\xd9\x7e\x50\xc6\xaf\xeb\x98\xf6\x32\x01\x39\x82\x30\x43\x31\xcf\x68\x57\xf1\x13\x25\x39\x67\xda\xaa\x3a\x6c\xa2\xe0\xe3\x00\x34\x2f\xf3\xfb\x0e\x76\xb6\x5c\x8a\xef\x96\x4c\xb4\x8a\x2e\x97\x52\x46\x95\x88\x8e\xa6\x70\x29\xab\xe5\xe5\x2c\x5b\x52\xf9\xfa\xc3\xc3\x3d\x49\x6a\x31\x10\x97\xa5\xe8\xe4\x25\x1d\x17\x47\x27\x0a\x9f\x19\x48\x46\x41\x54\xce\x2e\x71\x2c\x09\x68\xbf\x5e\xd5\x81\x3e\x5c\xf3\x46\x85\x14\x99\x3c\x36\xdf\x4f\xae\x0f\xe9\x0a\x40\x79\xc0\x78\x9e\x81\x64\x1f\xb7\x3f\xd3\xf4\xa1\xa4\x05\xe9\xf1\xdf\xd3\xf2\x68\x1f\xfe\xee\xcf\x51\x3f\xd6\x96\xbf\x0b\xed\xdd\x69\xdb\xcf\xc9\xad\xaa\x2c\x1c\x42\xcf\xec\x91\x74\x93\x05\x78\xb4\xe0\xb1\xc1\xf3\x8a\x47\x6b\x2e\xa1\xee\x57\x13\x7c\x7a\x88\x8f\xbf\x7e\x25\x89\x10\x82\x66\x0f\x18\x39\xbc\x04\x0c\x14\xf2\x09\xfc\x61\x0b\xd8\x7a\xd3\xb1\xc5\x09\x4b\x76\x81\x92\x09\xdf\x95\x54\x25\xc3\xc0\xf4\x08\xab\x24\xa7\x27\x37\x41\xe8\xb4\xe7\x93\xc3\xdf\x05\xe5\x3d\xb6\xdb\x97\xb5\x4e\xbd\x03\xce\x70\x68\x27\x5c\x4e\x25\xba\xfa\x14\x4e\x85\x99\x9a\x7c\xac\x5b\xda\x92\xf5\xe9\x2a\x1e\x1b\x30\x2f\x73\x7f\xcf\x2c\x16\x83\x8d\x10\x49\xe5\xbf\x92\xb4\x25\x34\xee\xa8\x17\xb1\x77\x85\xbf\x4d\x38\xfc\xb0\x86\x9f\xab\x6d\x82\x7d\x5f\xbf\xd6\x8b\x5d\xf3\x88\xb1\xf7\x6a\x9a\x09\x58\x3c\xf0\x9f\x62\x86\x67\x69\x25\x9a\xa9\x79\x8d\x64\x9a\xcb\xeb\x0f\xa9\x73\xd2\x2e\xc2\x8a\xf8\x13\x52\x1f\x47\x3b\x19\x19\xc7\x5d\x29\xc2\x73\x7f\x4c\xb4\x0f\xb8\x49\x23\x17\x38\xcb\x4a\xef\xf7\xae\xae\x2c\x01\x0c\x8b\xb8\xee\xc0\x57\x47\x52\x84\xb7\xb9\xe7\x71\x82\x60\x8e\x05\x62\x9a\x47\x76\xb4\x3a\x32\xb8\xc9\x4d\xec\xc2\xdd\xc2\xa0\xdf\x83\x6e\x63\x89\xfe\x39\x5e\x50\x4f\x66\x30\x9b\xa6\x6d\x5a\x0b\x48\x8e\x12\x41\xd5\xbd\x3c\x5e\xd2\xad\x88\xfd\xeb\xed\x85\x32\x11\x58\x53\x60\x26\x42\xf8\x01\x56\xe5\x6e\x57\x89\x45\xf9\x93\xb2\xa4\xfb\x47\x9e\x37\x3b\xbe\x14\xe8\xd4\x6f\xeb\xce\x7d\xfd\x68\x35\xba\xc6\x83\xfd\x53\x36\xaf\x2e\xda\x3d\x9f\xf2\x4f\x82\xce\xfa\xfc\x3a\xbe\x33\xfd\x5f\xac\x33\xe2\xd5\x5f\xa6\xfd\x74\x3d\xdc\x06\x2d\xe1\x82\x62\x4a\xf6\xf2\x42\xb7\x3a\x29\xbc\x4d\xbc\xa7\x9e\x24\xe6\x59\xf6\xfb\x8d\x72\xb2\x3c\xf7\xee\xdd\x93\x8b\x2b\x7c\x88\xcc\xd8\xb4\xff\xa0\xe6\xff\x52\x49\xe3\xbf\xbe\x6e\x37\xfe\x19\xb4\x7f\xcd\x4b\xa5\x90\xd1\x34\xa6\x94\x18\x9e\x40\xca\x7b\xf0\x62\x09\xcb\xfd\xc1\x21\x45\x12\x72\xbb\xed\x59\x68\x75\x76\x81\x38\x96\x29\x2b\x23\x07\x26\xe2\xca\x4a\x66\x25\x9c\xd9\xa9\xf5\x87\x30\xfd\x67\xd3\x6c\x3d\x1a\xb0\xc2\x41\xed\xb8\x71\xde\xe3\xcd\xed\x58\x15\x8a\x73\x67\x74\x76\xd2\xeb\x09\x1d\xd5\x3a\x81\xd2\x7a\x36\x5d\x4e\x41\x29\xd4\x04\x0a\x16\x7b\x66\xe9\x25\xa5\x6f\x64\x1d\xbf\x0f\x90\x51\xad\xf3\x8a\x06\x0f\xee\x12\x21\x98\x76\x0f\x20\x6e\x92\x52\x6d\xa9\xf4\x00\xd9\xae\x57\x9b\x80\x35\x71\x47\x27\xba\x63\x4a\x44\x88\xbc\xdd\x0f\x79\xb8\x51\x89\xe9\x0e\xf9\x7d\x11\x92\x68\x8e\xee\x11\x35\xf3\xaa\xba\x89\xb6\x4c\x8b\x6d\xbb\xb4\x37\xc9\x06\x21\xbb\x72\xd8\x80\x33\x0b\x7b\x71\x6e\xf8\x3e\xb0\xd0\x55\x7a\x3b\xc5\x9a\x26\xb3\x6f\x76\xba\x35\xed\x86\xaf\x59\xb9\xd3\x9b\xb9\x18\xfd\xfd\xcf\x7b\x97\xf4\xfb\x67\x69\x5f\x71\x72\x37\xcd\xda\xbd\xb9\x9b\xa8\xf6\x4b\x60\x0f\xbd\xba\xaf\x2c\x37\x72\x38\xed\xfa\xe4\xa4\xcd\xb2\xd3\xc8\x69\x97\x25\x75\xa2\x9c\xd3\xfd\x86\xdf\x0b\x36\x26\xcf\x5a\xed\xd2\xa9\xe8\x54\xdc\x8b\xcd\x59\x31\x57\x95\x56\xb9\xcc\xe4\x6f\x9a\xdc\x7f\xea\x2e\x4e\xe6\xa8\x3b\x16\xf5\xd4\xaa\x69\x44\xc0\x3a\x17\xf3\x61\x86\x77\x9c\xe7\x99\x4d\xd3\x48\xb5\xa7\xdb\x2f\xdf\xdf\xfd\x73\xeb\x55\x4b\xc1\xef\x0e\xc6\x5a\x47\xcf\x44\x4f\xa6\xec\xad\xc8\x35\x93\xc0\xfe\xb1\x55\x48\x0a\x5b\x34\x76\xd2\x14\x4e\x30\xb7\x3a\x4c\xd1\x74\x17\xcb\x65\x18\xaa\xaf\x3b\x97\xbd\xda\x0f\x90\x07\xa2\x05\xe7\x6d\xb2\xdf\x19\x89\x25\x7d\xa9\xb6\xcb\xf7\xa9\x41\x48\xf7\x98\x09\xa8\x24\x5d\xcd\x08\x56\x77\xe8\x99\xd8\xac\x2f\xa6\x38\x89\x9e\xe8\xd8\xda\xe4\x04\xb3\x8e\x37\x2d\x52\x21\x91\xf3\xbf\x86\xa5\xe3\xb8\x31\x46\x09\x8a\x6a\x15\x83\x0c\x49\x38\xdf\x16\xd6\x1e\xb2\x9c\x02\xa3\x4a\xe0\x52\x61\xe6\xb1\x79\xd9\x4b\xc7\xfc\x43\x39\x00\x38\xf9\x41\xf6\x18\x08\x0f\x6a\x81\x5b\x0d\x3a\xfa\x5c\xcd\xc5\xf8\x47\x97\x06\x7b\x43\xbd\x17\x63\x67\x23\xfc\x91\x85\xa4\x76\xf3\x2c\x84\x75\xb6\x60\x7c\x9a\xc1\x2d\x89\x9a\xfb\xa4\xac\xcc\x4d\x3b\x3b\x36\x6d\xee\xa9\x4f\x9f\x07\x99\x00\xfb\x42\xfd\x6a\x52\x3a\xc7\x42\xfe\x2c\xf6\x41\xd4\x6e\xe3\x9d\xf7\x7a\x29\xd2\x8c\x8f\x23\xcc\x20\x8a\x1a\x07\x83\xb0\x53\xbc\x84\x71\x88\x97\xa0\x88\x17\xcc\x2a\xd7\xdf\x88\x09\x2c\x2e\x64\xc2\xc9\xf0\xf7\xeb\x1d\x01\x4a\x15\x33\xb3\xdb\xab\xc7\xc3\x1b\xc9\x76\x16\xe2\x34\x67\xd3\x2e\x88\xd0\x51\x01\xe2\xc4\x40\x7f\x70\xc0\xb3\xdf\x7d\x53\xbd\x98\x08\x2c\x4a\x7d\x64\x80\x9f\xc3\xb7\x1f\xa2\x02\x81\xca\xc2\x51\x2f\x99\x75\x33\x20\x81\x86\xbe\xb8\xa0\x5c\x1b\xe2\x13\x7f\xd8\xf4\xe8\x55\x41\xf3\xe0\x97\xd6\xeb\xfc\x31\x1d\x4c\xc3\x6f\x1b\x09\x1d\x8b\x14\xa5\x26\x32\x27\x37\x20\x08\x32\x09\x96\x9b\xd8\x5b\xac\x8f\xe0\xad\xe9\x75\x7f\xa6\x17\xc6\xca\xed\x19\xa9\x82\x4b\x85\x17\x22\xc1\x0f\xb9\xd1\x2c\xfb\x5d\xf0\xc4\xe3\x4a\x32\xb1\x90\xb9\x10\xe0\x26\xa5\x1c\x95\xb4\x16\xdd\xc4\x2b\xdd\xdd\x7f\x62\x42\xea\x8a\x72\xfe\xca\x53\x29\x21\x5e\x65\x88\x1e\xa1\x3c\x3e\x9f\x94\xda\x3d\xa7\x01\x37\xf1\x6e\xd3\x80\x94\x7d\xf0\xac\xb5\xa5\xe3\xcc\x5f\x49\x27\xe2\xc1\x10\x48\xb6\x68\x35\x83\xd2\x02\x29\x2f\x4c\x41\x12\xa6\x25\xa6\x71\xed\x1c\x83\x8e\xf0\x1c\x9b\x11\xf2\x86\xe7\x54\x6d\xd6\x06\x38\xcd\xd4\xcc\x83\x12\xc2\x4b\xb6\xe6\x14\xb8\x5e\x4f\xe6\xc5\xcd\x2f\x26\x06\x67\x3a\xe4\x97\x0b\x71\x85\xf9\x9c\xd1\x72\xe3\x71\x6b\x57\xd6\x6a\x98\x41\x8f\x19\x87\x1b\x28\x6c\x60\x91\x1a\xad\xbd\x19\xb4\x08\x75\xd8\x12\x6c\x05\xfc\xa3\x80\x55\x9c\x2b\x1d\xf4\x0b\x05\x65\x8d\x78\xed\xe7\x53\x4f\xed\xac\xe4\xe0\xa1\x9c\x34\x83\xf9\xf4\x1f\x96\xbc\xdc\x07\x26\x51\x90\x10\xc5\xb7\xdf\x54\xa9\xb3\x23\x26\x25\xe6\xd5\x28\x98\xc3\x94\x9e\xca\x91\xb0\xa9\xaa\x1b\xb3\x65\xde\x51\x7f\x96\xba\xfc\x89\x33\x1f\xdb\x05\x95\x1d\x87\x15\xd4\x5f\x57\x52\x87\xa7\xa3\xcd\x94\x8d\xf1\xe5\x3d\x09\xa1\x2b\x76\xb8\x08\x43\xe0\x5f\xcc\x25\xef\x25\x4f\x5f\xd8\x0b\xb2\x51\xcf\x15\xad\x87\xeb\x04\xfd\x4a\x66\xe4\xc0\x6c\xe0\x54\xd9\x15\x3d\xa6\x34\x6c\x3a\x51\x8d\xcb\xb2\x78\x6c\x58\x34\xfe\x37\x60\x49\x7e\x3a\xc2\x0e\x06\x0c\x05\xda\x45\xb7\xd1\x08\x01\x1c\x6c\xaa\xc7\x8a\xb9\x35\x1d\x10\x8f\x63\xe0\x35\x20\x3e\xa3\xb1\x36\x36\xc2\x1c\x5b\xdf\xa8\x70\xeb\xb3\x97\x30\x7a\x37\x3c\x13\x25\xc0\xef\x80\x00\x85\x70\x11\x3a\xff\xb9\x6f\x24\xb1\xd5\x34\x8f\xc4\x15\x01\xdd\x65\xa9\x7f\x8e\x2d\x7f\x4f\x45\xc5\xef\xae\x6a\x8c\x11\xec\xfb\x32\xbe\x12\x25\x87\x79\x9b\x43\x61\xc5\x77\x9b\x75\x7b\xaf\x12\xc2\x66\x00\xeb\x98\xe4\xd3\xb5\x8e\x90\xce\x43\xec\x53\xff\xdb\x40\x37\x23\x4d\xce\x3b\x04\x20\x19\xb4\x66\xc8\x89\xb6\xc1\x92\xc0\x44\x72\xf4\x16\x1f\xc2\x11\x06\x63\xc8\xf6\x9b\x33\x3f\x4f\x38\x2b\x1a\xec\xc1\x73\xc8\x49\x44\xeb\xe6\x29\x69\x2a\xe3\x9b\xa0\xdd\xf3\xb2\x77\xd8\xac\x77\xdd\x6b\xee\x0d\xb1\x57\xd8\x3a\x54\x22\xec\x27\xb4\xb0\x22\xb0\xd1\xda\x40\x66\xf5\x6b\x35\x1c\x91\xbf\x8b\xea\x9a\x06\x11\xb7\x1e\x01\x7f\x2c\x31\xd9\x60\x06\x1c\x35\x49\x51\x5e\x75\xe5\xc5\x24\x96\xad\xa6\x53\xb9\x69\x87\xb7\xba\xb3\xfd\x32\x20\xe1\x30\x40\x55\xac\x90\x71\xbb\xa6\x45\x58\xbb\x5e\x90\x23\x81\xd0\x27\xa0\x06\x25\xb9\x9e\x04\x13\x76\x9f\xe2\xeb\x5d\xb9\x7e\xd8\xc5\xc1\x28\xb7\xbd\xf4\xcd\x3e\x59\xd4\x29\xd9\x7f\x1d\x6e\x9f\x04\x2d\x1e\x85\xb9\xfa\x22\xdf\x0b\x73\x7b\xef\x7a\x2b\xcc\x3f\xf0\x32\xe2\x19\x70\x3c\x1e\xaa\xcc\x61\x11\x24\x7e\x83\x78\xdb\x1a\x44\x81\x3a\x7e\x95\x62\x3f\x1f\x9d\x23\xbf\xcf\xf9\x60\x9c\x26\xa3\xb2\xc3\x78\xdd\x78\xd5\x98\xd4\x7f\x9f\x5b\x58\xa0\xcb\x32\x92\x19\x49\x95\x4e\xcd\x2c\xd4\xdb\xe7\x39\x0a\xaf\xe0\x82\xbb\xe0\xab\x75\xda\x86\x60\xc0\x37\x0f\x95\x6b\x7f\x7b\xc4\x65\xd7\x74\xf6\x22\xd6\xab\xcf\xc2\x51\xdd\x95\xe0\xfb\xec\x76\x5e\x99\xd0\x78\xcb\x54\x56\xe8\x68\x12\x5d\x3f\x9c\xab\x7e\xd4\xcb\x70\x82\x00\x8d\xe7\xdf\x6d\xab\x96\xcc\x57\xef\x53\xca\x5c\xfe\x4e\x85\xa7\x90\x47\xfc\xf9\x5e\xa8\xcc\x22\xed\x35\x96\x9c\xfe\x6d\x32\xe2\x7f\x05\x1a\x39\x45\x9a\x43\xc3\x76\x84\xb6\x38\x60\xcf\x71\x59\x10\xbc\x03\x6b\x91\x1a\x08\x51\x9e\xa3\xc4\xd8\x5c\x63\x5d\x4a\x83\x6e\x59\xe1\xd2\xf6\x62\x9a\xac\x33\x65\x1d\x5d\xd1\x3a\xe0\x4c\x62\xce\xc6\x47\x00\x22\x52\xac\x9a\xc5\x48\xa2\xfa\xb3\x6b\x8b\x4e\xb9\x87\xf3\xe9\x10\x8d\xd2\x0f\x85\x03\x91\xf3\x2f\xe5\xdd\x17\x6d\x93\x65\x9f\xe0\xe7\x9a\xd4\xcf\xd3\xb2\x2e\x25\x05\xac\x14\xd2\xc0\x1e\xad\xda\xd0\x8c\xf2\x1f\xb2\xc8\xfc\x48\xea\xd0\x9a\xbd\xb8\x4f\x99\x2a\x7c\x4a\x58\x98\x61\x0e\xc4\xa9\x5e\x2e\xd5\xb0\x6b\x34\x6e\x9c\xdf\x07\xdb\x94\xd8\x98\x58\xd0\x9a\xb9\x0c\xf4\x45\x7f\x37\xa9\xa8\xad\xf7\xd3\xee\xaa\x58\x8f\xa2\xb8\x0e\xb3\xf8\x17\xd5\x18\x38\xff\x61\xa0\xd6\x37\xe3\x37\xef\x08\x12\xec\xcd\x1a\x9d\xe9\xe5\xa8\x56\xbc\xf8\x10\x9f\x99\xed\x6b\xb3\x6f\x68\xdd\x01\xa7\xc3\x36\xd3\x43\x23\x4f\x29\x95\xa7\xa9\xc9\x0e\xec\x16\x5f\xde\x24\x19\x10\xf8\x07\x7e\x48\xcd\x81\xf0\x63\xfd\x94\x9d\x6a\xaa\x57\x6a\x43\xdf\xab\xb4\x5c\x22\xec\x07\xf0\x85\x0a\x9a\x92\xb3\xc2\xd5\x09\xe8\x4e\xbb\x77\xd2\x27\xf7\x49\xed\x05\x9b\xc2\x3d\xb0\x62\x11\x2f\x2d\x45\xe3\xd1\xc2\x15\x75\xc5\x7c\x94\x31\x85\xdc\xe9\xde\x8c\x98\x4c\x0e\x05\x5f\x3b\xae\x7b\x6c\x3f\x3e\x8a\xe9\x7a\xa5\xbf\xa7\x3d\xfb\x89\x29\x13\x51\xf0\x3e\x5c\x37\xcd\x6a\x57\x75\x70\xae\x15\xab\x8d\x28\x10\xef\xa9\x79\xde\xe1\x5e\xcd\x73\xb9\xb8\x37\xd2\xa2\xe3\xfb\xe1\xdb\x38\xe9\x01\x6c\xee\xa6\x17\x2b\x51\x77\xdc\xf7\xbe\xea\xd0\xd1\xeb\x5a\xc7\x5f\xba\x32\xf3\x1b\x57\xec\x5e\xdd\xb0\x4c\x68\xb0\x05\x1d\x34\x87\x4f\x9d\xdd\x2d\x8f\xd8\x9b\xc7\x05\x6a\x85\x94\xae\x28\x9a\xb0\xd4\xab\x09\xf2\x4c\x2b\xdd\xcf\xe2\x7c\x04\xbf\x18\xe5\x80\x85\xbc\xb5\xf0\x18\xe2\x24\x83\x08\x9b\x67\xdd\x54\x31\xef\xe3\x1b\xbd\xcf\x1e\xc1\x05\xf9\xa1\x85\x3e\xa8\xfa\x11\xb5\xde\x2a\x8d\xd0\x45\x64\xe1\x70\xf4\xac\x14\xea\xc7\x81\x03\x15\x8e\x9d\x56\xa5\x5e\xdc\x92\xdc\xb2\x57\x3e\x97\xa5\x2c\xc8\x34\x8c\x69\x24\x56\x06\x17\xd2\xb4\x3c\x2b\xb2\x0e\x56\x1e\x1e\x72\xd7\x7a\xef\xcd\x39\x53\x68\x0a\xe8\x80\x2c\x82\x8f\xa6\x12\x3d\x4c\xc3\x27\x4c\x8a\x3f\xa6\x83\xa8\x58\x3f\x92\xc7\x60\x9c\xda\x70\xed\x4a\xb5\x39\x2c\x9b\x0d\xd2\xf4\x34\xc8\x76\xaa\x29\x37\x00\x26\x04\x3b\x99\x3d\x1f\x0a\x94\xa3\x0b\x09\x48\xb3\xcb\xa2\x0d\x0c\xee\x4e\x92\x83\xef\x75\x6b\xb6\xaa\x9d\xd2\xab\xa9\x68\xe8\x47\x05\xfe\x35\xa1\x68\x75\x47\x46\xef\x33\x0a\x06\x8c\xb2\xc2\x07\xe7\xfb\x15\xc7\xfd\x9c\xee\x30\x81\x52\x2e\x30\x3f\x51\x80\xfb\x24\xdc\xc6\xf5\x25\xc1\x0e\x55\x44\x1d\x78\xe0\xa6\x3e\xf0\xd2\x6a\x77\xe5\xfe\xc0\x5d\xad\x0e\x76\xd3\xd5\xa7\xee\x1d\x16\x19\xff\x0c\x10\x07\x06\x57\x0c\xcb\x18\x61\xcb\xb4\x6d\x1b\x4b\x95\xdc\x0e\x6b\x0e\xd2\xf5\xc1\x7e\xa1\x97\xf2\x9c\x0e\x92\x0e\x33\xd8\x7c\x7e\x0b\x65\x8f\x25\xc0\x70\xa2\xb6\xd5\x16\x86\xa5\x01\x87\x0e\xb7\x78\x08\xde\x69\xd2\x3a\x24\x70\x38\x30\xaf\xc8\xfc\xc1\x45\x06\x66\x2c\x73\x27\x24\xf3\xa9\x2c\x9f\xa6\x6e\xd4\x67\xad\x9e\xa8\xf1\x17\x20\x90\xe3\x5b\x88\x99\x5c\x6a\x4c\x5a\x0f\x29\xc5\x15\x19\x7a\x9a\x33\xb3\xe4\x2f\x5e\xe8\xc7\x79\xf9\x61\xea\x10\x22\xe5\xe2\xc9\x2b\x73\x5d\xb0\x40\x32\x37\xbc\x75\x69\x72\xd4\xfa\x0f\xec\xd7\xb1\x2a\x1b\x07\xc7\x1d\xaa\x29\x7b\x29\x7b\x97\xe8\x0a\xda\x56\x5b\x66\x6d\x94\x6f\xea\x82\x07\x44\xc4\x42\x1f\x96\x62\x9e\x97\x20\xc7\xcb\xb0\x21\x4b\xbc\xa3\xfe\x6d\x7e\x1e\x97\xef\xe1\x26\xe3\x6c\xa5\xd4\xac\x81\xf2\x81\x25\x5a\x64\x65\x23\xb1\xe0\x92\x06\x7e\x36\xf9\xe4\xba\xca\x92\x96\x67\x64\x66\xd7\x82\xc7\x01\xb4\x8c\x60\x0a\x77\x87\x2d\x15\x57\x37\x11\xec\x80\x81\x4b\xe9\xa4\x44\x6a\x81\x8c\xda\xff\xee\xef\xfb\xa3\x04\x27\x73\x0f\x8b\xa0\x2e\xc1\x5f\xca\x49\x26\xc1\x35\xb6\x6d\x17\x9a\x4b\x4f\x06\x3b\x0b\xae\x65\xf6\xce\x0a\x75\xb7\x0e\x8f\xbd\xf4\x1f\x3c\xa6\xe9\x96\x32\x5a\x90\xd0\x5a\x6f\xd2\x76\x35\x95\xad\xae\x2e\xf7\x10\xcd\x6a\xef\xec\xa9\x59\xa8\xaf\xdb\x45\xf5\xe4\xed\x4c\xda\xa3\x37\x3f\xf5\xf1\x13\x28\xd9\xf4\xe4\x67\x62\xf3\x3c\x05\xe5\x54\xd5\x41\xeb\xcb\xb0\x9d\x8b\x84\xec\x44\x3c\xfa\xf0\xbf\xb0\x38\x41\xf5\xef\x0d\x52\x46\xc2\x85\x94\x2e\xcd\xf3\xdf\xee\x2c\x67\x07\x0b\x90\xe1\x94\x23\xe6\x7b\xdf\xcb\x96\x49\x20\x6a\xe0\xee\x46\x93\xc2\x0c\x94\x1d\x46\xdc\x90\x11\x3c\x24\x22\xce\x6c\x04\x24\x1f\x6a\x42\xf3\x2a\x7f\x43\xfb\xa5\xc6\xe1\xb9\x61\xe9\xb1\x94\x3b\x33\x45\xf5\xbb\xa1\x15\xea\x11\x27\xff\xf9\x56\xa4\xf7\xb7\x39\xb5\xb8\x98\x96\x5f\x84\x69\xbb\x38\x24\xdd\x35\xc6\x93\x42\x23\x54\x92\xfe\xfc\xab\x86\x25\xb9\xd8\x5d\x5e\xcc\xed\x88\x45\x1c\x48\xd8\xb2\x8c\x30\x3c\x14\xf7\xf9\xc5\x25\x4d\x61\xba\x8e\xb5\x71\x17\xb9\x4e\xad\xb2\x3d\xcf\x1a\x22\xf1\x59\x37\xb8\x2e\x31\x4f\x96\x31\xe2\x65\x05\x39\x96\xfb\x9f\x8b\xc8\x6c\x04\x90\x2c\x38\xa4\x91\x41\xec\xc0\x05\xa2\x0e\xf6\x28\xac\xa7\x76\x74\xfb\x7f\xac\x3d\xc8\x9b\x6e\xdf\x07\x59\x0c\x54\x45\x48\xb0\xe1\xe0\xc0\xd9\xc6\x72\xcc\x7b\x5a\x02\x65\x6f\x4c\xdc\x11\xe3\xae\xf2\x3b\x96\xd8\xdc\x67\xc1\x6c\x31\xdd\x26\xe4\xa4\x86\x03\x10\xd4\x82\xb4\xfb\x51\xc1\x58\xe1\x79\x99\x07\x5b\xa1\x57\x1e\xcc\xb5\xd2\x1d\xf8\x44\x90\xaa\x1f\x91\x03\x7e\x0c\x86\x0e\x3e\x1b\x84\xae\x08\x48\x59\xe2\x84\x56\x07\xfa\x54\x94\x3f\x59\x02\x56\x04\xea\x3a\xe4\x0b\x80\x58\x04\x7e\x4e\x23\xf5\xe5\xe4\x80\xcd\xd4\x2e\x06\x01\xad\x9a\x64\x44\x9a\x7a\x96\x11\x39\x69\x4b\x22\x67\xf8\xbc\x2d\x7a\x62\xc5\x01\x1c\x1e\x47\x25\xc0\x8f\x7d\x82\x88\xb6\x9c\x15\x35\xf9\xf4\xaa\x30\xfc\x8c\x90\x1c\xe5\x4f\xe2\x68\x41\x93\x8e\x39\x07\x03\x1e\xa2\xd3\x0e\xdc\x07\xc9\x63\x24\x77\x15\x55\x74\x24\x21\x33\x22\x24\x24\xfc\xec\x34\xb1\xc7\x3b\x3b\xe9\xfa\xf1\x7d\x6e\x7e\x22\x7e\x7c\x1f\x6e\x5b\x70\x61\x80\xb5\x1b\x76\x28\x1a\xee\x1c\xf4\xa2\x10\xf4\x0f\xed\x65\xa2\x0a\xe9\x9e\x23\x38\x7e\xf7\xfa\x2f\x46\x11\x5e\x2d\xe4\xfb\x5e\x6a\x94\x1c\x79\xb4\xc2\x2e\xda\xc4\x54\xf2\xc3\xd9\xaf\xad\x70\x86\x9d\x13\x01\x8b\x4c\x1b\x0a\x4e\x1d\x5e\x8a\x4a\x54\x5c\x5d\x80\x7b\xae\x68\x0e\x01\x44\x10\x10\x5d\xa2\xc5\x1f\x89\x3a\x7f\x25\xa8\xc5\x96\x92\xc2\x31\x88\x50\x6f\x9c\x6f\xd4\xaf\x0b\xfc\x74\x90\x3d\x17\xb7\xd9\xbc\x07\x07\x5a\x39\x67\x4b\x5f\xd1\x94\x75\xaa\xb6\x74\x10\xed\x77\xa2\x61\x57\x37\x3c\x2c\x01\x82\x67\xd2\xa8\x13\x33\x2b\xc8\x2a\x6a\x89\x37\xa8\x19\x5b\x93\x16\x73\x24\xd1\x85\x58\x9d\x0b\xd4\xea\xcc\x62\xba\xd4\xd3\x7a\x82\xbd\x63\x5a\x0c\x06\x09\x27\xe8\x2f\x40\x63\xed\x5f\xe9\xff\x3d\x1a\x07\xe6\xd8\x89\x88\xf5\xf2\xa8\x3a\x2d\xfe\x7e\x84\xb7\xa2\x5a\x7b\xcf\xff\x67\xf3\x7c\x4c\x43\x9f\x95\x8c\x1f\x09\xe6\xfa\x4a\xd0\xb2\x71\x42\x0f\x7b\x0d\x2f\x65\xa6\x09\x84\x64\x05\x13\xa7\x8a\xa2\xd0\x7a\x07\xbf\x62\x5d\x43\x35\x42\xbc\x86\x3e\xc6\xbd\xdd\x54\x63\x53\x04\x1f\x28\xf2\x8c\xc6\x5d\x77\x26\x02\x23\xd0\x95\xcf\x6b\xf8\xe7\x9c\xbf\x26\x0a\xe2\x49\xdd\x36\x94\xfb\x83\x99\xa4\xb5\x99\xa2\xb9\x53\xe3\x71\x8b\x00\xe9\x6b\x02\xea\xa0\x14\x56\x31\xa0\xfa\x8e\x22\x3f\xa9\x63\xb8\xc7\x82\xd2\x89\x0c\xff\x68\x27\xed\x7d\xe5\x41\xcf\x52\xe7\x99\x16\x73\x09\x11\x1d\x56\x54\xbb\x0c\x1c\x60\xfd\xa6\xbf\x91\x0d\x4a\x31\xa4\xce\x05\x7e\x07\x56\xd8\x80\xa3\x31\x23\x6e\xa3\x6f\xe8\xdb\x01\xbb\x90\xea\xf8\x6f\xd4\x4c\x54\x63\x03\x9d\xa7\x95\x0b\xeb\xb0\x2e\x8f\xdf\xda\x79\x4e\xde\xac\xa7\x55\x2a\x30\x9b\x25\xf1\xbc\xc4\xdf\xb6\x86\x6c\x02\x07\x85\xbe\xef\x95\xf3\x5a\x5c\x9d\x10\x5d\x5e\x5b\x0f\x53\xf0\x63\xe8\x25\xf8\x7a\x59\x83\x3f\xfd\xf9\x54\xb2\xf1\xee\x6c\x38\x26\x42\xad\x9c\x82\x9a\x76\xe5\x91\x28\x47\x0c\x46\xc3\x50\x0b\x85\x29\x85\xc0\xb6\xfc\xb5\x45\x1d\xcb\x55\x92\xc0\x69\xdf\x50\x82\x00\xdd\xc1\xe0\x2f\xf6\x07\xfd\x13\x17\xf1\xe7\x43\x1d\xbd\xd7\x33\x84\x69\xd9\x26\x8d\xd0\xc3\x5c\xc0\x16\x92\x9c\x13\x2a\xec\xaf\x37\xf0\x27\x74\x78\x94\xc5\xea\x86\x36\xbc\xd3\x50\x41\xe3\xbf\x42\x34\xc2\x57\x93\xce\x5d\xe5\x64\xaa\x21\x0e\x24\xf7\x30\x1e\xcf\x8d\x8b\xd3\x1a\x4c\xe9\x12\xd1\x86\x73\x3b\x43\x6d\x85\xa3\xdf\xbc\x3c\xb7\xd6\x24\xe8\x63\x72\x2c\xae\x07\xb6\xf2\x85\x25\x3a\x19\x95\x0f\xd7\xa9\x4e\x60\xc1\xce\x88\xf7\x14\x1e\x1e\x1f\x97\xcd\x06\xd9\x0c\x82\xc6\xfc\x86\xe9\x63\x6c\x70\x57\x83\x6e\xe1\x59\x9f\x74\xd8\x21\x67\x04\x3a\x6e\x07\x55\xaf\x1e\x11\xde\x9e\xa0\x37\xac\xb0\xaa\x87\x1a\x8d\x30\x1a\xc5\xa8\x7c\x05\xe8\xab\x6d\xd5\xd5\x37\xdf\x72\xcd\xed\x18\xe8\x9c\x41\xb1\x4c\xa1\xd9\xba\xdb\x17\x45\xc0\xae\xd4\x8b\xbd\xc0\xa6\x95\xc5\xea\xa0\x7b\x8b\x96\x16\xad\xce\x27\xd0\x59\xf1\x5c\xff\x02\x6c\x78\xb4\xe1\xa3\x1a\x05\x95\xb6\x50\xc8\xdf\x58\x87\xb8\x19\xb0\xc5\x77\x99\x20\x9c\xc0\xba\xbe\x47\x41\xa5\xdf\xc6\x10\x67\xe7\x9a\xd6\x78\x2f\x6a\x2f\xda\xd7\x15\x47\x1e\x6b\xb5\xf4\x55\xf9\x58\x02\x52\xd9\x54\xce\x96\xa0\xb5\x7b\x85\x84\x9e\xbc\xfc\x4b\xb3\xd7\x1d\xad\x51\x66\x79\xd4\xd6\x6c\x6c\x79\x1f\x29\xae\xa2\xb4\x6f\x4a\x56\x2c\xdf\x59\x58\xb3\xfe\x78\xe9\xfc\xf5\xd2\xcd\x9f\x75\x3e\x55\x61\x46\x63\x1c\x9d\x9e\x42\x65\xdd\x1f\x3c\x6f\x2e\x62\xb7\x1a\x9e\x94\x67\x8f\x00\x47\x0d\x8b\x3f\xf2\x6b\x89\x17\xab\x24\xc5\x04\x51\x3d\x53\x44\xd4\x28\x81\xc3\xd6\xb0\x34\x2d\x52\xd3\x74\xda\x1b\xd1\x4c\x6c\xab\x68\xbb\x9f\x6c\x00\x59\x85\x65\x08\x8b\xd7\x56\xe1\x1d\x9e\xc3\x04\xbf\xb6\xf5\x1d\xc2\xbd\xb2\x32\xaf\x50\x64\xae\x04\x7c\xf1\x7c\x12\xd6\xd0\x78\x14\xce\x97\xfd\x64\x1a\x4b\x7a\x08\x8d\xc7\xdd\x4c\x4f\x99\x8a\xc6\xff\xf4\xe6\xb5\xf0\xdf\x4a\xab\x60\x0e\x46\xe3\x78\x7a\x87\xdd\x84\x4e\x8f\x44\xcd\xdd\xbb\x9d\x6e\x18\xc7\xeb\xaa\x76\x80\xc2\x0b\x81\x1d\x59\xdc\x78\x26\x44\x4e\x52\xa5\x35\x56\x0b\x27\x02\x6f\xbd\xc8\xa0\xdb\xb8\xb3\x0a\xd7\x0d\xdb\x95\x37\x6b\xed\xf9\xc1\x70\x01\x0c\xd3\x0d\xa8\xf2\xcc\x30\xb3\xbc\xd6\x8d\xbb\x05\x12\xd5\xa0\xe1\xe7\x96\x77\x02\xb8\xaf\x59\xc5\xe6\x9a\x56\xd6\x47\xb7\x6b\x1d\xa8\xcf\x3e\x6f\xcb\xec\x36\x2d\x66\xcb\x3f\x9c\xbf\x8a\xe2\xf5\xde\x82\x7b\xa7\xa8\x6e\x98\x87\xc7\xc4\x0e\xf9\x9f\xfd\xc6\xd9\x81\x48\x44\x9e\x17\x10\x48\x38\x6d\x8e\xc2\x50\x8b\x82\xb6\xfb\xf2\xdd\xe7\xf6\xc2\x2e\x30\x5e\xa8\x17\xe8\x08\x5a\xc2\x24\x06\xd7\x34\x45\x38\xd0\x95\x27\x55\x5f\x77\x0b\x3b\x0c\x58\x05\xde\x65\xde\x97\x49\x86\x72\x1e\x24\x5e\x23\xba\xdd\xdf\x9b\x02\x8d\x54\xc4\x55\x4d\x30\x84\x0e\x46\xd6\xee\x0d\x62\xfa\x17\x6a\x10\x33\xd3\x3d\x3a\x58\x54\x24\xbf\x6f\x1c\x6f\x07\x04\x5a\x84\x4d\xa1\xe0\xd3\x45\x43\xd8\x92\xf5\x6a\x09\x1c\x88\x1a\xab\x6a\x2f\xdf\x7b\xf6\xb7\x97\x54\x9e\x21\x7a\x8b\x63\x52\x5e\x73\x86\x83\x45\x53\x8e\x80\x88\xac\xca\x0a\x19\xd2\xba\xc6\xf3\x50\x8c\x61\xa3\xf1\x02\xbb\x6b\x66\x99\xc8\x01\xb8\x7d\x17\x31\xd7\x74\x90\x80\x52\x22\x65\x4b\x3a\x80\xd6\x9c\xca\x99\xf7\x08\x2e\xf6\xfa\xae\x09\xd5\xba\xbb\x63\x0b\x9f\xd1\x67\x4c\x48\xbd\x6a\xb9\x4e\x72\x9d\xf9\x28\x44\xa1\xb8\xb4\xc1\x5f\x34\x80\x91\x8c\x59\x83\x85\x5f\xd3\x2a\x70\x39\x1a\x53\x2f\xfc\x79\x3c\x1e\xf9\x58\x8a\xef\xac\xb9\xb4\x52\x74\x17\xf5\x3f\xf9\x8b\x85\xdf\xba\x0a\x01\xcf\x42\x58\x10\x16\x3e\xab\xd9\x4e\x99\x9c\x55\xd8\x63\xa3\xaf\x74\xc4\xc5\xc7\x7e\x7a\xa1\x9b\xbd\x65\xf3\xf0\x96\x96\x45\x13\xec\x27\xd5\x85\x90\xb2\x78\xa8\xfe\xc9\x5b\x42\x62\x63\xf3\xfe\x18\x2a\xdd\xd2\x68\xa9\x6c\x45\x0d\xdf\x27\x3e\xa5\x6c\x66\xf5\xb9\x49\x3e\x3c\xf2\xa7\x5d\x46\x7a\xf2\xe6\x36\xe7\xcd\x76\xc6\x63\xf5\x4e\xcf\xc6\x1b\x96\x6e\x3e\xb5\x04\x48\xe4\x34\xba\xca\x0c\x6c\xbd\x49\x2d\xbb\x16\xf0\x24\xae\x6e\xa7\xc6\xde\x9c\xac\xb2\xa6\x37\x21\x41\xeb\xc3\xe3\x73\xd1\x39\x63\x95\x87\x9b\x94\xbd\x4f\xf1\x67\x60\xb6\x8e\x95\x2b\x08\xe1\x9a\x5d\x52\x36\xf1\xd1\x1d\x8a\x38\xa1\xa3\x20\x58\x7b\x97\x9f\x24\x17\x10\xa0\xe6\x84\xd9\xe1\x14\x45\x18\x22\xae\xd1\xf0\xa3\x91\x15\xd5\x07\x93\xff\x76\xdc\xe2\xfd\xfb\xb4\xdc\x21\xc8\x00\x5d\x46\x29\x09\xa9\x66\xc9\xd8\x1e\xe0\x0d\x43\xae\x3d\x4d\x52\x4f\xdd\x5e\x30\x36\xc4\xc9\x0c\x77\x87\x6f\x96\x4f\x76\x55\x25\xa4\x48\x76\x9c\x0d\x6e\xbe\x60\x96\x42\xb5\x99\x55\x5d\xa0\xe4\xf0\x39\x0a\x56\xb7\xb7\xfe\xee\xe4\x31\xef\x40\xe4\xa9\x7b\xe1\x54\x70\x30\x37\x24\xcd\x2c\x57\xc3\x6b\xc3\xf0\xa0\xa6\x4a\x03\xd6\xbd\x0e\x92\x2c\x1d\xf9\x98\xf6\xfa\xc0\x6b\xa0\x0e\x6b\xae\x7a\xd4\x1c\x67\xf1\xb4\xce\x3f\x6c\x22\x01\x15\x62\x8b\xae\x1c\x1c\x2c\x8d\x4a\x5e\xd1\xd0\x03\x97\xae\x56\x98\x16\x4c\xe7\x9b\x54\xf9\xe5\x3b\xc7\x20\x14\xf7\x50\xf3\x85\x2a\x26\x98\x08\x16\x19\x95\xfd\xe4\x5b\x0e\x89\x2a\x2f\x18\xc7\xa5\xf4\x01\x35\x60\x63\x3b\x79\xaa\xb5\x16\x26\x31\xd5\x99\xa5\xf5\x8b\xc2\xdb\x3b\x01\x41\x80\x2c\xfb\xd0\x52\x23\x69\x87\x16\xe1\x3a\x07\x23\xad\x58\xf8\x7a\x9c\x0a\x81\x7d\xed\xc6\xce\x60\x46\xdf\xdf\xfe\x5e\x94\x72\xfd\x93\xe5\x6d\x04\xf3\x01\x1c\x89\xcb\x65\x2c\x51\x43\xc8\x64\xfb\x7e\x8d\x88\x02\x82\x9d\x50\x84\x75\x99\x70\x87\xd9\x41\x25\xba\x4c\x79\xc3\x24\x8c\x52\x17\x09\x9a\x98\x9d\xe6\x87\x91\x4b\x70\x50\x1c\x0b\xb1\x52\xf3\xb0\x84\x30\x20\x35\x89\x10\xb1\x8e\xc4\x78\xe8\x97\x46\xda\xe1\x94\x04\xa1\xac\x6e\x1c\x17\x13\xf6\x6c\xa0\xf6\x84\x86\xd3\x1d\x25\xcc\x3f\x17\xd4\xa7\x0b\xe6\x4e\xd6\xd6\x9d\x11\xcf\xdf\x4e\xa2\x93\xb4\x6d\xd4\xf1\xfc\xe8\xa5\x6d\xa1\x59\x36\x89\x27\x81\xab\x4c\xe2\xfa\xa6\xc9\xac\xcf\xc4\x7f\x35\x34\xf5\xf6\x9f\xde\xfd\x92\xb7\xd0\x5f\xe2\xde\x11\xf2\x74\x76\x20\x89\xbd\x4a\xf2\xe6\xae\x2a\x89\xba\x7a\xf2\x4f\xaf\x36\xbd\x1d\xbd\xec\x7e\x12\xe7\x3d\x16\x66\xd0\xfe\x25\xad\xfc\xec\x48\x25\x90\xb8\xd2\xfa\xcf\xb7\x4e\x44\x8c\x3d\x7f\x84\xc1\xa7\xab\x2d\x41\x6c\x7c\xda\xc2\x7e\x06\xf4\x9a\x40\xdf\x08\xa5\xa6\x68\x29\x5a\x8a\x96\xa2\xe5\x3b\x19\x0a\xcd\x43\x5b\x96\x2a\xbb\xcf\x0f\xea\xf4\xa8\xd4\x47\x81\xd1\x3d\x5f\x61\x44\x4f\x9e\xcb\x26\x8f\x2c\x34\x53\x0b\xf8\xfd\xc2\x11\xbd\xca\x27\x86\xe8\x8e\xaf\x60\x95\x67\x68\x8f\x45\x99\xdc\x44\x49\xd7\x70\x46\xf2\x82\xab\x73\xea\x96\xeb\xd2\xb5\x15\x5f\xa9\x0e\x63\xcb\x57\xc0\xbc\xe9\xc3\x86\x6d\x40\xcb\xc8\x52\x40\xfa\x79\x83\xf4\x23\x06\x07\x4c\x1f\xb0\x17\x3b\x82\x4e\xd2\x8b\x2c\x88\xa8\xaa\x9a\xff\x13\x31\x9c\x9c\x0c\x69\xde\x02\x7c\x8f\xbe\x68\x1e\xeb\x50\x88\x56\x17\x71\x95\x46\x7f\xb8\xfd\xb0\xd4\x2d\x0c\xbf\x02\x7e\x8c\xe0\x98\x76\x91\x07\x3c\xda\x7c\x65\x50\xf0\xf2\x6c\x2e\x47\x44\x8f\xd2\x7c\x90\x34\x2a\x82\x9e\xea\x4d\x59\x7d\x05\xf8\xdb\x7e\x4f\xde\x2f\xf4\xfb\x2b\xfd\x5a\x1f\x7d\x0c\xa4\x91\x2c\x2e\xc7\x4b\x06\xa5\x2e\x06\x3b\x54\x76\xcf\x5e\xc4\x2e\x6d\x77\xe2\x45\x70\xe7\xf4\xd0\x07\x04\x88\x56\xa5\x3f\x19\x22\xac\xb2\xc6\x26\xe9\xaa\x27\x6a\x07\x68\x6e\x73\xaf\xc9\xac\xe0\x0a\xde\xd8\x5a\x3e\x2d\xbe\x64\x5c\xf2\xa2\x34\x53\x8d\x8d\xdb\xc9\xd8\xb5\x9e\x96\x87\x4f\xba\x3d\x4f\x37\x57\xce\xed\xcc\x82\xa4\xba\x70\xd1\x36\x8a\x3f\x5c\x63\x94\xd9\x7b\xc7\x24\xba\xdb\xe6\x7e\x5d\x8f\x83\x32\x43\x3f\x3b\xba\xc7\x31\xd8\xe2\x52\x7b\x0c\x25\xc4\x89\x18\xa8\xdd\x82\x7b\xe4\xb3\x59\x99\x2c\x29\x97\x06\x18\xd5\x76\x27\x66\xa6\x9b\x2a\xa7\xab\xe5\x67\x49\x02\xbb\x78\x96\xdb\x8c\x28\xc5\x03\xb1\xb3\x30\x0b\x1d\x6e\xbb\x93\x26\x9f\x83\x22\x73\x1f\x8f\x9a\x3c\x76\xd7\x16\x0d\xf6\x28\xac\xd7\xdc\x8b\x81\x8d\xe8\x6a\x82\xaf\xf9\x2a\x96\x5e\x5b\x8c\xf2\x42\x41\xdd\x7d\x1c\x87\xdf\x9f\x20\x77\x1e\x5b\x44\xb7\x96\x43\xca\xfe\xfa\x84\x4d\x78\x4a\xdf\xa6\x0a\xdb\xa4\x40\x7d\xf8\x4f\x85\xcb\x1f\xa6\x48\x66\xcd\x7a\xf2\xaa\x0c\xc7\xe5\x38\xa5\x08\x1c\x07\xce\x70\xfe\x77\x8b\x4d\x15\x98\x82\xe8\x2c\x71\xaa\x4e\x59\x74\x60\x28\x78\x42\x3d\xc7\x7d\x9b\x22\x7f\xc6\xfc\x71\xb8\x72\xbf\x26\x4d\xfe\x40\xfb\xa5\x17\x87\xbd\xdc\x81\xa2\x64\xae\x02\xce\xf6\x73\xdf\x1b\x99\xa5\xa8\xb2\x3b\x21\x07\xfe\xc0\x16\x92\x65\x7a\x82\x20\xa1\x1b\x25\x88\x60\xd4\xa1\x34\x6b\x44\x1d\xd6\x6a\x89\x74\xd4\x8c\x8f\xf9\x32\xb7\xde\xd2\x41\x7e\x8f\x91\x40\xb5\xee\xff\x8b\x23\x11\xdb\xc7\xa0\x33\xb2\x38\x42\xa9\xa0\x17\xb1\x94\x29\x00\x00\xa3\xcd\xe9\xd9\x24\x95\xcf\x11\x01\x5f\x1e\x3e\xa4\x89\x40\x59\x28\xf4\x05\x7a\x6f\x7c\x26\xe3\x15\xc6\x01\x25\xf9\x83\x4e\x78\xc1\xee\x38\xae\xe0\x6b\xf2\x67\x69\x51\x18\x6e\x21\x59\x16\x87\x2a\xf9\x1c\xbd\xf0\x2c\xa6\x50\xbb\xb8\x6f\x6d\x96\x1a\x29\x52\xbb\x45\x2f\x38\x33\x85\x12\x44\x33\xef\x0a\xb0\xdd\xd7\x81\x28\x8c\xdc\x28\x25\xeb\xc0\x72\x67\x6e\xfd\xbe\xb3\x8a\x92\x69\xc4\x75\xbc\x17\x91\xf4\x18\x81\xd2\xf0\x50\x9b\xec\xb1\x60\xad\x1c\x04\x3b\x7a\x5f\x91\xf4\xf0\xe1\xd9\x25\xef\x73\x13\xda\x5f\x51\xcd\xa3\x21\xd9\x6d\x87\x44\x1f\x7b\xfa\x33\xe4\x28\x8b\x12\x47\xa9\x47\x3d\x24\x96\xb5\x5c\x3d\x94\xf4\x17\x97\x08\xd2\xba\x59\xe7\x40\x91\x43\xb5\x0b\x67\x97\x74\x60\x51\xe8\xe6\x0e\xa0\x6d\xa2\xbf\x61\xb3\x48\x4b\x57\x34\xd7\x7d\x37\x61\x62\xc9\x69\x50\x8e\x79\xcc\x68\x00\x41\xf0\xc9\xba\x3c\x6e\xb2\xe2\x2e\xbe\xcd\x41\xa0\x33\x1a\xad\x62\x01\x0e\xd8\xa1\x6c\xe8\xe6\x3b\x2d\x13\xdb\xe5\xb9\x6f\xf0\x63\x8d\x40\x0e\x42\x47\x6d\x73\xd4\xee\xd9\xaa\xa0\x93\xd5\xa9\x32\x81\x31\x41\x09\x54\x28\x39\xbd\x48\x48\x7e\x7b\xca\x18\x12\xf4\x74\x2f\xdd\x6f\xfd\xd9\xa1\x95\x6c\x65\x3f\x6b\x4c\x64\x73\x1e\x60\x9e\xbd\x2e\x95\x60\x63\xfc\x42\x4f\xd7\x3e\x2d\x85\x8a\x45\xcc\x83\xeb\x75\xa0\xef\x45\xce\xda\xd1\x2c\x20\x18\xcd\x66\x9d\xca\xcd\x66\x5f\xba\xe2\xa5\x3b\x74\x19\x62\xd2\xfd\xfa\xb0\x42\xac\x53\xd4\x3e\xb2\x23\xd8\xd5\xc2\xe7\x18\x54\xec\x91\xcf\x04\x26\x23\x9f\x25\xb4\xa9\xc8\x2d\x78\xca\x59\x54\xca\xfa\x3e\xd4\x6e\x16\xae\x7b\x4b\x9d\xac\x1a\xe7\x40\xef\x2d\x5e\xf5\xa2\x93\x72\x7a\x5c\x90\x45\x54\x66\x0e\x86\x5e\x7f\x16\xa7\x1c\x36\x7a\x62\x22\x9b\x89\xed\x93\x72\xe2\xb4\x8e\x21\x29\x9c\x01\x6f\x31\x3d\xfb\x7b\x07\x2e\x86\xbf\x72\x13\x9e\x0c\x1f\xee\x7f\xae\x79\xed\x0a\x7e\x7d\x92\x84\xb9\xb9\xb5\xd1\xa4\x03\x96\xed\xd4\x93\x74\x80\x15\x82\x6a\xcf\x76\x4f\xfd\x27\x57\x0b\x0f\x95\xf8\xc5\xa2\x71\x41\x14\x48\xa3\x36\xe1\xf9\x77\x07\xed\x59\x8d\xae\x92\x41\x23\x43\x7f\xee\xeb\xd5\x8d\x0f\xd9\x55\xc2\xf6\x73\x11\xae\x0a\x5c\x9a\xae\x0e\xed\xe9\x77\x4c\x5f\x89\x6e\x41\xbe\x7d\x1c\x53\xc8\xfd\x80\x8a\x84\xd5\x1d\x01\x5e\x5c\xdc\x2f\x41\x3e\x6b\x2a\x42\x0a\xee\x82\x3d\x03\x15\xdd\x52\xa4\x42\x9a\x68\xc6\x89\x91\xeb\x11\x65\x1c\xd1\xe2\x37\xb0\x79\x1e\x69\xd4\xa5\x93\xaa\x4e\xa9\x5c\xfd\xd7\x4f\xc6\x94\x89\xbe\xbc\x72\xa2\x8e\x36\x53\xf5\x04\x27\x62\xe7\x07\x7f\x3a\x50\x2f\xd1\xc8\x0d\x74\x1d\x53\x0d\x92\xdb\x03\xdd\xa9\x69\x16\x64\xd8\x38\x81\x59\xb9\x3a\xde\xe8\x72\xf4\xab\x9a\xcd\x08\xf3\xb1\xc1\x7c\x08\x10\x1f\x24\xde\xc2\xbc\xfb\xd0\x75\x25\xfb\x33\xc8\xcf\xa6\x40\x9f\x64\x1d\x9d\x7e\x38\xe8\xec\xa9\x02\x28\x73\xa7\xe3\x12\xa3\x1e\x4f\xc1\xb5\xeb\xe1\xa6\x55\x87\x43\x5e\x39\x12\x30\x3c\x98\x60\x27\xa4\x7f\x8f\x28\x44\x7c\x5f\x5a\x84\x43\x6e\x1c\x14\xb2\xc4\x0e\x47\xf4\xe4\x64\xdd\xf0\x1d\x83\xb8\x0a\x52\x2e\x97\x84\x3d\x5e\xb9\x23\xe7\x78\xb6\x71\xfe\x78\x59\x6c\x93\x19\xf6\x1e\xbb\x45\x74\xd5\x2c\x08\x7d\xd7\x0c\x1a\xf8\xb2\x45\xa3\x43\x14\x6b\x11\x48\xa6\x1f\xdc\x85\x8f\xb5\xa1\x26\xa4\xe9\xf3\x64\xe6\xf5\x52\x61\xe4\x25\xbe\x04\xb1\xa1\xbc\x19\xf5\x10\xd8\x61\x72\x5e\x70\xae\x1d\x81\x51\x0d\x12\x69\x89\x00\xc5\x52\xab\x7d\xb5\x4f\xef\x48\x0a\xd4\x34\x92\xde\xac\xa9\x72\x7d\x09\xb7\x6a\xd9\x9c\xc2\xac\x5d\x90\xc1\xe1\x7d\x6f\xc8\x2b\xef\xaf\x4b\x28\xd4\x59\x69\x16\x68\xdf\x3a\xc6\x65\x1d\xe5\x7b\x9c\xb7\xd9\x2f\xf7\x03\xa9\xef\xd0\x16\xc1\xac\x75\x94\xcd\x92\xe2\x0d\xda\x55\xd7\x84\x73\x16\x96\x34\xcc\x29\xf6\xe3\xa8\x66\x1d\x04\xc8\x12\xf2\xec\x62\xcc\xc9\x18\x4a\xed\x52\x24\x2d\x8e\xee\xe1\x2a\x91\x2c\x8a\x23\xe4\xc3\x9c\xaf\xd2\x07\x20\x47\x74\x03\xe6\xbb\x79\xbe\x5e\x68\x78\x72\x9f\xe1\xb1\xd4\x87\x0b\xbe\x9f\x70\x4f\x65\xb5\xe2\xf8\x73\xbc\xe0\x29\xb4\xbb\xe0\x29\x37\x37\xa5\x8c\xe3\xd4\xfd\x09\xc7\xa2\xbf\x6c\xc5\x8b\xa7\x1b\x68\x66\x42\xce\xf1\x99\xc9\x1e\x73\x39\x4e\x0b\x13\xa2\x3e\xe8\xc2\x84\x85\x13\xe1\x53\xb4\xc9\x1f\xc5\x22\x4c\x20\x55\x77\x7c\xad\xe7\xc0\xc7\x3f\x75\x73\x9e\xa0\x0b\x62\x45\x4e\xe1\x2a\x60\xc1\x71\xd1\x04\x6e\xf8\x67\xa3\xe7\x95\x5c\xfb\x0b\x66\xd1\x94\x01\x1b\x35\x16\xbd\x30\x0c\x92\x7e\x72\xec\x0e\x77\xbe\x3d\xab\xdd\x41\x34\x0c\xec\xaf\x98\xf4\x26\x7d\x0c\x7f\x85\x17\x0d\x96\xc2\xbf\xee\x21\xba\xab\xb0\x42\x18\x9b\x26\xc5\x0c\x8a\x1d\xbd\x33\xca\x6d\xcf\x93\x9f\xe5\x78\x8d\x14\xda\x3b\x5f\x5c\x6b\x4c\x17\xa9\x3f\x88\xba\x58\x53\xd1\x59\x10\x29\x63\x48\x9c\x67\x21\xf9\xb3\x44\xc0\x1e\xec\x02\xcc\x5b\x10\xd9\x28\x93\xab\x60\xa1\xa8\x26\x39\x08\x14\x47\xc7\x9e\x9b\x98\x74\x45\xf3\x22\x05\x9f\x56\x76\xc1\x11\xac\xbf\x8a\xee\x79\x9b\x2f\x13\xdc\x62\xdb\xf3\xdf\xe8\x6f\xf6\x2d\x3f\x1a\xf6\xb0\xa9\xcc\xf2\xb4\x92\x2a\x4a\x6c\x54\x91\x7e\xec\x35\x09\x7a\xb3\xed\x70\xce\x7a\x4e\x8a\xff\xb7\xc9\x62\x30\x12\x4e\xfe\x23\x84\xb8\xfd\xe8\xf9\x31\xdb\xff\xc5\xfb\x68\xfa\x61\x5c\xab\xdd\x4f\x76\x99\x4a\x1f\xc8\xfa\x9f\xd9\x70\x54\xab\x90\xdc\x8b\x06\x5c\xa9\x23\xc5\x70\xc3\x2a\x95\x90\x5d\x18\xde\xa1\x4b\xfa\xe6\xdf\x6d\x4f\x5c\x3e\x18\x95\x2c\x35\xff\x53\xe1\xbe\xfb\x7e\xb9\x65\xd0\x62\x4e\x94\x17\x13\x14\x4a\x80\xe6\x52\xa2\xfb\xb3\x23\xca\x07\x91\x9b\x84\x5c\x2b\x36\x59\xb6\x85\xb2\x9d\x85\x6c\xdc\x0d\xa4\x70\x10\xe3\xe1\x0e\x67\x85\x1a\x5e\x81\x62\x22\x83\x1c\x42\xb7\xca\x2c\xbe\x32\x25\x33\xe5\x15\x82\xea\x03\x14\x23\x75\x85\xf5\x49\xf5\x41\x53\x35\x13\x99\x83\x59\xa8\xeb\x7b\x3c\xe5\x33\x31\x5c\x6f\xe1\xb3\x27\xd4\x9c\xdb\x51\xc4\xe8\x8a\xcb\xcd\x08\x53\xd2\xe2\x8f\x30\x53\x22\x0c\x75\x82\x9e\xb4\x9a\x7e\x0d\x16\xf4\xfc\x15\x1f\xc7\xa7\xd2\xe0\x46\x39\x96\x53\xed\x3e\x17\xc6\x8e\x15\x24\x7b\xfe\x4c\xfd\xda\x55\x6b\x81\x46\x52\x0f\xa4\x34\xa1\x8a\x22\x92\xd6\xcc\xcb\x7e\x6a\x2d\x05\xd6\x84\x17\xa6\xae\xa4\x8c\xdf\x3c\xfa\x50\x0b\xd3\x5f\x08\xaa\xd5\xa7\x8e\xae\xc9\x15\xb1\x97\xf7\xd3\xe5\x8b\xf4\xc2\x3c\x0c\xbd\x47\x3d\xa9\xda\x69\x8c\xf4\xca\x75\x9d\x73\xac\x9b\xbf\x9e\xa5\x9c\x19\x87\xda\x33\xb3\x00\xf5\xad\x4a\x2f\x3b\xe7\xc7\xce\xe1\x38\xf6\xcb\x54\x83\xbd\x86\xb7\x39\x52\x2f\x9f\xca\x55\x2e\xa1\x7e\x9d\x86\x6e\xf9\x86\xcf\x1b\x14\xcd\x72\x02\x84\x5a\x4b\xf0\x20\xcc\x0e\x0e\x75\xf4\x9e\x28\xc9\x51\xa5\xf1\xf5\xa3\x32\xda\x19\x9e\xea\x0c\x07\x0b\x6d\x08\xfe\xdc\x57\x63\x97\xbe\xcc\x5b\x51\x88\x50\x30\xd5\xef\xa7\x0a\xfb\xc4\xeb\xb1\x4e\x67\xf3\x12\x5c\x5d\x67\x91\x6c\x8f\x2d\x8d\x76\x04\xff\xcf\x06\xac\xf7\xed\xb6\x6f\x16\xc4\x2f\x52\x82\x85\x4a\x2e\x03\x12\xeb\xc2\x91\xcd\x23\x7b\x81\xab\x64\x74\x03\x92\xb9\xc3\x04\xf2\xb5\xa2\x82\xf5\x29\x3b\x97\xcc\x5b\xbe\xda\x4a\x16\x49\x92\x5b\x6d\x82\x99\x3b\xbd\xd6\x44\x79\xeb\xab\x35\x79\x8d\x99\x08\xa1\xfe\x95\x53\x42\x7d\xc8\x55\x43\x29\xc2\x8e\x36\x4b\x5f\xf2\x39\x13\xe5\xa9\xc5\x59\xf8\x25\x4f\x49\x77\xd1\xf0\xc4\xd3\x6e\x5c\x7a\x6f\x5d\xb1\xab\xac\xe4\x6d\xe9\xfb\x79\x09\x6d\xd9\xe0\xc2\x4a\x3d\x8b\x48\xe8\x3d\xcc\xc4\xb8\xf3\x55\xce\xd7\xd6\xed\x18\x6a\xf9\x1d\x35\xbe\xc5\x25\x9d\x4a\x2c\x27\x32\x84\x0b\x16\x3a\x82\x49\x9f\x94\x3f\xd4\x15\xf8\x47\xdf\x20\x0c\x0a\x7b\x01\xe8\x87\x8e\x0c\x3c\x1c\x3d\x84\x7b\x2a\x1f\x5d\xf5\x5f\xb6\xa7\x51\x2d\xf6\x98\x9c\x48\xaa\x89\x11\xbe\x7f\x14\x6d\xa9\x46\xdf\x8a\x5c\x9a\xa4\x50\x28\x95\x49\xa4\xfa\x44\x95\xa3\x10\xec\x95\x7f\x42\x10\x67\xac\xdb\x73\x88\x53\x21\x4a\x99\x07\x5e\xbd\x1d\xa1\x35\x39\x2a\x25\x16\x5a\x1e\x4d\x12\x8b\x0b\x0f\xca\xc4\xf0\x6f\x0f\x9a\x0c\xcd\x23\xac\xee\x0f\x4e\xad\x4b\x9b\x1f\x85\x82\x5c\x4f\xb3\x14\xcc\x4b\x77\x64\xd8\x85\x25\x90\xe5\xad\xca\xc4\xc5\x3b\x83\x1a\x2f\x84\x7b\x8a\xb7\x94\x72\x77\x05\x93\xed\x6f\x9b\x68\xbc\xd2\x0c\xf7\xc4\x3a\x67\xb2\x8d\x6c\x93\x8c\x33\xa8\xa0\xaf\x12\x2a\xd1\x4c\x1a\x9b\xdc\x8f\xb3\x4b\xf7\x7f\xf5\x23\x45\x9f\x1d\x21\x7a\x23\x3c\x27\xde\x0e\x42\x07\x66\x77\x6a\x6e\xbb\x93\x15\xc4\x37\x3b\x4b\x66\x87\xf5\x0d\xe6\x17\x45\x25\xc6\x43\x5c\xa3\x54\x1a\x1d\x47\x51\x80\x0a\x77\xb1\x26\x93\x29\x07\x29\xf9\x32\x26\xea\x8b\x65\xa9\x7b\x92\x2e\xa3\xfc\xef\x50\x0b\xcf\xd9\x75\x80\xce\xb6\xcb\xff\x04\x2a\x9c\x35\x8a\xb5\x72\x29\x36\xa0\x3f\x16\x9c\xe6\x27\x8b\x97\xd3\xf3\x49\xdf\x4d\xcd\xc5\x77\xfe\xb8\x0d\xe2\x96\xe6\x09\x32\x0d\x17\xbf\x0e\xed\xa9\x07\xf8\x14\x80\x9a\xe7\x7a\x94\x96\x0e\x3f\x90\x29\x72\x0c\x96\x52\x58\x65\xeb\xdf\xba\x55\x3f\xb5\xf3\x16\x4c\x6d\x6a\xa9\xf8\xdf\x15\x5a\xaf\xa1\xfd\xc8\x9a\x0d\xf6\x4a\x5b\x43\x74\xf9\x20\xb4\x53\x6f\x9f\x18\x18\xa7\xe1\x27\x36\xd3\xf0\xe0\x9a\x43\xa1\xff\x61\xc0\xd4\x57\x3c\x93\x35\x1f\xd7\x72\xbd\x3c\x2e\xe7\x33\x54\x8e\xbd\x77\x63\x08\xd1\x04\xd3\xb8\x05\x90\x3a\x7f\x04\x97\xde\x53\xe3\x00\xe7\x88\xac\x4c\x99\x53\xc6\x05\xdd\xcb\xc1\x2a\xbe\x74\xe4\x7c\x01\x4d\xba\x42\xb2\xba\x7a\x2b\x26\x28\xeb\x9c\x1e\x9c\x3a\x03\x4a\x63\x8a\x45\xa8\xa3\x35\x9a\x11\x2b\x8c\x7d\x11\x39\x4f\x39\x54\x8b\x2f\x07\x0b\xfb\xd2\xd4\x9c\x49\x61\x34\x66\x8e\x7c\x9b\x0c\x9b\xa3\xec\xba\xb6\x3c\x33\x8f\x22\x3c\x05\xa0\x51\xac\x20\x62\x49\x13\xd2\xbc\xbb\xa8\xa8\x3f\xb9\x39\x86\xbf\xb7\x93\xa4\x6e\xe6\x1f\x82\x94\xf8\xbf\x5a\x04\x06\xf1\x98\x08\x09\xc7\xe1\xee\x8e\x60\x31\x40\x8e\x2a\x3a\xe6\xcc\xdb\x8e\x2f\xbb\xdc\x00\x70\x73\x7d\x6b\x80\xc7\xb0\xf5\x24\x86\xd0\xb9\x2a\xae\x64\x7f\x49\xf1\x7b\xdc\x65\xd3\x45\x5a\xdb\x7a\xd0\x5a\x2a\x28\xe2\x02\xf8\xec\x92\xef\xc5\x26\xee\xd4\x9d\x44\xf5\xc2\x72\x23\xc0\xe4\x30\xe7\xcc\x31\xce\xdf\x31\x3d\x73\x52\xc2\xca\x86\xa5\x62\x54\x82\xfb\xb8\xcb\xd4\xc1\x75\x56\x2a\x14\xc7\xc6\xa6\x9d\x9c\xda\xed\x19\xac\xde\xa5\xf3\x64\x29\xc3\x9d\x84\x65\xc4\x87\x2a\xd6\xc8\x3f\xc3\xf0\xd8\xcc\x0f\x63\xd4\x38\x0d\x36\xd8\xe3\xda\x55\xef\xf6\x3b\x58\x32\xc8\xb0\xce\x4a\x5d\x10\x15\x33\x41\x4b\x69\x51\x25\x4d\x95\xaf\x11\x3e\xcd\x05\x9b\x4b\xd2\x5c\x52\x07\xaf\x20\x41\x46\x89\xcd\x73\xed\xcb\x8e\x83\x6e\xce\xf8\x6b\x63\x1c\x5b\xa8\xda\xbf\x72\x78\x6a\xab\xfb\x0c\x78\xc5\x40\x9d\xe1\x22\x38\x5c\x23\x89\x89\xc9\xf8\xe0\x49\x38\x71\x5b\x2d\x89\x27\x9e\x2f\xb8\xc1\x51\x14\x6b\xc1\x0b\x76\x4a\xcc\x33\xd6\x96\x13\x18\xfc\xbd\x3a\xa1\x7c\xf2\x75\x62\xe8\x1f\x18\x19\x8a\x4e\x13\x96\xa8\x7d\x07\xd3\xf3\x30\xdd\xe1\xd8\x75\xa1\xb9\xa1\x36\x5b\x6b\x7f\xbd\x2e\xe2\xee\x62\xb1\x4e\x8e\xed\x3b\xf0\x8d\xb5\x60\xba\x99\xb2\xd2\xdd\x34\x68\x8e\x0e\x8f\x04\x09\x90\x8c\xfa\x77\xe6\x78\x7d\xef\x04\x93\x68\xce\xfa\x57\xe7\x5b\xd8\x16\xef\xbd\x31\xf9\x3c\x9e\x89\x47\xeb\xe8\xcb\x7d\x10\xc1\x7e\xe5\x64\xf3\x78\xd6\x08\x3b\x74\xe0\x5b\x6a\xff\xc8\x32\x29\x4e\xd2\x62\xc7\x80\xfa\xee\x58\x33\xcc\x5f\x80\xea\x49\x26\x28\xae\xfc\x0e\xe6\x88\x78\x3a\x73\xd1\xc1\x76\x4f\x63\xe9\x15\xe1\xcb\xbe\x1c\x33\x6c\x00\x44\x53\xea\x8b\x33\x31\x43\xc8\xe0\x77\x21\xca\x6a\x91\x2e\x83\xcb\x18\x44\x31\x7a\xc3\xa0\xc8\x20\x1d\xf7\x64\xe2\x4e\x36\x3f\xd8\xb2\x10\xd3\x08\x46\xd6\x00\xa2\x10\x6b\x4b\x48\xc5\x1f\xc3\xe8\x70\x10\x36\xc4\xe0\x60\x76\x18\xf4\x86\xaf\xae\x9f\x38\x3c\xcc\x68\x30\xa8\xa9\x55\x0d\x11\x55\x15\x35\x27\xd5\xe9\x62\x84\x0c\x75\xb4\x3a\x1d\xf0\x04\xbe\x9a\xb0\x09\x67\x74\xb0\x06\x30\x02\x0b\x62\xb4\xd1\xa3\x8d\x94\x31\x6c\x79\x40\xe7\x44\x64\x0c\xcb\x11\x5b\xb8\x8b\x68\xbe\x46\xf4\xdd\x44\x98\xc4\xeb\x11\xf4\xea\x9e\x1a\xd9\xc5\x25\xc7\xf3\xed\x96\xea\xd8\xac\xc5\x6b\xb8\xbf\xd9\x88\x36\x15\xb0\x3d\x08\xb8\xf8\x35\x8b\x5d\x73\xcf\x2b\x31\x0e\x81\x02\x72\x71\x0a\xe0\x18\xb1\x73\x69\xde\x67\x47\x51\x46\xe4\xb5\x38\x65\x53\xcd\x03\x5c\xa7\x8f\x69\x15\xaa\x29\x6d\xb8\xce\xae\x9a\x69\x9a\x95\xce\x06\x65\xc9\x36\x34\x3b\xce\xfc\xcc\x8a\x68\xb4\x94\x5a\x95\xab\x8f\xc9\x15\xde\x64\x47\x08\x0f\xe1\x48\x3d\x22\x35\xe2\x68\x23\xe1\x54\x76\x02\xf7\x62\x01\x0e\xba\xd3\x5d\x65\x36\xb3\x68\x8b\x93\xd4\x1d\xb8\x2b\x5b\x84\xec\x42\x19\xcf\x5a\x87\xc4\x61\xf4\x5b\x5d\x6a\xed\xb9\xb3\x35\x16\x06\x50\x39\xee\xd6\xcd\x2e\x32\xe1\x8b\xfd\x98\xbc\xcc\xd6\x65\x7b\xfe\xaf\x3b\x7f\x7c\xbb\x0a\xdc\x5d\x78\x95\xbd\x7e\xd4\xcf\xce\xb6\xcb\xc1\x88\xcb\x8b\xc5\x74\xf3\xb5\x33\x25\xd4\x67\x3b\xb5\x78\x2e\x06\xd7\x6d\x9e\x0e\xb3\x76\xc3\xf9\xf4\x4f\x7a\xb8\x52\x00\xa3\x6f\xa5\x1a\xaf\xc9\x01\x64\x0c\x17\x67\x75\xe8\x16\xbc\x0a\xb3\xb9\x99\x9e\x39\x94\x52\xb6\xe1\x71\x68\x14\xca\xcb\x34\xc4\x91\xb2\x10\xf2\x41\xbe\xca\x7e\xb4\x1e\xfe\x39\xc0\x53\x82\xed\xc3\x4c\xc6\x5a\xd9\x57\x5d\x92\x2e\xf6\x80\xd0\x91\x76\x6b\x75\xcf\xf3\x39\x84\x33\x93\x9f\xc7\x6f\x0d\xe7\xdc\x5f\xc9\xa7\x0b\x1e\x31\x4b\xac\xbd\xdc\xa3\x4e\xce\xe8\x4c\x1c\xa9\x4a\x94\xbb\xd8\xef\x86\xb0\xea\x7d\x74\xd1\xd0\xa6\x0e\xc8\x70\xd3\xfd\x1a\x52\xd9\xcf\xb0\x2e\x57\xc4\xe0\x41\x9a\x3c\xbb\x59\x91\x5b\x3c\x4f\x57\x05\xd9\x11\xce\x42\x7f\xa0\xd6\xb7\xef\xc6\xdb\x8e\x41\x9f\x98\x4c\x7e\x06\xc2\x74\x54\x78\x58\xc5\xb3\xfa\x82\xe2\x53\xb2\x3b\x30\x45\x9a\x5c\x1d\x9d\x7d\x86\x39\xec\xe4\xd2\xbb\xcb\xb9\x43\x2a\x92\x83\xee\x1f\x6a\xf8\x5e\x9e\xd9\x60\x73\x7b\x89\x17\xc5\x10\x15\xd9\x6a\x52\x23\x59\x00\x22\x88\xba\x59\xf3\x62\x60\x07\x82\x42\x74\x9b\xcc\xfd\xd1\x7f\xe3\xac\x27\xa3\x45\xab\x4b\x35\x2b\x1c\x85\x15\xf4\x29\x51\x8b\x61\xd4\x4b\x11\xa0\xd0\xec\x2b\x15\x85\xb3\xeb\x44\x7f\x6b\x3e\x3b\x88\xae\xdb\x3f\x73\xab\x97\xa7\xa3\xb4\x70\xde\xa5\x28\x8a\x63\x5a\x33\xeb\x89\xbe\x97\x42\x23\x9b\xcd\xc9\x23\xf0\xac\x5c\x9c\xf1\x17\xc9\x4a\x52\x2f\xb6\x70\x9f\xca\xc6\x79\x2a\x48\x9a\x5d\x65\x77\xa7\xec\x2e\xd3\x1e\xb8\xba\x3b\x52\x0e\x20\xcd\x2f\x1a\xa5\xc3\xad\xc8\x17\xef\xec\x7a\xb6\xf5\xbd\xc8\x27\x9e\x0c\xb6\xfb\xf7\xd4\x6b\xf2\xb8\x56\x62\xc7\xc9\x19\xe9\x0e\xf6\xff\x3e\x70\x9a\x83\x3b\x3d\xc7\x76\xa4\x36\xae\xe7\xcd\xf3\xbd\xd1\xe1\x2e\xfd\xf0\x6d\x9b\x60\x86\xb2\x3c\xb4\xf1\x6c\x08\x7c\x40\x99\x6e\x95\x2c\xcc\x6d\x86\x96\x6b\xe8\x32\xf6\x2c\xa1\xb9\xcf\x29\x34\xc7\xb7\x3d\x4a\x82\x6a\xc1\xd4\x0a\x75\x2f\x62\x3b\xa2\xf7\xd7\xb3\x37\xc6\x6d\x8c\x21\x36\xf5\x30\x56\x06\x04\x4f\xd8\x28\xb7\xbd\x45\x6f\xb7\xa2\x23\x5d\xa8\xad\x91\x72\x5d\x88\x0d\xe6\xef\x70\xf5\xbc\x34\xb4\xa8\xdf\xde\x9e\x77\xa9\xc7\xc5\xc6\x1c\xe1\x05\xae\x51\xef\x1a\xfe\x46\xf5\xc0\x5d\x99\x14\xb4\x86\xc0\x15\x98\xd6\x1e\x3d\xa4\x08\x54\x81\x95\xfb\xa6\xa1\xf0\x33\x6d\xcf\xc7\xce\xd1\xb3\x2f\xda\x9b\xf9\x9f\xfa\xc0\xbf\x21\x93\x3b\x76\xda\xc8\x43\x2c\x8c\xff\xed\x92\xb0\x04\x3f\xd8\x39\xd1\x09\xde\xb1\xe1\xd9\x24\x31\xd3\x48\x0a\xd5\x9c\x8a\x64\xdc\x71\x66\x85\x67\xc2\xd4\x62\x3d\xa1\x5b\x82\xd2\xdd\xb5\xd4\x85\x95\xad\xd8\xee\x3d\x42\x1a\x48\xba\x62\xa7\x78\xd8\xd1\xb5\x54\xae\x2b\x3f\xf3\x7d\x74\x18\x05\xf8\xfe\xc1\xa7\xd1\x7b\x30\xd1\x2d\xb1\x9c\x03\xf8\xe3\x86\x98\xa1\x7a\xec\xd4\xc9\x49\x92\x62\x29\x23\xeb\xc3\x21\x67\x04\x6b\x5f\xf3\xb6\x4b\x4c\xca\x47\x97\x10\x78\xec\xd8\x35\x1a\xd6\x7b\x77\x72\xd7\xd0\x2a\xb6\xe6\x9d\x0e\xa6\xec\x57\x98\x3f\x0d\x4a\xab\xdb\xbe\x59\xfd\x75\x6b\x5f\xb3\x82\x35\x48\x1f\xfb\x24\xda\xde\xe7\x0a\xc8\x63\x49\x9c\xbb\xae\x3a\x76\xf7\x86\x99\xcb\x4d\xcf\xc5\xa1\x0f\xd5\x9d\x9d\x77\x80\x1f\xe3\x89\x6e\x1f\x80\x8f\x99\x15\xba\x7d\x00\x3d\x66\xb6\x2b\xdd\x03\xe0\x31\x96\x70\x47\x7b\x00\x1b\xe3\x73\x6a\xc3\x3e\x9c\x51\x4b\xd7\x25\xba\x1c\x09\x5d\x33\x90\x9a\x11\x5e\xf0\x63\x08\x6d\x47\x52\x88\x8b\xf6\x58\xb5\xb2\xaf\xd9\x3f\x9f\xc1\x91\x2f\xa8\x1c\x4b\xbb\xcc\x73\x7e\xc0\x65\x4b\x62\xa4\x1a\x3b\x8d\x02\x5c\xea\xe9\x58\x0e\x76\xcd\x65\x2a\x95\x85\x96\x9f\x66\xb8\xde\x37\xac\x16\x4b\xa6\x90\x66\x84\x77\x7c\xd7\xec\xd8\xc9\xaa\x4e\x1e\xd1\xa4\x33\x14\x45\x0c\xd0\x54\x5d\xb6\xa8\x1a\x02\x79\x30\x4b\x9a\xb3\x30\x1d\xd0\xfb\x12\xd4\x2c\x2a\xce\x8c\xbd\x17\xf1\x4a\x00\x8b\xcf\x71\x0e\x3f\x2a\xf5\x91\xd4\x4f\x1f\xe4\xe5\x65\x59\x46\xcf\x6e\x4d\x53\x30\xff\x4a\xb9\xac\x54\x02\xd9\x7f\xe9\xf0\x0a\x60\x64\x66\xc5\x88\x4f\xaa\x78\x02\x55\xb8\x8c\xdc\x78\xef\xb9\x9e\xea\x7b\xf4\x27\x6a\x74\x3f\xa9\x54\xb7\xec\x23\x5f\x7b\x55\x5a\xca\xc9\x38\x6a\x21\x6e\xa1\x9f\x46\xbd\xb7\xde\x28\x6e\xbc\x97\xef\x00\xa0\x48\x06\x2b\xb5\xa7\xe7\xb1\x87\xb7\xa3\xc1\x1d\x99\xd3\x0f\xd2\xdc\x58\x44\xba\xf3\x02\x16\xea\xb5\xa6\xce\xd1\x72\xb2\xf5\x4c\xf5\x65\x40\x95\x0f\x37\x1e\xa9\xf7\xf5\x6a\xbb\xb7\xf0\x39\x05\x99\xed\x1c\x84\x6f\x5e\xc5\xaf\x72\x8f\x8c\xbb\x82\xff\x2e\xc7\x44\x3d\x3c\x84\xe2\xd3\xa8\xb6\xec\xa3\xd9\xb1\x5c\x8c\x66\x95\x47\x2f\xea\xff\xf7\x58\xbe\x56\x47\x41\x27\x19\xe5\xf9\xdb\xa6\xa2\x29\x95\xf7\xe7\x95\x5e\x4d\x66\xaf\x4c\xac\x68\xfa\x59\x0f\x78\xbd\x2b\xfd\x29\xc2\xae\x46\x4c\x46\x04\x47\x2a\xa4\x84\x83\xde\xa9\xb9\xc0\xa8\xda\xc4\x11\x55\x23\xbb\xd9\x16\xff\xba\xd1\xd1\x3d\xa5\x76\x5f\xd3\x34\x6a\x24\x69\x49\xe5\x60\xaa\x94\x94\xa1\x97\x47\xd4\x31\x99\xcc\xee\x3f\xb1\x49\xb8\x08\x1a\x22\x9f\x46\xee\xf2\xcd\xd5\x7e\xbe\xde\xfd\x20\x8e\x78\x9e\x94\x8d\x92\x90\xc6\x3f\xc7\x5c\x9c\xc3\x83\x48\x2d\x36\xd7\xaf\x1b\xbe\x9a\xee\xa6\xc0\x66\xdd\x73\xc5\x34\x33\x96\x16\x8d\xff\x68\xf9\x64\xb3\x16\xc3\x93\x76\x5b\xce\x03\x84\xf1\xab\x7a\xb5\xb5\xe5\x1e\x76\xa8\x15\xc5\xd7\xe2\xaf\xb7\x1f\x1c\xb1\x5b\x9f\xce\x01\x3e\x25\xc8\x54\xe5\xb2\xa1\x5d\x43\x0d\x45\xcf\xf0\xb7\x7f\x80\xa9\x7b\x4e\x41\xad\x5f\xc2\x3e\x41\x46\xba\x26\xe6\x82\xe1\x8f\x34\xfb\x31\x08\xf4\xcd\x67\x33\x4b\xc3\x2c\x54\x9b\xea\x1a\x24\xc1\xa5\xed\x62\x02\xd5\x4b\x41\x10\x6e\x76\x24\x8e\xab\x18\xa7\xfa\xb2\xb3\x2a\x4c\xa1\xca\xe2\x14\x5c\x61\xcd\x21\x9d\x7b\xa5\x55\xe7\xa2\x51\x15\xb5\x42\x42\x0f\x55\x8d\x92\x85\xf4\x66\xd0\x26\xfb\x40\xd1\x1a\x57\x3e\x00\x48\xcd\x96\x2c\xb5\xa4\xf8\x92\x8a\x5c\xcc\x6e\xea\xf5\xff\xb3\x5c\xce\xdb\x61\x3f\x6c\x77\x25\x6b\x94\x52\x54\xa4\x0f\xf9\xf5\xd7\xcc\x54\x85\x98\x49\xdc\x79\x01\xf5\x36\x6d\xd1\x7e\x7d\x1a\x89\x6d\xb6\x4f\x3b\x5f\x3a\x93\x5f\x58\xf9\xdf\x42\x46\xa4\x87\x1f\x8a\x9e\x8e\x49\x06\x2a\x12\xdf\xa2\xc4\xd7\x6c\xe2\xc9\x2e\x99\x87\xbc\x8c\x48\x5b\x72\x88\xcd\xa4\xc0\x52\x36\x95\xdf\xb9\x63\xe9\xfd\x14\x02\xc2\x8c\x9a\x87\x09\xd6\xa1\xa1\x62\xba\x79\x38\xce\xca\xfd\x41\x05\x7b\xc5\x27\xec\x79\x2a\x13\xf8\xe2\xb1\x43\x18\xbd\x4f\xc5\xfa\x23\x5c\xdb\x06\xe6\x0a\x78\x58\x3f\x4b\x35\x4c\x09\x6e\xf8\xdb\x5f\x75\xd7\x9a\xae\xed\xc8\x09\xb4\x49\x98\x0c\x94\xe6\x4d\xbd\x0b\x41\xdb\x9d\xf6\x93\x7b\x7a\x03\x1a\x07\x0f\x1c\xcf\xae\x03\x01\x39\xcb\x59\x74\x86\x69\x83\x48\xba\x82\xb8\x9d\x36\x67\x37\x92\x08\x3a\x6b\xbb\x3a\x14\x24\x2b\x14\xed\xbc\x38\xbb\x33\xee\x3b\x99\xc9\x2c\x9b\x97\x30\xec\x17\xad\x1d\xf6\xf3\xe3\xc0\xf9\x43\xdc\xbe\x6e\xc6\x19\x05\xe3\xb5\x0d\xce\xe4\x6d\x6d\x9f\x58\xcf\xf3\x74\xae\x49\x2a\x30\x27\x7f\xbb\xc1\x00\xb6\xbd\xab\x1e\xce\xdb\x25\x8c\x56\x2c\x6a\x9e\x40\xa9\x73\x3c\x57\x63\x11\x59\x6e\x6e\x5b\x14\x13\xb7\xbf\x48\x69\xae\x27\x57\xb3\x6b\xc6\xb0\x9c\x43\x64\x95\xdb\xe5\x12\xf7\xfe\x1c\x87\x6b\xa9\xa9\xdc\x5d\xd2\xc3\xa7\x2b\xbe\xb7\xad\x11\x2f\x46\x57\xda\xa6\x8b\x16\x77\xe5\xc9\xa8\x19\x49\x30\x59\xb2\x44\xb8\x4e\x48\xf0\xfd\x26\xdb\x95\x3d\x15\x0e\x8a\x68\xf8\x67\xe3\x71\xe1\xf0\xdf\x8d\xa1\xb8\xf3\x10\x99\xe2\xb8\xc1\x23\xf9\xa4\xbd\x6d\xfc\xc7\x09\x5b\xc5\x5d\x21\x36\xd0\xc3\x3e\x02\xcf\xc1\xc6\x5a\x86\x18\xd3\xe8\x7a\x21\xcd\x70\x18\x6b\x98\xfa\xc2\xe4\xe4\xb3\x5e\x1b\xba\xbd\x06\x7f\xcf\xdd\x9b\xe6\x7a\x6f\x65\x4c\xaa\xcb\x33\x60\x26\x04\x48\x1b\x7d\x76\x38\x45\x64\x76\x3a\xe7\x8c\x52\x70\x47\x1a\x04\x25\xe9\x51\xa5\xf5\x72\x98\x87\xbb\x2e\xc4\x42\xbb\xc2\xdd\x52\x99\x56\x5e\x55\xa4\x9c\x62\xed\x68\xc9\xfb\xf1\xd4\xec\x71\xaa\x8f\xb2\x10\x83\x16\x4f\x9c\x67\x74\xc0\x79\xa5\xd2\xb0\x87\x99\xcd\x5b\x3a\xed\x59\x66\xa6\xd3\xf4\xf5\xef\xc5\xe1\x94\x9c\xb2\xe9\x3e\xa6\xf6\x9c\xe2\xaa\x0a\x99\xa3\x69\xbf\xa5\x69\xc1\xc3\xfb\x09\x54\x90\xb4\x30\x57\x15\x80\x9d\x05\x3d\x89\x27\xf6\x68\xd7\x13\x65\x3e\x47\x69\xd1\x2e\xfa\x12\x6c\x4f\xba\x19\x96\x43\xfe\x03\x9c\xe6\xdd\x88\xe1\x16\x58\xd0\x82\xf8\xeb\x64\xed\x42\x99\x27\xf9\xf7\x1f\xaf\x90\x33\x61\xc8\xee\xd5\x28\x85\x6b\x11\xf2\xdd\x9a\x28\xe1\x75\x3d\x2b\x95\x5b\xf4\x3f\xb8\xdc\x11\x92\x2b\xd0\x32\x2a\x12\xe4\x50\x22\x91\xc9\x95\x8b\x66\xf1\x4a\x79\x24\x0c\xea\x96\x12\xb9\x9c\xeb\x7a\x56\xc5\xb1\xa4\xa3\x45\x61\x66\x96\xa9\x8b\x4b\x76\xd5\x4e\x1c\x95\xe3\x8c\xa8\x28\xa1\x6d\xdc\x5b\x76\x1e\xca\x2d\x75\x53\x14\x5c\xe3\xfe\x6e\x3a\x5b\x87\xc5\xda\xc8\x42\x58\xd9\xdf\xcc\xfb\xa6\xe0\x5c\x81\x0a\xcc\xf7\x0a\xa4\xd9\xf3\x9c\x43\x6b\x14\x20\x7c\x1d\x0f\x10\x9f\xd5\xb8\x9f\x0c\xfe\x7f\xf2\x4f\xc8\x9d\x89\xe8\x65\xee\x1f\x0d\xbd\x1e\xb9\x41\x70\xdf\x0f\xfd\x16\x6a\xf0\x19\x42\xb7\x2d\xaa\x18\x53\x70\xaa\x2c\x1f\x48\xc0\xe0\xd9\x96\x3c\x06\xa0\x83\x66\x68\x6e\x37\x53\x27\x47\xdf\x29\xa9\xfa\x1f\x73\x6b\x77\xc1\x13\xe1\xf6\x4b\x80\x9a\xb7\x37\xc0\xd6\x7d\xc8\xee\x94\xd2\xe0\xa6\x44\x5d\x33\xfc\x70\xf9\xbc\xed\x8a\x7e\xce\x54\x25\x24\xb3\x41\x85\xd9\x83\x83\xeb\xcc\x97\x1b\xcd\x28\x37\x93\xfa\xda\x9b\xd5\xb1\x3d\xe9\x2b\xc5\xb5\xbb\x7b\x37\x3d\xc5\x2b\x38\xaa\xdd\x4e\x72\xb4\xcd\x65\xb8\xfb\x52\x6e\xb9\x4e\xb2\xe5\xab\xdc\x8d\xcb\x47\xd9\x93\x75\xb3\x78\x26\xeb\x83\x94\x74\xa6\x36\x4d\x72\x88\x72\xfc\xda\x34\x79\xd4\x2a\xdf\x6d\x8a\x86\x5c\x4e\x76\x47\x5e\xb7\x64\x2f\xc8\xaa\xf6\x9e\x69\x80\x7b\x0e\x1b\x1d\x17\x85\x7d\xe7\xbf\x37\x91\x4e\x39\xcd\x15\x1a\xa6\x3c\x86\x9c\xf2\x6b\x86\x2c\x4a\xa9\x73\x4e\xc8\x47\x29\x12\x80\xb2\xc0\xaf\xa2\x6b\xd8\xcc\xc6\xf5\x65\x03\xcb\xe4\xab\x33\x51\x27\x25\xf7\xf8\xa5\xdc\xf9\x4c\x10\xca\x89\x22\xfa\xc2\xdf\x3d\x18\x67\xa9\x30\x5d\xb0\x3c\x90\x6b\xd0\x16\x2a\x5e\x04\xdc\xb3\x5c\xb9\xe8\xec\xa9\x11\xb7\xe9\x1a\x56\xbd\x79\x2f\xf6\x79\xd2\x36\xd1\x78\xea\xa7\x4f\xe6\xc6\x1a\x33\x82\x66\x84\xf7\xde\x2b\x04\xf0\x65\x21\xa0\xf0\x14\x34\x90\xc2\x57\x1c\xdf\xd8\xe4\x43\xca\x98\xf0\x7a\x48\x58\x19\xe3\xa9\xdb\xbc\x74\x14\x96\x3e\x14\xd6\x54\xf3\xc3\x23\x22\xf1\x85\xab\x89\xb5\x49\x6e\x66\x22\x6c\xed\xce\xa6\x93\x93\x6c\xe9\xe0\x04\x4a\x69\x29\x2f\x2b\xe5\x07\xe3\xd7\x8f\x1b\x88\x6d\xeb\x0a\xd1\xf8\x57\x12\x9b\xab\xf3\xe6\x25\x41\xe9\x14\xc8\x22\x71\xe4\x72\x22\x85\xdc\xf4\xf5\x80\x46\x4d\xc7\xe3\x01\x6f\xab\x7a\xc8\x2b\xe0\xa3\x12\x20\x7e\xb2\x0a\x2b\x81\x09\xc1\xab\x90\x8b\x72\x6b\x94\xbb\x9f\xfb\xa0\x93\xcf\xc2\x34\x60\xca\xa2\x6d\xc6\xb5\x45\x4e\xb9\x27\xa0\x61\x8d\x66\x8d\x1d\x1d\xa2\xd9\x27\x39\x6b\xe3\x74\x16\xb6\x28\x01\x76\x33\xe5\x8c\x33\x83\xf5\x0b\x3e\x6f\xd6\xde\x39\x9b\xed\x35\xf4\x35\x57\xae\xdb\xab\x57\x57\x80\x8a\xea\x29\x10\x19\x2c\x8d\x70\xb7\x64\x42\xfa\xca\x33\x36\xae\xb1\x2d\xd9\x1d\xce\xa5\x12\x43\x4a\xae\x3c\x72\x00\x21\x69\x9c\x64\x13\x67\x44\xab\x3c\x34\x1e\xd9\x42\xd3\xa1\x7e\xa9\x67\xc0\xfc\x49\x4a\x26\xef\xf6\xb0\xb5\xd2\x6f\xec\x80\x4a\xfe\xaf\x11\x35\xc3\x06\xa7\xec\xa2\x9d\x75\x98\xb1\x91\xca\xa2\xf3\x89\x12\x72\x68\xbf\xbe\xe0\xf2\xdb\x17\xf6\xf3\xb7\x64\x55\x68\x0b\x8e\x78\x21\xc0\xbc\x1a\x87\xf6\x08\x22\x64\x7e\x4b\xfb\x95\xd5\x79\xad\x6a\xca\xe5\x7c\x2b\x14\xd3\x41\x33\x36\x29\x93\x36\x79\x77\x90\xdb\xaa\xe7\xb9\x22\x7c\x53\x3e\x26\xf2\x9c\xd5\x84\x13\x01\xa0\x9e\x57\x05\x78\x9c\xe6\x76\x2e\x4b\x16\xbf\x52\x8a\x56\x58\x46\xcc\xcc\xe9\x38\x13\x7e\x16\xf5\xb3\xef\x77\xbf\x4e\x80\x25\xdc\x8f\x90\x92\x4b\x8f\x06\xf0\x0c\xdb\xdb\xd3\x8c\x69\x04\x29\xca\xe9\x43\x98\x23\xd4\x95\x21\xf4\xac\x89\x08\x1a\x80\xee\x75\x51\xce\x18\xce\xe1\xfb\x1c\x1b\xe1\xcb\xb5\xb2\x09\x19\x33\x3c\xbd\x20\x4e\x6b\x88\x9e\xea\xa4\xfa\x93\xa5\x38\xc9\x2f\x33\x15\xed\xe6\xa1\x4e\x3f\xa1\xd4\x0f\xe0\x0c\xc6\x6f\xa1\xf3\x2e\x1b\x99\x71\x78\x54\x43\x26\x5f\xcc\xa9\x54\x11\x88\x06\xb1\x82\xaa\x96\x9b\x6e\x80\xe9\x96\xc9\x3c\x0c\xad\x7d\x2e\xef\xe0\x36\x6c\x0b\xcc\x3e\x51\x53\x9f\xed\x5e\x4b\xc3\x05\x1a\x27\x7c\x52\xd3\xa6\x98\x19\x7f\x01\x47\xb6\x42\xcf\x36\x19\x28\xc7\x87\x2c\xf3\x48\x2b\x08\x15\x99\xd9\x0a\xce\x20\x27\x67\xec\xa0\xa0\x31\x49\xc8\xa4\x99\x96\x96\x29\xd7\x11\xd3\x6c\x9d\x6f\xaa\x7f\x63\x4c\x7b\xa5\xef\x40\x27\x06\x76\x6a\x98\x87\x9a\x6e\xae\x7b\x1e\xdc\x56\x2a\x4b\x5f\x29\x3e\xd8\x11\xe1\x2a\x7c\x1f\x4f\xe5\xa6\x59\x33\x3a\xee\x5c\x07\x86\xda\x9a\x7a\xd0\x2e\x56\x6f\xf8\x61\x46\x02\xad\x55\x93\xca\x3f\x34\x93\xc2\x57\xd9\x74\x4a\xd8\x0e\x52\x1e\x5a\x5f\x23\x2a\x41\xbb\x58\x1d\x2e\x6e\x0a\x11\x0a\x26\xa4\xa0\x8f\xc3\x3b\xf4\x3e\xc3\x93\xb7\x02\x22\xad\x41\x1f\xd7\xb0\x13\xea\x77\x9c\x52\x3d\x3c\x22\x87\xa7\xc4\x56\x01\x23\x96\x3a\x31\x69\x39\x55\x81\xd8\x05\xb8\xc0\x46\x13\x6b\x93\xe8\x8e\x4e\x8d\xa8\xbc\x4d\xea\xb7\xe2\x30\x30\x85\x22\x10\xc2\x47\xf7\x5a\x2e\x09\xa1\xae\x5d\xbe\x52\xa9\xdb\xa0\x86\x07\xc1\x3c\x7f\x70\xc9\xee\x6e\x21\xee\xae\x4a\x0b\x53\x61\xa6\x8a\x7d\xd7\xd8\xde\x14\x56\x40\x6c\xa3\x0e\xd5\x2d\xa5\x47\x98\x1e\x28\x1c\x59\x48\xfa\x30\x41\x6f\xb6\xc2\x93\x11\xbd\x71\xb4\x09\xc2\xe8\x95\xd4\x79\xcc\x94\xad\xeb\x49\x98\x86\x29\x53\x75\x8e\xf8\x7b\x6f\x98\xd5\xea\xa3\x48\x0c\x80\x04\x3b\x09\xfa\x1e\x7d\x53\xac\x80\xc9\x1f\xea\x36\xff\xa8\x88\x68\xd5\xc3\xcf\xcb\x34\x39\x78\xec\xcc\xeb\x88\xa7\x2d\xd6\x67\x6a\x71\x9e\xfe\x9c\x5b\x71\xb3\xab\x42\xd6\x92\x3f\x05\x8b\x4d\xaf\x66\xea\x39\xcb\x13\x61\xbc\xfd\xb8\x88\x95\xb9\x2e\x9a\x90\x1e\x57\x5f\x3e\x82\xfd\x2a\x39\x45\x6a\x47\x92\x57\xdd\x8f\x30\xe7\x5a\x9d\xf4\xe9\x8b\xa7\xc1\xce\x2c\x2b\x9e\x31\x4e\x4b\xce\x7f\x7d\x42\x87\x69\xa0\x37\x84\x37\xca\x1b\xf2\x14\x31\x99\x02\xf4\xba\x7f\x26\x4f\x36\x9c\x2a\x5a\x99\x3d\x80\xb9\xeb\xcd\x11\x28\x9b\xcb\x01\xa4\x99\x13\x36\xbd\x1f\x58\x41\x9b\xb9\x12\x31\x39\xfa\xca\x84\xbd\x73\xcd\xf1\x1f\xa9\x16\xd6\x33\x79\x55\xb1\x45\xaa\x32\xc2\xc8\x9c\xa7\x5f\x6e\x07\x7f\xbc\xfc\xf6\x5e\xc5\xb6\x41\xad\x1c\x57\x61\xef\xce\x71\xfd\x14\x89\xb8\x4b\x37\xcb\x88\x61\xb7\xf1\x86\xd6\x37\xc7\x06\xd8\x40\xda\xb8\x93\x92\xc5\xd6\x28\x54\x6d\xa5\x08\x2a\xb2\xd0\x1c\xf0\x96\x8b\xd9\xd2\x5e\x03\xaa\xd5\x83\x91\xfc\x62\x37\x6f\xee\x6b\x8e\xc7\x44\x48\xb3\xac\x66\xd1\xd9\x81\x33\x58\xd0\x88\xe6\xe3\xab\x63\xd0\xa4\xfd\xb6\x1a\x69\x6e\xc8\xf6\x29\x82\x26\x4f\xbd\xbe\x63\xbc\x25\x3a\xa9\x1b\xc7\x23\x9a\x76\x49\xe1\x76\xc6\x34\xa1\xc1\xa7\x81\x88\x42\x11\x0f\xb1\x28\x2b\xbc\x64\xf9\xc7\xf8\x1b\x4d\x01\x94\xce\x30\xce\xd9\x52\x37\xca\x7f\xae\x22\xa9\x45\xb0\x5e\xc9\x54\xd1\x32\x01\x32\x4b\xc4\x29\xab\x1a\x29\x7e\xb0\x1c\x50\x1e\xa8\xe0\xb3\xfe\x47\xa9\xd6\xb5\xb3\x77\x93\xee\x64\x0d\x95\x82\x29\xea\xa9\x5c\xf3\xeb\xdb\x94\xcc\x06\x94\x90\x9c\x2d\xfe\x97\xe6\xed\xa8\xcc\x3b\xcf\xef\x3c\x66\x9b\x3d\x8b\xe2\x15\x8d\x1b\x77\x45\x51\x13\xf6\x08\x35\xec\xba\x44\xf9\xc8\xdb\xdd\x9e\xa3\x49\x2d\x41\x56\x22\x81\x50\x12\xd8\x60\x67\xd1\xd3\xa5\xe8\x25\x70\xe4\x67\x26\xd3\x75\x87\x9e\x45\x3d\x55\x48\x12\x72\x19\x7f\xb0\xd9\x0f\x36\x8f\x2d\x79\x85\xd3\x16\xb4\xb5\x18\x20\x8e\xc1\xaf\xd8\xf6\xa9\x5a\x30\x57\x8d\x64\xf0\x7f\x95\x18\x9d\x75\x28\x6b\x39\xac\x32\x70\xbe\x5c\xd7\x2f\x78\x08\x0c\x11\x9c\xd9\xd3\x03\x88\xf6\xd9\xf7\x29\xf5\x62\x35\x79\x25\x2e\x45\x0c\x22\x49\xd7\x89\x93\x82\xdd\xe3\x13\x95\xff\xff\x2e\x4c\xcb\xaf\xa6\x87\x54\xb2\xbe\xfb\x02\xca\xb7\xa0\x98\xe1\xfa\x50\x1b\xcc\xcf\x67\xae\xc3\x29\x5f\xa2\x67\xa8\x64\x6b\x3e\xbd\x61\x1c\x73\xb1\x39\x2b\x29\x6e\x1d\x38\xc3\xcd\x11\xaf\xd1\xc8\xcc\x99\xd2\xc1\x68\x32\x57\x5a\x9c\x7d\xf1\x5c\xc1\x0a\x2e\x12\x57\x75\x6c\x2d\xab\x80\xa1\x22\xb1\x39\x6f\xdd\xbb\xbf\x21\xf3\x93\x2b\xb6\x15\x1a\x52\xb2\x74\x49\xb1\xf0\xd0\x19\x9c\xd4\x14\xc0\x26\x36\x85\x52\x2f\xc4\x51\x68\x1b\x2d\xdb\xbe\x82\x34\x42\xe6\xf4\x96\x05\x7a\x7e\x8e\x26\x92\x25\xe5\x9c\xb9\x92\xf7\xa1\x04\xc9\x14\xd5\xf6\x83\xb5\xc5\xf3\xf8\x98\xf7\xdb\x4e\xaa\x96\x04\x35\x37\x85\xd0\xba\xb5\xfd\x8d\xaa\xcc\xad\x55\x7b\x51\x97\x93\x44\x22\xc5\xe4\x19\x77\x1e\x4b\x35\x65\xb8\xd6\x26\xcd\x04\xed\x21\x54\xf8\xab\xd6\x83\xb5\x66\x20\x51\xc9\x90\x05\x17\xc6\x97\x0b\xba\xb7\x06\x0e\x95\x92\xb4\x89\x85\xcb\xed\x51\x13\x01\xd5\x09\xc9\xa2\x02\xf7\x42\xa1\xf3\xee\x4b\x82\xcc\x20\x9e\xfb\xd3\x48\x0b\x1e\x04\x21\x7f\x3f\x26\x0f\xa4\xd1\x17\x77\x23\xae\x7d\x1c\xe4\x60\x11\x46\xec\x71\x15\x3c\x13\x62\x7c\xa0\xba\x65\xe4\x30\xc1\x89\xf7\x70\x51\x75\x8d\xf0\x8d\x22\x3f\x5c\xf1\xe2\x82\x09\xe8\x1a\x6a\xf4\xbf\x9d\x81\x5a\x73\xe3\x20\xc9\xee\xa5\x7e\x71\xd0\x75\x28\xdc\x87\xeb\x7e\xb0\xe6\x5b\x2d\x2e\x8f\x91\x33\x9c\xf9\xbd\xa2\x29\xe0\xab\x61\xe1\x54\x19\x50\x7e\xaf\xe4\x92\xa3\x33\x82\xbb\x63\xde\xd3\x0d\xb2\xe2\xca\x3c\x72\xcf\xc0\x90\xce\xea\x49\x11\xd1\x17\x7a\x91\xcb\x26\xaf\xd2\x24\xd3\xe1\x1c\x0a\x0c\xd6\xe8\x01\xed\x10\x10\xc0\x31\x44\x18\xe5\x8b\x13\x8f\xcb\x41\x99\x8d\x16\xee\xb9\x1f\x5d\x4d\x32\xc8\x0b\x4e\x21\xdd\x64\x74\x01\xb1\xad\xb3\x48\xd5\xd0\x65\x34\x6f\xb9\xf1\x5c\x49\xcf\x30\xac\x40\x63\x33\x8a\x02\x0d\x17\x5e\xe7\xe8\xd4\xfa\x15\x4a\x34\xcb\x1e\xa6\x63\x7d\x0b\xb6\x74\x97\x5b\x01\x37\x64\x6c\x16\xaa\x5a\xd4\x33\xa4\x00\xf1\xd0\xea\x61\xf0\xc8\xc0\x3c\x43\xef\xe0\xe6\x45\x1b\x29\xc3\xa7\xae\x33\x53\x55\x30\x3b\x69\x84\x2e\x20\x46\x13\x67\x69\x74\x33\xb5\xa4\x3f\x38\xe8\x74\x9e\x2c\x89\xe1\xa6\xca\x15\xac\xc9\x44\x95\x38\x7f\x10\xee\xb7\xd7\x8b\x38\x39\x12\x58\xb5\xfb\x9f\x2d\x29\xf3\x80\x2b\xe1\xa0\x60\xde\x99\x5c\xdd\xb6\xd9\x13\x8f\xac\x46\x5a\x69\xb1\xd5\x3e\x3e\x3f\x71\x17\xba\x5e\xb2\xfc\xd2\x6d\x19\xec\x62\xc0\x45\x8f\xc7\x6f\x7e\x06\x31\x71\xe3\x15\xf6\xbc\x5e\xea\x9c\x47\x69\xa4\xc9\x4f\x63\xe6\xa2\x8d\x0a\xda\x84\x10\x45\xa1\x73\xb3\x31\xe0\x00\xa4\xbc\xb5\xaa\x6c\x9b\x16\xfc\x1d\x90\x2b\x7d\x1f\x87\x28\xae\x2b\x07\x1e\x3a\xc1\xdb\x60\x34\xd8\x82\xc6\xe0\x8f\x28\x27\xb2\xeb\x55\xed\xb3\x9a\xcf\xeb\x0f\x14\x51\xc2\x16\x96\xae\x52\xbc\x22\xf3\x20\x45\x7c\x2c\x3b\x0f\x0f\x74\x07\xb2\x85\x86\xf5\x76\xd3\xf2\xfa\xc9\x1a\xf0\x93\xe0\xf9\xf2\x99\x3d\xbe\xfa\x2f\xf0\xba\x55\xf7\xb4\x8f\xb6\xa5\x4f\x09\xa7\x47\x4c\xd1\xaa\x5d\xf1\xd0\xa6\xb6\x65\xfe\x12\x66\x92\x16\x6c\xa3\x3a\xad\x99\x95\xf5\xc8\xa6\xe0\x89\x56\x9a\xce\x34\x14\xe3\xde\x8b\x25\xcc\x69\xd8\x15\xaf\x84\x64\xf0\x98\x00\x5d\xf4\xc4\xc9\xb3\x61\xaf\x04\x5c\x11\x8f\x20\xe9\x28\xf5\xf5\x44\xc8\xd1\xf4\xf1\xf3\x6f\x9f\x76\xcc\x7e\x9e\x77\x3b\xb2\x2d\xea\xb8\xeb\xf6\xbc\xe1\xf5\xc7\xfb\x91\x20\x41\x02\xde\xd3\x66\x57\x78\xfe\x55\x11\xfc\xe9\xf4\xdd\x9f\x1d\x2f\x7c\xde\xdd\x15\x9d\x97\xb1\xbe\x4d\x94\x87\x75\x7c\xdb\x60\xcc\x7a\xc9\xff\xc5\xbc\x20\x05\x97\x7a\xe4\xc2\xaf\x82\x81\x2a\x90\x83\xeb\xfb\xe5\xaa\xaf\xff\x92\x29\xe9\x8b\xe6\x23\x4e\x69\xdf\x7a\xc8\x48\x0f\x09\xe9\x21\x22\x3d\x54\x49\x3f\x5c\x48\xdf\xcd\xe2\x7f\x41\xfe\xd7\x3a\x48\x54\x09\x30\x46\x0d\x38\x35\x09\xaf\x60\x9e\x34\xcf\x28\x13\xb4\x48\x59\xa0\x4c\xc7\xb8\xd0\x66\xdd\xc2\xc5\x78\x3b\xc9\x7a\x6a\x6c\x32\xca\x44\x0c\x49\x1e\xb0\xc1\xb8\x99\x52\x22\x79\xe2\x58\x42\xec\x2d\xa3\x90\xe8\xe5\x85\xa1\x29\x57\x23\x48\x9b\xcf\x96\xad\xd9\x69\xbf\x14\x28\x5d\x41\x84\xb3\x5b\xc2\x7d\x41\x3e\xf8\x90\xdf\x70\x60\xe7\x60\x36\x52\x30\xe7\xf4\x14\xd8\xd3\x07\x50\x04\x6c\x45\xb5\x3d\x49\x0c\xbf\xf7\xc6\xca\x63\x78\x86\xe9\x01\x09\x5a\xa6\x0a\xb7\xe1\xcd\xd4\xf6\x27\xe6\x77\x71\xcd\x89\x62\x98\x1b\xf1\xf8\xbd\x50\x5e\x9d\x9b\x7b\x2e\x94\xb0\x09\x3e\x90\xff\xff\x36\x57\xe4\xba\xbe\x2e\x3d\x41\xd7\xe1\xda\x4f\x81\x61\x32\xb9\x30\xbb\xb7\x46\x61\x5c\xa8\x20\x95\x87\x81\x81\x95\x2e\x28\xa1\xa3\x94\x47\x52\x96\x26\x8d\xd2\xa2\xb1\x82\xd4\xc7\xba\x30\x11\x72\xe8\x2d\x76\x29\xf9\x6b\x69\xc0\x8e\x5b\x71\xce\x0b\x77\x28\xeb\x27\x73\x6a\x43\x92\x14\x23\xb7\x16\x5d\x4f\xce\xc3\xf9\xcc\x1c\x4d\x11\xbd\x59\x55\xd8\xa8\x04\x3d\xd5\x2c\xf8\x3b\x0f\x37\x64\x50\xbf\x4b\xa2\xb5\xdc\xeb\x3b\x8f\xa9\x6f\x64\xee\xb6\xfc\xe2\x5b\xff\x48\x21\x5e\x1c\x94\x46\x19\xb9\x4f\x91\x97\xaf\x22\x93\x8a\x00\x2d\x86\xae\x4d\x84\x2f\x45\x79\x6f\x2c\xe1\x90\xa5\x28\xec\xe2\xb7\x51\x19\x53\x24\x9d\x72\x1e\xf6\xbb\xfe\xd0\x5d\xdc\xd8\xae\x22\xa9\xd9\x46\xe3\xb5\x8f\x40\x87\x60\x74\x73\x0e\xba\x7f\xc9\x63\x37\xd6\xc1\xcb\x37\x6f\x70\x5e\x29\xd3\x55\x88\x07\x2a\x1f\x5b\x54\xa8\x6e\x7e\x93\x32\xd5\x99\x1f\xa3\xc4\x76\xa1\x4e\x6a\x82\xa9\xc6\xc3\x7a\x48\xa0\xa8\x86\x12\xa5\xb1\x4f\x4b\xcf\xb5\x73\xa3\x08\x19\x0c\xb2\xc1\x27\x76\x7d\x49\x59\xc4\x2b\x93\xf6\xd0\x1c\x75\xf0\x65\x47\x8b\xbd\xf5\x89\x14\x12\x1c\x03\xb1\xe6\xb1\x63\xde\x38\xdf\x4a\xfa\x6f\x3a\x99\x16\x6b\x9d\x3c\xbf\x18\x7f\xd2\x8f\x92\x4d\x8d\x45\xae\x3b\xb6\x32\xe0\xfb\xb6\x1f\xfc\xa4\x42\xba\xed\xb6\xae\xfe\x45\x1c\x8a\x73\x2e\xc4\x86\x5d\x13\x00\x67\x27\x44\xa4\xe0\x6d\x6d\xb7\xd4\x3e\xa2\xeb\x91\xfd\xe6\x15\xc5\x6c\x5e\xc7\x4c\xbc\x4a\x38\x8f\xe9\x67\xcf\x25\x05\x95\xd9\x1e\x5f\x19\x84\xf6\x01\x5d\x57\xec\x2f\xaf\x0d\xb2\xda\x5c\x44\xe8\x2b\x7b\x56\x25\x4c\xe1\xde\xb4\x8e\xd4\x86\xf3\x6a\x21\xa9\x51\x74\x09\x42\x8e\x4b\xa9\x50\xca\xc8\x8d\x60\x4a\xda\xb9\xb2\x4d\xb4\x01\x87\x18\x2a\x3c\x6b\x12\xf3\x20\x7b\xa0\x0f\x90\xf1\x93\xb5\x9a\xb2\xa2\x64\xc0\xb4\x50\x2d\x70\x53\x1b\x6b\x0d\xc2\xe6\xd8\xd1\x6d\x59\x0d\x20\x49\x81\x19\x55\xc1\x5c\x2d\xd6\xb9\xda\x63\x00\x49\xb9\x72\x93\xa4\x38\xf6\xe4\xd4\x4c\x8c\x49\x48\xee\x88\xd2\xd6\xe4\x0a\xf2\xdd\xee\x3c\x16\xb6\x30\x0b\xda\x33\x8b\x28\x47\xb8\x0d\x0c\x17\x29\x6c\x34\xad\xc7\x3f\x78\x7f\x8f\xb5\x4b\x8a\x21\x56\xd1\x06\xec\x9c\xb7\x67\x20\x4e\xd3\xdb\xf4\xc8\x12\x88\x85\xf3\x1b\xab\x79\x62\x28\x0c\x61\x4f\x8b\x58\xe6\x81\x2f\x2c\x09\x88\xde\x90\xca\x70\xf8\x60\x3e\x09\x24\xa3\x9c\x0b\xf9\xc5\x0b\x32\xb0\x98\x96\x0c\xa4\x78\x9a\xd6\x2c\xe0\x12\x5c\x85\x13\xcc\x35\xbf\x66\xd0\x94\x21\xbf\xac\x15\x12\x75\x6f\xfb\x36\xd4\xb1\xbd\xa8\x46\x5d\xc8\xc4\x2a\x5e\x69\x93\xcb\x40\xc9\x5b\x39\x4a\xaa\x51\xca\x0a\x19\x71\x9c\xf5\xd4\xe5\xf5\xa6\x3d\x6a\x82\x5c\xd2\xf3\x9b\xf6\xe2\x5c\x0f\x13\xdb\x61\x47\xb3\x75\x67\x05\x10\xd1\x83\x85\xa5\x61\x0f\xd8\xd4\x3d\x1e\xb3\xf1\x28\x91\x81\x7f\xdf\x79\x4e\x15\x9b\x61\x93\xcf\x5f\xf6\x61\x57\xfb\x16\x77\x29\xeb\x45\x7a\xd5\x36\xc1\x28\x4c\xee\x26\xa9\x1b\x2f\x2a\xf3\x60\x69\xc1\x45\x4a\x5f\x70\x12\xd2\xab\xd5\x96\xdf\xd1\x0a\x46\x25\x94\x09\xfc\xc2\x1a\xbc\x3b\x1a\xe6\xd2\x97\xed\xb4\xf1\xf9\xee\xe0\x98\xc2\x26\xf8\xc5\x46\xb0\x25\x57\x56\xe6\xee\xdb\xbe\xe2\x75\xb5\x57\x5d\xeb\xfd\x16\x7b\x05\x5c\x88\xc9\xf0\xb6\xf8\x4a\xfc\x20\x57\xdb\x5c\xc1\xa4\x43\x9c\x78\x0f\x79\x8e\x13\x73\x98\x4d\xdd\x74\x4a\xf9\x17\x1c\xed\xca\x0e\x9e\xa4\xbc\xee\x94\x15\x4e\x6f\xcf\xc6\x3f\x94\xab\x65\xa6\x40\xeb\x2b\x50\x41\x57\xb2\xae\x60\x55\x19\xc0\x7d\xb8\x6b\x7d\x2c\x07\xf3\xde\x3c\x81\xf0\xf1\xbd\x7c\x31\xf1\x91\x02\x27\xbe\x4f\xaf\xb8\x53\x98\xe8\x15\xe2\x7c\x65\x3d\xbb\xf6\x1b\xed\xe9\x24\x36\x50\x98\xe9\x41\xfa\x33\x2f\x08\xea\xaa\x60\x91\x8b\x88\xf4\xee\x4e\xec\x81\xc8\xd2\xa7\xc9\x12\x8c\x72\xe4\x13\xeb\x4f\x51\x7f\x53\xe5\xf1\xca\x19\xfd\xc0\x88\x77\xaf\x0f\xf1\x75\x4f\x47\xf7\x5a\x57\xf0\x0a\x6a\xb7\xea\x60\xdb\x91\x37\xb4\xbb\xd6\x29\x62\xa3\x8e\x4d\xfc\x40\xa9\x35\xd8\x0b\x4b\x80\x7f\x22\x19\x38\x4e\xc8\xda\x90\xbb\xe6\x87\xd1\x9e\x38\xb3\xaa\x87\xd5\x75\x5f\x42\x31\xae\x36\x27\x1f\xec\xc9\x24\xfa\xde\x6b\x8d\x54\x52\x08\x58\x91\xc4\x52\xdf\xbf\xa9\x71\xfb\xcb\xc8\xcb\x9e\x71\xbf\x06\x21\x78\xc0\x8e\xf0\xf4\x40\x83\xfd\x02\x70\x1f\x5f\xb3\x56\x59\x56\x1f\x62\xe1\x47\xc0\xf2\x6e\x87\x42\x59\x46\x24\x79\x65\xbd\xa1\x42\xa2\xf1\xb4\x06\x0a\x34\xbd\xd9\x3e\x17\x2d\x03\x53\xd0\xd2\xfd\x3a\x1a\xda\x77\x2e\x97\x8b\xbe\x4a\x25\x5c\x18\xd4\x34\x71\xd3\x26\x22\x5c\x80\x15\xe8\x64\xf5\xc0\x45\x35\xaf\x9e\xed\x24\xb6\x97\x20\xeb\x99\x96\x77\xd6\x9a\x26\x2b\xdd\x55\x23\x59\xf9\x60\x07\xc5\xab\xed\xa1\x1d\x4c\xe1\xae\xff\xc0\xde\xc7\xc5\x0e\xf6\xc2\x1c\xac\x93\xb8\xfd\x6f\x88\xcd\xc0\xaa\x08\x5c\x37\x16\x7d\x43\x75\x50\xbd\x1a\x7a\xe0\x77\xab\x24\x25\x98\x7d\x3e\x39\xfc\xa3\xea\x71\xed\x1c\x04\x08\x67\x65\x5c\x06\xc8\xdc\x3b\xc6\x62\x51\xcd\x75\xca\x1e\xf9\xe1\x7b\x8a\x75\xf2\x5e\x10\x40\x52\x9c\x12\x47\x0f\x78\x16\x7f\xeb\x74\x9b\x42\x41\xd9\xc7\x47\x5f\x5f\xda\x41\x80\x4a\x6f\x9e\x5e\x3f\x27\x31\x80\x46\x20\xc3\xb9\xc8\x04\xb2\xb3\xf5\x74\xcb\x84\x5c\xec\x51\x1f\x51\xf7\x4d\xbe\x5b\xe2\x21\xf5\x47\x40\xd1\xd6\xc9\x2b\x6e\xf4\xed\xea\x70\xf5\xd5\x35\xd7\x67\xa8\x2e\x9f\xbd\xf8\xdc\xe9\xdb\xbf\x73\x71\x99\x8a\xe5\xe5\x2a\x95\x84\xea\x7a\x89\x07\x69\x34\x03\xb0\x0f\x86\xdb\x9c\xc3\x5d\xc1\xcd\x2b\x79\xa8\xa7\xfa\x47\xed\x98\x28\xae\xeb\xe0\xc8\x22\xb1\x6b\xed\x1c\x6b\x9d\xcc\xc7\x61\xb1\x0d\x95\x08\xa5\x7f\x07\x59\xc3\x2c\x6f\x0f\x15\xd9\x7a\x55\xe9\x9f\x6b\x8f\xea\x2c\x13\x92\x7a\xad\x5f\x6b\x4f\x3d\x47\x17\xea\xbf\x16\x7e\x84\x15\x9f\xe9\x5e\xc1\x4b\xcd\x39\x46\x48\x8e\xce\xad\x94\x9f\x77\xf8\x6d\x93\x10\xcc\x39\x6b\xf6\xe8\x95\x56\xfd\xfc\x41\x2d\x72\xe7\x7c\xfd\x90\x1f\x0f\x1d\x42\x21\x2b\x2b\x02\x2a\x61\xd5\xcd\x35\x36\x09\x69\xa1\x28\x25\x3a\x06\x3c\x60\x6a\xf8\x73\xc7\x63\xb1\x52\xc3\x84\x07\x01\xfb\x24\x58\x6d\x2a\xb4\xcb\xc7\x5f\x1a\x1f\xbc\x5b\xf4\x80\x89\xcb\x13\x97\xe4\x6b\xcf\x9c\x9a\xd9\xc1\xd3\x29\x3f\x8b\x3e\x12\xdb\xa1\x32\xfe\x0f\x24\xc0\x0b\x51\x69\xcf\xe2\x0c\x3f\x8a\x60\x46\x68\x56\x41\x1d\x68\x8e\xf1\x98\xfc\x3a\x1e\x32\x4b\xf1\xbd\x52\x61\x9c\xd4\x4b\x87\x9e\xae\x22\xde\x0f\x38\x32\xdc\x92\xa3\xf7\xb9\x26\x50\xf0\xb4\x89\x85\xec\x26\xc4\x8b\x04\x38\x21\xa9\x66\xee\xbb\x39\xe0\x3a\x10\x23\xdf\xc5\x1e\x6e\xaa\xe8\xa0\x09\xb5\xc0\x3f\xf1\x67\xe5\x03\x67\x8c\x05\x19\x37\xcc\x94\xe0\x7c\xfb\xc1\x6c\x08\xe1\xb8\x47\x1e\x48\x90\x28\xc6\xae\x37\xa5\x7b\x89\xae\x28\xce\x34\xfd\xee\x33\x15\xcf\x9a\x27\xfb\x14\xb3\x19\x2f\x62\xec\xba\x04\x54\x31\xe1\x99\x4b\x89\xeb\x79\xc0\x56\x7b\x1b\xdb\x3a\x9c\x94\x75\xbd\x94\xc6\xfa\xea\x06\xc9\xb0\xfb\x4d\xca\xf9\x11\x9d\xba\x9f\xd0\x59\x69\x65\x83\x30\x99\x37\x5d\x54\xd7\x95\x99\x49\x95\xdf\x84\xb1\xb4\x77\x35\x80\xe0\xee\x9b\x4f\x8e\x5d\x16\x9e\x0f\x6a\x10\x28\x6a\x55\xab\x48\xdf\xb8\xc6\xe4\xd9\xab\xd9\xf0\xb9\xa6\xe7\x55\x06\xed\xfe\xf3\x2e\x31\x7b\xb2\x9c\x9d\xab\xcf\xf2\x22\x33\x17\xfa\x96\x3b\x3e\x90\x25\x2e\x7d\x01\x54\x99\x6b\x26\xe2\xaf\x9b\xb6\xac\xb8\xf7\x8b\xdc\xa4\x47\x72\x42\xe0\xfe\xf5\x96\x9c\x91\x40\xb7\x4d\x96\x84\x39\x36\x8f\xc4\xbf\x9e\xd2\x8f\x3c\x6f\x99\x7d\x11\x32\x74\x9b\xf9\x40\x43\xbf\xcf\x5b\x1f\xb3\x6d\xa6\x2f\xa2\x79\x2a\xeb\x63\xe7\x99\x63\x5e\x6e\xdc\x08\x7a\xb8\x44\xbd\xb3\x34\xea\xb3\x0b\xae\x58\x02\xb0\x65\x9c\x96\x17\x0f\xa4\xf6\xf1\x83\x7b\xb0\xbf\x0b\xfe\x8c\xd0\x68\x7e\xb9\x1f\x61\x18\x92\xd0\xb1\x42\x6f\x11\x95\x8c\xb2\xdb\x4b\x32\x27\xef\x17\x22\x17\xa6\x44\xdb\xc6\x44\x1a\x2b\xd3\x35\x22\x6c\x7d\x99\xd9\xf5\xe2\x39\x18\xe3\xb2\xf0\x68\x37\x58\x98\x3b\xbd\xf8\xfb\xdd\xb1\x82\x31\x8c\xb7\xae\xac\x46\x48\xbd\x95\xae\x59\x2d\x2c\x7d\x27\x17\x7f\xe4\x04\xe7\xdb\xf5\xc7\xf5\x06\x8c\x66\xe2\xb0\x7e\xb1\x73\x98\x5f\xc8\x0d\x67\xc7\x8d\x98\x62\x1b\xe4\xd6\x58\xc5\x39\x6a\x1f\x16\x37\x77\x99\xc0\x27\xeb\x45\x80\xa6\xe4\xaa\x55\xaf\x18\xbe\xc8\x63\x38\x6d\x86\xa5\xca\xb9\xf0\x4c\x37\xe0\xe9\x62\xf3\xe1\xa6\xf2\x68\xa1\xa0\x02\x9e\xa6\xec\xa9\x05\xcc\x13\x41\xb2\xb5\xe6\x64\xb9\x16\xc6\x0d\xd4\xe5\x89\xc7\x4f\xba\xa5\x9f\xdc\x6f\xd7\x38\xa9\xfa\xac\x08\xe0\x56\x71\xa5\xce\x9e\x90\xdf\x6c\xeb\x99\x2e\x34\x8b\x66\xea\xaa\x54\x2c\x12\x60\xa5\x62\xb5\x64\x1a\x65\x2b\xec\x14\x2a\x1d\x07\x83\x8f\x26\x0b\xc9\x41\x62\x04\xb7\x8f\x69\x94\x26\xa8\xe6\x4e\xbb\x1f\x38\xb8\x9b\xd8\x1a\x59\xb6\x61\x2b\xc4\x39\xed\x89\xcb\x4f\x56\x74\x04\xc9\x7d\x26\x72\xab\x53\x66\xfb\xbd\xb8\xed\x47\xeb\x3d\x9d\x27\xa8\x15\x06\x6c\xb5\xf2\x27\x73\x57\xc1\x96\x13\x54\xeb\x45\xf7\x80\x33\x59\x92\xa9\xa8\xfc\x2c\x23\x79\x4b\x93\xc9\x2b\x93\xc1\xab\x98\x89\xbf\x43\xef\xc8\xf9\x2c\x78\x7e\x37\x43\x99\xad\x7d\x47\xba\x92\x8b\x82\x17\xca\xbd\x34\xc7\x04\xcf\x2b\x16\x2a\x0b\xe1\x45\xcd\x0b\xc3\x3e\x16\xd8\xea\x7b\xad\x8e\xa5\x7c\x65\xcb\x5c\x67\x38\x8d\xbd\xbb\xc5\xb5\x47\x6d\x15\x09\x77\x23\x94\xba\x71\xa9\xeb\xf8\x3c\xc4\x3e\x43\x23\xf9\x44\x96\x86\xd3\x87\xe2\x07\x36\x18\x1c\x27\xbb\xc5\x48\xec\x94\xec\x2e\x4b\x22\xdd\x27\xb4\x4a\xae\x82\x0f\x64\x43\x3a\xd6\xa2\xc4\x86\xb2\xf0\x6f\xca\x35\xf3\xb8\x42\x74\xe1\x2b\xe5\xaf\x3a\x81\x31\x1d\x24\x9b\x24\x81\x20\xfe\xae\x20\x54\x2d\xf4\xa6\x4e\x1c\x2d\xd4\x92\xce\x14\x31\xad\x26\x07\x7c\x28\x8b\xbe\x6f\x98\x7a\x4d\x8a\x0b\xbd\xfc\xd0\x7b\xac\x97\x61\x43\x10\x27\xcf\x14\x3a\xc2\xbd\xf3\x03\x64\xa5\x31\xe8\xef\xa6\x47\xa6\x8e\x9d\x01\xdf\x0a\xb0\x8d\x93\x3f\xc3\xe4\x71\x81\x4d\xb0\xce\xfd\xad\x50\x34\xc1\x44\x13\x51\xe6\xc6\xe4\xdd\xac\x04\xb6\x6a\xb4\x8a\xf3\xb1\x15\xf2\x12\x47\x05\x83\x42\xea\x4c\xc7\x6c\x89\xbb\xaf\xba\xab\xac\xd5\xdb\xd5\xd2\x94\xb8\x57\x18\xfd\xf7\x5e\x9c\xa4\x99\x9b\x7f\x9d\x57\xb7\x3e\x62\xf2\x33\xb4\xa1\x0a\x8b\xe8\x95\xb1\x74\xde\x0c\xc5\x53\xf6\x5b\x56\x38\x93\x2f\x4b\x70\x77\x7b\xc6\x47\xd4\xca\xd9\x2e\xa4\x28\x01\xa4\x96\x83\xbf\xc5\xfb\xf8\xec\x51\x98\x30\x8c\x50\x23\x85\x5a\x1d\xcb\x63\x61\x4c\xac\x51\x49\x12\x22\x8d\xdd\x9c\x80\x16\x69\x8b\x6c\x8f\xdd\xf0\x11\x02\x8f\xd8\x39\x18\x9d\x0b\xae\x17\x6b\xc8\xf4\x95\xb3\x9b\xb9\x7a\x36\x05\xac\xaa\xe9\x97\xaf\x2c\xc4\x18\xd4\x56\x43\x0a\x80\xb5\x49\xe9\xd8\xb2\xe1\x3f\x4e\xa9\xa3\x99\x83\x8c\x42\xb8\x98\x9a\x39\x3a\xac\xfb\xbc\x0b\x2e\xd7\x6c\xb7\xe5\x64\x2f\xb2\x65\x8c\x84\xf9\x38\x0d\xa4\xc0\x34\x5a\xf0\x03\x38\xae\xea\x1c\x6c\xba\xd1\xb7\x54\xd5\x09\xb5\x39\x80\x3c\x2a\xcd\x9b\xd3\x59\xd8\x0d\x84\x71\xec\xf7\x5a\x69\xbe\x04\xc8\x07\xa7\x62\x0e\xce\xd2\xdb\x8b\xf6\xb2\x37\x12\x4d\x71\x73\x38\x1f\xfb\xd9\x44\x7a\x70\xce\xc6\x87\x85\xa2\x42\x43\x4a\xa9\xb5\xa9\x0e\x9a\xbb\xbd\xd8\x7f\xb6\x9f\x05\x85\x6f\xda\xae\xf4\x12\x37\xe2\xe5\x99\xf4\xa5\x5b\xd9\x6e\x72\xbb\xba\xbb\x2d\x3f\x55\x85\x95\xd2\x61\xe3\xaf\x34\x2b\xca\xd2\xf6\x2f\xe5\xcf\x98\xe7\xdd\x40\xa5\xc1\x6b\x20\xc4\x89\xc1\xb7\x9a\x40\xa5\x14\xba\xf6\x5d\xfe\x57\x9b\x0d\xd6\xf1\x81\x88\xb6\x2d\x4e\x69\x55\xec\x2a\xb7\x47\x4c\xb2\x5a\xf1\xc1\x48\x41\x2b\x06\x6c\x1f\x19\xc6\x62\xa8\x2b\xf0\xcc\xf9\x18\xc8\x26\x17\x5e\x81\xca\x2b\x53\xd3\xc8\xbe\xf4\xaf\x3c\x47\x33\x4f\xb9\xba\x1b\x45\xcf\xd8\x30\x49\x6b\x72\x7e\x62\xf4\x2c\x0e\x6b\x74\x3b\x4f\xfc\x41\x25\xb0\xfc\xae\x2a\x98\x98\xb8\x31\x03\xec\x37\x74\xd6\x48\xbd\x9f\xa2\x89\xeb\x55\x23\xdb\x2c\x10\x6d\x40\x31\xd9\x04\x5d\xdf\x9e\xdc\x95\x93\xef\x5a\x2a\x9b\x00\xab\xb9\x2d\x55\x3c\x29\x95\x41\x80\x67\x8a\x82\x9e\x5b\x7a\xda\xdf\x02\x31\x8a\x01\xde\x02\x88\x0e\x27\x00\x42\xcc\xc4\x0e\xc3\x31\x24\x44\x09\xae\xd0\x1f\x0e\x08\xc9\xf1\x7e\x4a\x1f\xda\x59\x41\x78\xbf\x1e\xaf\x54\xe8\x55\xbf\xd2\xfc\xb6\x95\x83\x82\x93\xdb\x8c\xa4\x61\x80\xfa\xf7\xf9\x73\xca\xc5\xe2\xcc\x04\x2f\x9e\x2e\xcc\xba\xdc\xcc\x3c\x98\xdf\xb6\x1b\xbf\xf5\x6f\x7e\xdb\xdf\x2e\x13\xda\xfd\x65\x97\xce\xce\xb2\xcb\xaa\x18\x7e\xdb\x87\xea\x13\x5c\xbb\xe1\xfc\x5f\xdf\x7a\xa1\x7f\x6a\x92\xd9\x43\xf2\xfa\x50\x5e\x1f\xd1\x87\x70\x00\xdf\xfc\x4e\x97\xde\xbc\xa2\x62\xd4\x72\x32\x49\x1e\xc4\x2b\x30\x7a\x5f\x7e\x1b\x7e\xd0\x51\xf3\x4d\x5f\xaf\xe1\x1b\xbf\xf5\x6f\x7e\xf3\x1f\x33\x17\x30\x5f\x1d\x77\x62\x18\x01\x63\xb5\x49\xf2\x43\xd8\x13\x83\x2c\x1b\xa3\x90\x73\x72\xee\x5e\x7e\x59\x14\x16\x5c\xd9\x4e\x20\x54\x91\x16\xa2\xb5\x63\xb4\xad\x67\x9f\xc3\xd1\x88\xa4\xab\xd4\xce\xcb\xa1\xea\x5f\x5d\x5d\x55\x10\x6c\x3a\xd0\xb1\xe1\xe9\x7c\x40\x0e\x62\x87\xea\x1f\x39\x8e\xe1\xd4\x71\xfa\x72\xa8\xbb\x88\xcd\x16\x7b\x70\x61\xd2\xbb\xee\x97\x5b\xf0\x51\xf4\xaa\x2d\xc7\xc1\x9e\xda\xae\x0b\x65\xaa\x63\x57\xe7\x3d\xc1\xb1\xb4\xfd\x9b\x00\x8c\xe7\x56\xc6\x4e\xee\xe2\xda\x52\x77\x78\x97\xd9\x55\x31\xec\x5b\xcb\x4d\x68\xf0\x86\x0e\xaf\x4c\x26\xda\x9f\x27\xb8\xc3\x36\xda\xc9\xd4\x22\xe1\x1f\x8f\xba\x9e\x2d\x38\x4f\x15\xa8\x87\x0a\xd2\x4b\x5f\x53\x26\x4c\x2b\x3f\xc0\xa7\xda\x20\x71\x8e\x2d\x6d\x56\xf6\xa9\x45\x16\x3c\xd6\xbd\x22\x1e\x69\xc9\x0a\xfa\xd0\x4c\x54\x3b\x9e\x43\x3d\xc1\x79\xe8\xbe\x0f\xcb\x53\x40\x5e\x6f\xf6\x73\x58\x50\x2d\x29\x80\x6d\xb1\x18\x84\x7e\xd5\xb6\xaa\xea\xeb\x33\xb2\x54\xad\xdf\xdf\x76\xaf\x80\x9b\x6a\xa3\xe9\x6e\xd3\x27\x03\xcf\x0c\xeb\x5a\x42\xc3\xe7\x75\xfc\x69\xd8\x8e\xa1\x6b\x05\x6f\x93\x48\xca\x71\xb5\xaa\x07\x7c\xf5\x19\xc5\x4c\xe5\x1c\x64\x2b\xdb\x9c\x7c\x74\x52\x7f\xb7\x3f\x5f\xee\xdb\xed\xb2\x6a\x18\x93\xe6\xb9\x2b\x1f\xe1\x50\xc6\x2f\xee\x2b\x49\xca\xc5\x2e\x43\xb3\x2b\x59\x70\x6b\x32\xc3\x06\x87\xa7\x22\x9d\xee\x89\xa0\x07\xbd\x9c\x96\x6e\xf3\x20\xad\xda\xef\xac\x98\xd8\xcf\x76\x24\xf7\xc0\x4f\x69\xe3\x79\xbd\x4f\xb5\x8f\x0f\x21\x08\x83\xf2\x3f\xa7\x81\x89\x7d\xfe\xb6\x02\x5a\xaa\x7e\xfb\x63\x40\x63\x88\x18\x2c\xb0\x2b\x97\xd6\x32\x0e\xb5\x50\x74\x04\x10\x51\x12\xd2\x06\x1c\x88\x81\xfd\xf1\x3f\x07\x72\x3e\x97\x1e\xd1\x17\x3c\x83\xb2\x2b\x0b\xee\x8a\x24\x59\x5b\xd2\x24\x29\x80\x28\xda\xbb\x3f\xed\x85\x8a\x9a\x9b\x1c\x60\x34\xc5\x3f\xfe\x71\x9c\x54\x97\xf2\x3d\xcc\xbd\x85\x29\x5f\x0d\xeb\xf0\x54\xec\xf1\xb9\xde\x79\x55\x61\x4d\x30\xba\xb6\xe4\xa0\x95\xc6\xce\x26\x86\x52\x2e\xa2\xe2\xbb\xa8\xd6\x67\x3c\x5c\x8c\xfd\x20\xaa\x85\xbb\xa2\x64\x24\x92\x57\x85\xa0\xb9\xc2\xfa\xb6\x31\xfb\xae\x8e\xd0\xcc\x27\xca\xb2\x90\x1f\xdd\x15\xf3\xf2\x36\xb4\xe5\xae\xe5\x69\x26\xbf\xc9\xd4\x6e\x83\x1f\x5e\xe1\x26\xf6\x8c\x09\x93\x9f\x30\x5b\xbf\x41\x81\x2a\x97\x71\x7c\xd6\xa2\x53\x43\x41\x43\x45\xf5\xfd\x95\x62\x29\x54\x61\xc5\x73\x70\x7c\xb0\x19\x27\x0f\x28\xa8\xa5\xae\xa1\x5e\xc9\xb0\xa6\x53\x20\x6d\x56\x73\xb9\xfe\xdd\x39\x82\x85\x4f\x5e\x7d\x6c\xdc\x29\xec\xf1\xff\x0e\x55\xd5\xa2\x74\xd7\xc9\x9f\xcf\xda\x6e\x16\xb1\xdc\xf1\x05\x8b\x5a\x89\xa4\x38\xb5\xcb\x8f\x27\xd6\x70\xc5\x7e\xea\xfb\xec\x08\x1a\xd2\x6a\x90\xef\x1a\x3f\x1f\xd7\x6c\x28\x0f\xff\xbe\xd9\xfc\xbb\x00\x62\x87\xcc\x67\xe7\x32\x8a\x91\xd0\xba\xd2\x63\xac\x22\x79\x4d\xce\x28\xf3\x1c\x4f\xd7\xb3\x11\x0f\xf9\x59\x22\x07\x2b\x28\x8d\xc3\xbf\xbf\x7f\x4b\x2f\xa5\x1f\xe3\x17\x09\xe5\xd6\x1f\x55\x8c\x5a\x6d\x2d\x2a\x28\x69\xe8\x12\xd1\x96\x43\xfb\xdd\x79\xb5\xdb\xcd\x65\x70\xc5\x8c\xb1\x7e\x2a\x27\x27\x63\x1a\x29\x7a\xfe\xc8\x16\x98\x91\x6d\xec\x04\xb3\xc8\x87\xe0\x02\x3c\x94\x2a\x88\x41\xb6\xd7\x60\x65\xa2\x61\xab\x8b\xd7\xb5\xe3\x72\x0d\x7c\x89\x55\xe2\xd7\x06\x0c\x7d\x14\x9c\x2a\x78\x88\xad\x20\xc6\x49\x1b\x82\x41\x92\x42\x29\x74\x85\x75\x61\xf6\xd6\x5e\x2e\xa4\x42\xf1\xba\x70\xe8\x59\x2a\xe1\xf8\xab\xd4\xc7\x46\xa3\x9a\xd5\x77\xef\x38\x64\xe4\x2c\x46\x81\xd3\x6b\x8b\xe2\x5c\x1a\x12\x0b\x99\x10\xee\xc4\x76\xb6\x4f\x99\xc8\x58\x7a\xc2\x2c\x7e\xef\x03\x86\xf2\x07\xa9\xc8\xc0\xea\x87\xc3\x3d\x36\x1a\xa8\xa4\x1b\xdd\x26\xe1\xf0\x56\x2d\x64\x5c\x78\x46\x65\x23\xcf\x44\xf5\x3b\x47\xf8\x8e\x9f\x2b\xad\x5d\x2a\x52\xb7\x96\xc0\xdc\x41\xd5\xb4\x1d\x24\x1d\xc1\xc3\xd4\xa7\x32\x79\xf6\x41\x24\x9b\xa9\x0b\x51\x84\x5f\x10\xf4\x65\x61\x94\xcb\xcd\xb8\xc2\x0b\xed\xe7\x81\x63\xec\x0a\x36\x9d\x01\x8e\x87\x0d\x5a\xcf\xfb\x66\x17\x30\x12\x3d\xd1\x9b\x55\x94\x20\xe4\xef\xcf\xc7\x26\x38\x25\x30\x57\x66\x4e\xde\xab\xd5\x05\x15\x8f\x39\xd3\xf4\x78\x80\x7b\xb1\x92\x51\x76\x3d\x0f\xb3\xee\xe8\xbf\x10\x69\xa4\x45\x58\x9c\xe8\x44\xbf\x3d\x1e\x8b\x0a\x77\x9e\x96\x63\x7a\x12\x61\xdc\xc3\xd0\x7b\xc0\xb6\x5e\x94\x9d\x6d\xb0\x0d\x47\x7b\xaa\xa7\xf0\x84\x7c\x30\x23\x4f\x62\xf4\xe2\xad\x13\xee\xc0\x73\xfb\x2d\x5e\x88\xd0\x19\x82\x76\x5d\x07\xf7\x55\xf8\xa0\xcf\xf6\xaf\x79\x4e\x39\x08\x2b\x02\xb9\x67\xf8\x55\xe8\x9a\xf8\x35\xfd\x1c\xb9\x2e\xf7\xde\xe5\x9b\x7b\xd6\xda\xd2\x55\xf8\xd6\x40\xc5\x72\xa9\x48\xee\x56\x10\x28\xee\xd9\xd0\x8f\x25\x4c\x46\x91\x12\x0a\x06\xf6\x26\x09\x2a\x0d\xdf\xac\xe9\x42\x6b\x17\xbc\x5c\x37\x41\x30\x93\x08\xab\xc9\xb8\xbc\xa4\x96\x12\xaa\x83\xfb\xca\x76\x8a\x2a\xcc\xf0\x45\x35\x20\x2c\xf8\x11\x7d\x85\xec\x3c\x23\xb7\x29\x63\xd9\xfe\x45\x2d\x85\x8b\xb1\xf9\x12\x1f\x0f\x1e\x8a\x63\xd7\x76\x60\xb8\x29\x8f\xf6\x81\xab\x25\x67\xc7\x53\xf8\xee\x54\x3e\x59\x99\xbf\xb8\x8e\xc5\x5c\x87\x11\xcc\xd5\xea\xdf\x71\x4f\x79\xc7\xba\xc9\xa9\x4e\x16\xce\x56\xd8\x5c\x9b\x8a\x8a\x13\xf7\x80\xc6\x39\x67\xaa\x59\xee\x16\xf5\x5e\x9c\x7b\x96\x1b\x4f\x35\x18\xf8\xac\x4f\x75\x8b\xab\x12\xa4\xee\x93\xce\x6c\x33\x43\x27\x41\x05\x84\x45\xf2\xab\xe5\xb3\xd5\xd4\xd8\x8f\x8c\x4d\xbc\xda\x1a\xdf\x60\x38\x98\x71\xe9\x5b\xd8\xec\x2e\xb0\x62\xba\x09\x76\xdb\x0c\x1e\x8d\x94\x63\xcc\x2c\x0a\x28\xb0\x13\xb1\xe5\x59\xa0\x48\x02\x4e\x1f\xba\x77\x4b\xb1\xc4\x6c\x85\x19\x2d\x90\x41\xab\x84\xd3\xb9\xd2\x25\x3d\xfd\x99\x11\x8a\x91\xfb\x53\x49\x6a\xd1\xaf\x5a\x72\x47\x71\x80\x7e\xb4\xdc\x18\x65\x57\xa1\x50\x0f\xb9\x30\x33\x8a\xd2\x18\x61\x97\x6b\x1c\xf5\x42\x2b\xa8\xa8\x49\x33\x50\xb9\x34\xfa\xb2\x43\x1a\x27\xd2\x89\x6e\x14\x4f\xbc\xee\x6b\x27\x8d\x42\xdf\x5b\x3b\x53\x7f\x58\xaa\x84\xf4\x2f\xc0\xd9\xfd\x2d\xb4\x76\x86\x1e\x33\xe6\x14\xa3\x68\x48\x05\x84\x72\x2d\x63\x62\x9a\x7f\xf7\x32\xe1\xb3\x95\x01\xdf\xa3\xcd\xd3\x39\xde\x7b\x45\xf0\xfd\x48\x35\x5e\x85\x3b\x44\xf4\x10\x75\xe0\xf2\x97\x74\xf5\xaa\xd9\x31\xb3\x03\xf3\xd8\xe6\xb8\x16\xb0\x69\xf1\x8c\x88\xea\x05\xcb\xbf\x71\xa8\xd2\xc7\x2c\x15\xf1\x1c\xcc\x87\x49\x31\x31\x01\x8b\x4a\x1a\x7b\x4b\x11\xec\x6e\xef\x3c\x95\x22\xec\xe6\x35\xda\xfe\xaa\xb9\x56\x80\x96\xec\x54\x4f\x3a\x64\x95\xb7\xaa\xb8\x82\xb9\xec\xa1\xab\x16\x97\xf7\x78\xe8\xca\xc0\x53\x01\x69\x7d\x95\xf3\x3b\xab\xa5\x14\x79\xac\xac\x47\xd8\x97\xe4\x1c\x09\xc5\x88\x60\x7f\xb3\xb4\xce\xe8\xd9\x3e\xda\x5d\xcb\x59\xc7\x46\x46\x9d\x19\xa6\x3b\x2a\x9d\xe5\x02\x2f\xcc\x7c\xd2\x9c\x2e\xff\x8c\xba\x6d\x1e\xfa\x44\xd8\xb0\xec\x0e\x47\x97\x2e\x6f\xf4\x13\xc2\x7f\x16\xd0\x99\x9d\xe1\x61\x60\x5e\x66\x02\xe6\xa5\x86\xa3\x62\xa4\x1a\x97\xa0\x90\x26\x5b\x5c\x2e\x93\xdb\x6b\x0e\xf9\x5a\x14\x3d\x4d\x12\x1b\x31\xe6\xa6\xd6\xbf\x2f\xf7\xd4\x73\x7d\x62\x7d\xb1\xc2\xd1\xa4\x91\xc8\x9a\xc3\x8f\xed\x29\xcb\x9e\x3e\xa6\x18\xd2\x7c\x87\x2d\xec\x7e\x4b\x12\x67\x8e\xfe\xde\x17\x3d\xfc\x30\x51\x79\x44\x76\x65\x2f\xc3\xed\xa5\xa0\x05\x02\xe0\xe8\xce\x67\xae\x82\x6c\x64\x94\xb6\xed\xef\xd8\xed\xa6\xe1\x31\x40\x88\xb2\x19\x5a\x81\x10\x36\xa0\x5d\x52\x85\xea\x67\x07\xa1\x36\xb7\x1c\xcb\x14\xe2\xf6\x1a\xea\xa1\xc0\x08\xa7\x51\x1e\xec\xc3\x9b\xaf\x95\xd7\xd6\x2d\x50\x70\x7c\xfd\x3f\xd1\xdb\x0c\x62\xcd\x9e\x87\x82\xaa\x59\x2f\x05\x10\x27\x9b\xd6\xb0\x14\x14\x14\xbe\x32\x09\x18\xb8\x05\xff\xac\x31\xf5\xb2\x3d\xc9\x40\xec\xe5\x49\x92\xb6\x4d\x85\x82\xd4\x31\xb7\xb5\x30\xa2\xaf\x1d\xb9\xff\xd9\x9f\x79\x7e\x56\x13\x24\x14\x75\x90\xdc\xf3\x51\xff\x04\xbb\x7b\x1a\x25\xe0\xd2\x9e\x82\xb1\x88\x52\xd2\xe5\x05\x0d\xe3\x3d\xcf\x39\x9f\x76\xfb\xf9\xa7\x01\x33\x07\xd1\x78\x40\x6d\xbb\x01\xef\xd1\x3f\xb0\x9a\x51\x6c\xcb\x7e\xae\xe1\xf5\x07\x97\xf6\x5d\xb7\xaf\x3f\xc8\x70\xce\xb7\xff\x7a\x9f\x37\xdf\x4e\x31\xf3\x07\x11\x5e\xb5\x36\xd1\x43\x20\xc8\x85\x9f\xa5\xbb\x20\x81\xee\x4c\x61\x50\x9f\x4f\xfe\x1a\xab\xae\x67\x38\xdc\x1c\x83\x26\xd0\xc4\xc3\x38\x03\xd1\x44\x36\x87\x1a\x90\x58\x82\x97\x51\xd9\x15\x2e\xcd\xf0\xba\xfe\x04\x41\xb4\x07\xa5\x16\x62\xde\xc8\x66\xdb\xb9\x46\xa4\xa2\x2b\x72\x95\x57\x74\xa7\x8e\x99\x20\x37\x9c\x7c\xd6\xa4\x2c\x21\x29\x69\x2a\xa6\x7a\x11\x94\xa1\xa8\x35\x7c\xc0\x8a\x38\x75\xd2\xa0\xd8\x64\xef\x93\x53\xb3\x10\x9e\xa6\x04\xa9\x57\xc8\xeb\x03\xeb\x89\x32\x60\x9f\x78\xaa\xa8\x7f\x8c\xf3\xbe\xf5\xdb\x3e\x71\x51\x2d\xc9\xcd\x6c\x78\xf2\x32\x92\xbb\xe6\xb7\x98\x75\x90\xfc\x19\x0d\xfb\x6f\x89\x6a\x1c\x2b\x65\x1c\xb9\x46\x56\x08\xc8\x53\x80\x8f\x01\x57\x68\x75\xa1\xbd\x28\xa2\x46\x34\xe6\x66\x82\x2a\xc8\xc5\x76\xda\x6d\x1a\xaf\x1e\xa8\xf6\x5f\x77\x53\xcc\x76\xd1\x15\x08\x58\x41\x31\xa6\x90\x18\xcd\x3c\xaa\xd3\x44\xac\x08\x7e\xf1\xfb\x51\x06\xae\xb0\x0e\x79\x74\xdd\x70\x51\xb2\x6e\x26\x02\x6a\xf8\x31\xde\xdc\x1c\x92\x9b\xe9\x99\xe7\x5a\xf5\x5a\x04\x58\x61\x7e\x4c\x7d\xb9\xa1\xfb\x1e\xca\x2a\x5e\xa0\xe6\xc2\xa2\xed\xa8\xb2\xac\x8e\xad\xd3\xef\x90\x3a\x10\x6e\x20\x01\x12\xdb\x35\x11\x21\xaf\x0b\xa8\x33\xd8\xae\xf7\xaf\x60\x58\xfe\x80\x08\x83\xf2\x7b\x99\x91\x8c\xbd\x67\xd8\x85\x93\x80\xb0\x62\x9f\x7c\xff\x35\x12\xc8\x68\x38\x97\x59\x50\x07\xc8\xc6\x85\xd2\x31\x62\x78\x0c\xae\x67\x6b\x84\x79\xb8\x9a\xe9\x03\x3f\x89\x5f\x7e\x24\x58\x08\x73\xf2\xbd\x76\x45\x92\x14\xe2\xb1\x56\xa1\x8e\x4f\xa7\x4e\x26\x80\x9d\x26\x43\xb0\x3c\xb3\x51\xaa\xa7\xe2\x42\x23\xf1\x70\x40\xa8\xd8\x1e\x5f\x92\x57\xd0\xe1\xca\x71\x67\x8d\x51\x32\x86\x7c\xb0\x30\x4f\x64\x62\x14\xa3\x71\x94\xb2\xf6\x73\xfa\x68\xd3\x66\x23\x2e\x22\xc4\x28\x36\x05\xcc\xc3\x07\x68\xa0\x61\x14\xcc\x06\x6d\xac\x73\x61\xf1\xda\xc9\xa3\x77\xe9\xe3\xc5\xc5\x06\xb0\x20\x89\xb3\x54\xab\x8b\x5a\x4f\xbc\x48\xaa\x1e\x51\xb9\xa0\x9a\x9a\x2d\x3d\xc2\x21\xcb\x48\x78\x11\xd8\x50\xee\xd1\x67\x11\x55\xe0\x3d\xfa\xe9\x2e\x1e\x35\xb3\x3a\x83\x0e\xb0\x5d\x3d\xb5\x21\x1e\xed\x3b\x8b\xad\x71\xad\x89\x64\x9d\x79\x87\xa2\x66\xd5\x66\x41\xa5\x9d\x7d\xb8\x4b\xcd\x31\x62\x47\x7d\x83\x38\x56\x83\x05\xc6\xa2\x67\xf9\x02\x12\xcf\x49\x37\x23\x44\xbd\x97\xb3\xc8\xc5\xed\xae\x4a\x22\x55\xfc\x30\x0b\x6c\x0c\x2b\xce\x00\x7c\x7d\x62\x77\xa0\x60\x3b\x53\x2f\xd0\x96\xad\x79\x6c\xb1\x80\xbe\xcb\x8f\xdc\x2a\xa9\x8b\x1f\x9c\xf1\x58\x34\xf9\x89\x1b\xac\x30\x28\xcc\x26\x50\x66\xfd\xb8\x11\x87\x0a\x3e\xaf\x4e\x8c\x7a\x6b\xce\xa8\x09\x2e\xfa\x6b\x6e\x5b\x17\xaf\xd2\x6f\x52\xa8\xba\x7d\xa3\xef\xe3\x1a\x99\xf8\x6e\xa5\x99\xde\x16\x9e\x80\x96\x78\x74\xf0\x34\x1f\xe0\x95\x68\x1c\x6d\x74\xf1\x3d\x59\xe3\xff\x45\x12\xe8\xb1\x7d\xb9\x11\x20\xf1\xef\xc9\x7f\xdf\xab\xc8\x28\xdc\x5d\x8c\x67\x12\xd3\xfe\xa0\x81\x08\x01\xe2\x74\xcd\xa1\xc5\xa3\x40\x27\xbe\x6b\x76\x42\x6b\xa2\x34\x48\xf0\x44\xee\x2e\x0e\xb6\xbf\x0a\xd5\x8a\xb3\x5a\x03\x14\xd8\x21\xaa\xe1\xc3\xe8\x89\xa8\xea\xfd\xcc\xe6\xdc\x36\x3c\xbf\x5f\x8f\x8b\xe9\x51\x3f\x49\xed\xde\xe6\x39\x46\x7a\x07\x46\xf5\xbe\xb4\xa1\x9e\x24\x51\x15\xe1\xc7\x27\x36\xe7\x0e\x52\xbf\x34\x1d\x0f\x6f\x87\x8a\xaf\xb3\xaa\xc4\x5a\x3f\xf7\x8b\xff\x11\x22\xbe\x0d\xfb\x5c\xb4\x00\x9a\xd0\x0b\x65\xc4\x83\x7f\x23\xb6\x07\x35\x3c\x97\xcb\xdd\xdf\x36\xbd\x9d\x7c\x02\x15\xc1\xb2\x37\x50\x22\x54\x93\x19\xaf\xf5\x30\x02\xe9\x89\x60\x38\xbc\xfb\xd5\x44\x6f\x74\xd3\x17\x5f\xce\x35\xd1\xd6\x7f\xb9\xe4\xe9\xf8\xed\xb7\x6f\xd2\x56\x3e\x0a\x86\x52\x2b\xa6\x33\x8a\x97\xe1\xd0\x58\xbf\x96\x21\xc7\xf4\x44\xb5\x5b\x5c\x90\x78\x5c\xa5\xd6\xbd\x49\x06\x61\xce\x54\x78\xc9\x61\x34\x46\xd0\x15\xdc\x97\x18\xe7\x7f\x6b\xf8\x75\xef\x61\xcf\xe8\x50\x16\x5e\x15\x1c\xa2\x62\x31\xdc\x8a\xd4\x37\xf1\x7e\xa3\x6e\xfb\x93\x4e\x5d\xd0\xdf\xb3\x3b\x05\xcb\x94\xc8\x8f\xe3\xc5\x00\x95\xe9\x1b\xf8\x4d\xe1\x09\x56\xb4\x4a\x5b\x8d\xfc\xb2\xd1\xb4\xef\xb1\x9c\x78\x38\x07\xbc\xd2\x92\x79\xe2\xe3\xc1\xfe\x2c\x80\x7a\x52\xa8\x68\x8d\xa1\xf0\x1e\x9b\xed\x18\x22\xb9\x5e\x39\xde\xbb\xe7\x07\x43\x34\x10\xf6\xd9\xb1\x5a\x4f\x55\x75\xcd\x48\xf5\x64\x7f\x1c\xcf\x61\x7c\x28\xd3\x48\xf8\xa4\xac\xaa\xf2\x4a\x9a\x49\x6e\x25\xf8\x82\x6e\x69\xa6\x90\xb2\xc8\x78\xf6\x05\x2a\x6d\x4a\x27\x9e\x3e\x06\xfa\xf4\x09\xfd\xd4\x4f\x7c\xce\xd1\x22\x4a\xa9\x2c\x1e\xf5\xe9\xd1\xd7\x05\x12\xf7\xf4\x0f\xd6\xcf\x62\xb1\x6e\x9f\x55\x49\x15\xfd\x3c\xbf\xbe\x3d\x4a\x03\xed\xe1\x59\x6d\x5b\x2d\xdf\xe8\x8b\xf6\x82\xaa\x30\x25\x17\x17\xd8\x0d\xa4\x9d\x96\xc8\xe6\xc0\x67\x35\x7e\x6c\xd2\x63\x01\xed\x06\xd7\x98\x4a\x97\x58\x9e\x96\x0d\x45\x89\xd8\xf2\x89\xc7\x66\x60\x03\xc2\x19\x06\xbf\x3b\xf9\x0f\x07\x27\x1c\x2d\x53\x02\x0a\xe6\xdf\x7c\x7d\x7b\x24\x0d\xf0\x9c\x46\xc9\xfc\x86\x5b\xe8\x0e\x90\x54\x90\x32\x23\x75\xb5\x4e\x9e\x4a\x59\x6d\x19\x86\x71\xe6\xb1\xcc\x27\xca\x69\x58\xa0\xb0\x30\x34\x0c\x27\xc1\x71\x56\xf1\xaa\x6b\x4c\xf0\xbc\xe5\x1c\xc3\xb7\xea\x7f\x33\x97\x61\xff\xf7\x21\x27\xea\x70\x39\xb7\xd6\x34\x75\xe6\x28\xa4\xd6\x26\xb3\x26\x85\x77\x53\xd3\xb9\x1f\x1f\xac\xe9\x7f\x73\x29\x8d\x3f\x13\xda\x0b\x4f\xe8\xe0\x90\x53\xff\x73\x72\xf7\x81\x51\xf0\xac\x8a\x53\x9b\xe7\x1c\x6a\xb6\x79\xa4\x11\x4a\xc3\x3d\xff\xbc\x00\xc5\xed\x77\x68\x0c\x33\xf5\xbb\x1b\xd0\x5b\x94\x4a\xb7\x85\xa1\x0e\x97\x55\x43\xa8\x02\xac\x88\x8b\x70\x24\x59\xc4\x0c\x15\x00\xaf\xb2\x43\xbe\xb4\x06\x90\xc6\x32\x5e\x5c\x8e\xc7\xb0\xdd\x51\x15\x8f\x97\xad\xbc\x9a\x1d\xb9\x1a\x65\xf0\x10\x50\xf8\x9c\x73\x17\xc3\xfa\xa4\x9e\xba\x6f\x6b\xd6\x8a\x5f\x47\x0a\x16\x04\x3a\xed\x7c\x6b\xac\x4f\xef\x79\x35\x04\xb2\xee\x3d\xcf\x65\x56\x8b\xd4\x57\x37\xbd\x07\xb3\x6d\x2d\xe6\x82\x4c\xd5\x02\xfe\x18\x3e\x65\xc5\x47\xb8\x6c\xe8\xa1\x8c\xe0\xf2\xd7\x74\xa9\x7e\x98\x87\x96\x2d\x47\x07\xa3\xfb\xbf\x92\xbe\x0c\x2d\x02\x7a\xcb\x9a\x19\xc3\x94\x30\x97\xce\xfe\x1b\x51\xea\x61\xe7\x44\xd8\xad\xf6\x68\x0c\xb4\x1f\xf0\xfa\x94\xa5\xdd\x36\x4f\xff\x2e\x8c\xdd\x73\x42\xbe\x2b\x58\x1e\xda\x1d\x8c\x9f\x1d\xc9\xc8\xff\x73\xb9\xae\x70\xb8\x64\x15\x29\xe8\x31\x2d\x2c\x01\x87\xae\xd7\xb5\x86\x64\xb0\x0b\x6c\xcc\x30\x98\xa4\x6e\x22\x8c\x86\x58\x04\x6e\xb3\xc4\x35\x7a\x2d\xa3\x20\x84\x6f\x7e\x29\x29\xbf\xe7\x4f\xd1\xaf\x8d\xe3\xa1\xd8\x59\x70\x4b\x1e\x44\xcd\x34\x5b\xcd\xa7\xe0\xfb\x6d\x7f\xc8\x60\x78\x3a\x19\x10\x13\x3e\x7d\x7e\x72\x7c\x1b\x61\x0c\x22\xa1\xaa\xcc\x62\x22\x4e\x6b\xd8\x7c\x7d\x77\xe4\xe5\x94\xc7\x1a\xc7\x35\xf0\xcd\xf4\x45\x1a\xde\xd6\x63\x33\xc1\x72\x35\x38\xf0\x58\x0e\xdb\x6f\x63\xb5\xbd\x86\x2a\x0c\xd5\xf8\xef\x55\x55\xe2\x65\xf2\x87\xea\xa1\xa8\x46\x6f\xd8\x02\x95\x1d\x1c\x52\xf1\x32\x78\x8e\xd6\xf9\x87\xbb\xf9\x9d\xea\x43\x6b\x45\x22\x40\xba\xe1\xa4\x3d\x6f\x49\x37\xf3\x51\x2d\xaf\xcb\x2d\x68\xa9\x49\xfa\xdc\x48\x6e\xb6\xf4\xda\x19\xd2\x09\xeb\x20\xd6\x50\x22\x04\x5c\x95\x98\x19\x8f\x4f\xce\x28\x9c\xa7\x2b\x38\x38\x0f\xf8\x06\x1b\x8e\x65\x79\xda\xce\xfb\xdc\xde\xc5\x89\x5b\x4b\xde\xed\x8f\xc2\xe6\xb0\xfe\xe4\x4a\x03\x4b\x8f\x27\x36\xe3\x1e\xfd\x42\xc1\x15\x8f\x0f\x70\xe4\x97\xd4\x4d\x09\x6d\xf1\x58\x7d\x0b\xb0\xc3\xab\xec\x6c\x95\xac\x23\x3a\x2a\x5f\x8a\xdd\xb5\xbc\xfe\x1c\x99\x61\x5f\x6d\xf0\x07\xfa\x46\x4c\x60\x2f\xe6\x9b\xc8\x86\xfc\x18\x47\x00\x7a\xf4\xda\xf6\x6c\xc3\x74\x32\x45\x6b\xc1\x17\xb0\xf2\x94\x77\x0f\xca\x7a\xa0\x04\x58\xc8\x27\xdd\xde\xd5\xb9\xad\x31\x10\x0c\x4d\x81\x04\x2e\xd5\x3c\xdf\xea\x51\x98\x54\xe1\x49\x15\x75\x79\x7b\x9e\xcf\xa9\x1a\x52\xfb\xd0\x67\x64\x6f\xc6\x6a\x17\xe2\x17\x10\xaa\x60\xdd\xcb\xc8\x04\xf0\x34\x8d\xd8\xdc\xcf\x4f\x69\x3c\x87\x7b\x1e\xb0\x3c\x70\xf0\xe7\x1e\xba\x57\x24\xa2\xce\x83\x49\xda\xac\x67\x2f\x0a\xbe\xbe\xca\xf0\x6e\x2c\x22\x72\x4c\x09\xaa\x51\x48\xea\xbc\x98\x42\x15\x17\xdf\x1b\xca\x7a\xba\xa7\x6d\x03\x59\x4b\x93\xd9\xda\xec\x1f\xea\x63\x22\x8b\x05\xa3\x9b\x6d\x54\x2c\x83\x32\x0e\x54\xce\x8c\x79\xde\xb6\x1a\xcb\x30\x60\x76\xa4\x48\x35\xe5\xe3\x3b\xf7\x55\xcb\x65\x0e\xaa\xfe\x8d\xf6\x46\x0b\xcc\x1f\x50\xaa\x8f\xb0\x3d\xdc\x49\x50\x28\xdc\x71\x86\xa9\x88\xf3\x96\xf9\xc7\xfd\x9c\x2b\x2c\xab\xf6\xa2\x0e\xf9\xb7\xda\xbe\x5e\x04\xa5\xe1\xe9\x9b\x9b\x4d\xb5\xe3\x72\x7c\x17\x6b\x97\x59\x65\x72\x36\x0f\x4a\xf5\x67\xe9\xbb\x7d\xff\xbf\x9c\xcd\x41\x65\x57\x5c\x44\x8b\x53\x3c\x87\x72\x08\x1b\xcd\x64\xc7\x23\xb1\xd1\xad\xb7\x5e\x6c\xdb\xbc\xc6\xed\xd0\x52\xb8\x78\xac\x6d\x92\xd3\x47\xb9\xe6\x47\x6e\x46\x2e\x3c\x5a\x9b\x51\xcf\x9f\xee\x09\x09\xdc\xea\x15\xfb\x68\x81\xc3\x0b\x4b\x50\x72\x0d\xd4\x4c\xd8\xd4\x28\xa0\x30\xa5\x80\x6b\xc6\xf7\x7d\xca\x85\x50\x79\x7d\x4f\x66\x53\x00\x66\x08\x5b\xeb\xfe\x14\xf6\x2d\x86\x21\x2d\xc5\x54\x7f\x79\x41\x05\x64\x9f\x55\x7e\x0d\xd3\x58\xbf\x22\x41\x12\xc4\x97\x87\x9e\xf5\x1c\x11\xc1\xfe\xa8\x5c\x51\x28\x88\x99\x5b\xbe\x71\x1c\xe2\x53\x48\x1e\x24\x21\xc2\xc4\x41\x57\x78\xd8\xd5\xe2\x4f\x6e\x75\x2e\xcf\xae\x1e\x7f\x3e\x7d\xf8\x26\xce\xf9\xbc\x39\xd9\x3b\x25\x9f\xa4\xc7\x4f\xcc\xf2\x34\x3a\xc7\xfc\x9d\x88\x9d\xf9\x8c\xba\x0c\x7d\x3d\xf4\xe5\x5f\x89\xce\x82\x23\xee\x3b\xfb\xa4\x81\x9b\xe1\x75\x02\x77\x7d\xa5\xb1\x9b\x77\x83\xc9\x05\x2f\xc0\x17\x69\x40\x29\x31\xf0\x85\xc8\xc6\xa5\x14\x91\x23\xee\x3f\x87\xee\x00\x61\x92\x54\x9a\xcc\x12\x43\x73\x00\x18\xa2\x50\x65\xba\xc2\x87\xa8\x23\xac\xd4\x98\x07\x4f\x48\x76\x57\xc1\xea\x1a\x43\x20\x7b\xfd\xbe\x75\xa3\x40\xee\xec\x0e\x49\xc5\x3a\x0c\x29\xdc\x7e\x7c\xa4\x98\x0f\x2f\x14\x44\xfb\x56\x79\xe9\x42\x14\x94\x09\x8e\xe1\x9f\xeb\x49\x7f\x70\xf0\xbf\x3f\xa9\xee\x1c\x4e\x03\x71\x20\x36\xc4\xc7\x68\x2a\x22\xca\x71\x93\x41\xd2\xc8\x03\xee\xf7\xcf\x92\xef\x42\xdc\x4c\x54\xb7\xd7\x63\x4a\x43\xed\x71\x1c\x67\x74\xbb\x2d\x49\x85\x27\x96\x7b\xa3\xb2\x21\xd7\xa6\x0b\xd4\x69\x01\xcf\xd5\x76\x34\xd3\x7e\x49\xbd\xa0\x55\xc3\xd9\xb4\x5a\x08\x46\x6d\xb9\x10\xf7\xba\x8b\x9e\x72\xb3\x33\xf1\x46\x68\x46\x47\x44\xe7\x75\x9d\x55\xd2\xf4\x83\x32\x60\xda\x7d\xa0\xf8\x25\xe1\xd3\x51\xd7\xb7\x98\xce\x26\x06\xe7\x7d\x1e\xef\x76\x01\xc3\x14\xed\x29\xde\x99\x5f\x45\xa6\x68\xfb\xec\x39\xbc\xdd\x80\x92\x31\x4b\x51\x3b\x9c\x9a\xb8\xa0\xe3\x2e\x5f\x35\xb5\xf6\xe0\xa6\x15\x9b\x16\x78\x6d\x99\xf8\xab\xe6\x50\x14\xe2\x3c\x0c\x0c\xef\xb4\x6c\x68\xc8\x3b\x9a\x28\xee\x31\xdd\x1f\x70\x93\x9e\xa2\x66\xa4\xd2\xa6\x24\x03\x23\x69\xf0\x38\xb7\x0f\xc2\xb3\x80\x89\xce\xa5\xf1\xd2\xaf\x16\x61\xe0\x8c\xc8\xaa\x01\x7a\x91\x85\x8a\xf6\xc2\xff\xfd\xe5\xff\xf7\xab\xbd\xbb\x3d\xd6\xb3\x97\x71\xae\x57\xd1\xf1\xf8\x1f\xeb\x82\x5e\xac\x98\x47\xf3\xc3\x67\xc8\xc5\xdf\x66\xc6\xba\xf0\xec\x4c\x3c\x96\x0f\x8d\x39\xd5\xb7\x2d\x76\x2c\xf3\x26\x84\x45\x9f\x10\x49\xe5\xf0\x09\x5e\xaa\x78\x39\xcb\x2c\x74\x80\x3f\x56\x61\x5e\x96\x2b\x33\x8e\x42\xec\x0f\x7b\xcb\xca\xa2\x68\xcc\x6e\x09\x4c\x94\x9b\x26\x0d\x7a\xf3\x28\x62\x0c\x69\x29\xa8\x8f\x1c\xb7\x5f\xb2\x05\xdc\x88\x07\xa1\xe2\xfc\xa2\xb8\x4b\x29\x97\x7b\xc5\xc0\x6b\x66\xc0\x52\xf9\xa5\xf4\x3d\x43\x22\xe8\x61\xdc\xf0\xd8\x8c\x2d\x41\xea\x29\xa3\x0c\x7d\xef\x38\xa6\x98\x6b\xd3\x53\xda\x74\x85\x7e\x4e\xc3\x40\x1a\x42\x97\xf5\xb5\x6f\x13\xc7\x7c\x3a\xdf\xd1\xea\x9d\x88\x59\x31\x88\x4f\x83\x6d\x8d\xa0\x65\xc8\x00\xbb\x72\xd6\x90\xa4\x54\xdf\x08\xde\x45\x9b\x88\x35\x69\x12\xa7\x07\x0a\xda\xb8\x71\xb9\x5b\xc2\x0d\xb4\x25\x4a\x59\xe9\xd5\x95\xc2\x6f\x51\x47\xc4\xd5\x68\x12\x79\x05\xfb\x44\xb4\x21\x36\x45\x7b\x38\x9a\x28\xd6\x37\xd6\xad\x9f\xa2\x27\x1e\x6e\x02\x75\x51\x3c\x7c\x2c\x86\xdb\x91\xef\xe3\x88\xc2\x62\x31\x49\x33\xb1\x6f\x52\x97\x02\xb4\x5b\xc8\x06\xe6\xa1\x8c\x5b\xa3\x18\x5e\x56\xcc\x8c\xf1\x53\x59\xc8\xc5\x3b\x30\x4d\xd3\x01\x3b\xa5\x4d\xa3\x80\xec\xbe\xe5\xe1\x84\x59\xdb\x0a\xb9\x6c\x51\x2e\x6c\xd3\x62\xca\xae\x6d\x6b\x99\x1c\xe5\x91\xe1\xb1\x75\xbe\xc3\x4b\xd7\x9a\xa0\x0c\x18\xe7\x3d\x78\xf4\x54\xaf\x30\xd4\xf1\xf7\x8d\x42\xe8\xd3\x78\x03\x0e\xf3\x30\x13\x3e\xc5\x1c\x4c\xb6\xba\xf5\x2a\xb1\xbc\xc4\x0d\x11\x3f\x06\x66\xd7\x9a\x1e\xf1\xbe\x78\x14\xcf\x3b\x4c\x9d\xf5\xc4\xbe\xab\x14\x93\x3f\x95\x63\x26\x18\x6c\x5e\x37\xa9\xd9\xc4\xdb\x33\x10\x10\x79\xa7\x64\xf2\x1f\x75\x3a\xdf\x1e\x59\x4d\xc5\x16\x40\x54\xbc\x67\xa8\x40\x4c\x13\x9a\xb0\xc2\x94\x6d\x37\x96\xdf\x23\x6e\xed\x3b\x1e\x42\x01\x4f\xec\x11\x95\x24\xbc\x17\xb5\x11\x48\xe2\x3b\xd9\xec\x8d\xcc\x92\xa8\xb4\xbb\x0f\x9d\x27\xcb\x5a\x58\x60\x18\x89\x99\x43\x15\x5a\x00\x8f\x03\xb8\x88\x8e\xa6\x70\xba\xf0\x86\xf1\x4a\x5e\x95\x8d\x2a\x07\xc5\xc3\x1b\x42\x1e\xb2\x9b\x2c\xd3\xdf\xe7\x37\x97\x7b\x94\x05\x1c\xdf\xa1\x2d\x96\x8a\xe7\x58\x3d\x8a\xb9\x18\xdd\x16\xaf\xea\x3b\xc6\x78\xf0\x25\x13\xef\x95\x30\xdf\xf6\xb3\x05\xae\x2a\xc7\xcc\x55\x65\x6b\xac\x46\xf4\xdc\x21\xa8\x55\x65\x62\x48\x23\xec\x1f\xa5\x3e\x21\xb1\x8c\x11\x0f\x8b\xfc\x47\x40\xbc\xc7\x83\xfd\x91\xab\x80\x82\xd9\xcc\x60\x5f\x32\x1d\xe6\x6d\x22\x1c\x22\xdd\x7d\xe6\x09\xf9\xd3\x05\x42\xa1\x97\x7f\x3a\xaf\xbd\x6a\xa2\x87\x7b\xc2\xa7\xb9\x29\xfb\x71\xb5\x42\x91\x01\x69\x18\x5c\x70\x40\x04\x11\x3c\x07\x1d\x15\xec\xa6\x28\x10\xc2\x16\xa7\x31\xc2\x56\x58\x4c\xac\x0e\x37\x4c\x61\x0f\x45\x6d\x5d\x0f\xb9\x8a\x25\xbf\x8a\xf5\xe9\x90\x9f\xac\xf3\x4f\x82\x67\xb4\xae\x4b\x59\xe4\x5f\xab\xee\xf7\x69\x13\xbb\xd5\xa7\x88\x29\xed\xe0\xc7\xfb\x4b\xd1\x70\x52\xd7\x74\x45\x4e\xed\x09\xcb\x42\xdb\x46\x2f\x5c\xd2\x93\x74\x1f\x4d\xfd\x99\xa2\xe5\xca\xad\xa6\x9b\x41\xdc\xa7\xcc\x16\xeb\x08\xed\x08\x2a\xfa\x09\xb1\x4d\x11\x80\xf3\x61\xaf\x1a\x61\x39\xad\x29\xbb\xd1\xd0\x12\x70\xff\x6c\xa7\xa1\x69\x3f\x42\x1f\x5c\x36\xa9\x1c\xfd\xf7\x72\x43\x9d\x9b\x6b\x17\x02\xa9\x1d\x81\x48\x12\xc3\x27\xd9\x2c\xca\xca\x6c\xd9\xc7\xe5\x97\xb7\xc8\x3b\x4f\xac\x08\xaf\xd3\x53\x6a\x28\x03\x0b\x28\x0f\x06\xcb\x65\x4e\x11\xff\xa0\xe4\x51\x1e\x9f\x1f\xe4\xf5\x39\x12\x08\x3e\x42\x6f\x80\x75\xb7\x70\xa8\x90\xe1\x19\xcf\x60\xd5\x99\x7e\xa9\x52\x4e\x3c\x12\x65\x6a\xd2\x2b\x68\x14\xeb\x65\x88\xcf\x80\x00\xa5\xda\xaf\xa0\x2c\xaa\x4a\xb2\x2e\x92\xaa\x64\x15\x70\xf7\x42\x52\x21\xc5\xca\x14\xfe\xe7\x1f\x58\xc3\xf6\x93\xaa\x1a\xce\x4e\x7e\x79\x71\x0c\x62\x75\x12\x2a\x9b\xa4\x54\x5b\xab\x0a" +var _bundleJsBr = "\x5b\xf6\x8f\x76\x06\x99\x63\x3f\x82\x58\x6d\xa4\xce\xb1\xb5\x85\x9a\x80\x08\x3f\xc5\xac\x11\x4f\x4b\x86\x5f\xe7\xed\xbd\x60\xb6\x98\x92\x45\x57\x90\x79\x7f\x45\x64\xa0\xb6\x21\x6c\x64\x14\x4e\xd4\xbf\x79\x15\x50\x55\x55\x55\x33\x93\xc9\x18\xeb\x0e\x6c\xdb\x00\x01\x04\xad\xcc\xff\x90\x40\x61\x9e\x3c\x53\xd2\x42\x85\x52\xc6\x0e\x67\x09\xb8\xa3\x36\x4f\x1d\x75\xe4\x91\xed\x18\xa6\x68\x96\x4d\x03\x33\xdc\xb1\x38\x73\x8f\x6b\xa1\x19\xf2\x88\x13\x45\xb7\x70\x3e\x21\x97\x04\xab\xa0\x9d\x0b\x46\xe7\x7a\x5f\x70\x5e\xe4\xd9\xa0\xaa\xe8\x97\x41\x1c\x8a\x77\xb0\xf6\x37\xa4\x90\xe9\xc0\xa0\x6e\xef\x43\xae\x4c\xbd\x71\x5e\x8a\xdc\x25\x57\x3a\xb0\xba\x42\x93\xae\x06\x55\xa5\xf9\x09\x9e\x18\xa6\x24\x81\xc1\xda\xbb\xd3\x80\x26\x31\xca\xc8\x63\x5c\x95\xaf\xe2\x13\xfa\x1d\x6b\xac\x9c\x0f\x8b\x38\x04\x69\x72\xb2\xa3\xf2\x81\x4c\xc5\x58\x03\xb6\x43\x2f\x11\xa3\xbb\x9f\x6f\x45\x2f\x13\x6e\x0a\xd9\xe3\xac\xc9\x24\x3f\x3c\xe4\xbb\x40\x59\xf8\x62\x69\x82\xc1\x0d\x9e\x35\x6b\xb3\xaa\x0a\xd3\x1f\x3e\x31\xd2\x44\x36\x97\x80\xe0\x87\x46\x46\x46\x0f\x52\x8c\xc0\xb7\xf6\x8d\xfe\xa2\xf2\x78\x85\x2b\x46\x6e\x81\x88\xfe\xa3\xc6\x08\x95\xd7\x2b\x91\x85\xf2\x6b\x29\x04\x12\x71\xff\xf0\x5c\x37\x99\x7e\x82\xce\xc2\xc2\xdf\xfd\x81\x15\x39\xe9\x77\xde\xdf\x5d\x71\x3f\x0f\x14\xa6\xd0\x88\x31\xcb\xa1\x38\x15\x86\x1e\x16\x2a\xe4\x70\xe4\x11\x93\xe6\x8e\x63\x3a\x26\xfe\x17\x9e\xa2\x5b\xa4\x98\x4a\x8b\x24\xa6\x40\x42\x1d\x7b\xc0\x12\x49\x7b\x0e\x60\x31\x6e\xdd\xaa\xff\x80\x21\x04\x99\x2e\xc2\x2e\x91\x90\x3e\xac\x14\x75\xd9\xc9\x30\x6f\xf1\x11\x5f\xf9\x38\xfd\xd3\xef\x6d\x9a\xa7\xb3\x06\x0c\x33\x31\x48\x16\xee\xbc\x68\x95\x76\xca\xad\x74\x7d\xe4\x6d\x15\x5e\xbc\xa5\xc9\xb9\x7a\x5f\xb5\x6a\x7f\xf3\xf3\x35\xec\xe4\xe0\x1e\xa3\x01\xc6\xda\x77\x43\x2d\x58\xa6\xa4\x48\xe5\xc8\x54\x89\x64\x5e\xb4\x8e\x01\x31\x43\x0a\x11\x08\xe0\x66\x86\x22\x29\x03\x67\xbd\x6a\xbf\xaa\xe5\x74\x49\xb3\x33\xf7\x0d\x15\xef\xd9\x7f\x91\x09\x2d\x15\xa5\x25\xb2\xc8\xc9\x6b\xfe\xf6\xaa\x7e\xfd\xd6\x74\x29\x6b\xb4\x5b\xd7\x23\xe8\x11\x13\x1b\x50\xe1\x65\xcc\x77\x91\xbc\xd6\x09\xc5\xc6\xba\xf8\xf5\xef\x6f\xff\xff\x5f\xdf\x49\xf9\x31\x53\xbb\x3c\x26\xa0\x6e\xd7\xd9\x37\xf7\x94\x82\x8f\x27\x4f\x9f\x6c\x8b\x9a\x86\x0e\xb4\x84\x6e\xec\x8c\x09\x62\xca\x7b\xdf\x66\xdf\x7f\xfd\x06\xdd\x8d\x9e\x15\x92\x99\xb7\xec\xac\x9d\x74\xc2\xd2\x18\xc2\xed\x9b\x79\xc7\x57\x96\x4a\xb6\xb0\x5c\xe5\x2e\x95\x6c\x0c\x67\xfc\xde\x4f\xf5\xfd\xcf\xcf\x97\x81\x38\x57\xa3\x2c\x29\x61\x48\x5b\xae\x70\xeb\x2a\x2e\x55\x56\x78\xa0\x25\x48\x42\x22\x01\x3e\xec\x2c\xd5\xe6\x04\xbe\xb7\x2f\x2d\xff\xeb\x77\x48\x18\xe5\x8c\xa9\xd3\x94\xda\xde\xe3\x2a\x95\x5e\x96\x5d\x28\x8c\x65\x99\xb6\x39\x0b\x69\x48\xd5\x7e\x78\xa8\x0a\xdf\xca\x32\xbf\xfb\xbf\x9c\xc4\x9c\x8d\x0c\xb9\xac\x64\x69\xeb\xb6\x5d\x5e\xb6\x4d\xf6\x74\x40\x49\x50\x84\x9d\x85\xc7\x8f\x04\xaa\x25\x33\x7a\x0e\xb7\xc3\x98\x66\x65\x46\xa9\xac\xa0\xc1\xd6\xd2\xe3\x27\x9c\x71\xb9\x23\x85\x3a\xf9\xf9\x07\x0b\x83\x38\x97\xe0\xbe\x87\x5c\x50\x5c\xbf\x3b\xbf\x36\xfd\x3a\x9d\xf9\x27\x32\x95\x69\x85\xd9\x12\x71\x1d\xa2\x0d\xa7\x6d\xc8\xee\x2f\xb8\x3c\x3d\x17\xb0\xd8\xf5\xdf\xcc\xd5\x7f\x94\x3e\x5a\x7a\x48\x67\xe6\xc0\x5c\x57\xb7\x1c\x3d\xac\x25\x49\x56\xfd\x3d\x9b\xfe\xd4\x51\x56\xa5\xea\xff\xe9\x4a\xee\x61\x7f\x4f\xb9\x89\x1f\xf2\xac\x9a\xab\xe4\x90\x95\x5e\x94\x13\x2c\x2c\x65\x96\x29\x02\x15\x1c\x54\x02\xec\x53\xad\xea\x2d\x77\xfa\x04\xfe\xcb\x45\xf2\xad\xf2\x48\x26\xf1\x75\xf8\xca\xc2\xd1\xc0\x5c\xa3\x62\x18\xdb\x03\x74\xb0\x58\x27\x89\x04\xe9\xb3\x5d\x9d\xfe\x07\xd1\x93\x32\x26\xfe\x3a\x04\x6c\x27\x4d\xc7\xca\xe8\x54\x39\xbb\x08\x0b\x16\x5b\xd3\x2a\xaa\xda\x3f\x9e\xb0\x7a\x80\xe6\x19\x86\xb9\x79\xdc\x2f\x66\x6c\xad\xd3\x89\x9b\x81\x58\x60\xa5\xd6\x1c\x55\xd6\x57\x96\x01\xe3\x6d\x4e\x30\x0e\xb2\xfa\xbc\x9a\x8d\xec\xf1\x7a\x8b\x44\x4b\x7c\x04\xc4\x61\x67\x5b\x3a\x82\x9a\x4e\xa9\x4e\x9a\x09\x69\x09\x34\x69\xda\x51\xf2\xdd\x00\x6b\x4d\x92\x2a\x50\xe3\xec\x53\xd1\xc9\x5e\xcd\x0f\x94\x0d\x3e\x82\x74\x43\xa1\xcd\x09\xa1\x17\xb6\x84\x50\x98\x29\x29\xdf\xe7\x03\xff\x7f\x6f\xa9\xfd\xf7\x57\x8f\x6e\x44\x3a\x52\xc5\x7a\x0f\x94\x54\x2c\xd5\xb7\xaa\xf6\x7e\xd6\x91\x06\x50\xb5\x57\x51\xfa\xd6\x0e\xc6\x8c\xb3\xf7\x3e\x5b\x79\x5d\x28\xc3\x8a\x11\x69\x8a\x99\x09\xe0\x15\x1c\x9f\x00\x10\x7c\x45\x23\x1d\x77\x23\xef\xbd\x11\x99\x8a\x88\x4c\xa0\x22\x0d\xa9\x04\x40\xe9\x83\xa6\xea\x83\x20\xdf\x5f\x94\xf4\x2d\x29\xf3\x8c\x33\xb3\x9e\xf7\x9c\x52\x7d\x63\xdc\x60\xd8\xab\x07\x63\x50\xef\x0d\x48\x95\xda\xd4\x6b\xe3\xfc\xcc\xcd\x27\x3d\x18\x76\x17\x12\x4b\xfc\x9f\xaa\x4a\x7b\x3a\x95\xe7\x57\x1a\x98\x7a\x60\x16\x50\x52\xf4\xa0\xd0\xa5\x4d\x63\xb6\x81\xf7\xff\x1d\x48\x1c\x0e\x90\x08\x92\x2a\x04\x54\x49\xb9\xb0\xb8\x50\x10\x5d\x1b\xbd\xc9\x4a\xdf\xf2\x32\x79\x4c\xa9\xa3\x7b\x9b\xb3\xf9\xed\x19\x26\xbf\x4c\xc9\xea\x29\xa3\xb7\x39\xf3\x9a\x2d\xf0\xfc\x73\xef\xb4\xc1\x72\x3b\xf7\x3f\xb0\x22\x5f\x93\xbe\x60\x83\x02\x19\x63\x50\xe0\x61\x22\x1a\xcf\x3f\xde\x7f\x5f\xba\xb6\x05\xbb\xed\x96\xe5\x5a\xe3\x75\x4c\x59\x8e\xa5\xad\x62\x55\xd6\x9f\xaf\x3d\xf6\xb6\x19\x90\x11\xb2\x01\x1d\xb7\xb1\xa7\xfb\x54\xdf\x6e\xae\x99\x47\x33\x4b\x01\xcc\x0f\x25\x6e\xc9\x52\x0e\x3a\xee\x5a\xc1\x8a\x51\x2e\x58\xad\xf0\x41\xf7\xbe\xaf\x33\xa9\x67\x30\x16\xbc\xb1\xbd\xc2\x51\x79\xbb\x29\xa5\x62\xc5\x60\xb5\xd2\x2c\xa8\xa1\xf6\x91\x7e\x22\xe1\x81\x60\xb6\xcc\xca\x42\x06\x49\x3e\xb5\x03\x4d\xe3\xdc\xdf\xbc\x52\x59\x64\x2b\xcd\xe0\xbd\x11\x6b\x39\xb6\x27\x14\xd9\x0e\xf1\xb7\x3e\x71\x11\x7d\x2b\xc8\x9d\xe4\xfb\x6b\x9a\x26\x33\xd3\x85\xff\xb5\x1f\xdf\x9c\x0b\x6b\xbc\x2a\x1b\x50\xf3\x77\xff\x1f\x6b\xd4\xd3\x8e\x69\x32\x6b\x17\x3e\xe7\x21\x92\xa9\x30\xdb\x30\xad\xcb\xb6\x49\xfa\xa5\x99\xb1\x31\x88\xef\x13\x12\x38\x3d\xdf\x1f\x4b\xeb\x0e\xbb\xab\xeb\x7b\xab\x20\x84\x43\x08\x3f\xc1\x5a\xeb\x7c\x1b\xfb\xaa\xed\x9d\x5f\xdf\xf6\x7c\xaa\x46\x44\x44\x44\x45\x08\xc9\x4b\xec\x43\xc4\x4d\x44\x83\x22\x1e\x79\xc8\x76\x03\xc1\x18\x2c\x7f\x51\x25\x08\x2e\xea\x8e\x61\x6a\xd5\xad\x9d\x66\xe3\xb8\xbe\x8b\x00\xf1\x09\x21\xc4\x3b\xc0\x8c\x96\x61\x1a\x2e\x6b\xfa\x5d\xae\x97\xad\x36\x58\x60\x01\xe2\x13\x9f\x63\x6c\x35\x56\x76\xcf\x26\x7b\xc9\x7d\x55\x51\x11\x11\x01\x11\x11\x61\x98\xe9\x5d\x86\x6a\x35\xbd\x36\xfd\x6f\x3a\xef\xcc\xd8\x02\x6c\x3c\x41\xd2\x22\x73\xb5\x7d\x1f\x95\xfb\x51\x3a\x16\xe9\x20\x69\x11\x6b\x8c\x15\xe1\x3a\xb2\x31\x9e\x14\x6c\xbf\x85\xf6\x58\xca\xb3\xe7\xf1\x03\x3d\xdb\x2e\x53\x8a\xef\xa3\x93\x4b\xfd\x0c\xad\x4a\xfa\xf1\xb7\xea\xff\xf3\x6c\xac\x73\xc7\x04\x38\xc3\xdb\x6f\xa2\xcd\x07\x44\xa1\x43\x13\x81\x3f\x46\xe0\xf7\x4b\x0a\x3b\x16\xd4\xb9\x9f\xff\xda\xc3\xd5\x1b\x31\xbd\x87\x8d\x7c\xc0\x4a\xdc\x67\xd2\x69\xd8\xc4\xe9\xdb\x65\xec\xda\x43\x42\x74\x89\xfc\x7d\x28\x00\x6d\x6e\x94\x46\x5e\x18\xe6\x1f\x1d\x77\x8e\x0f\x35\xb0\x0d\x05\x75\x96\xfa\xa9\x38\xc4\x1b\x07\x3f\x7d\xc4\x0c\x4e\xf5\x08\x5f\xcb\x3e\x32\xbc\xa6\x39\x95\x11\xb8\x5a\xe0\x6b\xb4\x19\xbe\xce\xe9\x54\x8c\x38\x52\x04\x81\x8b\x69\x35\x89\x4f\x50\x44\x15\x82\xa3\xc8\xa5\x52\xa3\x3b\xe6\x19\xe3\x59\x02\x88\xa4\xc4\x25\xf1\xec\x2c\x5e\x5a\x82\x85\x51\xbc\x0a\x6d\x67\xd4\xe2\xae\x57\x1b\x02\x3e\xa5\x9c\x1b\x23\x82\x3f\x1b\x0c\x01\x31\x96\x7c\x6c\x10\xa0\xc9\x78\x4d\xea\x6c\x26\xbe\x67\xb2\x42\x1a\xad\x8e\x9a\x9c\xe7\x21\xf6\x42\x61\x57\xdc\x66\x0e\x31\xc2\xfe\x71\xfa\xe2\xb7\x2f\xc6\xd5\xad\x19\x41\x95\xcb\x9d\x03\xa9\xed\x7b\x76\xa3\x08\xb4\x3f\x2d\xa0\x0a\xfa\x6c\x27\x0f\xcd\x11\x6d\xd2\xb8\x92\xdf\x2a\x94\x23\x97\x7f\xb7\xc1\x00\x1c\xc5\x42\xb6\xb7\x71\xa6\xe2\x77\x38\x70\x96\xa5\x94\xa2\xa4\x64\x26\x4e\xcb\x79\x4d\x55\xfc\xf4\x65\x63\x30\xa8\x09\x80\x24\xe8\xfc\xb3\xd8\x2a\x01\xa9\xa9\x47\x8d\x35\x91\x36\x89\x74\x4f\xcf\xc5\xfb\xa7\x55\x96\x3b\x5d\x06\x28\x41\x3c\x63\x11\xf7\x34\x1f\x02\xa6\x26\x56\x69\x4b\xec\x77\xa0\x0c\xab\x50\xba\x24\x35\x20\xda\xe0\x8a\xe8\x12\x58\x8d\x6c\x81\xad\xa1\xb6\xc4\xf7\x82\x69\xa2\xd5\x43\xdb\x14\x1d\xb0\x69\x80\xba\x21\x56\xe2\xdb\x47\x74\xc4\xb4\x63\x6c\xd7\x60\x2f\x80\x0a\xf2\x5e\x31\xe9\x16\xd7\x06\x5e\x8e\xae\xc2\x34\xd2\x74\x8a\x2a\x20\x7b\x49\xb7\x5d\xae\xdb\xb1\xc4\xbb\x25\xcf\x64\x33\xbf\xcb\x8c\x9f\xe5\xe4\x1f\x23\x5b\x8a\xa9\x37\x37\x0a\x81\x8d\xc5\x40\x9d\xbc\xfe\x2a\x06\x97\xe6\xf5\x37\x31\xd8\x27\x3f\x11\xc0\x2a\x02\x02\xdc\xf2\x46\x09\x36\xb9\xf1\x88\xa0\x1c\x7d\xaf\xc4\x4f\x33\x36\xe3\xd9\xc8\x1e\x0b\x07\xf4\xe6\x91\x03\xfe\xc7\x10\xbe\xcc\xb9\x7a\x6c\x82\xe9\xbc\xde\xaf\xe1\xa7\x19\xc9\xf8\x92\x68\x43\x46\xa0\x5f\xae\x8f\xde\x89\xf1\x31\x2d\x59\xa3\x20\x6f\x4e\x84\x31\xbc\x31\x04\x53\x45\xbd\x79\xdb\xcf\xb9\xa3\x5b\xdf\x2b\x10\x18\xd3\x92\x3f\x24\xfa\x15\xde\xd8\x80\xcd\xd0\x3c\x22\x18\x4f\xfb\x04\x64\xe7\x75\x4a\xd9\xec\xcd\x4d\x3c\x5e\x24\x28\x81\x2b\xda\x78\x1e\x01\x4a\x4d\x54\x33\xbc\x2e\xc4\x00\xcc\x7c\x7a\x0a\x46\x9a\xc2\x1b\x56\x6c\x0a\xf6\xc4\xe4\x61\xcb\x3d\xbe\x86\xe0\xee\x81\xf1\x8d\x30\x67\x40\x10\x53\x03\xa0\x9e\xbf\xe9\x04\xec\xf6\x99\x55\x9e\x39\x11\x9e\x28\xd7\xa6\xf8\x7b\x40\x20\x68\xae\x6b\xe6\xcf\x75\x1e\xdf\x1f\x9e\x41\x28\x56\x93\x14\xaf\x41\xe0\x59\xff\x0c\xe1\xd1\xc5\xf2\x94\x98\x17\xbb\x4f\x10\x6f\x6e\x48\xbb\xc8\xef\x99\xae\x98\x00\xbb\x00\x8d\xb3\x52\x5c\x5d\xbd\x16\x35\x06\xf0\x3b\xfb\xb7\xa2\x03\x48\x2c\xa0\x11\x47\x97\xde\x05\x5f\x40\xc8\xb0\x3a\x24\x0c\xfe\xa6\x97\xfc\x45\x7d\x57\xe7\x2f\x77\x71\x59\x5d\x58\x69\xad\x36\x39\x04\x4f\xb1\xe3\xf2\x4e\x31\x69\xf1\x54\x62\xd0\xe1\x2a\xfe\x5c\xc6\x45\xb5\xbc\x0d\x52\x64\x5a\x3c\xab\xdd\x3c\x44\xf2\x09\x78\x25\x7c\xac\xac\x25\xba\xe2\x82\xfd\x5d\xde\xfa\xbf\x57\xc5\xe3\xef\x6c\x8a\x1c\x22\x66\x98\x2c\x61\x1d\x2b\x04\xae\x2e\xa7\xb9\xbb\x3d\x79\x78\x4a\xb4\x66\xb1\x6e\x56\x94\xbf\x74\xa5\xff\xf8\x11\x1f\x22\xc4\x1e\x3c\x8e\x5a\xff\x24\xa2\x36\x36\x61\xc2\x1d\x2b\x50\xff\x67\xa4\x02\x48\x1d\xcd\x80\x68\x1f\x24\xed\x45\x18\xba\x11\x31\x81\xce\x68\xc5\xe6\x6e\x29\xb8\x7b\x47\x95\xa7\xae\xbc\xc6\x7b\xa8\xb1\x89\x96\x11\x7e\x21\x37\xdf\x0a\x77\xe9\xa8\xa8\xa4\x98\x03\x99\x44\xce\xe3\x4f\x4d\xd4\x0c\x2b\x97\x33\x76\x84\x46\x5e\x72\x4a\x2c\xb5\x04\xe4\x37\x0f\x17\x1d\xe1\x78\xc2\x67\xcc\x25\xa4\xab\x97\x38\x8d\x95\xca\x41\x62\x68\x02\x7a\x19\x8d\xc0\xd6\x9a\x14\x4e\x5c\xde\x24\x53\x2e\x9a\x2e\x8f\xe8\x8f\xdf\x89\xe6\x4f\x13\xe6\x7f\x92\x8f\xbf\x89\x98\x47\x86\x3e\xce\x2c\x92\x78\xbf\x40\xdc\x60\xcf\x21\xbf\xcd\x08\x65\xfb\x10\x40\x98\xbc\x81\x16\x89\x5c\x7b\x9f\x57\x8e\xbc\x69\xb6\xb8\xe9\x04\xf0\x16\xdf\x60\x93\xed\xf3\x68\x56\xe6\xfa\xe9\x4d\x67\xe6\xb4\xd6\xe8\x2a\x4c\x7f\x9a\xde\x22\x55\x79\xda\x4f\xdc\x4c\x32\xc3\xc7\x79\xeb\x15\x40\xa5\x56\x36\x19\x4b\xf4\x13\xac\xb2\x26\x1e\x92\x51\x2d\x97\x4a\x32\xd4\x01\x67\xa9\x95\x41\x47\x55\x67\xaf\x7d\x20\xdb\xc4\xfa\xf8\x8c\xc2\x52\x48\xce\xd8\xc6\xd7\x17\x62\xab\x6e\xa5\x4a\xc9\x78\x0f\xd0\x9b\x47\x22\xbc\x6a\xb7\x9b\x98\xee\xae\x8b\x76\x56\xc7\x73\x41\xbb\xee\x89\x8a\x47\x76\x48\x7c\x39\x31\xde\xa2\x68\x7c\xd6\x93\xa8\xc5\x2a\x83\xe0\x8f\x1d\xbb\xed\xb7\x7a\xd6\xb5\xf3\x56\x82\xb6\xc7\xae\x86\xa9\xf8\xb1\x08\xaf\x94\x46\x44\x51\xb7\x08\x49\xfc\x44\x65\xda\x77\xb1\xb9\xd4\xa3\x57\x55\xad\x79\x81\x38\x18\xe1\xc1\xba\x40\xeb\xc6\x1f\x35\x59\xc5\xea\x1f\x75\x31\xbb\xe5\xf4\x98\x6c\xef\x73\xf6\xf9\x24\xad\x87\xed\x03\xf9\xfb\x47\x01\x4d\x79\xb6\x55\x96\xb6\x1f\xfb\x90\xdb\x1e\x8a\xbb\x2e\x5b\x1c\x1f\xe5\x68\x14\xb9\x72\xf9\xdb\x7f\xde\x8e\xc3\x36\x57\xee\x3c\x9d\x99\x7f\xd7\x13\x13\x5d\xf5\xb4\xfe\xba\x67\x26\x88\x33\xad\x6e\x58\xa4\x4a\xab\x23\x6d\xb0\xf3\x05\x6e\x02\xd3\x83\x21\x35\x83\x8a\xa6\x73\xed\xa2\x6d\x8b\xb9\x61\xb7\x36\x63\x51\x07\x87\x49\xd0\x79\xed\xe7\x54\xcd\x76\x56\x0b\xff\x9c\x49\xaf\x64\x4e\x75\x6d\xa4\x60\xd9\x12\x24\x71\x72\x20\x03\x8e\x13\x88\x3e\x4a\x09\x43\x03\xd1\xc7\xb8\x5d\x30\xa1\x94\xd0\x47\x3a\x18\x07\x5b\x8e\xac\xbe\x48\xac\x26\x56\x67\x9a\x19\x96\xfe\xb7\xf5\xf2\x8c\xbd\xd2\xfe\xac\xc1\xdd\xd7\xbd\xac\x61\xa1\xd4\x9b\xc3\x20\xde\xab\x21\xfe\x45\xbc\x94\x0d\xc5\xe9\xbe\x86\xbb\xbe\x0e\x1f\x63\x4a\x67\xf6\xdc\xdd\x3e\x4d\xa3\x43\xcb\xda\x5a\x40\xd8\x8c\x57\x24\xce\xd5\xc9\xea\x02\xe1\xf6\xfc\x48\x45\xe9\x9e\x42\x9f\x09\x58\xad\x39\x35\xfd\x44\xc9\x36\x31\x56\xc4\xee\xb3\x8a\x3d\xa0\x1c\x57\x25\x2d\xce\x6a\xe5\xf2\x10\xd2\xb0\x81\xdc\xe3\xe7\x92\x35\x3f\x9f\x42\xaf\x2f\xa9\x83\x92\x8d\x5d\x25\xfb\xf6\xf0\x39\xcf\xf3\xd2\x85\xe9\x55\x16\x99\x15\x2e\xb0\xb7\x28\x19\x2c\x14\x0a\x47\x17\xb1\x4c\xce\x53\x2e\x3f\x96\x0f\x6b\xf1\xec\x35\xcc\x26\xfa\x93\x74\x5e\x01\xb4\x9e\xfa\xbd\xd5\x23\xce\x0c\xb5\x0b\x21\x71\x32\x7c\xf6\x27\xd0\x48\x57\x6a\x70\xb1\x58\x5a\x91\x8f\x13\x44\x12\xed\x65\x12\x36\x50\x43\xc9\x16\xab\xf6\xfb\xc0\x79\x8c\x39\x1f\xae\x66\xca\xfb\xd0\xc0\xb7\xb8\x1e\x0c\x97\xc5\x26\x56\xe7\x17\x62\x9b\xa9\x78\xfa\x34\x6f\xb0\xa4\x68\x36\x26\x33\x38\x3e\xab\x78\x43\x23\x8a\xe2\xad\x08\xc9\xb5\x13\x0c\x21\x20\x79\x06\x2f\xd6\x00\x57\x7a\x38\x48\x29\xf7\xc4\xc7\x55\x6a\x0b\x18\xf9\x31\xa5\x0a\x2f\xa2\x89\x2a\x67\x31\x38\x10\x2a\x68\x80\x7e\x7e\x33\xdb\xfd\x19\x75\x3d\x2c\x2f\xad\xdb\xd7\xca\xed\x62\xfb\xd0\xd7\x6b\x70\x6c\xb6\xf6\xde\x8a\x57\xb2\x14\xe9\x43\xac\x44\xeb\x46\xca\x85\x64\x41\xf9\x54\x94\x85\x07\x01\x92\x6a\x72\xb4\x95\x21\x04\x46\x60\xf9\xd6\x7b\x7f\x36\x58\xde\x27\xfd\xa1\xb1\x3d\x74\x27\x3e\x74\xb7\x39\x07\xc7\xbb\xc2\x48\x94\x1b\xe9\x2b\x48\x89\x4c\xcb\x1c\x38\x83\x48\x08\x9b\x92\x29\xf1\xa4\xb8\xd7\xb7\x10\x14\x65\xcc\x1d\xe7\xb2\x77\x49\x2b\x6e\x8d\xdb\xf5\x56\x50\xf9\xcf\x13\xce\xa9\x66\xac\xf4\x62\x99\xe4\x0b\x2e\x44\x12\xb9\xbf\x5c\x43\x96\x34\x4a\x0d\x61\x97\x74\x7e\xe7\x84\x47\xaa\x1f\x37\xcd\x96\x55\x6c\x4e\x6b\xa8\xe7\x73\xdf\x41\x80\xc6\x84\x46\x4d\xa4\xc4\xa0\x5b\xf4\xba\x41\xae\xcf\xb8\xaa\x45\xa6\x2d\x16\xba\xc3\x4e\xff\xc2\x51\x4b\xac\xb4\xc0\x5e\xd7\x88\xfa\x02\xa3\x95\x21\x51\xd7\xc2\xef\xab\x96\x5c\x3d\xa3\x2c\xcd\x6b\xe1\x41\xc1\x83\x0e\x5f\xc4\xe3\xf1\xd9\xbf\x80\x37\xc9\xee\xc0\x54\xbf\x9e\xbb\xd9\x69\x01\xeb\xdd\x22\x43\x9c\x0a\x6c\x2e\x99\x92\x6d\xeb\x47\x3a\x3b\x2c\x4b\xfd\x81\xff\xf7\x62\x8e\x57\x50\xf1\x9d\x23\x2b\xfb\x80\x4c\xae\x92\x2a\xc6\x9c\x24\xb4\xfe\x07\x16\x41\x39\x48\x54\x34\x81\x4c\xc8\x41\x5e\x11\x70\xfd\x0a\x7d\xb8\xd9\x1b\xb9\xb3\xcb\x70\x83\x8b\x89\x89\x4a\x40\x64\xbe\x12\x72\xf3\x9f\x44\xec\xf7\xa4\xfe\x74\x86\x4a\x5e\x4d\x95\x3b\xa9\xfb\x46\xea\x2e\x0c\x7c\xaa\xd1\x56\x59\x15\xbc\x71\x27\x05\xe8\x3f\x29\x48\xcb\xe7\xb5\x6e\x9c\x75\x17\x5f\xd8\xc4\x6d\x5e\xc5\xe9\xc9\x3d\xba\x83\xfe\xb0\x4d\xff\x54\xc8\x15\x50\x88\x8f\xa5\x3c\x19\xb4\x5b\x9f\xd1\xea\x16\x56\x37\x18\xb4\x40\x71\x7c\x53\x9e\x14\xcf\xb4\x2b\x85\x69\x1d\x29\x23\xe6\x92\x7f\xa1\xa9\x91\x3a\xc1\x4b\x23\x23\x56\x5b\x07\x52\xbb\xbe\x4d\xaa\xdd\x3a\xa0\x56\x65\xc1\xbf\x12\x10\x52\xdb\x83\x76\x6c\x83\xe2\x7a\x96\xea\x2a\xb3\xdc\xd1\x10\xad\xd2\xa6\x06\xe2\x8c\x82\xdc\xbb\xb5\x4e\xb7\xca\x0b\x9f\x2b\xfc\x1e\xc3\xf6\xd7\x69\xf9\x87\xf3\x1c\xf1\x78\xcd\x5e\x59\x2f\xb9\x60\x5c\xab\x6d\x68\xe0\x9d\xd1\xd3\x48\x77\x0d\x99\xe4\x3f\x85\xca\x37\xf1\xee\x3d\x62\xa2\x6a\xb7\x35\xa5\x4b\xa2\x03\x99\x5e\x36\xa4\x41\x1a\xe3\x5a\x4b\x2b\xae\x32\xb7\xe8\xbb\x6a\xef\x4a\x9b\xe7\xfa\xff\xbf\xe2\x5e\x7b\x92\xc9\xf8\xfd\x05\x7d\x7f\x57\x56\x07\x22\xde\xae\xb9\x46\x6b\x7e\xe9\x9d\x29\x7a\x83\x4f\xa5\x17\x7b\x0f\x76\xec\xe1\x5a\xb4\xf0\x5a\x29\x6b\x82\x3c\xa6\xfc\xcc\x0c\x1f\x57\x1a\xb8\xa0\xfb\x93\xed\xdc\xf9\x37\x0e\x04\xcb\xb3\x1b\x57\x07\xd4\xce\x53\x28\x91\xaa\xcf\x3a\xb7\x7c\x9b\x24\x55\x73\xd2\xe3\x84\x11\x3f\xd1\x8b\xf8\xca\x27\xdd\x75\x8a\x26\x82\x87\x9d\x5e\xf5\x46\x94\x02\x59\x00\x2d\xcf\xd1\x09\xf0\xe6\x7c\xaf\x05\x38\x23\x27\x11\xc1\x9e\xd3\x79\x4e\x8f\x0a\x79\x4d\xc8\xef\xe1\x93\xe5\x6d\x48\x6c\x35\x33\xdf\xe0\x40\x3b\x65\x94\xa8\xe4\x03\xc4\x5e\x13\x3b\x21\x7d\x3d\xbb\x4f\x0f\xf0\x0b\x0a\xe3\x0e\x99\x3c\x09\xdd\x94\x02\x50\x62\x8f\x45\x35\xa6\xb1\x38\x21\x5a\x7b\x66\x10\xa1\xdb\x2e\xdf\xb6\xeb\x8c\x40\x56\xea\x83\x71\xc3\x90\x76\x8b\x90\xcc\x5f\x27\xc2\x6b\xc8\x1c\x97\xf1\xe6\xad\x12\xae\xcc\x31\xdd\x78\xf5\xa7\xac\xc1\x29\xb0\x02\x75\xe0\x55\x33\x0d\xc8\xf4\xb3\x4d\x81\xdf\xe0\x67\xee\xf7\x91\xfe\xff\x6f\x88\x42\x63\xb0\x03\x6c\x18\x37\x8b\x08\x80\x6a\x17\xe4\xd8\xd9\xfc\x4f\x85\x5a\x8f\xe4\xde\x62\xd8\x1c\x9f\x4f\x66\xe7\x30\x2d\x5b\x7e\x66\x02\xbb\x7f\xef\x95\xde\x9e\x23\x27\x9e\x62\xb3\x4d\xa3\x2e\x2e\xd0\xf1\x58\xc6\x04\x00\x0f\x1a\x19\x2d\xf6\xb5\x84\xf2\x2d\x45\x3d\xe3\x1f\xf1\xdf\xee\x4f\x5d\xdc\x9d\x33\x29\x06\xf2\x3e\xda\xe3\x86\x6a\xf8\xb7\xc3\x29\x3b\x56\x5b\x03\xf1\xc3\x30\xfb\x33\x10\x1c\xa7\xc6\x7e\x8f\x82\xb8\xe5\xe5\xaa\xc7\x2d\x8b\x67\x6a\x35\x6f\xde\x72\xc7\x60\x75\x4c\x61\x3c\x51\xdc\xf8\x92\xd4\xa6\x91\xdb\x3e\x99\x84\x9f\xde\x04\xca\x1d\xb2\x1e\x57\xa8\xa7\x89\x59\x82\x23\x95\xd8\xf4\x0a\xb6\xbe\x17\x4d\x06\x7a\x58\x48\xfb\x02\x5b\x1c\xb2\xb5\xac\x77\x46\x6d\xf5\xce\x2e\x17\xa5\x07\xef\x93\x68\xed\x56\xe3\x80\x67\x37\x80\x09\x2c\x83\x1a\xd3\x41\x0a\x07\x64\xbc\x69\xce\x4b\x80\x3d\xb7\x3e\xcb\x06\x4c\xab\xa9\x86\xd4\xa6\x3c\xd0\x4c\xdb\x24\x4d\x65\xe4\xb6\x33\x66\x32\xcf\x0b\xda\x89\xb6\xc1\x73\xdf\x6c\xf6\x0b\x5b\x2f\x5f\x6c\xe0\x89\xd7\xa6\x4d\x0d\xe5\xf3\xea\x3e\x00\x7d\x56\xd1\x1b\x6d\xad\xfc\x08\x45\x4c\x44\x63\x8d\x51\x21\x21\x32\x7d\xce\xdc\xbf\x0f\x91\xa1\x9f\x20\x00\xd2\x5b\x4f\xa3\x93\x77\x67\x7a\x59\xb3\xcf\x53\xec\x47\x52\xcf\xad\x67\x66\x8a\xf2\xe2\x9f\x71\x76\x8e\x83\xac\x8e\x95\xe6\x7a\x0c\x7e\xd4\x88\x13\x5e\x68\x95\x45\x46\x5c\x50\x36\xa9\x11\xe3\x61\x9d\x8f\xb6\x85\xf3\x06\x4b\x04\xac\xfb\xa5\xee\xd3\xc7\x8c\x28\x07\x7c\x5d\xcc\x03\xa7\x20\x36\xc9\x0d\x19\x8d\x3c\xc3\x93\xf4\xce\xee\x21\xc6\x1a\xbf\x85\x57\xda\xe5\x92\x56\x7d\x30\x81\xdc\x0a\x48\x51\xc9\xa0\x07\xfe\x4e\x78\x89\x61\x35\xb6\xdf\x06\xf9\x37\x99\xa5\x18\x2d\x8e\x7e\x86\x64\xeb\x77\x2b\x89\x6c\x28\x04\x10\xe5\x7c\x9c\xe4\x5d\xc0\x5b\x22\x14\x50\x69\x63\x2d\xa2\xc9\x51\x61\x98\x90\xeb\xbf\x76\x62\xf4\xea\x28\x21\x98\xc3\x4c\xcb\x69\xcf\xcc\x0a\x79\x98\xed\x32\xb9\x50\x98\xca\x37\x04\xf1\xa6\x74\x75\x4d\xf8\x2d\x55\x95\x64\xc0\x54\x12\x2c\x2a\xcb\x4f\x06\xc8\x29\xae\x63\x86\xdd\x86\xbd\x65\x5c\xf3\xcf\xbf\xef\x05\x19\xe3\xab\x91\x67\x33\x6c\xf2\x26\x30\x1f\xde\x00\x15\x7e\x34\x73\x18\x15\xdf\x27\x77\x72\x64\x6a\x90\x56\xd5\x72\x1f\xc7\x25\xa5\x51\xf2\xa9\x0a\x8c\x79\x21\xd5\x33\x9b\xb1\x69\x64\x70\xa1\x92\xb2\x4c\x85\x53\xc3\x94\xab\x57\x5d\x39\xe4\x68\x8b\xfd\x17\x3e\x92\x16\x4f\xc2\xd6\xf9\xc9\x94\xf3\x9a\x6c\xe0\xd8\x27\x6f\x7f\x64\xb4\x41\xcb\x3c\x6b\x31\x95\x3b\x17\x90\xb1\x94\x70\xd3\x0e\xd0\x66\xe0\xbf\xab\x03\xbc\xa9\xa7\x08\xfb\xf2\xbc\x58\x85\xed\x1a\xc1\xc7\xeb\x25\xb0\xaa\x6d\x98\x63\x16\xf1\x2f\xd4\x94\xdc\xce\xe2\xe6\xf3\x6d\x58\x3c\xd9\xb1\x8d\x63\xdc\xb2\x29\x33\x76\x1c\x36\x55\x73\xc4\x76\x43\x3d\x41\x75\x02\x85\x46\x38\x93\x2c\xd0\xc4\xaf\x4e\xb1\x8c\x88\xa1\x10\x83\x56\x01\x62\x17\x5f\x61\xf7\xc6\xd9\x6a\x96\xa2\x34\xe2\xf1\x83\x41\x68\x49\xd2\xa5\xd8\x30\xdd\xf0\x9e\xa2\x3b\x22\x2c\x1b\xac\x7e\x4d\xb1\x15\x6b\x9e\x86\xad\x3e\x39\xdf\x39\x28\x8e\x88\x1e\x2d\x7f\x48\xab\x12\xcb\x18\x60\xea\x5b\xcc\x8f\x53\xfb\x26\x32\x3e\xe5\xe5\xc9\x64\x75\xdd\xbe\x81\xe6\x85\x0c\xd6\x69\xde\x7e\x09\xbe\xa8\x07\x71\xa3\xe3\x84\xf7\xeb\xab\x5c\x69\x99\x78\x6a\x4e\xfa\x8a\xdc\xc2\x03\x4b\x48\xb1\xac\x22\x8f\x14\x92\x96\x1c\xf8\xf0\x4e\x84\x18\x2a\x98\x2c\x39\x72\xd1\xa2\xdb\x89\xe2\xef\xfb\xd8\x9d\xa0\x9e\x62\x0f\x3f\x71\x3e\x56\x6f\x25\x23\x74\xfd\x48\xe2\x9a\x93\x06\xe5\x63\x68\x2e\xa0\xb6\x74\x35\x4b\x7c\x94\x41\x0c\x28\x62\xe2\x4f\x33\x38\xf8\xe5\xa2\x93\x14\x23\x9c\xf3\xb3\x0c\xa4\x41\xa0\x95\xc5\xa2\x42\x6d\x58\xb3\xd4\x75\xf3\xe2\xfd\x19\xa0\xaf\x77\x60\x0b\x37\x2d\xc7\x63\x4c\xd8\xb4\x51\x19\xdb\x00\x7f\x9a\x6b\x45\xfb\x62\x47\xac\xbe\x50\x84\x4c\x1f\xdd\xf2\x5c\x32\xa5\xa9\x91\x9c\xc8\x82\x9e\x37\x19\x56\x43\x92\x30\x06\x26\x5a\x04\x08\xcb\xb7\xaf\x25\xd4\x49\x69\x66\x86\xc4\x45\xd6\x5d\x61\x20\x9e\xaa\x77\x25\x15\xb7\x50\xc5\x97\x6a\x3e\x26\x34\xec\x83\x84\xaa\xa1\xe2\x35\x1c\xec\xb1\x57\xae\xc5\x5a\xf0\x5f\x15\xdf\xde\xdf\x65\xe2\x91\x81\x69\x9c\xb6\xfa\x62\xb1\xd9\xbe\x66\x9b\x58\x48\x3c\xda\xf6\xa8\x73\xf7\x63\xda\x44\x02\xfe\xdd\xe5\x29\xab\x2f\x12\x9b\xed\xd7\x2c\x2e\x7b\x22\x60\xfc\xe3\xa5\x95\x19\x32\x6f\x7b\x87\x03\x4d\x2f\xd6\x54\x75\x8b\xd8\xe7\x8f\xad\xb6\x79\x71\xd5\x40\x36\x5b\xd7\x96\xe1\x6d\xda\x00\x6b\x30\x94\xb7\x5d\xaa\xff\x8a\xb2\x2e\x65\x78\x9f\xa5\xb3\xf1\xb1\xf2\x6f\xce\x57\x75\x3c\xd8\x55\xcd\x71\x82\x5c\xe8\x4e\x17\x9a\x5e\x6d\x9f\xdb\x86\xd2\x1f\xf5\xea\x6c\x82\x64\xb9\x00\x63\xc3\xc6\x55\xca\x9f\xc8\x6f\x91\x98\xd6\x7f\x8a\x7b\xbe\xc0\x83\x70\x7f\xeb\xb3\x47\x15\xe7\x68\x9f\x8e\x8a\x22\x4f\x36\x03\x25\x5f\x90\x40\xb7\xd7\x9d\x0e\xec\x4b\x88\xcd\x20\x72\x4f\x35\x4b\x9d\xe7\x97\xac\x2c\x02\x2a\x44\x15\x2c\x6d\x7d\xe8\x41\x6f\xb9\x7e\x11\x68\x0d\x1c\x61\x0d\xcf\xd5\x28\x30\xd1\x76\x5f\x98\xfb\xcc\x18\x3b\x6b\x8c\x18\x86\x61\x07\x7f\x5d\x7e\x13\x58\x4a\x50\x48\xbf\x63\x9c\x5d\xbd\x28\xf5\x82\xcd\xaf\xcc\xdb\xf0\x68\x7d\x49\x79\x8c\x8f\xac\xea\xd4\x02\x61\x3f\x76\x55\x8e\xef\xd5\x3d\x37\x6d\xf5\x66\x05\x74\x00\x8d\xee\x42\xbb\x25\x62\xca\xeb\x25\x8d\x8d\x3d\xf6\x75\x6b\x4b\x28\x9f\x42\xb1\x94\xd4\xce\x1c\xf2\x91\xe1\x9c\xc8\xa1\x7c\x07\x2b\x47\x93\x77\xc2\x5a\x29\xee\xac\x1b\xfa\x6f\x88\xa1\x96\xf2\x01\xd8\x36\xf5\x97\x6c\x6a\xcb\x95\x67\xf5\x17\x45\xaa\x48\x28\x60\x40\x85\x18\x53\xb4\x33\xed\x8a\x22\xfc\xee\x22\x93\x99\x0b\x8f\x29\xf7\x39\x51\x2a\xe4\x09\xf6\x56\x87\xb1\x21\xcb\x96\x2b\xe5\x62\x7f\x0b\x26\x60\x51\x2b\x9e\xb5\xf4\x22\x0f\x36\xec\x88\xca\x1d\x63\xd2\x0f\xfd\x96\x88\x01\x38\x3f\x9c\xda\x48\x0b\xab\x5b\x54\xba\x46\x77\x49\xa3\xd1\x1d\xd9\x45\x8a\xc8\x4b\xa4\xf2\xda\x0e\x56\x1c\xff\x3f\xd3\xbe\x4f\xde\x16\xae\xb8\xc1\x60\xe4\xaf\x9b\x58\x33\xb2\xdc\xf2\xc4\x66\xaf\x16\x0d\x35\xe7\xd9\x71\xfa\x9a\xef\x2c\x72\x70\x35\x4f\x7a\xce\x95\xbf\xc0\xeb\xba\x7e\xec\xfd\x2a\x3a\x4a\xc3\xf8\x44\x00\x17\x41\x95\xcb\xf9\x65\x18\x2a\x39\xa1\xeb\x98\x56\x76\x0b\x6d\xf6\xea\xc0\xd9\xed\xd9\x0f\xc2\x8a\xf1\x92\xed\xcc\x62\x35\x15\x97\x96\x01\x54\x27\x57\x4e\x5b\x04\x25\xe8\x6c\xcb\x45\x4f\x72\x44\xe9\x64\x15\x18\x55\x51\x41\x7d\x11\xc5\x44\x85\x2a\xfa\xf0\x68\x1a\x7e\x9a\x2d\x82\x28\x68\xff\x37\x01\x8b\xa3\xf8\x20\x72\xc2\xa5\x34\x30\xa9\x98\xc9\xaa\x89\xa0\x8c\xaf\xa3\x78\x35\x60\x6e\x6d\x67\x6a\x1d\x51\xfb\xf9\x25\xf0\x88\x94\x83\xb4\xb2\xb0\x02\x57\x53\x1e\x32\xd3\x9d\x26\x4d\x5b\x1d\xa4\xab\xf1\x00\x1d\x2a\x26\x65\xf1\xec\x51\x12\x05\xa0\x94\xbe\x94\x74\xb2\x63\x9d\xa5\xfd\x9f\x53\x43\xe2\xd7\xde\x9b\x96\xd3\x73\x03\xf6\xd7\x73\xf0\xea\xf1\x2f\x0c\x73\x84\x18\x2e\x1d\xbe\xb5\x95\x3f\x9b\xac\x67\x86\x0f\xf3\x16\xdb\x04\x0c\x43\x8c\x3e\x74\x7f\xb7\x81\x91\x6d\x12\x9f\x44\xc7\xca\xb0\x85\x15\x97\x14\x53\x02\x29\xb5\xa4\xa1\x36\x67\x76\x56\x7f\xe9\x89\x45\x4d\x69\x0f\xab\xce\x4d\xad\xfe\xd5\x85\x5b\xc9\x9c\xc0\x29\x11\x10\xe4\xd0\x96\x7a\x88\x3c\xfa\xb0\x5f\x18\xc4\xc9\x1c\xeb\xda\x71\xe4\xe9\x34\x81\x89\x38\x56\xf0\xc5\x5b\x7c\x72\xd9\x59\xa2\x0e\x1d\xbd\xd5\x04\x12\xc2\x36\x7d\x0d\x2b\xfb\xd0\x71\x95\x69\x34\xb9\xd4\x61\xaa\xf7\x20\xb5\x51\x5a\xde\xf6\xaa\x43\x67\x7c\x3e\x29\x7e\x02\xed\x4f\xea\x58\xdd\x80\xe7\x26\xc1\xdf\xa7\x2e\xbc\x22\x19\x0b\xfc\x08\xe7\x81\x6f\xa1\x77\x23\x63\xc1\xa2\xf8\x08\xfe\x8f\xf7\x01\x63\x81\x03\xa2\x77\x0c\xea\x05\xdc\x9a\xb9\x04\xb7\x78\xeb\x99\x0b\xdd\x37\x1f\x38\x1d\xd8\x0e\x87\x96\xec\xb6\x8b\xf4\x0d\x2d\x6f\x77\x21\xa7\x64\x5a\xe1\x56\x5d\x6c\xee\x93\x9e\x8b\x34\xb3\xe1\x9e\x7d\x82\xdc\x1d\x25\x80\xa7\xc5\xe6\xa4\x2c\x9e\x4b\xc6\xc2\x46\x34\x56\x5f\x7d\x50\x43\x52\x1f\x6b\xf4\x31\x3f\xc4\x2f\xe5\xbb\x73\x99\x05\xd4\x50\x25\x91\x6e\x88\x6e\xba\xfd\xc2\x04\xf4\xda\x5f\xad\xcf\xd6\xe8\xbf\x12\x93\x66\x07\xe8\xed\x3e\x11\xcb\x71\x2a\x34\x09\xf9\xa7\x20\x98\x19\xe0\x12\xf6\x4c\x5c\x33\x0e\x31\xf2\x49\xae\x64\xa5\xd6\x90\xd0\x29\x0f\x2f\x36\x5c\xf5\x69\x49\x1a\xc3\x9c\xed\xe0\x02\xdf\x40\x82\x4c\x40\xf4\x5a\xb1\x3a\x2e\x46\x33\x9c\xe9\x05\x0b\x00\x8d\x38\xf3\x59\x9e\x56\x3a\x3b\x3c\x98\x9d\x74\x19\x26\x24\x8d\x6a\x2d\xd4\xe1\x71\x16\x39\xb0\xc2\x5c\xc1\xaf\x10\x31\x10\xe5\x83\x00\x02\xc0\x86\x1e\x8b\x7a\xd1\x76\x15\x36\x95\xc3\xdd\x7a\xe7\xa9\x91\x68\x96\xe5\x2d\x56\xec\x58\x4b\x68\xdd\x20\x9d\xb2\xc5\x9e\x23\xc6\xed\x2a\x5c\x2e\x9c\xfe\x85\x56\x9f\x61\xb5\x3a\x58\x61\xdf\xdd\xfc\xbe\x28\xfe\x6b\x10\xc0\x67\x03\x61\x3e\x95\x21\xcb\xcc\x84\xad\x25\x91\x2b\x4b\xb2\xc2\x46\xa2\x5b\x18\xb6\x57\x7d\xa5\x95\x4b\xa4\x3d\x60\xde\xc3\x55\xf5\xe5\x1b\xea\x96\x90\x7b\x5d\xeb\xf2\xc3\x4c\xcb\x4d\xb5\x24\x85\x66\x08\x40\xcc\x73\xac\x4d\xa6\xd3\x30\xcc\x51\x99\x06\xb0\xbf\x7f\xf5\x02\x71\xd6\x6a\x99\xb4\x93\x59\x96\xe6\xe9\x4c\x53\x4c\x6e\x53\xe5\xba\x92\x80\x56\x71\x10\x06\xbb\xd6\x9e\xe3\xa8\xdd\xbd\xd3\x9e\x6b\x1f\xb0\x56\x8c\x00\xdf\x40\x2a\x21\xd1\x36\xf5\x09\x48\x1e\x88\x6d\x1e\x61\xfb\xdc\xc5\x52\x8f\x77\xdf\xfe\x58\x35\xee\xc7\x62\xb7\x41\x5d\x4f\x6f\x18\x44\x2e\x16\x95\x61\x82\xbc\x73\x3e\xa7\x28\x13\xe8\x9a\x21\x29\x1e\x75\x1d\x91\x0c\x8f\x06\x7d\x11\x97\x02\xce\xd0\x97\xeb\x05\x35\xb4\xb3\xf3\x62\x3c\x6d\xe8\x75\x8d\x5c\x4b\x5c\x75\x13\xc9\xb0\x38\xc5\x2a\xb3\x45\xb6\x5e\xad\xde\xd0\x4d\xaf\xe3\x5a\x15\xcc\x44\xbf\x94\x17\xd9\x9a\xd9\xf7\xe7\x06\x70\x7e\x1d\x30\xe9\xae\x39\xeb\x1f\xd5\x41\xf4\xf5\x27\x0f\x77\x9c\xfe\xdf\x0e\x98\xa0\x40\x84\x16\x1f\xf1\x8c\xff\xc1\x6b\x26\xbe\xb3\xd4\xa2\x37\x47\x97\xbc\x60\x1a\x5e\x1e\xb8\x63\x96\xd7\xeb\x51\x00\x63\xdd\x89\x8d\x29\xfb\x3e\xb5\xa9\xc5\x17\x07\xf1\x05\x7d\x12\x83\x15\xd4\xa6\x28\x4e\x51\x96\xf7\x6c\xc7\x2d\x13\x23\x0f\xc4\xfa\x5e\x64\x57\x18\x78\xdc\x2d\x89\x70\xe7\x57\x77\x59\x4c\x81\x3a\x54\xda\xc8\xa2\xe1\x44\x75\x93\x4f\xf5\x20\x93\x01\x72\x8b\x9a\x2a\x54\xcb\x1e\xd0\x0b\xe4\x75\x4a\x8b\xca\xb1\xbf\x87\x93\x8e\x5d\xb9\xcc\x37\x02\xc4\x55\xe0\x6f\xd0\x1b\x4f\x81\x57\xf7\x33\x37\xc9\xc6\x49\x1c\x0e\x43\x07\x93\x97\x86\xcb\x2d\x98\xd4\x66\x7b\x4d\x7d\x0f\x16\xa7\x9b\xe2\xbc\x93\xc9\x03\x72\x47\x66\x75\x51\xa2\xc2\x81\x75\x70\x85\x94\x19\x9f\x23\xb6\xd4\x14\xd2\x78\xe7\xd5\xd3\x90\x07\x6f\x6b\xe2\x91\x71\x8c\xf9\x0b\x29\x5f\x2b\x9f\x0b\x7c\x69\xd7\xb7\xbc\x45\x94\xa1\xc1\x93\x4e\x4a\x04\xb2\x50\x4e\xf9\x9b\xe6\x00\xeb\xb0\x59\x7d\x32\x45\xa8\xa8\x2d\xbb\xd8\xa5\x57\xf3\x3c\x47\x15\x2f\xf0\x8c\x72\x77\x1d\x3c\x4c\x13\x0a\x08\x01\x20\x59\xe0\x63\xef\x29\x81\x9d\x14\x3d\x7b\x49\x39\x40\x38\x08\x62\x6b\x4f\xc8\x6f\x33\xd5\x23\xab\xb9\xd7\x56\xff\x1e\x75\x8e\x2d\x74\xd1\x71\x22\x07\x75\x0e\xfb\x77\x3f\x0b\x66\xf5\x0c\x36\x31\x7f\x4f\x52\xa8\xe3\xb2\xf3\xb0\x2a\x14\x51\x29\x9d\x75\x7d\x11\x63\x88\xc3\x16\xec\xb0\x6a\x62\x98\x68\xa0\x6d\x79\x95\x67\xb7\x39\xf5\xf0\xf7\xb1\xf3\xf8\xd4\xb0\xa0\x87\xd5\xc5\x71\x01\xc7\xda\x92\x5d\xba\x13\x7f\x83\x65\xf9\xcd\x73\xda\xbf\x55\x51\x7e\x5e\x01\x0c\xde\xaf\x6b\xdd\xd7\xf5\xd5\x5f\x9d\x3c\x43\xe2\xc6\x1d\x79\x03\x5f\xc2\x15\xd7\x49\x64\x58\x78\x22\xbd\x5e\x51\x8a\x3e\xb2\xc7\xb8\xd4\x80\xe4\xeb\xec\xc9\x00\xcf\x04\xd5\x87\x2e\x0d\xfc\x16\x65\x7a\xce\x9b\x13\x56\x76\x93\xbc\x69\x11\x9c\xff\x4b\xf9\xe5\xff\x15\x39\x69\x28\xc2\x3c\xb5\x47\x1c\xf9\x37\x0d\xcf\xe8\xbc\x75\x60\x43\x72\x02\x48\x37\x8d\x6b\x55\x4f\xeb\x04\xb9\xd7\xb0\x85\xbc\x24\x01\xc4\x00\x46\x8e\x54\xe3\x83\x82\xd0\xc0\x43\x94\xef\x76\xba\x44\x3e\xe5\x3d\xd3\xbf\xf6\x24\x10\x16\xdb\x85\x07\xbd\xb4\x7a\xa5\x8a\x54\x1d\xa0\xd7\x20\x4c\x03\x96\x87\x85\x5a\xad\xb1\xe9\x8f\xfa\x79\x23\x70\x78\x3b\x8e\x34\x0a\x23\xac\x5b\xa4\x9b\x03\x2c\xac\xe6\x01\x8d\x9a\x02\xd7\xc5\x12\xf1\xbb\xf9\x46\x0b\x4e\xe4\x07\xee\x6c\x9b\xe4\x19\xe0\x2e\x14\xa9\x7d\xd2\x56\x8c\xce\x03\x43\x38\xd1\x14\xc4\xec\x6a\x84\xc4\xe9\x15\x6d\x1a\x3e\x1a\x3e\x44\x5d\x28\x7f\x32\xa6\xbb\x21\xb9\xed\xef\x9b\x14\x40\xe6\xf7\x10\x7b\x03\x91\x63\x56\x03\x19\xe5\xa3\xf9\xdf\x32\xc0\xca\x0c\x1a\x26\x8e\x75\x4a\xd1\xfb\x46\x89\x9d\xa2\x13\xbc\xe5\x2c\x63\xc6\x65\x85\x14\xfc\xa1\x6b\x62\xcc\x94\xdb\x77\xe6\x1f\xa5\x8d\x17\x6d\xcf\xe4\xf3\x37\x49\x67\xd7\xf9\x75\xbe\xa5\xd2\x1a\xfc\x14\x05\x8c\x6a\xbe\x1a\x9c\x59\xf6\x6e\xbc\x14\x0b\xeb\x86\x96\x61\x69\xdb\xf5\x3e\x57\x25\xd5\xbc\xb6\xa4\x9b\x77\x9d\x19\xb0\xba\xa1\x2a\x2b\x25\x81\xa9\x59\x6d\xd4\xfd\xf9\xb0\xa1\x05\x69\x17\x0f\x34\xdd\x6a\xaf\x09\x44\xab\xff\xb8\x84\x16\xc5\x5c\xbc\x7a\x5d\x2d\xea\x34\xfa\xdf\x68\x50\xe1\x16\x6b\x25\x5f\x6b\xd4\xe2\x2a\x5f\xf8\x53\x3e\xe4\xbe\xd9\xe9\xad\xe0\x0b\xcd\x5c\x2d\x3c\x91\x3b\x69\xb6\x37\xa7\x9d\xa7\x42\x6f\x22\x97\x9e\xb9\xd0\xea\x09\xbd\x93\xc1\x85\x03\x5e\xd3\x0d\x79\xa4\x68\xc6\x44\x86\x7e\x43\xa1\xb5\xe9\x7e\xd9\x37\x98\xdb\x7d\xb6\x12\xd9\x2e\x8b\xc3\x83\x4b\x03\xbd\xaf\xea\x8d\x06\xed\xb2\x59\xa3\x5e\x17\x7a\x6e\x84\x67\x5d\xfd\x0c\x82\xcc\xdc\x0b\x5c\xb8\x18\xae\xf4\x5c\x54\x93\x47\x65\x11\xdd\x66\x0e\xd2\xc0\x00\xe6\x06\x01\xc2\xe8\xa9\x8a\x24\x44\x50\x45\x86\x75\xf0\x01\xd7\xd7\x24\x42\x84\x7c\x14\x8c\x50\xd4\xbc\x11\x0d\x69\xa2\x93\x77\x4a\x84\x5c\x53\x0e\x3e\x25\x70\x59\x42\xe2\x88\x15\x47\x2b\x06\xf4\x82\xbc\xd1\x6b\x46\x96\x7d\x31\x33\x1d\x56\x70\xcb\xa1\x07\x9b\x86\x0f\xdc\x9d\x47\x73\x28\xfd\xc4\xe6\xba\xab\x4a\x99\x23\xda\x08\xa3\x02\xd9\x55\x9a\x83\xe1\x3f\x75\x71\x2a\xa6\xeb\x7f\xdb\xfd\xf9\xe9\xf2\xe0\x32\xd9\xf9\x2f\x1a\x06\x21\x11\x31\x07\x6c\x7c\x6b\x38\x1d\xc4\x67\x34\x9a\x8e\x76\x5d\xaf\xc3\x32\x8f\xa4\xec\xf2\xe4\x83\x29\x23\x60\xbd\x83\x2e\x24\x71\x7b\xf8\xce\x05\x9f\x06\x18\xda\x02\xa0\x40\x6b\x0c\xe3\xaf\xbd\xcd\x88\x00\x14\x30\xb8\x1a\xa3\xd3\x85\x81\xb2\x17\xdc\x7a\xe4\x11\x47\x44\x74\xb8\x59\x65\xd4\x56\x98\xd0\x98\x34\x92\x36\x77\xdb\xfe\x35\x7e\x6f\xfe\xa5\x5e\x06\xb9\xaa\x01\xbb\x80\x5f\x73\x53\xac\x3a\x6f\x05\x5f\x26\x49\x16\x39\x0a\xf1\xd8\xd5\xcd\x73\x3c\xb4\xa4\xc6\xc0\xe7\x69\xce\x02\x2d\x9f\x48\x5b\x6f\x9e\x55\x73\x80\xf1\x0e\xe5\x11\x9e\xf7\xeb\xd4\xf7\x31\xe5\x57\x98\xab\xed\xaf\x5c\x1b\xeb\xaf\x50\x7d\x35\xe5\x12\xd4\xd4\x93\xf7\x8b\x5f\xa1\x24\x87\x3d\x08\xa1\xad\xff\x8c\xd7\x31\x9b\xd5\x91\x38\xb1\xcf\xc4\x7c\x3e\xc0\xd4\x38\x80\xd8\x0f\x65\x74\x20\x22\x71\xe3\x52\x86\x3c\x6d\xc0\x5f\x3c\x63\x98\xf0\x83\xe0\xf7\x69\x01\x4b\x2e\xb0\xf2\x0b\x81\x7a\x84\x10\x85\x98\x47\x0a\x05\x23\x3f\x21\x9c\x2c\x73\xbf\xa2\x94\x3c\x6c\x8c\xb3\x35\xc7\x0e\xc4\x0b\x6e\x88\x21\x74\xc6\xb2\x86\x49\x94\x27\x0e\x9c\x87\xaf\xe6\xa4\x08\x72\x6b\x02\x1e\x1a\x13\x80\xe8\xcf\xa1\x62\xa2\xd5\x49\x96\x78\x2b\xe7\xdd\xbb\xb4\x2b\x01\xf8\xea\x18\xd2\xc8\x77\x61\x9f\x56\xea\xf9\x7b\xb9\x75\xc4\xf5\x39\x46\x3e\xbb\xe1\x3c\xf1\x03\xf7\xf9\x98\x80\xbc\x9a\xfa\xe7\x6b\x86\x5c\x26\x1d\x1d\x1a\x5f\xa8\xbf\x6b\xa7\x1b\xe6\xf2\xd3\x17\xf2\xc1\x1a\x80\xf6\x47\xcb\x3f\xf5\xea\x69\xae\x37\x0d\x22\x19\x2e\x81\xb6\x32\x8e\xdb\x25\x74\xca\x1a\xd8\x9d\xdb\xb5\x92\xb4\xbe\x4c\xa4\x98\x77\x03\xc5\x38\x9c\xff\x7e\x56\xea\xa5\x81\x9a\xbf\xe5\x30\x88\x95\xf8\xb2\x5d\x25\xda\x73\x34\x3c\x0c\xb5\xd1\xa9\xb1\x0a\x46\xd4\xe4\x47\x58\x44\xab\x11\x11\xa7\xcb\x3b\xdb\x8d\x92\x8e\xc4\x28\xc8\x26\x11\x22\x63\x6a\x72\xc6\x58\x05\x6b\x08\x7a\x55\x45\x2b\x7a\x8a\x9a\x75\x05\xef\x29\x24\x07\xf0\xbc\x59\xbb\x74\x84\xcf\xc4\xcd\x49\x13\xa1\xfe\x72\x55\x99\x6f\xde\xad\x0c\x42\x94\xf5\x79\x88\x94\x29\xf8\xf3\xeb\xdc\x97\x4d\x64\xe1\x2a\x99\x07\x55\x43\xfd\x8c\x38\x99\x82\x8e\x0b\x1b\x53\x39\x02\xa3\xfc\xd0\xcc\x21\xc4\x43\xd8\x17\xee\xc4\xb9\xa4\xef\x1b\x7a\x6b\xe2\x8e\xdf\x24\x1f\x23\xcd\x36\x63\x2d\x74\x8d\x29\x93\xef\x03\x2e\x0a\x6c\xbb\x14\x52\xfb\x82\x32\x38\x72\xd3\xf2\x8b\xa9\x51\x0e\x52\x3a\xf1\x1d\xf4\xd0\x44\x40\xec\xf4\x24\x05\x78\x6a\x26\x6a\xca\x30\x4c\x9c\x25\xb4\xe8\x4e\xd1\x7d\xa5\x75\x4c\xef\x79\x08\x48\x3f\xb9\xc6\x9c\x6c\x8c\xa4\xa5\xac\xcf\xd8\x17\xc5\xc2\x45\x00\x4d\x36\xb5\x9e\x89\x35\x3c\x80\x3f\x7c\x3a\xe7\x47\xc0\x7d\x7c\x13\x44\x06\x93\xbc\xbb\xd5\xc4\x03\x69\x4a\x00\x64\x38\xa0\xd0\x21\xc8\x46\x10\x99\x0e\x73\x8c\x21\xcf\xc0\xc2\xa7\xf0\x10\xe1\x4f\x65\x1f\x6a\x65\x34\xe4\x35\x33\xa0\x52\x7d\xd1\x96\xda\x35\x79\x79\x35\x62\x1a\xd4\x30\xf4\x84\xda\x56\xe7\xe9\xa7\x7d\x91\x0e\x34\x9a\x79\xb1\x89\x03\x43\x40\xb2\x85\x17\x76\xbc\x34\x41\x62\x88\x53\x72\x20\xa1\xc0\x85\xa8\xd1\xa9\x4f\x61\xcc\xb4\xb1\x2b\x02\x4b\x39\xab\x69\x00\xd1\x7e\x81\x77\xae\xfa\x68\x1d\x45\x9d\x2c\xe3\xbe\xe9\x68\xc5\x7d\xf0\xc8\xe9\xea\x09\xf7\x0a\xad\x93\x2c\x57\x6a\xd2\x4a\x8d\xc6\x74\xe3\x37\xa3\xa2\x55\x71\x4e\x1b\xfe\x17\x02\x04\xbc\xb7\x01\x6c\x63\xac\xaa\x09\x04\x88\x92\xc8\x85\x59\x58\x8b\x08\xd6\xa8\xa5\xad\x48\x46\xbf\x2e\x76\x20\x95\x72\x08\xb0\x2d\x1c\xa1\x92\x9d\x68\xeb\x61\xf2\x62\x4a\xcc\x80\xd6\x7c\xce\x33\xac\x3d\x17\x00\x47\xcb\x9f\x46\x61\x02\x9b\xcf\x62\xf5\x4d\x84\xa0\x81\x31\x4f\xd2\x5c\xd8\x00\x88\xa4\xe7\x21\x10\x2d\xbf\xb2\x85\xda\xaf\x73\x1e\x6d\x6d\x8b\x06\x9d\xc0\x00\x49\xb7\x82\x2d\xcb\xc9\x5d\x40\x8c\xee\x15\x6a\x8e\xf8\x45\x4e\x2e\xa4\xbb\x64\x0f\xf4\xa5\x01\x6d\x7f\x55\x9c\xcc\x2a\xd9\xe8\x6f\xa1\x2b\xdd\x89\x8d\xf0\xce\x4e\x42\x73\xc6\x6f\x40\x33\x82\x66\x83\x30\xad\xf4\x85\xad\x90\x50\xc7\x9a\x25\x02\x2b\x57\xb8\xb8\x20\xb8\x67\x71\xdc\x35\x39\x30\xaa\x22\x85\x87\x04\xb6\x22\xd7\xa8\x47\x75\xdf\x0a\x08\xcf\xfd\x85\x89\x90\xac\xa0\xc6\x8b\x6e\xb4\xf2\x0c\x66\x84\x3e\x8f\x12\x31\x55\x53\xf7\x22\x8f\x37\x17\x90\xee\x7d\x0a\x25\x91\xcf\x52\x99\xc8\xfc\x30\x79\x20\xe8\x64\x12\xbe\x7e\x4c\xe2\x0d\x9c\xc4\xed\xfc\x24\x3a\x09\xf3\x88\xe4\xe7\x07\x5b\x83\x70\x8d\x89\xdb\xcb\x4b\xa4\x1c\xf8\x49\xdc\x5c\x48\xb2\xa1\x92\xa2\x79\xfe\x0e\x11\x45\xd2\x90\x8f\xda\xfd\x97\x30\xc2\x4a\x59\x03\x1f\x14\xf1\xe2\xa1\xb4\xa2\x4a\xd9\xbb\x71\x1a\xc9\x44\x93\x73\x95\xaf\x9d\x0d\x8c\x2c\x7d\xae\x3e\x0e\xf6\x34\xd2\xf3\x6c\x0c\xd0\x4a\xdc\x2d\x8a\x64\x4b\xb5\x4f\x05\x1b\x5a\x69\x1e\x07\x3c\x50\x84\x3b\x0d\x50\xa5\xb0\x3e\x4b\xbb\x57\xd9\xb2\x97\x9e\x69\x64\x9c\xb7\xac\x1a\x11\xc7\x3c\xe5\xca\x9e\xb3\xbd\xf5\x82\x57\x69\x04\xbe\xe3\x33\x9d\x28\x93\xd0\xf8\x4e\xc5\xce\x0d\x5f\xb9\xa0\xfa\xf0\x45\xe1\xf9\x91\x36\x54\xcb\xc1\xde\x70\xa7\xe1\xa5\xee\x5a\x40\x1f\x3b\x0d\xde\x3d\x00\x3d\xe4\xff\xfa\x37\x3c\xf6\xf4\xa5\xfe\x3f\x49\x45\x29\xd2\x54\xf9\x58\xa6\x18\xf1\x11\x7b\xc9\x32\xa0\x5c\x95\x04\x4c\x4e\x56\x46\x9d\x9c\x46\x1c\x26\x87\x28\x87\x64\xdf\x7b\x85\x45\x1c\xf1\xb5\x94\xfd\x4e\x2b\xcc\x63\x33\xd8\x83\x1c\x72\xf1\xc2\x68\x9d\x92\xc7\x59\xb7\x27\x8b\x97\x64\x51\x50\xf4\x30\x44\xb5\x6a\x8d\xaf\x2d\x29\x3c\xce\xf4\x0b\xaa\x7e\x8f\x7d\x89\x50\xac\xe9\x8a\xd9\x46\xb5\x24\xce\xb1\x84\x5c\x20\xff\xd7\xa5\x38\x8b\x36\x55\x77\x63\x81\xca\x5d\xcc\x70\x1b\xab\xbe\x22\x23\x3a\x0b\xa8\x1a\xa9\x15\xd7\x5b\xe9\x55\xc8\x1a\x55\xec\x79\xea\x5e\x81\xd4\xd8\xe4\xaf\x3a\x01\x0f\xd8\xe9\xdd\xc9\x3f\x89\x23\x1f\x8d\x1d\x3f\x2d\xae\xf8\x08\xe7\x83\x1f\xe3\x4c\x8f\x73\x4d\xab\x41\x8b\xb8\x88\x85\x8a\x31\x14\x1c\x7a\x34\xe4\x79\x3f\xcb\x40\xb7\xf3\xc4\x88\x50\x79\xbf\x17\x70\x62\xdd\x78\xfc\xfd\xb0\xea\x53\x8a\x9f\x04\x94\x88\x4f\xeb\xf3\x86\x9c\x2b\xe3\xc2\x8a\xc2\xea\x10\x9c\x00\x9d\x96\x94\x5c\x94\x6b\x53\x1e\x55\x45\xcb\x5e\x1d\x2e\x55\x8b\xd9\xca\xc4\x52\x84\x11\x52\x7c\x29\x68\xd4\xe0\x77\x72\x5e\x35\x3d\xe5\x00\xb2\x5d\x69\x1b\x88\x24\xa4\x4d\x8b\x7e\xe1\x7a\x2d\x78\x8d\x5d\xa9\xce\xf1\xd7\xd3\x16\xa4\x2d\x58\x6d\x32\x4c\x00\xa1\x96\xca\x28\x6d\x45\x2f\xb2\x0b\x25\x4c\x17\x2a\x28\x42\x95\x38\x37\x1b\x15\x35\x23\xd3\x55\x7d\xf7\x5f\xb3\xc1\xa9\x5e\x00\x48\x61\x95\x84\xd1\x91\x74\xc6\x20\x20\xe6\xbb\x2b\x35\xf1\xdf\xd9\x53\x78\x9f\xc4\xe2\x88\x51\x50\x4b\x3f\xc4\x81\x3f\xc3\xaf\x4b\x9e\xf0\xc4\x93\xd6\x5c\x14\x9e\x10\x87\x50\x24\x80\x0d\xe2\x1a\x83\x2b\x43\x9d\xb3\x30\xae\xdd\x2a\x91\x82\x57\x19\xde\x0f\x0c\xed\x39\x18\x75\xae\xd8\xcc\x9d\x48\x7b\xdc\x7a\x0a\x90\x46\xf6\x4a\x87\x1c\xcd\x79\x3c\xe5\x57\x53\x3f\x35\xca\xc0\x24\x95\x13\x3f\x9c\x61\x73\x2d\x82\x44\x60\xd3\x85\xa2\x47\xc1\x44\x26\x15\x73\xfe\xa1\xa9\x49\x8b\x54\xda\x80\x61\x6c\x31\x4d\x1e\xc1\xb2\x9b\xc1\x56\x7f\x49\x6a\x72\x57\x43\x1e\xb8\xd0\x9d\x6b\x9a\x5d\x72\xf7\x08\x8e\x9b\x5d\x94\x84\xcd\xd2\xd4\x6f\x73\x15\x2e\xf3\x51\x3f\x65\xb9\xba\x9b\xb0\x3c\x77\xdb\x1d\x20\x11\x7f\xe6\x96\x29\x9d\xd5\xd9\x44\x9a\x77\xd5\x92\x6a\x1e\x6a\x12\x57\x94\x09\xca\x95\x28\xaf\x9c\x62\xcf\x6f\x9e\xd7\xb4\x72\xe6\xa4\xee\x2a\x13\x15\x2c\x59\x17\xff\x59\x43\x2f\xcc\x1a\x8f\x2e\xa6\x59\x21\x42\x81\xa1\x8a\xc9\xeb\x3c\x11\x29\xb7\xca\xe9\x8d\x69\xf2\x7c\xbb\x35\x38\xf4\x58\x81\xe4\xc9\x5d\x4b\x20\x8d\xb1\xf4\x98\x80\xcc\x07\xb8\x6f\xe5\x66\xf2\x28\x47\x77\x28\x6e\x9e\xb5\x57\xc3\x07\xab\x86\x16\x67\x78\xf8\x04\x39\xf6\xb6\x5a\x91\xfe\x6e\xa0\xc6\x4a\x00\x02\x62\x58\xa7\xd7\x3c\xc6\x03\x4b\x99\x4e\x1e\xda\x70\x54\xb2\x22\xca\x2b\x8d\xb9\x91\xdc\xff\xfa\xde\xd4\x93\x2a\x31\x2e\x50\x2d\xbe\xa6\x11\xe0\x92\x24\x03\x36\x97\xd4\x42\x35\x5b\x1e\xf2\x91\x68\x9a\xea\x8d\x82\x7b\x57\x84\x32\x9c\xaa\x2d\x6a\xeb\x51\x51\x45\xe4\x34\xe9\xce\x57\x76\x21\x68\x9e\xa1\xec\x5a\x3c\xf7\xa2\x15\xaf\xcc\xd0\xcd\xd2\x08\x90\x51\xee\xb0\x8e\xd5\x0d\x9a\x6b\xbf\x5b\x9b\x82\x7e\x28\x27\x3d\x2d\x27\x1f\xb4\x5b\xeb\xe0\xa9\x4e\x64\x93\x56\x32\xac\xdd\x7e\x07\x59\x7d\x1e\xfa\x67\x52\xf8\x46\xfb\xda\x0d\x4b\xb4\x24\xdc\xf5\xed\x7a\xc3\x93\xee\x29\xb6\x44\x57\x07\x68\xd4\xac\xa3\xdf\xcd\xac\xb4\x8c\x59\x0d\x15\xc0\xef\x61\x79\xeb\xe2\xd6\x80\x6a\xd3\x26\x47\x73\x86\x08\xa5\x32\xa2\xe0\x5d\xf9\x75\x2e\xbb\xe1\x5c\x37\x3e\x66\x4b\xaa\x3a\x9a\x8a\x37\x87\xb7\x80\x1f\xb5\x1c\x2b\x08\x37\x26\x33\x04\x00\xf0\xc6\x16\xd3\xb5\x10\x4b\xdb\x9b\x9f\x65\x6c\xd4\xc3\x21\x60\x66\x3b\xa5\x18\x1f\x65\x02\x95\xf7\x48\x44\xda\x97\x07\x76\xe9\x34\x9d\x63\x9d\x9e\xe8\x8e\xde\x40\x8a\x06\xc2\x67\x1c\x1a\xb6\x47\xea\xa5\x2e\x75\x93\x80\xba\x5e\x78\x3b\x51\xea\xc6\x6b\xff\xf3\x88\x26\xe8\xf5\x41\x47\xf9\xfb\x9c\x60\x49\xf3\x14\xf0\x0f\xd9\x3d\x97\xca\xbe\xb5\xe7\xb7\xc7\x95\xa4\x50\x90\xfa\x3b\xab\xb7\x6e\x7a\x58\xe2\x8f\xcc\xbf\x53\xf6\x21\x33\xbc\x9d\x08\x90\x3c\x90\xd3\x83\x30\x96\xfd\xe6\x49\xd0\x87\x23\xd6\xc1\xd4\x81\x3c\x32\xcb\x98\x91\x0a\xa8\xfd\xd8\x49\x69\x0c\xc3\x82\x11\xb8\x58\x32\xb1\xa1\x79\x4d\xe5\x5f\x32\x4b\x44\xf4\x88\x26\x75\x33\x24\x35\x74\xf9\xae\xe6\xd2\x28\xef\x77\x16\x64\xdb\x4e\x7f\x48\x00\x0d\x16\x63\x75\x3a\xa0\xee\x36\xf0\xca\xe8\x1d\x18\x49\x08\x0e\xb0\x03\x11\xb6\xc2\xd4\x02\x0d\xc9\x6d\x82\x47\xbe\x2d\x1d\x41\x4b\xd7\xb7\x1e\xde\xf4\xe5\xe0\x4a\xc7\x05\xbc\xab\x40\x2d\xd1\xe9\xff\x3b\xc7\xfc\x95\x2f\x8f\xca\x56\xf7\x16\xad\x78\x95\xbe\x8c\x8e\x0d\xdf\x38\x97\xe6\x66\x10\x58\x42\x5f\x99\xf4\x6c\x59\x53\x08\xe9\x08\x78\x51\x73\x0f\x33\x2b\x30\x47\xd3\xc5\x90\xc7\xe8\x80\x23\xad\x72\x2f\x26\x0e\x0f\xfe\x80\x2a\x55\xd4\xfa\xde\x33\x1c\x25\x85\x9c\x5c\x40\x02\x8a\x9a\x0c\xb1\xcd\xe4\x0e\x25\xc3\x72\xba\x1a\x53\xd5\xd6\xf7\xd1\x5f\xa3\x03\x95\xde\x68\x45\x75\xc0\x1e\xa4\x92\x5b\x2e\xed\x32\xe2\x3c\x39\xb7\xfd\x8c\x6b\x4f\xb9\x5c\x29\x7a\x7b\xdb\xbd\x50\x2c\x99\x91\xd4\xc1\xda\xda\xc1\x96\xb5\x99\xc7\xaf\x98\xb8\xb5\xb9\x0a\x60\xbd\xce\x20\x7a\x44\xa4\x20\x88\xa2\x94\xf6\xcc\x11\xc3\xe9\x87\x77\x25\xfe\x13\x6e\x4a\xd8\x43\xa1\xf9\x92\x1b\x9d\x29\x41\x59\x53\x87\xba\x10\x5d\x05\x80\x58\x8e\x96\x07\x9c\xe2\xbd\x08\x37\x4c\xe8\x59\x5d\x1a\x07\xc2\xe0\x30\xe5\x30\xde\x03\x2f\xbb\x7a\x46\xe6\x52\x16\x93\x91\x98\x85\x1d\x86\x95\x2d\xef\x1e\xc7\x73\x22\xd0\x17\xb0\xb3\x70\x70\x8c\x65\xc3\x21\xa9\xaf\xf7\xef\x8b\xc5\xf8\x5d\xd8\xe6\x7f\xd8\x2d\xac\x7b\x1e\x38\xd6\xe4\xbd\x51\x0c\xf5\xd7\x45\x94\x1a\xd2\x21\x85\xa6\x3b\x73\x72\x3d\xa3\xd4\xe4\x91\xd0\x97\x85\xdc\x03\x9e\xea\xb3\xf5\x69\xef\xc9\x6d\xad\x09\xa4\xf0\x37\x89\xe0\xfb\xc4\x25\xd2\x65\xc4\x5e\x05\xb9\xc9\x44\x16\x32\x22\x21\x29\xf3\x77\xdd\x8f\x1a\x50\xac\xa6\xc6\xae\xe4\x55\xc3\x63\x56\xe4\xb8\xfb\x8b\x82\x1e\x89\x6f\x5b\x39\x7c\x6a\x43\x0e\xf3\x97\xe4\x5e\x59\xd5\x9a\xd2\x7f\x76\x50\x48\x6c\x1d\x31\xdb\xcc\xf8\x61\x40\x3d\xce\x84\x74\x7d\x75\x15\x28\x94\x93\x83\x84\x5a\x98\xfc\x9a\x1e\xe9\x24\x57\x7d\x40\xaa\x1c\x9b\xc2\x75\x1c\x76\xa6\xdd\x74\x3b\x65\xb5\x11\x94\xcb\xca\x68\x90\xdf\xcf\x4a\x3b\x36\x8a\x82\xd5\x0c\xa0\x54\x94\x4c\x69\x9c\xf9\x9f\xb7\x06\xca\xa0\x9a\x4d\xc0\x3c\x51\x29\xb2\x82\x01\x48\x6a\xdf\xa6\xb5\xec\xfe\xcf\xcb\x00\x61\x25\x56\xb2\x65\x80\xdc\x24\x22\x25\x0c\xb1\x8b\x57\xaf\x8c\x17\x46\xf9\xbd\xe8\x14\xf5\xb6\xa0\x03\x4e\x0b\x76\x01\x24\x1b\x7f\x5e\x32\x6c\x87\x97\x7d\x24\x8e\x45\x68\xe3\x80\x75\x57\x19\xe8\xad\xbe\x07\x24\xf2\x19\xeb\xa5\x39\xcf\xb8\xf4\x57\xfa\x56\x85\x7b\xdf\xfd\x50\xd2\x3c\x40\x7c\x2c\xba\x4a\x0e\xe5\x73\x8a\x20\x4a\xa0\xf0\x07\xd3\xf7\x53\x15\x60\xb3\xc3\xe1\x80\xba\xf1\x41\xfe\xa9\xc1\x82\x75\xfe\x11\x23\x86\xb6\xf3\xe1\x28\x95\xba\xd5\x90\x13\x83\xb7\xcd\x7f\xae\xcb\xde\x3c\x13\x23\x65\x40\x32\xf4\x03\x73\x9e\xa6\x4e\xbf\x5b\x28\x72\xfe\x6c\xc2\x93\xb7\xfd\x0e\x9e\x86\xdb\xdb\x7c\x00\x88\x9b\x60\x53\x51\xc4\x32\x07\xcd\x13\x20\x9b\x09\xf3\xd5\xee\x7c\x16\x16\x30\x55\x41\x61\x78\x95\x70\x5e\xed\x64\xe7\xc6\x00\x74\x1c\xb9\x11\x4d\xcc\xb1\x44\x99\x76\x07\xd7\xc8\xcb\xe4\x5d\xab\xf7\x59\xdd\x14\xdb\x14\xc2\x77\x8f\xef\xf5\x1c\xf0\xaa\xfc\x1f\x6b\x8f\x5b\x82\x2d\x28\xc8\x42\xad\x88\xdc\xa4\x77\xdc\xf6\xc4\x3e\xf6\xec\x7e\x2f\x90\x2e\x66\x21\x8b\xbc\x09\x95\xb8\x20\x95\x3b\x2a\xeb\x89\x54\xfc\x7b\x5a\x7a\xbf\x32\x3d\x87\x56\xf3\xb3\x44\xff\xbb\x73\xba\x9e\x3d\x13\x87\x62\x45\x72\x49\xfc\x77\x0e\xe9\xfb\x9a\x68\xb8\x7a\x8c\x3f\xfb\x4e\x14\xfa\xc2\x6f\xfb\x6e\x35\x0b\x9d\x57\x46\xf0\x35\xbb\xd3\xfc\x5f\x9d\xd5\x9e\x68\xd7\x93\x22\xce\x20\x19\x93\xdd\xeb\xad\x3d\x9d\x38\xff\x48\xb5\x3f\xdf\x48\x99\xfe\x99\x1d\xad\x38\x43\xd1\x3b\xe4\xef\xfc\xba\x5a\x76\xd0\x54\xb9\x25\x4d\x61\x73\xa2\x63\x69\xcf\xc3\x53\xc3\x77\x61\xfe\x3f\x98\x25\x8b\xb4\xac\xc0\xc2\xc5\x0e\x00\x94\xfb\xa0\xa0\xee\x18\xaa\x3c\xfd\x80\xcd\x9a\x22\x85\x7b\xb8\xd7\xd3\x41\x44\x15\x2a\x3f\x03\xe9\x42\x7e\xc2\xa9\xb5\x20\xc8\xcf\xc2\xf5\x61\x63\x54\x52\x4c\xc5\xdc\x4f\x93\x8a\x73\xd9\xfa\xa8\x35\x2a\x70\xa6\x9e\x6c\x47\xd4\x0d\x46\xd9\x70\xec\xcc\xe6\xaa\xd6\x6e\x20\xad\xff\x34\xb8\xe7\xa3\x70\x3e\x68\xf3\x95\x6e\xfc\x28\x6c\xf8\xa8\xdc\xf2\x53\x70\xc5\x4f\xc5\x0d\xcf\xf1\x30\x28\xac\x17\xcb\xe8\x86\xb4\xa4\x6b\xd6\xbc\x6b\xef\xc7\x44\xfd\xc8\xac\xd0\x26\x90\xcf\xc8\x63\x82\xbf\xfb\x29\x3f\xc0\xaa\xe4\x3f\x61\xee\x9a\xe5\x09\xcd\xd5\x14\xda\x44\x42\xac\x3f\xae\x8f\xb0\xf6\x59\x9b\x98\xcf\x3f\x97\xc4\xeb\xcf\xfd\xa3\x68\xf1\xe1\x37\xb0\xe1\x81\x88\xbd\x71\x93\x7d\xbd\x2a\xa5\x82\xa3\x27\xc9\x25\x1e\xf3\x4b\xbf\xf0\xb6\x02\x70\x9b\x77\xa6\x14\x21\x36\x2f\x74\x0b\x48\x4e\xcf\xf1\x29\xcd\x40\x8b\x43\x7f\x5e\xaa\xe2\x08\x45\xad\x4e\x3b\x63\x82\xb5\xd5\x35\xd4\x0d\xbe\x4d\x3b\x6e\x7b\xe3\x95\x84\x79\xd7\x25\xed\xfc\x45\xc2\xde\x7c\xaa\xf8\xef\x62\xfa\xdb\x19\x98\x7b\x1b\x4e\x1f\x9f\xd5\x6a\xf6\xc7\xb1\xc8\x30\xcc\x10\x82\xa5\xf9\xb8\xc7\x2f\x13\x48\x46\x9a\xb7\x90\xde\xca\xaf\xa2\x73\x8b\xfa\xd9\x29\xc1\x92\xe3\xd6\xfd\x1c\x39\x88\xac\xea\x9a\xf5\x6f\xc6\x91\xff\x00\x4e\xfd\x65\x5d\x11\x5a\x97\x73\xae\xee\xc3\x27\xf3\xae\xb3\x1c\x8c\xde\x32\xbf\x26\x07\x8c\x8b\xdf\x86\x95\x3d\x7f\x9c\xc7\xaf\xe2\x99\xfe\x39\x13\x2a\x22\xfa\xc9\x60\x7a\x85\x6e\x0a\xd2\x5c\x07\x99\xf6\x28\x55\xcb\x53\xa9\xe6\xb5\x4a\x49\x6d\xf0\x52\xc1\x66\xaf\x59\x14\xcd\xb9\x7b\x1c\xd6\xf1\x14\x45\x07\x3f\x23\x18\xfc\xf0\x33\x71\xe7\x33\xac\x17\x8a\x8f\xd2\x6e\x62\xee\xb6\xe9\x74\x39\xb7\x44\xc9\xa6\x2f\xa7\x18\xe9\x81\xec\xa7\x25\xea\x60\xba\x14\xaa\xb1\x63\x32\xcd\xda\xc5\x69\x87\xce\xa8\xd5\x03\x39\xcc\xe7\x64\x40\x44\x35\xa7\x7f\xc2\xfe\xcf\x34\x60\x56\x39\x67\xcc\xdf\xaf\xb1\x6a\xe6\xa4\x8e\xcf\xa0\xdb\xc3\xb6\x2e\x69\xc1\x79\x6a\x65\x26\xa0\xd5\x3a\x8e\x42\x12\xe4\x4f\x71\x41\xe2\xb9\x35\x3b\x29\x9a\x2d\xd8\xb9\xaa\x6d\xc0\x2a\x28\x7f\x8e\xea\x9a\x7f\x2a\xa5\xcb\xef\x6c\xb6\xe9\x03\x8e\x6d\x54\xa6\x4a\x05\x53\xd4\xb1\x95\x1a\x9b\xba\x99\x4d\x57\x4c\xc0\xae\xed\x2f\x75\xaa\x83\x84\xfc\x55\x89\x2e\x50\x05\x79\x25\xe1\xa8\x23\x9c\xe3\x18\x61\x65\x65\xe4\x85\x7e\xa9\x5b\xb0\x4a\x24\x65\xaf\xfd\xd1\xbd\xa4\x64\xda\x8a\xa4\x8f\x9a\xda\xd0\x2a\xa8\xd6\x94\x5b\x99\x2f\x36\x0a\xd0\x40\xd9\xa9\xac\x41\x95\xc5\x8b\x9e\xaf\x60\xbe\x92\x8e\xfb\x6c\x3e\x22\x8d\x14\x52\xb1\x41\xdc\xad\x5f\xdb\x17\xbb\x96\x25\xf1\x83\x54\x6a\x49\x25\xa9\x40\xb8\x3b\x60\xa4\x5e\x32\xaa\xa6\x66\x16\x38\x38\x42\x34\xd2\x8b\x66\xce\x67\xc3\x67\x95\xa0\xeb\x09\xc6\xf3\x49\x7d\x9f\x04\x32\x59\x87\xf5\x47\x2a\x45\x12\xc4\x1d\x99\xcf\xd3\x42\x47\x7e\xa1\x92\x81\x95\x6c\xbc\x94\x61\x9d\x6e\xdb\x73\xf3\xc8\xd4\x92\x83\xd2\x4d\xc6\x25\xd9\x1a\xb9\xff\x96\xd5\xf7\x56\xb2\xe6\x62\xf4\xa4\x95\xf5\xa4\xe3\x66\x46\xad\x7c\xb4\xd2\xf9\x90\x4d\xc0\x22\x2d\xb7\x2c\x3a\x01\x17\x26\xd8\x62\x80\xee\x8a\xae\x27\x44\xfd\x7a\xb0\x46\x10\x22\x1f\xda\x38\x14\xce\x46\x10\x30\x57\x05\x3a\x08\x78\x68\x42\xbe\x51\x28\x9e\x79\x8e\x33\xff\x43\x89\x6d\x30\xad\x43\xa5\xa1\x32\xf3\x95\xe2\x18\x6c\x1e\x2c\x66\x45\x0d\xb9\x7b\xa5\x99\xde\x52\xea\x12\x71\xd1\x9e\xf2\xad\xcd\x2a\x7c\x5c\x37\xca\xfc\x64\x0d\xbe\x16\x6f\x81\xb9\xe2\x4f\xcd\x61\xcf\xaf\x2a\x56\xc9\x08\x06\x23\x71\x64\x80\xd7\xa1\x6b\x65\xd6\xca\xab\x64\x96\xff\xec\xe6\x52\xfa\x1c\x54\x3b\x7c\xd2\x40\x54\xf2\x64\xaa\xc2\xcb\x55\x77\x19\x44\xef\xd5\x8c\x90\x7e\xe8\x13\x91\x3a\xf6\x6d\x6c\x9c\xd8\x8d\x9e\x16\x81\xcb\x27\x5b\xb4\x4b\xda\x40\x1e\x43\x88\x2e\x3f\x22\x87\x50\xe2\x4b\x05\x36\x60\xd7\xf5\xaa\x4f\xe6\x7a\x27\xee\x4b\x1f\x09\xf7\x6c\x5d\x3b\xb6\xa6\xcc\x60\x27\xb9\xd4\x17\x88\xa0\x4b\xf1\x5d\x66\x57\xf1\xc5\xd9\x5e\x18\x37\x20\xe1\x6c\xf5\x08\xbf\x8f\xe3\xc9\x7a\xdb\x1f\x97\x81\x6d\x33\x7f\x83\xec\xa6\xc8\x32\xab\x27\x3d\xc1\x40\x88\x68\x42\x9d\xc1\x55\xa6\x9d\x00\xc9\xf5\xb2\x9d\x0b\x50\x42\x5e\xad\x48\x12\xb0\x95\xe7\x80\x9c\x15\x8b\xb9\x3f\xa3\x98\xb7\x90\x8b\xbd\xda\xa2\x65\xc8\x45\x40\x63\xda\x9d\x08\xd9\x8b\x91\xc5\xf4\xe6\x6c\xb4\xe4\x15\x6c\x1f\x14\xbc\xae\xa8\x00\x80\x48\x0d\x37\x62\x85\x84\x96\x5e\x34\x4c\xb9\xb4\x23\xe6\xc3\x45\xc7\x9a\xb0\x7c\x5a\x21\xa2\x56\x05\xe1\x2f\x56\xd3\x91\xda\xf1\x6a\xe3\xa8\x7a\x60\x55\x23\x97\xfe\x45\x34\x97\x5e\x92\x35\x36\xdf\x8b\xe6\x13\xea\x43\x54\xea\x0a\x8c\x08\xcf\x76\xcd\x6c\xb2\xe9\x64\xd9\x6b\x4b\x8a\xe2\x09\x54\xe3\x65\xf5\x3c\x48\x82\x76\x94\x0a\x71\xb0\x8d\xeb\x30\xa8\x92\xf2\x48\x60\xa6\xfe\xd9\x7d\xb7\x16\xf9\x60\x0e\x5b\xb6\x65\x3f\x97\x7a\x5c\x93\xb7\x95\x68\xbf\xbe\x21\xc8\x4c\x45\x1b\x0e\xbf\xb8\xc2\xca\x51\x4a\x3c\x68\x32\x1e\xd3\xa1\x86\x83\x4a\xb6\xf2\x69\x1e\xf2\x5f\x2e\x3a\x2b\xa0\xfb\x38\x64\xce\x23\x17\x6d\x34\xef\x56\xc4\x9d\x57\x44\x06\xa5\xbf\x28\x99\xae\x65\x1e\x25\xaf\x1c\x35\x3d\xed\x7d\xcf\x4a\x27\x2b\x9f\x34\x3e\xe5\xe8\x7f\xa6\x17\xd7\x74\x5d\xdb\xc3\x95\x0c\xd6\x2f\xe1\xea\x14\x72\x0b\xd6\x15\x56\x3f\x3f\xa5\xcd\x76\x6d\x8d\xb2\x39\x18\x09\x71\x46\xa1\x83\x2c\x99\x08\x12\x1d\xe2\x15\xac\x2b\xe6\x8f\x43\xe2\x2d\xa5\x05\x18\x99\x07\x26\x54\xcb\x19\xff\xd7\x50\x09\xa0\xd2\xa7\x58\xa9\x95\x01\xef\x19\x21\x00\xe3\x3e\x26\xca\x1a\xa7\xd8\xaa\xa0\x06\x41\x0b\xf8\x15\xdd\x4e\x90\x40\x69\xde\x11\x29\x30\x33\xec\xaf\x4c\xa4\x23\x82\xe6\x99\x38\xfd\x98\x91\xf1\xe1\x0f\x21\x10\x47\xe9\x42\x30\xe3\x35\x78\x8b\x30\x13\x16\xef\x6f\x99\xfe\xa2\xa3\x34\xc1\xf1\x6c\x05\xe5\xa6\xf7\x4d\x43\xbd\x3e\xe0\x0c\xa8\x67\x51\xe8\x48\xa5\x5a\x34\xa0\x87\x88\xa4\x0a\x09\xbe\x94\x92\xec\xbe\xfd\x4d\x51\x96\x9d\x2a\xcd\x6d\x67\x16\x6f\xde\xcb\xaa\x6a\x33\x3d\x98\x87\x17\x45\xe7\x2c\x8a\xb5\xe3\xc6\x90\xf8\xc4\x84\xdc\x5e\xf0\xed\xfb\x85\x26\xbb\x75\xfd\xe6\xf1\x62\xf5\xfd\x3c\x0a\xa5\xa0\xd9\xce\x96\x55\xed\x41\x98\x15\x4a\x5a\x80\x26\x5b\x87\x0a\x31\xd5\xda\xa5\x76\x5f\xd2\xca\xc9\x29\x17\x17\x28\xa7\x58\xfa\x23\x86\x51\x72\x5e\xde\xfc\x66\x1c\x35\xd1\x63\x3c\xb2\x2a\x26\x6d\xaa\xc9\xee\xed\x19\x6c\xa8\x2b\xe7\xad\xf4\x2c\xdb\xda\x70\x0d\xb3\xfa\x0b\xd5\x8c\x22\x4d\xc6\x11\x2b\xea\x54\xd3\x2c\x96\x7b\xfb\x3f\xa8\xd7\xa7\x02\x51\xf0\xa4\x00\x63\x43\x4f\x13\x81\xc7\x8c\x6a\x46\x97\x8f\x6b\x69\xc6\x1b\x0b\x71\xa6\xbd\x7c\xe1\x3f\x38\x05\x90\x65\xda\x7b\x21\x2a\x0a\x0f\x2a\x51\xa9\xee\xb0\x85\x2a\x68\x41\x27\x74\x96\xce\xa8\x36\x25\x18\x6b\x53\xd9\x4d\x30\x3c\x4a\xf3\x25\x36\xd9\x79\x49\xb9\x06\xcf\x03\xc0\x9c\x07\x9b\xfe\xd0\x49\x90\xdf\x3f\x16\x74\x46\xf2\x50\x34\x9b\x07\xa7\xcc\x53\xf2\x4f\xf0\xc8\x7d\xaf\x19\xff\x3c\x60\xc9\x25\x87\x6d\x38\x64\xa0\x36\x6f\xeb\x0c\x95\x9d\x13\x2b\x55\xb3\xad\x4e\x72\xa3\xa2\x10\x86\xe9\xe4\xa9\x75\xae\x9a\x7f\x26\xa3\x74\x96\xfe\x68\x66\x7f\x2c\x49\x5b\x42\xa7\x61\x66\xdc\xad\xca\x57\x7e\xa0\x29\x75\xbc\x69\x23\xa4\x22\x77\x15\xca\x2b\x16\xff\xeb\x27\xdd\xca\xba\x47\x0a\x63\xc0\x71\xb0\xc6\xc1\xee\x80\xa4\x09\xd4\x25\x7a\x61\x83\xc6\xae\xf3\xba\x46\x5b\x92\x9b\x62\x1d\xe9\xf0\x34\xc4\x5a\x97\x5b\xb0\x1f\xd4\xba\x35\xf8\x96\xbe\x4f\x71\xfb\x2d\xbf\x6a\xfb\x7f\xbf\x6c\x92\xb0\xf4\x63\x3c\x94\x69\xfd\xb0\x22\x0f\x2c\xb5\x4d\xc5\xb6\xef\x5f\x56\x08\xbf\x39\xa3\x81\x8e\xad\x28\x74\xbe\x56\xfb\xef\x23\x9f\xb5\xfa\x48\xa6\xdd\x47\xf6\xda\x7c\x64\xae\xe5\x73\xcf\x3a\x68\x96\xca\x4c\x34\xb1\xa7\x75\xbc\xd0\x0e\xd3\x72\xb1\xe7\xfd\x6c\x9d\xab\x54\x47\xc7\x63\x93\x5f\x16\x45\x16\xa4\x5f\x7e\x91\xfd\x87\xb6\xd1\xf3\x5d\x03\x44\xab\x14\xad\x03\x2e\x32\xd3\xdf\xa5\x6d\x2e\x76\x4d\xe8\x6d\x47\x83\x5d\xa9\x54\x95\xc4\x97\x8c\xce\x83\x0c\xbb\xf7\xd9\xa8\x47\x21\xb1\x38\x7e\x93\x6e\x02\x96\x29\x59\x49\x86\xcb\x80\x83\xa2\x47\xd7\xc2\x12\x50\x47\x92\xc2\x79\x09\x42\xf8\x55\x47\x8c\x56\x80\x2c\x9d\x31\xc6\x12\x81\xba\x68\x42\x64\x0e\x22\x5b\x0d\x36\xf1\xd9\xd3\x65\x01\x3e\xe7\x7a\xbc\x25\x11\xf9\x69\x91\xff\xb9\xe4\xad\x8c\x44\xa9\xb6\xb5\x0f\x0a\x79\xc7\x1b\x97\xd1\x4a\xb8\xeb\x4f\x38\xe3\x46\xb2\x10\x08\x2d\xf2\x8b\x44\x0f\x1c\xe2\x4f\xc3\xed\x5e\xb1\xa5\x81\x5e\xf7\x85\x77\xfb\x72\xc4\x6a\xc9\x00\xf1\x73\x0e\x0d\xa7\x01\xe6\x14\xfd\x2f\xc1\x84\x60\x1f\x34\x74\x90\x52\xd1\xd7\x60\x46\xff\x8c\x11\xa3\x67\xb8\xc3\xe8\x7b\xdc\x67\xf4\x39\x38\x19\xfd\x8c\xf1\xd1\xf6\x09\x7b\xd7\x9f\x39\x80\x6d\x28\x21\x1e\xbc\x54\xcd\xce\x3a\x92\x82\x71\x79\x62\x92\x70\xba\x39\xa1\x65\x87\xcd\xa1\x13\x0b\x90\x66\x3a\xce\x6e\x40\x7b\xee\xd7\xcb\xf1\x50\xaf\x76\xa9\x62\x71\x1e\x70\x55\x19\x5c\x8b\x4b\x86\x00\x41\x0b\x92\x85\x9f\x1e\x56\x76\xf6\x6b\xaf\x8b\x76\x46\x19\xa5\xab\xb9\xdb\x5e\x9f\x79\x3e\xab\xba\x7b\x9c\xa1\x51\x75\x4e\x18\x9f\xec\x7d\x65\x31\xb8\x2e\x84\x2c\x94\xbd\x3a\x2e\x38\x1e\x07\x85\x68\xfe\x67\x30\xac\x25\x7f\xb3\x98\x2b\x39\x54\x9d\xdc\x9b\x9a\xe6\x2e\x50\xd6\x5a\x09\xc9\x96\x41\x2e\x71\x6d\xe5\xd4\xda\x90\x56\x29\xda\x3c\x94\xcb\x9b\xa9\x51\xb3\xff\xee\x70\x18\x70\x4f\x1b\xb6\x05\x85\xad\xe5\xf0\xa8\x22\xc9\x41\xde\x71\x57\x4a\x09\x7f\x29\x6a\xdd\x62\x71\xb5\x72\x63\xcc\xb6\xb8\xd3\x7e\x99\x44\x9f\x37\x40\xc7\x41\x22\xcf\x80\x22\xbf\x4e\x9c\xd8\xa7\xf1\xf8\x44\x26\xee\x58\x5e\xab\xf7\xb8\xf5\x62\x8e\xce\xc2\x49\x7f\xdf\x10\xb1\x81\x23\x07\xd8\x04\x10\xd6\xf3\xe4\x26\xa1\x56\xa0\xda\x0f\x3a\xb1\x2e\x6c\x6b\x80\x0b\xdb\xb7\xc8\xef\x9a\x7d\x26\x8c\xa7\x0d\x5a\x6b\x9d\xef\xf0\x84\xfb\xff\x93\x02\x68\x6e\x00\x08\xd0\x4d\x59\x00\xbe\x5a\x52\x3d\xf0\x38\x6b\xc0\x70\x9d\xd8\x93\x44\xf2\xef\x3d\x73\x3d\x76\xe6\xcc\xf2\x13\x51\xb6\xb6\x25\x80\xec\xe1\x5f\x0f\xae\x2f\x0a\x37\x30\x19\x2d\xf1\x61\x53\xea\x87\x81\xe5\xb6\x06\xe1\x3f\x07\xf0\xfd\x61\x5a\x99\xcf\x44\xbc\xf8\xdc\xb8\x2e\x0c\xe4\xf6\x3b\xdb\x45\xab\x45\x02\x8b\xc5\xda\xc0\xb2\x63\x7a\x88\x34\x58\x04\x8e\xc8\xdf\x6c\xc7\xff\xc5\xf1\xf0\x2f\xeb\x7c\x59\x34\x77\x6a\xaa\xd2\xfa\x9f\x28\x04\xeb\xe4\x76\x05\x1a\x2e\x2b\xd9\xa6\x02\x97\x44\xdc\xb0\x66\xae\xad\x36\x59\xb8\xe4\xe1\x6f\xb1\x2e\xdc\x83\x59\x6f\x9b\x12\x55\xc8\x4d\xb6\xed\x60\xe3\x20\xa6\x62\x4a\x3a\x5a\x2d\x27\x1c\x0f\xd6\x08\xe4\x78\xd8\xcd\x61\xd8\xe1\x49\x8f\xa4\xf2\x5c\x9d\x05\x26\xb3\x0a\x2b\xd6\x71\x01\xe5\x7c\x3c\x91\x29\xdc\x0d\x40\x12\xe5\xd2\x72\x64\x53\x6b\xde\x38\x35\x76\x9d\x86\x28\xcd\x42\x95\x29\xf2\x2a\x73\x04\x9d\xc4\x6e\x60\xce\x15\xf1\xc3\xc8\x52\x10\xe6\x56\xfd\xb6\x42\x43\x4d\x2c\x83\xe0\xed\x86\xd8\x7d\xff\x1f\x88\x91\x3e\xdf\x4c\x26\x3e\x9d\xc7\xf9\x0e\xcf\xe3\xfe\xe3\x0a\x34\xc0\x3d\xb9\x73\x26\x95\x4d\xf2\x5c\xfd\x95\x7e\x5d\x43\x05\x7f\x27\x0f\x61\xdd\x51\x42\x92\xdd\x83\x7f\xc2\x5f\x92\x93\x34\x0e\xda\x25\x73\x2c\x66\x19\xc9\x53\x03\x52\x92\x28\x79\x21\xa9\xdd\x4b\xb3\x92\x2b\xeb\xca\xbf\x04\xee\xc8\x09\x34\x7d\x27\x4b\xe4\xe1\xcd\xb5\xfe\x3a\x64\xbd\x40\x65\x95\xea\x11\xb4\xba\xf1\xd8\x92\x90\xdb\x06\x8d\xc4\xca\x09\x3f\xa5\x29\xcf\x34\x98\x95\x41\x6b\x81\xa4\x1b\x44\xb5\x30\xba\xf6\x71\x64\xa7\x02\x3f\xc1\xe5\x84\xf7\x99\xcc\x35\xba\x3d\xda\x2f\x52\x37\x21\x61\x39\xad\x88\xec\x52\x5a\xce\x13\x52\x95\x91\xbf\xdf\xeb\x06\x86\xa3\xb1\x2d\xbe\x23\xa3\x48\x4c\x93\x8c\xb9\x4d\x29\xce\x1d\xbc\x46\x65\x47\x3b\xa1\xca\xe4\x30\x02\xcc\x39\xc4\x13\x96\x79\x0b\x0a\xc2\xb4\x8d\x0c\x59\xef\xd2\xdc\x1d\xd9\xe2\x7e\xda\x4d\xf7\x94\xcc\xda\xee\x73\x61\x9e\x77\x1e\x4b\xa4\xd9\x2b\xb0\x98\x9c\x57\xd2\x0a\x0a\x26\x57\x91\x4b\xb5\x0c\x30\xe3\xb2\xec\xb3\x94\xf9\xb1\x72\x0e\x54\x9d\x49\x24\x1d\xaf\xc7\x8d\xea\xf9\x9b\xb5\x8b\x9e\xca\x7e\x30\x19\xee\x15\x2a\x79\xd7\xa5\x5f\xc7\x5b\x6a\x71\xc8\xee\x60\x59\x8d\x32\xa2\x10\x5d\x19\x13\x5c\x74\xd5\x85\x1a\x96\x06\x8f\xcb\x0f\x15\xe0\x8d\xea\x24\xf8\xda\xe2\x44\xd7\xc9\x32\xba\x64\x3f\x96\x8b\x45\x69\x5b\x19\xda\x85\x40\xb8\x9b\x1d\x09\x66\x1a\x67\xbc\xeb\x9a\xda\x44\x5e\x5b\xd9\xc3\x49\x73\x35\xc5\x2e\x0f\x88\xfe\xbc\x41\xac\x51\x4b\xc2\xce\x9b\xa9\xe2\x1a\xf8\x0a\x66\x82\xc4\xb6\xf0\x08\x07\xe6\xf9\x4e\xbc\x3e\xb1\x23\x4f\xe4\x45\x66\x26\x9f\x66\xf6\x76\x0f\x4c\xde\x21\x81\xa1\x98\xba\xe1\xdd\xe0\x68\x4f\xc0\x97\xb9\x2b\x32\x54\x3d\x62\x1a\x99\x00\xac\xc1\xa6\x36\x31\x5b\xb6\xb4\xda\x1b\xac\x1c\xc6\x2b\x91\x4d\x3a\x32\x0e\xce\x08\x7f\x0b\x67\x86\x64\x04\x63\x6e\xa7\x32\x17\x9b\xac\xa1\xa4\xe5\xc8\x2b\x7b\xce\x08\x4e\x28\x39\xc9\x20\xb7\x63\xe2\x59\xbc\x13\x8e\xdb\xf4\x28\x22\x97\x5e\x98\xc4\xc6\xad\xd0\x53\x21\x57\x3e\x3d\x65\x46\xc9\x23\x6f\x4f\x7a\x83\x67\x86\x98\x6a\xa8\x36\xd3\xa5\xe1\x09\x16\x40\x59\x74\xe9\x3e\x77\x99\xad\x99\x70\xce\xc9\xd8\xee\xc7\xb0\xac\x8b\x41\x07\x65\xd2\xae\x93\x7f\x17\x53\x7b\x08\x95\xac\xf8\xb5\x16\x36\xf7\xa9\xde\x54\x95\xef\xac\xf6\x6d\x32\x76\x53\x5d\x88\x50\x7b\xe5\x1a\x79\x0c\x8b\x07\x25\x7f\xe1\xcd\x26\x64\xca\x2f\xb1\x1f\xb2\x62\x60\xb4\x0b\x4f\x81\x15\xf4\x54\x83\x39\x51\xbc\x60\x31\x75\x42\xf1\x8f\x53\x2a\x62\x13\xd0\xa3\x72\xe3\xc4\x3f\x8c\xa3\xd7\x35\x1b\x62\x16\xa9\xb8\x7a\xa0\x3b\x6a\xfb\x85\xa3\xbc\x00\x8d\xa4\xac\x61\xea\x3b\x43\x08\x10\xf3\xba\xd2\x19\x98\x5a\xff\xd2\x1b\x09\xf3\x7c\x94\x3a\x30\xf8\x4b\x46\xd8\x48\x9f\xd3\x0e\x6f\x4f\xc8\xe1\x52\x96\x9f\x32\xb5\xf6\xba\x4c\xf4\x96\xfe\x9e\x30\x92\xa8\x6b\x32\xc3\x2b\xb8\xa4\x58\x2e\x9d\x41\x94\x45\x84\xf3\xb2\x14\x29\xa8\xeb\x6a\x67\xa5\x6e\xf9\x42\xd8\xd0\xa4\xa4\x4c\x62\x0d\x81\x7d\x09\x6f\x20\xe6\x19\xa4\xc5\xca\x74\xe9\xfa\x04\xa5\x26\xd8\x44\xd5\xf3\xcc\xc8\xca\xda\x17\xc8\xfe\x11\x0d\xc1\xc2\x5f\x37\x54\xa1\x45\x8d\x25\x5c\x51\xa5\xc1\x8b\x00\xd6\x2c\x69\xaa\xea\x1a\xbe\xb5\x6e\x6b\x27\x50\x65\xa6\x54\xef\x1d\x1f\x99\x68\x55\x7b\xcc\xf5\xc4\xf5\x40\x5f\x6f\xd7\xd7\x56\x5b\xea\xde\x7d\xbf\x32\x0d\x9f\xc6\xc3\xb3\x43\x12\x45\xcf\xc5\xa6\x1c\x29\x0e\xb6\x8e\xa6\x7c\xe0\xde\x6c\xf6\x36\xb4\xac\xd8\x29\x65\xe3\x95\x7e\xb9\xe1\x0d\xd7\xe9\x26\x85\xa4\x52\x05\x39\xe4\xc1\xbb\x98\x0f\x15\x77\x14\x64\x55\xdd\xc5\xb9\x1f\xfa\x93\x9d\xc0\xb6\xa1\xf7\x00\x23\x02\xf5\x94\x41\x1c\x4c\xd3\xe2\xf4\xe8\x9f\xa9\xc5\xad\x79\xeb\xb8\x35\xaf\xe9\x4b\xe7\x01\x71\xda\x6c\xbd\x7c\x54\x72\xca\x96\xb6\x5a\x62\x91\xca\x16\x5f\x26\x82\xce\x1c\x2f\x2b\xac\xef\xaa\x98\x52\x9e\xf7\xe3\x98\x68\x8f\xf1\x76\x79\x39\x3a\x13\xba\x03\x97\x6d\x20\xe3\x00\x6a\x00\xb2\xc9\x05\x1e\xb9\x94\xef\x76\x08\x68\xd3\xa9\x11\x3c\x5e\xf6\x74\x3b\x69\x26\x8b\x6b\x1b\xd4\x3f\x61\xe4\x74\x81\xab\xa7\x16\xd4\x4a\xf6\x0a\x95\x88\x88\xfa\x73\x8f\x33\xb4\xca\xdf\xaa\x03\x71\x39\x37\x05\x34\x51\xda\x68\x47\x5b\xcc\x2b\x9e\x87\x62\xf1\xbe\x58\xd0\x72\x93\xf8\xa2\x7f\xd3\xfc\xb2\x2a\xda\x77\xa8\xdc\xfe\x0b\xb0\xab\x2b\x17\x5c\x5c\x29\x32\xf9\xa2\xed\x7d\x6b\x72\x72\x73\xc5\xbb\x72\xfc\xd5\x57\xf5\xd8\x57\x8f\xde\xd8\xc4\xdd\x71\x72\x5f\xba\xed\x4e\x0f\x8a\x03\x20\x5b\xf0\xec\x0f\x58\xd2\xf5\x75\x78\x00\xd9\x72\x9d\x7a\xb4\x66\x05\x8c\xeb\xc4\x41\xbb\x0a\x47\xb5\x19\x32\xf8\x35\x46\x0b\x55\x5a\x47\x5f\x2b\x64\x8b\xfe\xd8\xfb\xe7\x60\xcc\x4b\x7d\x3e\xad\xe7\xab\x01\x1e\x7b\x51\xc8\x0e\x49\x32\x61\x7b\x2b\x9c\xc0\x51\x9b\x1a\xb1\xa7\x04\xcb\xba\xf5\x76\x79\xab\x1f\xaa\xf8\xec\xc9\xe3\x7a\x3b\xdf\x0a\x87\x70\x56\xb4\x0c\x2a\x61\xdc\x53\xdd\x44\xe3\x6d\xe2\xf2\x98\xd4\x63\x01\xc0\xf0\x4d\xf0\x82\xc1\x2b\x61\xbe\x12\xf8\x61\xbc\x12\xea\x6b\x46\x3c\xc2\x65\x9e\xad\x84\xe2\x62\xbf\x45\x65\x99\xa6\xf7\x50\x62\x41\x39\x6c\x69\xf7\x19\x17\x5e\x74\xfe\x61\xcb\x68\x8d\xef\x77\xc1\x40\xfd\xd9\x31\x79\x21\xa6\x77\xc3\xbb\xe6\xd5\xbc\x18\xd3\x6e\xf0\x9f\xdd\x94\x1c\x78\x06\xb1\xc4\xb1\x10\x9f\x17\x58\x15\x83\x26\xee\x71\xcf\x41\x64\x01\x08\x60\xc6\xbd\xa3\x94\x35\xb7\xae\x99\x0e\xb6\xad\x0b\x5b\x55\x64\x2c\xd1\xf3\x96\x25\x69\x5e\xb3\x83\x11\xa7\x01\x2e\xa2\x56\x5d\x62\x95\xd0\xb7\xe2\xbd\x4f\x01\x5d\x9a\x2e\x59\xbc\xc8\x2c\x83\x17\xc3\x95\x0f\xb7\x69\xf1\xe1\x5a\x03\xd3\xcf\xba\xe9\x55\xf4\xb9\x92\xea\x05\x3a\xcc\xae\x15\xf6\xd7\x67\x7f\x89\xd3\x69\x09\x4d\xd9\xcc\x60\x48\x74\x2b\x0a\x30\xa2\xb5\xa2\xe7\xba\xa1\x55\x36\xb0\x26\x3d\x13\xc0\xa4\x37\xb4\xb3\x66\x49\xa2\x5d\x79\xda\xeb\xdb\x93\xd6\x00\xa8\xed\x80\x06\xb9\x26\x48\xbc\xa1\xa1\x97\x0d\x5c\x64\x90\x45\xc6\x39\x23\x33\x24\x22\xcb\x66\x72\xfc\xe8\x04\x2c\x27\x1b\x70\x01\x96\x72\x3f\x07\xac\x58\x6f\xed\x95\x4e\xbd\x86\x45\x83\xc3\x2a\xfa\xf9\xbd\xd0\xe2\x81\x37\xcf\x63\x11\x0f\x4e\x1a\x64\x25\xe2\x2f\xea\xee\xc0\x56\xe2\x2e\xcc\xf7\x99\xf2\x05\x33\x6b\x70\x7c\x20\x80\x89\x3e\xc2\xf2\xe0\x72\x07\x26\x3d\x17\x07\x98\xd1\x6c\x8b\x17\x7a\x4d\x24\x8e\x96\x31\x02\xf6\xcd\xb3\x37\xbf\x98\x99\x37\x2b\x59\x30\xad\x33\x3c\x14\x17\x21\x5b\x9f\x97\xa4\x71\xca\xcf\x23\x28\xdf\xb5\x3b\x28\x12\x0c\x26\x79\xc9\xa6\x9c\xba\x7e\x41\xb2\xc7\xa9\xeb\x68\xb6\xfb\xb2\xfb\xaf\x53\x8c\x6a\xfa\x4a\xe8\x79\xee\x6a\x4d\x25\x86\x4a\x48\x9c\xd4\x62\x3f\xc8\xfb\x40\x55\x7b\xf5\xce\x62\xed\xd5\xd6\x37\xe9\x1a\xac\x2c\x48\x65\x53\x6a\x6e\x92\xc5\xf7\x56\x84\x41\x92\xea\x78\xed\x41\x77\x15\xe5\x4b\x6f\xc2\xb3\x4b\x55\xdb\x8c\x53\xf8\xf4\x74\xf5\x7f\x4a\x5f\x5c\x83\xb1\xa5\x37\x6a\xfc\x00\x6d\xfb\x29\xc9\xac\xf8\x90\xe8\xae\xc3\xaa\x5b\x10\x85\xb7\x6e\x5f\xbb\xb1\xba\x70\x57\xb1\x38\x52\x22\xe6\x2b\x14\x8b\xd3\x9a\x11\xd3\xfb\xf6\x0f\x94\x6c\x71\xef\xf7\xae\x6e\x6f\x7d\xda\x34\xd1\x61\xf5\x60\x70\xd8\x6f\xbe\x11\x2f\xc9\x67\xf1\x67\xef\x4f\xc7\x0a\x36\x73\x3f\xe9\x0d\xb8\x69\x01\x40\xf3\x77\x69\x35\x42\xcf\x79\xcc\xbb\xe0\x10\xe7\x72\x30\xe1\xbd\x48\xe9\x58\x3c\xbe\xbd\xd6\xbd\x45\xc9\x95\x0d\xed\x57\x4e\xbd\x2c\xca\x52\xe5\x2b\x48\x15\xa1\x09\x2a\x04\x0d\xed\x0f\x7e\xdf\xfd\x0e\xfd\xac\xe7\x18\xd0\x7d\xf1\x87\xd8\x36\x61\xd8\x04\x08\x7f\xbb\x71\xae\x63\x3c\x7d\xb2\x10\x09\xb8\xfe\xdd\xeb\x71\xb4\x9c\x30\xe9\x04\xc7\x5b\x55\xdc\x82\x28\xd8\xca\x4c\x26\x4f\x33\xd7\x9d\xc9\x09\x98\x27\x65\x07\xa9\xc7\x3c\x8f\xbb\x91\x3f\x9a\xe4\x8f\x79\x9f\x76\x21\x7d\xe0\xa8\x5e\xa1\xb8\x37\x92\xc0\x69\x77\xf7\x3a\xdf\x49\xfb\xa9\x7f\x4c\x3b\xfe\xec\xde\x6b\x05\x70\x40\x71\x71\xa9\x9e\xe6\x3c\xe4\x9e\x73\xb8\x5a\x3a\x42\x5f\xe6\xaf\xec\x84\x7f\xe6\x72\x90\x1b\xf6\xb1\xf7\xa9\xc8\xb1\xe8\x6a\xc4\xd4\xc2\x54\xd8\xda\x07\xac\x3b\x93\x46\x61\xad\x01\xbb\xa4\x0e\xf2\x68\x19\xb7\x8b\x22\xc3\x05\x33\xc0\x9c\x98\x0f\x05\x8c\x15\xbb\xe4\x81\x8c\x38\x54\x7b\x2d\x06\x65\x5c\xfa\x80\x27\x29\x12\xf1\x14\xb8\x69\x2e\xa9\xc0\x93\x6b\xc0\x38\xa5\x8f\xdf\x05\xdd\x88\x8c\xc4\xc4\x96\x13\x0d\xac\xea\x5e\x86\x0d\xd1\xf8\x8a\x6e\x20\x60\xf7\x32\xf1\xb5\x22\x23\xad\x46\x25\x19\xfb\x0e\xfb\xb6\x4d\x1b\x09\x00\x23\x0d\x53\x36\xa0\xb3\xef\x6c\xec\xee\x71\x1c\x78\x13\x99\x77\xe7\x7e\x36\x7d\xaf\x59\xa3\x47\xa9\x4d\x64\x94\x29\x97\x77\x09\xa3\x49\x56\x9e\xc7\x2d\x5f\xd5\x77\x6a\xbb\x70\x27\xfa\x1b\xb4\x7d\x22\xdb\xde\xa8\x4a\xd3\x90\x36\x45\xa4\xb1\xfc\xb2\x4f\x95\x50\x55\xac\x3a\x19\xc4\x64\x21\xc4\xc8\x95\x7d\xe9\x1c\x47\x57\x05\xc5\xba\xf4\x1f\x9d\xb6\x9a\xe1\xe7\xee\x55\x6c\x4e\x22\xe9\xba\x6b\x36\xee\x5c\x83\xab\xf3\xef\xb3\xad\x8b\x3c\x1d\x66\x5b\x08\xa2\x19\x35\x2f\xf3\x73\x7d\xd0\x0e\x19\xd5\xbd\xe2\xa8\x21\xed\xed\x21\x95\x87\xdb\x19\x50\xa7\x04\xcd\x2d\xa3\xd9\xb6\x42\x3a\x36\xd0\xce\xb5\xb1\x7c\xef\x12\xcd\x99\x57\x66\x17\xc1\x67\xca\x0f\x2a\xc5\x8c\x19\x7f\x13\x92\xb3\x43\x43\x34\x79\x37\x6e\x5f\x39\x28\xdf\xc5\xd3\x6b\x81\xf4\x30\x7f\x72\x60\x7d\x11\x14\x2c\xaf\x34\x70\x0a\x3e\xce\x33\x95\xdc\xd1\x23\x2c\x51\xcf\x68\x03\x9b\x14\x06\x05\x6d\x54\xd4\x66\x74\x1e\x9d\x63\x04\x14\xfd\x96\x08\x47\x0c\x83\x71\x3c\x55\x0f\x6a\xcd\x8c\x22\x0d\x60\x1b\x1a\x7f\x74\x88\x47\x83\xa6\xd0\xc2\x23\xc9\xe4\xd5\x4f\x43\x85\x73\x6f\x7d\xeb\xc8\xa4\x0d\xc1\x03\x56\x6b\xf1\x67\x84\xd0\x20\x7c\xf6\x57\xc4\xe0\x8c\xff\x2c\x9a\xb7\xed\x1b\x9f\x27\x5f\x9d\xbc\x3b\x5d\x6a\x9f\x63\x99\x72\x83\x02\x08\x2b\x40\xfd\x0e\x29\x6f\x04\x7a\x10\xd9\x15\xe6\xb1\xe8\xd0\x43\x4a\x0a\x81\x0a\x46\xaa\x46\x46\xac\x66\x10\xae\x28\x4d\xcd\x1f\x71\xb6\x72\x28\x0d\xde\xeb\xf1\xf8\xa0\xbb\x3f\x73\x56\xd6\x19\x53\xd0\x85\x47\x9a\x23\x0e\x9b\x82\x35\x2d\x02\xcd\x25\x5b\x64\x61\x9c\xb1\xcc\x88\x96\xd1\x53\x6e\x1e\xbd\xc0\x22\x6d\xb6\xc5\x98\x8f\x37\xdb\xd1\x49\xbc\xd2\x1c\x8d\x13\x28\xdc\xf4\x6f\xa2\x05\x84\x87\x3d\x31\x8c\x1a\x7e\xd9\xd6\x08\x86\x0a\x2a\x2f\x99\x75\x40\x7a\xe6\x64\x4a\xef\xf8\xcf\x0f\xfa\xb2\xa3\x40\x33\xa4\x20\xb9\x90\x3c\xa8\xfb\x12\xa5\xe9\x73\xfe\xde\x84\x67\xeb\x2b\x1f\x53\x21\x5e\x65\x35\x36\x76\xf7\x4c\x01\xcc\x14\x96\x55\x31\x8a\xbf\x05\xa1\x10\x59\x04\x6d\x4e\xd6\xc1\x1d\xff\x37\x4b\xb4\xdd\xdf\xea\xc6\x33\x87\x58\x9f\xf6\x92\x08\x38\xab\x50\xde\x21\x64\x01\xf5\x02\xc1\xcb\x37\xd4\xf8\xe5\x28\x10\x39\xb2\x0e\xde\x32\x43\xe9\x63\x15\xae\xa8\xae\xf3\x72\x7e\x23\x0c\xab\xe0\x26\x6f\x47\xc8\xa0\x1a\x48\xd7\xad\xa5\x45\xa0\x73\x05\x19\xec\x14\x8d\x47\xea\x4c\xb2\xba\xda\x86\x2e\x00\x18\xac\x7f\x54\xc3\xa9\x23\x44\x17\x58\xdc\xba\xc8\xef\xcb\xbd\x5a\x7b\x5c\xa3\x07\xd4\xe3\xa9\x21\xf2\x30\x7e\x7d\x61\xbc\x9c\x0d\xe5\xb3\xc8\x43\xf9\x82\x98\x86\x89\xe4\x2b\x8c\xbf\x4e\x9a\x89\xa0\xd1\x14\x98\xce\x9c\xd6\xf3\x2a\x60\x58\x4f\xc5\xec\x28\x85\xb7\xbe\x14\xaf\x09\x4d\xfe\xf5\x25\x2d\x41\x83\x20\xae\x26\xde\x29\x14\xf4\xb6\x0b\x34\xee\x48\x25\x4f\x81\xc2\xcc\x7d\xa1\x05\x18\x1a\x81\xf7\x00\xbf\x5d\xd1\x54\x37\x0d\x24\xe4\x8d\x17\x01\x7b\x53\x26\xaf\x0c\xad\xd3\x67\x5a\x32\x62\x42\x89\x39\x42\x49\x20\xef\x83\xb2\xcb\x6b\xd7\x24\x44\x88\x5e\x3f\x5b\xfd\x9b\x47\xd0\x97\x07\xe4\x10\xfc\xf3\xfe\xd3\xa3\x2f\xfc\xe1\x04\x18\xa5\x0c\xc2\xad\xe3\xe7\xdf\x69\xa5\x4e\x58\xba\xba\x09\x91\x19\x7c\x2c\x25\x14\xbf\x44\x8c\xea\x6d\x12\xb0\x59\xc3\x4f\xb0\xab\x61\x7a\x38\xd6\xc6\x0b\x09\xff\xd9\x5e\xaf\x60\x62\xd9\xa6\xd3\xc9\x8d\x13\xfc\xbe\xfd\x4a\xeb\xcf\x1c\xbe\xee\xd2\x24\xbd\x3c\x38\xe6\xed\xf6\xbf\x87\xff\xd8\x71\x30\xbd\x55\xef\x76\xc8\xd1\x58\x02\x67\x15\xc5\xbe\xb3\xae\xa8\xc8\xc4\x80\x3d\xf1\x4f\x5d\xb5\x7c\x2a\x10\x35\xa6\x22\x49\xdf\x8f\x84\xa2\xb8\x2e\x37\x6a\x51\xda\x63\x85\x14\xc8\x46\x5c\x38\xac\xa9\xf8\x3d\x78\x37\xdd\x7a\x95\xc4\x12\xe7\x4d\x58\x5d\x97\xe1\xda\x94\xbf\x30\x78\xa3\x4d\x6c\x31\x06\xd6\x35\x1a\x27\xe7\x55\xe7\xd3\x30\x90\xdd\x3a\xa5\x1e\x8f\x96\xb8\xa9\xe7\x75\x84\x8f\x05\xc9\xc1\x01\xd0\x04\x89\x8d\xbd\xd2\x2d\xc1\x60\xa1\x90\xda\x60\x28\xfa\x91\x6f\xf1\xea\x1e\x3f\x39\xd9\xb0\xda\x23\xc4\xb3\xd0\x5b\x70\xbc\xe2\x20\x30\x8d\x83\x10\xc4\x84\xd5\xf9\x51\xe8\x00\xf4\x61\x51\x1c\x0b\x8c\x6e\x63\x49\xd1\x3b\x20\xa0\xc5\xe7\x40\x7a\x9a\x72\x28\xdf\x25\xe8\x94\x64\x01\xf8\x62\x8b\xc1\x24\x11\xd2\x0b\xa2\x16\xbd\x5b\x0d\xf3\x4c\xc7\xc6\x4c\x4a\x1d\xf6\x15\x8a\x4e\x6c\xab\x11\xac\xcd\x92\xec\x9e\xd6\x7a\xa5\x31\x7b\xb7\x35\x02\x32\xce\xb0\x96\xad\x45\xf1\x38\x4a\xbc\x5a\xdf\xc6\x10\x2a\x4f\xb8\x02\xa0\x3d\x3e\xbf\xd5\x65\x72\x37\x35\x17\x15\x82\xb2\x05\x2b\xd7\xb2\xe7\xed\x0a\xf3\x55\xec\xba\x39\x83\x62\x30\x09\xb7\xce\xe4\xdb\xe3\x83\x24\x4f\x8e\xd1\x91\xe7\xdb\x14\x96\x76\x4d\x1d\xbc\xfb\xfc\xe3\x65\x13\x58\x3f\x6f\x13\x2d\x51\x2a\x87\x28\x5e\xb9\x52\xfe\x11\x30\xff\xad\x70\x75\xe2\xd6\x55\xb0\x75\x9d\xd8\x4e\x6c\x0b\x53\xb8\x15\xae\x20\x80\x7a\x24\x72\x03\xb3\xdf\x07\xcf\xbe\x2e\xd5\x0f\xf0\xbe\xad\x9b\x01\x01\xb0\x84\x8d\xee\x2e\x28\x1e\x54\x83\x25\x5d\xbb\xd1\x7e\x47\x7e\x61\x5f\x7c\x15\x8b\x62\x5f\xcc\xb7\x73\x3d\xd6\x54\xae\xd6\xc1\x3d\x07\x5b\xc9\x54\x24\xad\x0e\x2f\x40\xfe\x1f\x2e\x46\xa9\xae\x93\x9b\x8d\x5d\x6f\xda\xe2\x90\x38\x92\xbd\x16\xf2\x0e\x2c\x5d\x7f\xcf\xb3\x28\x6c\xec\x7a\x24\x70\xea\x1c\x54\xa8\x2c\x2d\x1d\xd4\x6b\xe1\xfa\x68\xb9\xdf\x28\xb5\x34\x78\x0c\x71\xdb\x9d\xee\x10\xd6\xd3\xb8\x98\x56\x0c\xa4\x30\x71\xa9\x60\x19\x8c\x58\x1d\xaa\x5d\x80\x5f\x59\x6e\xa5\xd5\x22\xcc\x5d\xce\x3d\xbc\x3c\x5a\x22\x76\xa9\x1b\xc4\xbf\x0b\x53\xdc\x97\xe1\xad\xe4\x4b\x7b\x25\x52\xd3\x88\xd6\xa1\xf9\x28\xa0\x9a\x91\xdb\x17\x8c\xd9\x8b\xd2\xf9\xfc\x0b\x75\xf2\xd9\x9b\xd2\xdd\xfc\x1b\xce\x24\xde\x3b\x04\x52\xaf\xd4\x05\xbc\x68\x7e\x34\xd8\xc6\xce\x0c\x12\xa2\x03\x12\xbc\x3a\xba\xfd\x5b\x74\xda\x79\xc9\x66\x52\xfb\xc5\xe8\x06\xe6\x28\xb8\x07\x31\x8b\x18\x9f\x9d\xb9\xed\x5f\xe7\x72\xa2\x8d\xbe\x26\xb6\x07\x33\x4e\x75\xb4\x45\xe5\xf9\x5e\xe9\xbe\xa5\xc1\x0a\xec\xed\xb7\x5a\xf2\xf4\xa1\xd5\xb8\xf8\xbf\x3c\xd4\xcf\x8d\x97\xff\xfe\xed\x7f\x11\xf9\x97\xfb\xd9\xf7\xff\x58\xf1\xf2\xf8\x66\xb3\x91\xfa\x4f\xee\xf4\xe1\x9f\x3c\x4f\x3c\xec\x19\xfe\x15\x97\x13\xbf\xc8\xbf\xe0\x16\xfe\xf6\x51\xff\xf1\xf9\xef\x2b\xfa\xfd\x74\xd4\x15\xc3\x3f\x21\xd5\x07\x77\xae\x02\x37\x20\xd1\x28\xf1\x15\x58\x60\x0e\xaf\xd9\x56\x94\x64\x11\xa1\xd1\xd5\x63\xd9\xaf\x11\x80\x03\x6f\x03\x18\xf0\xda\x84\xf7\x7a\x51\x3f\x60\x32\x91\x34\x9d\x8e\x2a\xf1\xcc\x4c\xa4\x9a\x4d\x54\x4c\x9b\x6e\x08\x1c\x82\x36\x3a\xe1\xa9\x52\x02\xfd\xb5\xf5\xc7\x46\x56\x59\xe6\x0c\xfc\xae\xa4\x3c\xb7\x2a\x5a\xdb\x58\x81\x8f\x29\x79\x2b\x51\xe3\xf4\xfb\xc4\xe8\x8e\x74\x7c\xc3\xa2\x8f\x97\x97\x35\x08\xdf\xff\x46\x55\xf1\xe2\x85\x66\x7b\x97\xd0\xf3\x9c\x53\x65\xf7\x13\x59\x35\xa6\xea\x6b\x45\xa1\x8d\xf6\x34\x7c\x74\x9d\x30\xa8\xe7\xb3\xaa\xb5\xe1\xba\x16\xae\xcb\x9c\xb6\x5f\x0c\x19\xbb\xcb\xb4\x84\x62\x35\xa1\xef\x2f\x20\x3f\x2b\x9e\xd3\x94\xe1\x5c\xb5\x3a\x9f\x5e\xb5\xc5\xe8\x7f\x9d\xdb\xdb\x8a\x71\xc4\xec\xc3\xf5\x76\x36\xcf\xea\x71\xb8\xa9\x98\x85\xf7\x9d\xa6\x68\xe1\xde\x81\xfb\xed\x4c\x1a\x04\xba\xfd\x5d\xbf\x5f\x92\x4d\xdc\x66\x69\x34\x4b\xce\x7c\xd0\xad\xbf\x35\xef\xec\xdc\x1f\x09\xfa\x18\xe8\xfa\x06\x5e\xa2\xec\x1c\x21\xe3\x58\xba\x17\x5b\xd0\xba\x80\x6e\xc5\x43\x46\xc9\xe8\xb0\x2f\xba\x39\x25\x8b\x9f\x58\x82\xa6\xd3\x89\xdf\x37\x30\x86\x00\xa7\x73\x42\xfa\xc7\x02\x18\xa8\xf4\x27\x96\xc6\x7f\x35\x39\x56\xce\x64\x96\xe6\xac\x36\xdc\xdd\x24\x83\xcb\xb5\xbb\x76\xbd\x8c\xae\xdb\xc0\xfc\xcd\x4c\x6b\x04\x99\xc0\x35\x91\xf7\x1e\xb9\x6e\x27\xf5\xd3\xa6\x32\x5e\x36\xf2\x1e\x4f\xb4\xb8\xd5\xb6\x6f\x68\xf9\xfc\xae\x28\xc0\x14\x23\x49\x8a\x33\x0f\x8c\xd0\x37\x30\x0b\xe2\x2e\x26\xd9\xd4\xbc\x9e\xdc\xf7\xca\x9e\x21\x81\x1a\xb5\xbb\x26\x6c\xce\xad\x14\x1d\xb9\x44\x4d\x7c\x67\x6b\xbb\xf0\x9e\xe1\xe8\xfd\x33\x69\x9f\x66\x66\x61\x8e\x15\xc9\xcf\x78\x9f\xa7\x97\xf7\xc1\x5f\xe2\xd0\x85\x17\xf8\x32\x70\x53\xa0\xec\xb4\xab\xb0\x11\xd8\x53\xc1\xdc\x1d\xf5\x7e\x74\xe8\xcd\x7e\xc2\x8b\xd1\x64\x82\xf5\xb8\x5b\xd0\xc2\x58\x5b\xf0\x0d\x71\x87\xb5\x30\x58\xec\x28\xb8\xa3\xbe\x43\xaf\x7b\xba\x6d\x53\xfd\xdd\x4f\xab\x93\x57\xc9\x83\x6d\xe1\x45\x3b\x35\x74\x3f\xac\xc5\x53\x42\xe2\x9c\x68\x88\x21\xbd\x5f\x02\x17\xb8\xcb\x66\xd6\x50\x42\xee\x94\x32\x3b\x26\xa1\x26\xcb\x97\x75\x5f\x5e\xdf\x5e\x87\xe3\x92\xb5\x32\x82\x60\x02\xed\x4c\x37\xce\x9e\x49\xeb\x55\x19\x2a\x2f\xf1\xc9\x38\x9c\xc4\x69\x04\x17\xeb\x05\xfe\x43\x78\xfd\x50\xec\xbd\x7a\x36\x17\x6a\xf5\xb3\xba\xb1\x6d\x63\x9d\x9a\x67\x51\xbe\x28\x93\x1a\x99\x1b\x90\x39\x4d\x04\x01\x3b\x35\xae\xc9\xc9\x61\x4a\xe7\xdd\x9c\x0a\x2a\xb8\x1b\x9a\x18\xa3\x52\x5c\xdc\x83\x10\x60\x06\x7f\x74\x17\x05\x23\x47\xb7\x25\x36\x7b\xcc\x24\xe7\x38\xaa\x41\xc0\xf4\x38\xc0\x53\x72\x84\x49\x2e\x55\x72\xec\xb6\xe5\xb0\x15\xea\x4d\x3f\x6d\xcf\xc4\x53\xce\x81\x34\x40\xb9\x7b\x10\xb0\xd3\x7e\x0f\x90\x46\x30\x2f\xcc\x4d\xf1\x2a\x61\x40\xbe\xc6\x32\xa0\xd6\x1d\x19\x2a\xf2\xef\x04\x89\x9e\x77\xbf\x55\x6a\x89\x7c\x81\xb5\x60\x81\x18\x02\xa3\x8c\x42\x4a\xae\x40\x16\x99\xf5\xda\x20\x98\x5d\x93\x06\xda\x64\x19\xf3\xa2\x27\x81\xae\xc4\xb5\x54\xfa\x42\x9e\x78\x57\xb3\x28\xb2\x5e\xbc\x57\xad\xab\x27\x42\xed\x63\xe8\x5c\xe5\x17\x0f\x5c\x65\x3c\xaf\xdf\x2e\x42\xaa\x30\x38\x26\x61\xbc\xf1\xfb\x4c\x2e\xd6\xfd\xd7\x1c\xdf\x27\xee\xeb\x8c\x29\xd5\xa1\x8f\x22\x21\xc9\xf8\x56\x00\x17\x31\xe0\x15\xa1\xab\x3d\xae\x11\xa0\x71\x65\x3c\x17\x96\xce\x67\x89\x11\xb3\xa3\xfc\xf7\x37\x84\xa0\xc3\x5a\x35\xd0\x4c\xc7\x01\x11\x01\xfc\x5a\xd4\xf8\xab\x89\x0f\x2f\x3f\xf6\x2d\xa6\x5f\xbd\xef\xde\xcf\x7f\xa7\x1f\xd1\x3c\x62\xfa\xf1\x99\xbc\xe6\xdf\xbc\x1f\xff\xce\x3f\x63\x21\xaf\xe5\x37\xef\xc7\xab\x7c\xc7\x70\x26\x08\x64\xe7\x35\xee\xee\xe6\x18\x03\xcf\x9d\xde\x68\x3e\x6e\x73\x50\xa7\xfd\xbc\x00\x86\x34\x2a\xaa\x6c\x2b\xd1\x40\xb5\xe2\x94\x21\x8b\xa6\xe3\x75\x61\x99\xf5\x4e\x7c\x4b\x47\xd3\x19\xf1\x48\x55\x1f\xea\x98\xb6\x13\x45\x18\x9d\x85\x49\xcd\xe6\xb6\x80\xf2\xce\x0f\xf1\x76\x5b\x05\x35\x8e\x37\x3b\x28\x01\x68\x9a\x22\x2f\x77\x23\xfe\xb4\x42\x7f\x1f\x63\xaf\xcf\xcd\x7e\xc0\xa3\xd6\xc2\x67\x7c\xbd\xfc\x3d\xaf\xcd\xc2\x8a\x64\xee\x58\x3d\x9d\x6b\x95\x01\xbd\x55\x32\x12\x3d\x53\x2d\x6b\x7b\x16\x1c\x3c\x09\x2d\x3e\xc3\x3f\x48\xed\x20\x9e\xe3\xe9\xdc\xbb\xbb\x7c\x6f\x9b\x3e\x95\xe9\xbc\x73\xee\x5c\x49\x9a\x6b\x22\xf1\xb9\x2f\xa6\x14\xf8\x51\xd0\x62\x43\x44\xa2\x67\x67\x4b\x3e\x52\xb6\xe7\x9c\xf0\x22\x4a\x76\x16\x97\x1a\xdb\x30\xff\xf5\xdf\x13\x17\x9d\x60\x7d\x01\x7b\x3a\x0f\xa3\x42\x04\x7d\xad\x75\xb8\x64\x74\xb8\x5c\xa9\x99\x25\x2f\x13\x31\xf1\x55\x0f\xd8\x0e\xb4\x00\x13\x87\xa9\x7e\x73\x3e\xb5\xee\x5b\xee\x52\x2a\x7a\x28\xe0\x73\xcc\xb6\xc9\xa2\xaa\xbd\xaf\xb1\x84\x01\xb6\xcc\x88\x4f\x61\x14\x2b\x8c\x25\x22\x7f\xf3\x37\x53\x8b\x0c\x7b\x59\x77\x5d\x02\x62\x28\x2a\x2f\x4b\x6d\x97\x02\x7c\xae\xa9\x16\xce\x28\x3e\x57\x64\xa2\x4f\x4d\x62\x53\x6d\xfb\x80\x4d\xde\xd9\x15\x86\xa0\x33\x4c\x06\xa1\x7b\x5d\xeb\x04\xb2\xbd\xf4\x0b\xdf\x61\xa3\xfc\xd6\x97\xba\xcf\x1d\x65\x13\xbd\x37\xd8\x68\x17\x3d\x97\xe4\x4d\x73\x99\x1f\x3c\x2f\x7f\xbc\xa0\x2e\xc9\x63\x52\x9c\x4f\xdd\xd1\x5f\x36\x61\x9f\xe7\x32\x0b\x6e\x1b\x7b\x23\xd7\x2d\xc6\x7f\x45\x73\x00\x1d\x08\xec\xdb\xbb\x18\xd0\x35\x4b\x1c\xe8\xdc\x90\x7d\xdb\x7b\x05\x8b\x25\x02\x5d\x00\x1a\xe6\x61\x51\xbb\xa1\x22\x1d\x44\x3c\x5a\x6e\x56\x22\x13\x9c\x9a\xe4\xa5\x1b\xbb\x09\x56\x46\x87\xc2\xb5\x9d\xeb\xc5\x25\x91\x43\xf8\x5c\x9a\x1a\x3e\xf8\xbc\xa5\xae\x06\xb6\xbe\xf1\x41\xd5\xd9\xb1\x3d\xa9\x8b\x61\xf4\xeb\xdd\xa5\x4f\x68\x71\xf7\xee\x38\x7d\x9a\x4c\x7f\xef\x34\x81\x0c\xc4\x51\xb3\x35\x5d\x7e\x39\x93\x7f\xdc\xab\x3c\x58\x3a\xe5\x60\x24\x59\xfb\x09\xaa\x19\x81\x88\xfc\xb1\xe3\xc5\x79\x68\xeb\xbd\x60\x4c\x45\x6e\x11\xd3\x7e\x20\x89\x65\xb3\x1f\x1e\xe2\x5a\x0b\x81\xd9\x6d\xe3\x85\x26\xf7\x8a\xd0\x6c\xbc\x6b\xd9\x0a\xd8\x42\xea\x8c\xf8\x80\x7f\x84\x9f\xb6\x1f\xb7\x16\xf0\xd1\xea\xfe\x4d\xdb\x87\xb9\x28\x07\xb6\xfe\x47\xa4\x2e\x1a\xfc\xdf\x48\x4b\xd4\x90\xde\x95\xd5\x0f\x22\xfb\x36\xbf\x82\xbd\xac\x8f\x7a\x6c\xb2\x25\xe1\x79\xa5\x71\xc3\x59\x51\x62\x88\x3c\xdf\xbd\xa5\xa7\x3c\x3b\x26\x94\x28\xc7\x70\xeb\xa6\xe4\x21\xae\xdb\x47\x99\x5a\x8b\x1b\xef\x91\xce\x1f\x75\xe7\x2c\xf2\x22\xac\x3e\x22\xee\x5e\xc9\xc1\xb3\xe7\xb8\x5a\x66\xf6\xf3\x74\x50\xa2\xe2\xbf\x4c\x47\x97\x58\x86\xbe\xef\x48\x30\x73\xe7\x22\xd9\x00\x12\x07\x65\x01\xed\x3c\x45\x66\x0b\x3f\xc2\xd0\xd6\x98\xa4\xea\x69\x94\xa4\x69\xca\xf9\x17\xe0\xed\x55\x14\x9c\x77\xe9\x3d\xba\x9a\xdc\x55\x25\x54\x63\xb4\x9c\x5e\x0e\xa8\xc0\x1b\x60\xa5\x57\x0b\x22\x82\xe7\xc0\x20\x10\x97\x3b\xd4\x44\x5c\xcf\x54\xff\xfb\x12\x76\x51\xc0\x43\xa8\x81\x42\xbe\xf1\x97\xd5\xf2\x55\x74\x05\x17\x58\x3d\x7d\x24\x20\xef\x4a\x0d\x9e\x5a\x60\xd9\x9d\x31\x47\x22\xc7\xc7\x27\x59\xd8\x57\x74\x46\x8c\x9c\x40\xb1\xaa\xf8\x6e\xa6\x56\x35\x4d\x8a\x35\x26\xc9\x18\xbf\x97\xcf\x37\xf4\xb3\x67\x9d\x47\x0c\x37\x7a\xde\xee\xef\x75\x56\x54\x47\x3a\xcb\xc5\x1c\x7f\xa9\xa7\xb7\x9d\x29\x89\x97\xcc\x37\xc7\x9d\x53\xf5\x37\xb7\x9c\x56\x93\xb6\xbb\x92\x9c\x3d\x3f\xaa\x9e\xbe\xfc\x71\x62\x03\xb2\x8f\x85\xd3\x1b\xf7\x88\x4c\xc2\x03\x4c\xe0\xba\xc2\xd2\x49\x68\x62\x1e\x0f\x32\x43\xf2\xc4\x16\x61\x3f\xdc\xd4\xbc\x5b\xbd\x27\x2c\xd9\xad\x0c\xd1\x00\xe5\xe0\x18\x4e\x8c\x3c\xb2\xd5\xbb\xab\x32\x05\xd5\x79\x93\x4d\x12\x5d\x7b\xfb\xc4\x95\x17\x13\x91\xa7\xd3\xeb\xe0\xb3\xca\xe0\x5b\xf2\x60\xed\xa3\xcc\x48\x35\xfb\xeb\x60\xeb\xbe\x46\xb7\xf3\xc6\xbf\xcc\x12\x8e\xab\x53\x94\x69\xcc\x56\x8b\xc5\xf4\x1e\x84\x7b\x45\x87\xd5\x33\x5d\x75\xf7\x1a\x3a\x33\xa0\x04\xa5\x32\x03\xf7\xf2\xeb\xba\x6c\x0d\x5f\xcb\x3d\x7c\x31\x81\xa5\x38\xac\x7d\x74\x2b\x87\x55\xa8\x9d\xc8\xa7\xb0\xf0\x8f\xca\x4d\x81\x99\x79\x76\xaa\xbe\x7e\x48\xc5\x04\x41\x9a\x71\x33\x22\x4d\xfb\xd2\x03\x04\x7e\xab\x7c\xf0\x11\xa3\x5e\xbc\xe0\x23\x13\x54\x9d\x6e\xd5\x01\xef\x94\xe6\x7b\x18\x62\x96\x2a\x7d\x63\xb6\x1b\x7a\xd2\x1c\xd5\x21\x10\x5a\x09\x79\x09\x7f\x74\x5f\xfc\xc1\xe7\x26\xb6\xcf\x09\x5a\xba\x5b\xab\xf4\xad\xa6\x38\x65\x72\x0d\x76\x7d\x05\xda\x4a\x11\x45\x44\xef\x11\x5e\x42\x17\x54\x50\x56\x2b\xb3\x1b\xae\x5f\x85\x38\xd9\x97\xaf\x8f\xda\x18\x02\x02\x1a\xcf\x03\xb7\x6b\xa6\x6a\x46\xcd\x4b\xd4\xb3\x5c\x01\x39\xb2\x86\x23\xd7\x06\x8a\x3f\x7e\x85\x95\x01\xae\xfc\x8a\x93\xc5\x01\xb8\x26\x46\x62\x9d\x58\x39\xf8\x63\x77\xb4\x7f\x54\x02\x17\xcc\x58\xc4\xe8\xe7\xb2\xaf\x37\x9b\x86\x8f\x86\xf3\x80\xb4\x7a\xaf\x2e\x65\x79\x34\x4c\x15\x99\xb5\xd2\xa9\x8e\xe3\x6a\xd7\x5e\xb9\x4a\x9b\xf0\x85\x8c\x25\x8a\xf0\x03\xe9\x38\x88\x38\x80\x86\x82\x23\x85\x12\xe8\xe7\xfc\x2e\x3b\xc3\xaa\x66\x03\x19\xe2\x55\xf3\x0c\x53\x06\x6c\xb8\xef\x83\xa6\xbc\x2e\x49\x30\x78\xe8\xa6\x3f\xf8\xbc\xcb\x96\xc1\xbe\x17\x8e\x34\x11\x7a\xb0\xae\x4e\x4a\x83\x4f\x97\xa4\x9b\x57\xb6\x91\x22\x23\x79\x9d\xb4\xb2\x72\xe0\x8a\x28\x38\x7b\xfc\x02\xbf\xb5\x37\x27\xb7\x87\x74\xc8\x1d\x78\xe7\xee\x6f\xde\x27\x44\xf6\xc0\x3e\x97\x05\x86\x1f\xac\x52\x10\xdc\xec\x35\x8d\x1f\xba\xd5\x68\x44\x0e\x1f\x64\xc1\x07\xeb\xce\x6e\xc0\x80\x2f\xac\x4c\x29\xc5\xfd\x77\xe3\xaa\xaf\xb3\x99\x32\x1d\x7a\x1b\x96\xb0\xfb\xb0\xf5\x2c\x68\xab\x1c\x57\x7f\xa1\x85\xd7\xaf\x30\x58\xd0\x88\x7c\x15\x6a\x35\xf4\xf5\x78\x43\xcd\x74\xcb\x17\xa7\xa6\x41\x1d\x99\x13\xb6\x4b\x4d\x61\xaa\xf0\xc8\x93\x56\xfc\x21\x3f\xb6\x44\x2b\xd1\x57\xb7\xc2\x56\x84\x06\x1d\x27\x0f\x42\xde\xd7\xa1\xdb\x60\x65\x53\x4a\xde\xec\xbc\x4b\xc1\xdd\x0c\x8b\x6a\xd5\x1a\xb0\x5e\x2e\xe7\x6d\xf5\xbb\x7a\x19\x0c\xa7\x62\xb2\x23\x26\xec\x62\x62\x9a\xb6\x89\x36\x95\x3e\x8b\x58\x80\x97\x1a\xbb\x69\x3e\x78\xb7\x05\x0e\x3e\x00\xe8\xfd\x36\x86\x23\xf9\x97\x15\x4f\xb1\x28\x66\x6b\xfb\x4b\x14\x29\xa0\x68\xec\x20\xd7\xe1\x04\xe4\x30\x1c\x1e\x45\x5a\x1e\x02\x6f\x19\x80\xe9\xc2\x92\x5b\xa4\x64\xcc\x98\x42\xb9\x82\xc9\x76\xb6\x35\x64\x57\xfe\xdb\x11\xa5\x19\x15\x61\x52\x59\x70\xe0\x7d\x5b\x25\x73\x20\x6f\x21\x27\x33\x49\x03\x47\xb1\x5b\xa9\xe4\x8e\xb7\x82\x1d\x49\xf5\x9f\x42\xf3\xb5\xe1\x1a\x03\x01\xef\x44\x14\x9b\x47\x75\x79\x21\xde\x2b\x0d\xe2\xb5\x45\xba\x5d\xb5\x2f\x26\x4d\x61\x52\x03\x58\xc6\x92\x48\x68\xb1\x6c\xca\x09\x15\x94\xdd\x24\x58\x66\xe7\xc3\x19\x57\x3a\x95\x01\xc6\xda\x8a\x60\x56\x0f\x0e\x32\xf6\xeb\xcb\x0f\x84\xa9\x42\x75\x93\xa4\xd5\xb7\xda\x1f\x16\xfd\xbb\x67\x6d\x3b\xdd\xeb\x00\xf3\xd6\x5c\x64\x97\x63\xeb\xee\xcc\x2c\x0c\x01\xc0\xf6\x77\xe4\x2c\x13\xbb\xf5\x42\xc5\xde\x49\xf2\xbc\xce\x9f\x76\xc9\x28\xfa\xba\xf3\x04\x14\x9f\xce\x11\x08\xa7\xb6\x8e\xde\x27\x0f\xdf\xee\xd5\x55\xdf\xef\xc6\x08\x2d\x80\x56\xac\x88\x6c\x36\x29\xe2\x93\x2c\x01\xd8\x35\x12\x02\x6e\xb3\x2b\x9b\x72\x5f\xbf\xc2\xd7\xc6\x61\xda\x22\x4c\xae\xb6\x4f\x31\x6f\xd7\xb2\x86\x4d\x97\x03\x5d\xc9\x47\x97\x78\xdc\xc1\x87\x01\x97\xe0\x46\xee\x51\x11\x3a\xbc\x2b\xe0\x2c\xb8\x47\x9a\xed\x8d\x29\xc6\xbb\x5e\xe9\xf9\x82\x70\x77\xcc\x38\xed\x9e\x26\x0f\x1d\xa3\xa8\xce\x44\x59\xc5\x65\x57\x7d\x43\xde\xfd\x09\x0c\x53\xd0\xae\xad\xed\xd1\x56\xb4\x93\x2d\xf6\xd6\x4a\x1a\xf1\xdd\xdb\x7a\xf0\xe4\x86\xfe\x48\x36\x09\x63\xb3\x8b\xdf\xbb\x6d\x33\x74\x0b\xfb\x98\x0e\x07\xfc\x12\xae\x60\xbf\xa5\x2d\xf6\x02\xad\x54\xf4\x08\xfb\x33\x13\x83\x2c\x08\x93\x56\x5b\x44\x79\xe0\x62\xd5\x0a\x8d\xed\x94\x82\xb8\x9d\xdb\x4d\xcf\x4a\x95\x32\x38\xc5\x31\xa7\x67\x9d\xda\xf4\x46\x96\x02\x81\x92\xa7\xde\xe1\x2e\x65\x95\xb6\x04\x33\x8d\x87\x6d\xd2\x82\x56\x3e\x99\xbc\xe6\x10\xea\x49\x0b\xc8\xc4\x17\x7e\x15\xdb\xce\x81\x6c\x2f\x72\x56\xcc\xdc\x55\x54\x29\x80\xe5\xd8\x76\x42\xb4\xdf\xf0\xc2\x8c\x62\x2a\xae\xeb\x56\x1b\x00\x04\xf9\xa1\x62\x3d\xb5\x10\x03\x6d\x7f\x4b\xeb\xae\x2e\xbf\x9e\xc1\xdd\x6f\xb6\xf5\x6e\x52\x60\x49\x07\xf5\xa5\x04\xa1\x57\x7f\x05\xf0\x79\x7f\x98\xc0\x43\x85\xc1\x33\xc3\x44\xd2\xa1\x9c\x76\xb5\x3c\x07\x9a\x46\xa4\x1b\xe4\x7a\xaf\x95\x3d\x8c\x04\xb8\x43\x55\x60\x45\x6f\x5e\xda\x25\x8d\x89\x44\xe7\x82\x7a\x8e\xa1\x66\x3a\x22\x4d\x7e\xcc\x8e\x54\x10\x8c\x15\x44\xad\xe2\x88\x8c\x45\xc2\x60\xe1\x3c\x27\xea\x77\x91\x1d\x9e\x59\xb1\x4f\x4f\xfb\x88\x34\x2f\xd3\xa2\x21\xb0\xda\xbe\x75\x5c\x8b\x36\x13\xbf\x34\xe9\x2f\x50\x8b\xa3\x11\xb9\x70\x24\x6d\xde\x0f\x89\xec\xfd\xba\x51\x53\x9f\x11\x19\x0b\x32\x0f\x7b\x3e\xa5\xc4\xe4\x2a\x9d\x15\x92\xfe\xc7\xa3\x5f\x3d\x55\xf3\xa9\xa7\x62\x8e\x73\x13\x86\x1b\x12\x78\x85\xb8\xef\xbf\x0c\x52\xc4\xf8\xb1\xc8\x40\x5e\xb6\xd5\x55\xa7\xab\x8d\xcd\xff\x3b\x8f\xd7\x37\xb7\x77\xf7\x0f\x6b\x0c\x29\xc4\x2e\xf5\xc3\x38\xcd\xcb\xba\xed\xb9\xd4\x76\x9c\xd7\xfd\xbc\x8c\x0b\xa9\xb4\xb1\xce\xf7\x69\xef\xbb\xb6\xd2\xea\xc2\x4f\x11\xc6\xff\x89\x4c\xfd\xcc\x3e\xdd\x13\x00\xfc\x87\xaf\x59\x0b\xfa\xa7\x1a\x96\x6e\x8b\x73\xad\x56\x12\x42\xe1\xeb\x6d\x0c\x3c\xf0\x56\x0c\x0a\xb6\x49\xa1\xee\x42\xb6\x45\xbf\x7b\x58\x34\xfa\x4b\x5c\xa2\xe7\x6c\x59\xf7\xc7\xc7\xaf\x1c\xb8\xb4\xfb\xcb\xf3\xe7\xcf\xea\xe1\xad\xab\x57\xb0\x14\x39\x3f\xfd\xb5\xce\x58\xce\xee\xe2\x39\xb1\x2f\x8c\xa6\xbe\xe1\xdf\x28\x17\xc2\x5c\xed\xf7\x2e\xf1\x47\xdf\xb5\xbf\x27\x89\xcc\xf1\xb5\x4c\x11\x39\xe1\x03\x3d\x2c\x60\xaf\x2f\x6d\x3c\x83\x3e\x8a\xa3\xcb\x0f\x49\x23\x83\x78\x66\x48\x88\x49\x4e\x39\xdf\x9e\x6b\xf4\xfa\x6d\x79\x8b\x09\xd0\x6a\x1a\x5c\x2c\x77\x3d\x89\x5d\x03\x2a\x1c\x15\x81\xce\x76\xeb\x98\x86\x83\xb1\x85\x51\x59\x31\x8b\xa5\xaa\xc9\x13\xe8\x7a\x99\xde\x6b\x71\x08\x30\xa7\x7d\x58\x09\xdc\x10\x0d\xfe\xd7\xd7\x16\x8f\xfe\x0a\xaf\x5a\xa5\x9e\x8f\x06\x23\x96\x22\x8f\x79\xa4\x30\x9a\x87\x0a\xe3\x67\xcc\xb9\xc4\xe6\xa4\x9b\x9f\x9c\x29\xdb\xe3\xd7\x1c\x85\x77\x05\x65\x45\x7e\x26\x65\x66\xbe\xf2\xf8\xe5\x39\xe9\xd2\xcd\x6b\x4b\x05\x18\x1f\x5d\x41\x51\x9f\xbf\x21\x2d\xa4\x7a\x2e\xdd\x4d\x35\x65\x03\xde\x18\xc7\x90\xdc\xff\xa5\x4f\x7d\xb1\xb3\x4f\x6c\xab\xa1\x43\xb3\x38\x61\x73\x3c\xfe\xfc\xf1\x38\x6e\x9b\x21\x89\xdf\x10\x7e\x44\x3a\x05\x04\x66\xa7\xa1\x4d\x43\xc7\xf5\x46\xde\x1b\xa1\xf5\x16\xb0\xb1\xa0\xe2\x86\x8a\x96\x5b\xd3\xf1\xa7\xb3\x0d\xf7\x01\xee\x2e\xda\x93\xef\x4e\x6a\xae\x82\xc5\x3a\xba\x67\x34\x98\x5d\x17\x5b\x53\xd7\x1e\x58\x10\xbc\x3c\x87\xaa\x8a\xeb\x03\x84\xdd\xad\xbb\x41\x92\xbc\x9a\xd5\xbd\x9c\xa6\x0f\x41\x18\x15\xba\xed\xe3\x1d\x51\xc2\x02\x0a\x03\xf0\x8d\xdd\x85\x50\x5e\xc0\x30\xb4\x92\x3e\x93\xe1\x95\x33\xbd\x94\xec\xba\xb3\x58\xf0\x94\xc8\x35\xef\xb0\x1a\xa6\x55\x3c\xe5\x31\x6d\x59\xd0\x41\xd6\xec\xde\xee\xfd\xac\x9e\x72\xdd\xf7\xff\xe2\x6f\x4f\xe8\x00\xbd\x87\xf2\x79\xb5\x57\xb2\xc0\x4a\x3e\xd9\x06\xcb\x13\x4f\xd3\xc9\x12\xcd\xf4\xce\xd6\x46\x98\x54\xef\xc8\x07\x10\x30\xc0\xc5\xdb\xc7\x34\x2f\x46\x34\x8b\xa6\x1e\xbe\x7c\x5c\x6c\xd0\x41\x0d\xda\x66\x47\xef\x8f\xe9\x47\x34\x6e\x8c\x6c\x1a\x3c\x9d\x25\xa3\x04\x9a\x09\x9f\x72\x04\x50\x38\x97\x9f\x92\x92\xa4\x5a\x0a\xb9\x25\x33\x32\x4d\xf1\x60\xdb\x7b\x29\x19\x3c\xae\xad\x03\x4b\x56\x68\x43\x99\xf2\x5e\xd2\xc3\x95\x5f\x96\x92\x11\xf6\x0a\x2d\x4b\xc9\xba\xea\x29\xb1\x64\x8e\xcd\xbd\x65\xe9\x31\x64\x7a\x39\xb0\xbf\xfd\xe1\xdd\x19\xcc\x3d\x5b\x2c\xa9\x5f\x9f\xe2\xf9\xf1\xb0\xbf\x59\xda\x2b\x3e\x44\x3d\xfe\xd3\xa6\x2c\x67\xe7\xa2\x5f\xf5\x9f\x28\x89\x67\x94\xd7\xff\xee\xb3\x7d\xf3\xef\xf9\x36\x4b\xa8\x33\x29\x99\xe2\x3e\x96\xfe\xce\x65\xaf\xfd\x3e\xb3\xbb\xae\x34\x5e\x66\xa3\x3a\xaf\x2c\x8c\x54\x1f\x9d\x5c\x47\xa4\x83\xd5\xfd\x09\x12\xa1\xf4\x77\xec\x90\xff\x44\x01\x7a\xe9\xdd\x09\xa7\x97\xa3\x94\xaa\xee\xf3\xce\xdc\x13\xfc\x9a\x3d\xe6\xf0\x4c\x28\x78\x21\xee\xb7\xb7\x22\x2f\x96\x62\x2a\xee\xc5\xb5\x78\x14\xef\xc5\x6b\x51\x17\xb1\x28\x8b\xb6\x58\x8b\xbe\x68\x8a\x5b\x71\x2e\x2e\xde\x34\xde\x3a\xe6\xec\xe1\x44\x00\x6f\x59\x11\x2f\x71\x3a\x00\x21\xf3\x35\x9e\x85\xfa\x71\x6f\x1a\x26\x91\x31\x0b\x02\xff\xf2\xf4\x69\xe4\x87\x9f\x68\xa0\x17\x6a\x76\x21\x15\xfe\xc7\xea\x80\xba\xda\xaa\x5f\x7d\x1d\x91\xf8\x97\xb1\xdb\xa9\x94\xe2\x40\x2a\xb0\x31\xcb\xf4\xd2\xc5\xc7\x17\xda\x95\xac\xc8\x1d\xe7\xfe\x34\x55\xe6\x11\x19\xc1\x5a\x8e\x8a\xc2\xe1\x4e\x57\x96\x24\x2f\xf3\x7d\x22\x26\xf4\xbb\x61\x5f\x3a\xb2\x3f\x49\x1c\x77\xed\x8e\x29\xe2\x54\x90\xa8\x71\xde\x8d\x6e\x5a\x40\x52\x85\xef\xf3\xf2\x79\x53\x76\x5d\xff\xc8\xcb\x2a\xcb\x70\x95\x9b\x92\x33\x76\x00\x1b\x35\x8b\x58\xf3\xf0\xdd\x17\xbf\x53\x64\x41\xda\x9b\xaf\x55\x12\x23\x91\xda\x96\xcb\x5e\x67\x87\x57\x7c\x12\x29\x7d\xf1\x5f\x9e\x4d\xde\x9c\x7e\x94\x70\x03\x88\x17\x54\x87\xa3\x65\x55\xd9\x5b\xd8\x7c\xbd\x5f\xce\xc7\x0c\x99\x5e\xbe\x15\xef\xd1\x76\x6c\xf2\xdd\x95\x73\xeb\x52\x73\x44\x07\x1f\xb7\x25\xb1\xe1\xf7\xe0\x24\x1e\x02\xcc\xf2\x8f\xfa\xe4\xae\xb6\xe2\xf5\xfc\x02\x7d\xe7\x3c\xbf\x1d\xe1\x3b\x34\x74\x3e\xdf\x5a\xbf\x23\xc9\x9d\x09\x51\x37\xe6\xec\x4a\x36\xbe\x6b\xc5\x17\x4e\xad\xf2\xf7\x38\xa5\x03\xb8\x36\x12\x25\xa0\x74\x8b\xfd\xed\xb7\x6f\xa5\xfe\xc4\x5e\x13\xf3\x36\x25\x7d\x8e\xce\x1a\xbb\x25\xfd\x8a\x7b\x5a\xd2\x25\xae\x38\x7b\x6a\x79\xe7\x09\xb0\xf9\x98\xf8\xf9\x4c\x2b\xfb\x6b\xb7\x8e\x5f\x17\x31\xd7\x36\xf6\x2c\xe1\x7a\xb7\xee\x62\x88\xc7\x5d\x53\x45\x5e\x90\x4f\xc3\x7c\x2a\x7d\x2a\xbe\xb3\x3e\x99\x67\xef\x00\xb0\x84\xc1\xc5\x23\x3a\x56\x3b\x00\x5b\x3a\x58\xd6\x6f\x89\x40\x3a\x10\xa4\x5d\xee\xc6\xcb\xd5\x01\x84\x4e\x10\x2f\xd5\x2e\x3f\xa0\xc4\x7c\xec\x2b\xbb\xee\x37\x99\xa4\xca\x93\x60\x23\x3d\x48\x43\xe0\xae\xab\x14\x5b\x18\x6e\xe0\x80\x4c\xbb\xd2\xe5\x92\xb3\xd4\x0b\xa0\xd2\x0b\x61\xdf\x8b\xda\x45\x7a\xde\xf7\xd4\x3f\x8d\x9c\x9a\x19\x0b\x3c\x8e\x0d\xe3\xad\xd7\x5c\xb0\xff\x47\x29\x2f\xfc\x0c\xe0\x93\x13\xa1\x0f\x37\xb5\x08\x51\x5b\x4b\x19\x9e\x3e\x3d\xfe\x88\xde\xa6\x8f\x94\xf4\x96\xdb\xc4\x83\x4e\xe9\x40\x28\xf6\x9e\xbc\xab\xf3\x6b\xd7\xdc\xef\x15\xa6\x89\x97\x85\x65\xe2\x45\xe1\x34\xf1\x58\x38\x7a\x3f\x1c\xb7\x9e\x6f\xbb\xae\xa5\xbd\xbc\x97\x67\x47\x7c\xe7\x1b\xa6\x22\x1d\x53\x52\xbf\x51\x35\x23\x99\x39\xb1\xea\x3e\x92\x38\xeb\xf1\x7e\xde\xfd\xf7\x7e\x3e\xfe\x37\xb1\x02\x79\x92\x6a\x01\xd4\xf2\xc0\x6e\xea\xa9\x7d\xc8\xf0\xea\x3f\x49\xb0\x53\x69\x4e\x2e\xbc\x87\x91\x22\xab\x0d\x88\xdf\xfe\x3f\xf8\xb8\xdb\xeb\x37\x0e\xf8\xad\x59\xdd\xd7\xfb\x6a\xa4\x93\x03\x1b\xe8\xee\x00\x44\x3f\x83\x16\x84\x70\xc9\x4a\x9d\x28\x46\xbb\xce\xc7\xb7\x6a\xe1\xec\xd3\xeb\xc7\x38\x4c\x4e\x29\x50\xa5\x55\xa4\x29\x8f\x09\xbc\xd2\x9e\x58\x8e\x3c\x49\x8a\x4c\xad\x31\x84\x9e\x3f\xb1\x7f\xc8\xc6\xd9\xec\xe7\x3c\x76\x2d\xb8\xe1\xa8\xac\x2c\x1e\x7f\xfe\x2b\x22\x93\x91\xa6\x45\xf6\xf4\xe4\x8c\xb0\x7e\x61\x56\xab\x7b\x27\x03\x17\x18\xe7\x9b\x2f\x88\xc6\xe8\x58\x23\xca\x13\x8a\x59\x24\xd7\xc0\xb4\xf8\xa3\x77\x48\x44\x16\xe3\x3a\xce\x78\x65\x78\xde\x4c\xa3\x7d\x1c\x5e\x8c\x1a\x1c\x5a\xb1\xbf\x45\x00\x0d\x91\x52\x35\x3a\x0e\xf4\x50\x5a\xe2\x2d\x1e\x42\x07\x35\x07\x47\x1f\x89\xd6\x1c\x6e\x82\x99\x90\x12\xdc\x57\xed\x7a\x0d\xd1\x8b\xd8\x8f\x86\x51\x53\x6e\x13\x6c\x0c\xd4\x93\x4d\x34\xd3\x81\xff\xa8\x12\xb0\x80\xf1\x1e\x7c\x45\xc2\x42\x34\xa4\xed\x07\x09\xff\xad\xdd\x3e\x08\xa9\x7e\xf4\xe6\x35\x02\x23\x01\xc3\x39\x0a\x62\xec\xb8\x70\xba\x59\x28\xc4\x45\x56\xc1\x84\x70\xe7\x19\xf3\xa7\x96\x97\x82\x9c\xe5\xa1\x67\x04\xd3\xfa\x16\xdf\xa9\xeb\x6f\xfb\xa6\x07\xf8\xe2\xd6\x03\xf8\x6a\xf1\x0f\xdc\x73\x35\xfb\xac\xe5\xd9\x88\xbc\xd2\x09\x70\x57\x6c\x8e\x33\xb8\x96\x34\xab\xb4\x25\x48\xa9\x77\xa7\x45\x1c\xf2\x2c\x5f\x36\x1e\xe0\x67\x06\x78\x96\xbf\xf5\x3a\xc0\x24\xad\xd2\x57\xe6\xf0\x3d\x12\xcc\xe8\xdf\xf2\x2c\x94\x62\x2f\xba\xa9\x46\x69\xf7\xfa\xd3\x52\x02\x33\x4c\x34\x6a\x82\xb5\x2f\x7f\x25\x02\x23\x6c\x35\x7c\xef\x1f\x5d\x97\xa3\xfd\x48\x74\xf5\x07\x3a\xe0\xdf\x82\x68\xf0\x06\xac\x2a\xb0\x8c\x5d\xe6\xe3\xd0\xb0\x9f\x00\xbf\x79\x28\xc0\xe9\xa1\x02\xfc\x40\x84\xce\x5b\x3d\xdf\xbf\x3e\x5b\x53\xf9\x30\x16\x85\x75\x6b\x49\x72\xfe\x53\x98\x1e\x82\x6d\xd8\x06\xf1\x5a\x5a\x37\x33\x71\xb6\x19\xab\x24\x7f\x49\xd9\x6b\xb1\x86\xb4\x2a\x12\xb0\x9a\x17\x99\x7c\x53\x7b\x4f\x7a\xa5\xc5\xb7\x81\x9a\x6a\xe3\xef\xa1\xc7\x8b\x04\xf0\x4c\x81\x83\x23\x45\xac\x73\xd8\x1b\x2c\xcc\x37\x27\xaf\x93\xd9\xe4\x62\xb2\x9e\xdc\x4d\x1e\xdf\xc7\x2b\x13\xf7\x08\xa6\x4d\x39\x5d\xed\xdc\x6c\xaf\x3c\x8b\xa7\x6c\x67\xb1\xb6\xe3\xe0\x9d\xd1\x27\xd5\x0f\xe1\x36\x88\xf7\xb0\xb5\x52\x4e\xe3\x31\xf2\x7d\xaa\xc2\x61\x84\x2f\x47\x2f\x82\xd9\x43\xff\xa7\x96\x52\xa7\x7d\x61\xf9\x4e\x0f\xe9\xf4\x52\xc9\x0c\x88\xdf\xaf\x93\x81\xba\xfd\xce\x26\xd3\x5f\xb0\xb3\xbd\xe5\x25\x2e\x21\x5f\xeb\x41\x5c\x30\x9f\x4e\x30\xe5\x94\x55\x46\xc4\x42\x32\xb7\xc4\x81\xc7\x37\x40\x96\xb7\x3a\x63\xd6\x7b\xe1\xd3\x5b\xe9\x73\xa4\x64\x83\x7a\xc2\xc1\xfe\x59\x99\x93\x12\xe6\xf8\x3a\x66\xf8\x2f\x22\x8f\x65\xbd\x08\xc9\xd7\x3a\xa3\xfd\x7e\x3b\xfa\x1a\x79\xfa\xbc\x7a\xf6\x06\x80\x49\x16\x24\xfd\x47\x1f\x75\xce\xc0\x63\x3c\x3c\xa2\x5d\x99\xae\x3e\x71\xce\x1a\x47\x29\x3c\xa8\x1a\x4d\x02\xee\xe4\x7f\x4b\x1b\xc4\xde\x67\x61\x53\x35\x77\xd7\x54\x2b\x77\xa1\x6e\x9d\x00\x73\x8e\x22\x90\x37\x2c\xac\x57\xeb\xeb\xf9\x54\xff\x6c\x17\x37\x8d\x9c\x7d\x6d\x70\x31\x08\xff\xf7\x86\x32\x4b\x77\x71\xa9\x38\x54\xcf\x19\x51\xb3\xd0\x87\x3d\xe1\x4e\x45\x1c\xa6\x1b\x9d\x66\x89\x89\x72\xc9\xab\x76\xfd\xd3\xf0\x27\x8b\xdf\x9c\x40\x97\xe2\x22\x25\xbe\x6a\x48\xe5\x0b\x46\x99\x8d\xb8\x22\x3f\xbf\xf4\xb6\x0c\x69\x89\x6b\x7a\x52\xa0\x45\x49\x9f\x92\x45\xf0\x5a\x10\x01\xc0\x03\xc8\xdd\xbb\x71\x12\x28\x7a\x1b\x53\x32\xd2\x9d\xdb\x05\xd8\xaf\xa8\xfa\x2f\xc9\x55\xf8\xf8\xbe\x3c\xc9\x52\x35\xe1\xd1\x54\x80\x1a\xda\x21\x65\x11\xfe\x89\x4b\x45\x81\xd5\xb9\xa9\x0a\x89\xb7\x71\x42\x4a\x4b\x13\x2f\x78\x83\x32\x89\x85\x00\x97\x4a\x12\x6b\xc0\xd9\xf0\xa4\x7d\x80\x56\x9c\x55\xb1\x71\x7b\x24\x40\xc3\x5f\xc5\x77\x2b\x59\x44\x55\xdf\x16\xb6\xe2\x79\xd1\xde\x2f\x1c\xa3\xd0\xf5\x9a\x20\x36\xf8\xac\xb5\x23\x8d\x20\x95\xb9\x3e\xac\xfc\x5d\xe7\x18\x3e\xbc\xe1\x75\xf4\x67\x75\xe0\x2a\xc3\x36\x96\xf2\x37\xe7\x35\x9f\x9f\xde\x2b\x48\x0c\xd2\xa8\xe7\x01\xae\x4e\xe8\x6a\x9d\xaa\xf8\x12\x3a\xe1\xc0\xeb\xc0\x0f\x3a\xa6\x1d\xe0\x61\x65\x0d\xc5\x37\x5d\x21\xf0\x6f\xa4\xc3\x1e\xb6\x32\x45\xdf\x4b\x88\x3c\x57\x47\x88\xd1\xff\xa9\x14\x77\x0e\x04\x0c\x15\xf2\x4d\xd7\x5c\x18\x35\xd9\x85\x80\xae\x95\xcc\xcb\xa7\x70\x51\x75\x31\x41\x3e\x3c\xd6\xe0\x63\x66\xa7\xf0\x3b\xcf\x29\x15\xa7\x6c\xb3\xcc\x42\xaa\x89\x3b\xb5\xf3\xab\xc1\xc9\xbb\x1a\xbb\xff\xd8\x2d\xe7\x0f\xc8\x29\x82\x15\x78\x94\x37\x30\x18\x1d\x27\xd1\xe4\x7d\xeb\x77\xe1\xb5\x3f\xe8\xc8\xec\x67\x7d\x0a\x26\xbf\x3b\xb9\xf3\x48\xb3\xb6\x8b\x4a\xa5\xf7\xf9\x52\xaf\x48\x67\xf6\xb1\xfb\x12\xa9\x15\xa0\x74\xe8\x17\x00\x8f\xef\x58\xbd\x9b\x5f\xa0\xb9\xe6\xc2\x22\x97\x4a\x81\xa9\xe6\xf5\x36\x13\xa2\xec\x32\x66\x33\x5e\xdc\x7d\xe8\x54\x1d\xfd\x26\x7e\xc3\x9a\xe8\x1e\xaf\x49\x4b\xec\x3e\x17\x67\xb5\xd7\x43\x6a\x12\x01\x92\x11\x0e\xc0\x93\x46\xb3\xe6\x0b\x11\xb6\x49\x62\x39\xcf\x00\xd8\x47\x12\xfc\x0a\x59\xfc\x6b\x77\x72\xfb\x45\xbc\xd1\xc5\xdd\xb5\xcd\x0f\x21\x0f\x0e\x93\x3b\x9e\xfc\x4a\x6b\x6f\x20\x75\x09\x9d\x48\x07\xa0\x3d\xe7\x5b\xb9\x5f\xf8\x39\xff\xca\xf5\x97\x9f\x3b\xb8\x0a\x95\x94\xdc\x19\x38\xf0\x55\x38\x97\x0a\x5d\xa2\x1f\x05\x25\xb9\x8e\xc0\xb3\xe7\x36\xf1\x50\x3e\x35\x04\xa3\x9b\x1f\x92\xa1\x9c\xf5\xd8\x91\xa8\x19\xa6\xc9\x93\xa0\x50\xf7\x6d\xde\x28\x45\xcd\x7f\x48\xa9\x6d\x81\x16\x34\x1d\x91\x04\xf5\x3e\xf9\x85\xd2\xe6\x92\xce\xbc\xc1\x29\x63\xb3\x0d\x92\x9f\x9d\x74\xd2\x94\x7d\x7f\x19\x1e\xaf\x76\x3d\x64\x79\x5a\xc7\x0c\x35\x2e\x95\x42\x82\xcb\x34\x4e\xd5\xf6\xee\xf1\x5e\x7f\x17\x92\x26\x9e\x95\x9e\x06\x9d\x7f\x25\xb5\x3c\x67\xa8\x47\x41\x95\x22\x3a\x1b\xd4\x77\xba\xfc\x54\x38\x6e\x87\x24\x1c\x96\xda\x3a\xaa\x7d\x67\x51\xcb\x6b\x8d\x58\x17\x3f\x93\x41\xa2\xfe\x15\x3e\x6e\x9d\x2e\x59\xc2\x5e\x59\x58\x70\x87\x17\xb5\xcd\x3e\xf1\x74\x1c\xf9\xad\xb1\xa8\xff\x9b\x41\xdd\x91\x68\xd7\x0d\x80\x62\xe7\x6d\x4a\x56\xdc\x5b\x86\x17\x78\xf3\x1a\xe1\x67\x7a\x00\x60\x1f\xe0\xaf\x75\x50\xe0\x2c\xac\x7b\x08\xb7\x90\xaf\x4b\xd2\xbb\x62\x0a\xdd\x70\x05\x80\x54\x37\x9e\xb6\x98\xd7\xa8\xa8\xf9\xb2\xe0\xa4\x9b\xee\x2d\xd6\x45\x49\x95\x5c\xd5\x64\x37\xf7\x95\xed\xc8\xdd\x41\xd4\xaa\x30\xea\x9d\xf3\x4c\x52\xfa\x66\x7a\x92\x80\xe4\x56\xd0\x5e\x18\xe6\x41\x78\x12\x8a\xef\xd8\x6b\xb3\xcf\xaa\x1a\x10\xc8\xf1\x27\xcd\x51\x2b\xfd\x39\xf4\x43\x6d\xa0\x32\x7c\x01\xc8\x81\x49\x7b\x41\x33\x51\x41\x94\x20\x98\x7e\x55\x6e\xa6\x61\x91\x88\x2d\x3c\x43\x4a\x7d\x73\x0f\x72\x9c\xf6\x38\xa2\x01\x8c\x53\x6c\xca\xfe\x6c\x9b\x4a\xf1\x34\xf9\xa4\x26\x34\x1c\xb2\xc8\x9d\x71\x48\x7f\x99\xb2\x8d\x3a\x0e\x9c\xe8\xd1\xf0\xda\xbe\xb4\x76\xb2\x23\x22\x57\xf4\x49\x6a\x9f\xac\x8d\x1c\x2f\x18\x07\x0c\xbd\x05\x89\x6d\xaa\x8f\x0e\x1c\xea\xfb\x66\x1c\x0c\x24\xd0\xbb\x3b\x3d\xe2\xc4\x49\xe8\x5e\x09\x8d\xc1\x77\xb0\x75\xd5\x6f\xe8\xa1\x2a\x5d\x71\x82\x42\x50\x48\x72\x41\x57\xf4\xb5\xc7\x31\x39\x0a\x94\xfd\x55\x29\x42\x38\x88\xae\xb3\x9b\x45\xc1\xca\xb3\xc3\xde\xa9\xfa\x5c\x20\x9c\x29\x7c\xb4\x23\x97\xbe\xaf\xbf\x9f\xea\x07\x00\x03\x52\xee\xed\xa4\xa5\x01\x92\x40\x5f\xab\x73\xb4\xca\xee\x51\xb7\xe3\x5f\x9e\x5a\x7b\xa5\xfa\x89\x11\x56\x0b\xed\xe1\x73\xea\x46\x73\xde\x81\xce\x3b\x9c\x67\xfb\xe9\x14\x18\x79\x9b\xb9\xd6\x5e\x31\x55\x9c\x82\xa2\xb8\xfe\x24\x4a\x87\x8f\x1a\xb1\x1d\xf3\xda\xca\x08\x93\xf4\x41\x8c\x63\x75\x8a\x51\xd7\xb9\x6a\x35\x2f\x23\x2f\xa1\x24\x6c\x49\xf8\x19\x60\x69\xfb\x5e\x25\xd7\x74\x9c\x17\x77\xc7\x26\xc8\xf3\x5b\x2f\xcc\xeb\x7d\xec\xbc\x8f\xb9\xf7\xb1\x96\x6f\x1e\xb3\xaa\x25\x61\xd1\xb2\xcb\x39\x91\x2c\x50\x5c\xd6\x25\xb9\x87\x10\x39\xc1\x57\xf5\x6c\xf5\x89\xaf\x2e\x94\xb6\x76\x27\xdb\xa4\x4f\x41\x9b\xb7\x99\xd9\x58\x2e\x05\x90\x43\xf5\xe1\x8f\xa5\x89\xf1\xf0\xeb\x28\x0d\xef\xcf\x9f\x3c\x04\x31\x2b\xc2\x07\x79\x98\xdc\xd0\xf5\x92\xf7\x89\x20\x38\x42\x94\x18\xea\xfb\xae\x2d\x96\x6d\xec\xd0\xef\x8c\x43\x86\xf9\x7e\x71\x76\xd8\xe9\x0b\xcc\x5d\x2d\x28\x7e\x09\x9c\x3c\x30\x2b\xee\xbc\x93\x05\x33\x75\x07\xb9\x1d\xe7\x76\xc8\xe8\x61\xed\x2c\xb7\x3d\x63\x9b\x5c\x1f\xc6\x4e\x73\x3b\x69\xec\xb8\x56\x71\x6e\xc6\xe9\x9d\xcf\x86\x3b\xf6\x4d\xb8\xac\xb6\xab\x99\x6d\x57\x33\xdb\xbe\xc6\xac\x09\xc6\x2e\xc8\x5a\xfe\x07\xa3\x46\x94\x7a\xe3\x3a\x87\x73\x02\x31\xf8\x2f\x24\x93\x8c\xa1\x1b\xcd\x30\xfd\xfe\x19\xcc\xf8\x65\x9c\x1d\xd4\xba\x23\x31\x63\xad\x01\xc6\x52\x63\x66\x30\x54\xc9\x51\x56\xca\x13\x4f\x26\xd0\x70\x41\x2d\x5b\x4e\x45\x50\x0a\x3b\x79\x5e\xb3\x54\xde\xfd\x5a\x30\xfb\x0f\xde\x64\xbf\x35\x22\xe3\x3a\x44\xe4\xe9\x2a\xfb\xe3\xd4\xbf\x50\xa9\x42\xed\x3c\x4d\x78\x16\x2e\x7a\xed\xd9\x59\x9c\xe4\xab\x46\x7e\x66\x7e\x7f\xaf\x43\x90\x27\x81\x54\xe9\x6b\xec\xf1\xf3\x68\x91\x8f\x99\x9b\x02\xeb\x2b\x90\x0c\x95\x02\x15\x02\xe4\xca\x18\x1d\xa9\xb3\x1c\x08\x6f\x97\x74\xab\x89\xe4\xab\x13\x20\x8d\xa4\xe1\x41\xc4\xaf\xf6\x87\xfe\x71\xff\xa9\xbd\xee\x03\x1b\x1f\x35\xf9\x6a\x0e\x7d\x9d\xeb\x0d\xbe\xe4\xcf\x27\xdc\xdb\x98\x63\x32\xe8\x26\x45\x15\x97\xcc\x5e\x7a\xc7\x75\x74\x3a\xf4\xcf\xe5\xa7\xee\xb4\x84\xb6\x08\xc2\x16\xd9\xfc\x5a\xbd\xe5\x9b\xda\x28\xca\xea\x7f\x6c\x36\xe2\x4f\x8d\xf0\xfe\xc8\xe9\x12\x52\xce\x08\xcd\x4d\xd4\x33\xce\x84\x33\xb7\xbd\x33\xc2\xe9\xbe\x7a\x92\x6f\x2e\xa4\xa9\x62\xdf\x55\x51\x11\x56\x34\xae\x8a\xa0\x32\xcd\x6e\xa4\xb2\x13\xa1\x2e\x0f\xd6\x16\x06\xec\xdd\xbb\xf2\x15\xa7\xf2\xea\x98\x0e\x98\xb9\xcc\xe8\xba\xcc\xb4\xe5\x8c\x2a\xed\x43\x41\xfb\x55\x4c\xc6\x84\xa9\xd2\x18\x52\x2e\x05\xa1\x16\x76\x03\x74\xa5\x2f\xcf\xb5\xd1\x98\xb4\xc0\x6a\xca\xe0\x91\x3d\x71\xda\xe3\x6d\x2d\x39\xdc\x30\xb8\x5e\x2a\xf9\x40\x5d\xa2\x54\x3e\x38\xc8\xa2\xc4\x5b\x5d\x52\x20\xb7\x86\xa0\x25\x6d\x26\x77\x18\x60\x0a\xe5\xa2\x89\x46\x6a\x08\xda\x51\xcb\x20\xd9\xb7\xac\xea\x98\xb3\x76\x10\xf7\x0b\xed\x13\x55\x40\xa7\xe0\x23\x6e\xc2\x43\x5b\xad\xcc\x7a\xd0\x2e\xb0\xc2\x16\x0b\x62\xb5\xec\x14\x04\xff\xa4\x8d\xba\x3e\x48\x1f\x07\x85\xad\xe2\x2c\x53\xa9\xea\x0d\xc8\x00\x96\x33\x5f\xb6\xb0\x4e\x53\x89\xd9\xef\x66\x9d\x37\xb3\xd5\x97\xe1\x2d\xa0\xcb\xf3\x7e\xb2\x57\x83\x43\xcd\x54\x99\x32\x1c\xa4\xfc\xd2\x52\xa8\x5b\x31\x75\x1d\xe7\x84\x50\xf3\x80\xe6\x5e\x47\xce\x35\x3f\x69\x3a\xc0\x0a\xd5\x3a\x5d\x96\x43\xcb\xa5\x60\x60\xad\xec\xc1\x38\xc3\xcc\x62\xcb\xfb\x2c\x16\x37\x01\xcb\xac\xe9\x3a\xca\x50\x6e\xbc\x9a\x3b\x5c\x91\xcd\x11\xe2\x1a\x07\xd4\x7e\x6f\xd8\xcd\xc5\xb9\x25\xb7\x15\x17\xb9\x2e\xdd\x2c\xfc\xc1\x4b\xfa\x28\x99\x10\xca\x2e\xef\xe0\x71\x2a\x73\x5a\x09\x25\x78\xd4\xc4\x1f\x51\xa9\xa6\x6c\xd4\xc3\x32\x3c\x29\xc6\x93\x5f\x73\xef\xba\xd7\xe5\xad\xbd\x4d\x08\x4b\xd1\xe7\x93\xf8\xd5\x28\x8b\xad\x6a\xaf\xad\x2e\xff\x69\x1d\xf0\x34\x74\xa2\x0b\xba\x5c\x46\x69\x90\xec\xa6\x59\x6b\xaf\xd8\x92\xcb\x55\x3f\xb9\x7d\x95\xbb\x77\xbe\xa0\x37\x8a\x43\xe8\x3d\x96\x33\xfe\x49\x7e\xf3\xdd\x48\x7b\x05\xb7\x4d\x6a\xa5\x1d\xa8\x3d\x36\xaf\xc8\xa4\x9e\xfd\x29\xce\xab\x97\xb5\xfe\x2f\xf0\x6f\x1b\xf0\xbd\x0a\x03\x64\x94\x28\xe9\x43\x73\x3f\x60\xaa\x65\x78\x51\x70\xb0\x1e\x95\x44\x55\x24\xc2\xb3\x35\x4a\xf5\x63\xdb\xcd\xd2\xa5\xed\xa6\xe7\x76\xb2\x8e\x1b\x34\x80\x44\xdc\xcd\xfc\x55\xbf\xba\x0e\xdc\xd9\xf1\x5f\xf9\x37\x53\xb9\x19\xa1\x77\x97\xcf\x57\x49\xdf\x0b\xff\xf2\x77\x5b\x8a\x1f\xa5\x60\x6d\x13\xfe\xeb\x30\x1e\x26\x5a\x5f\xfc\x5e\x7d\x97\x0d\x3e\xf2\x5b\x34\xce\xaa\xac\xe5\xe7\xbd\xff\x6e\x16\x32\x23\x18\xce\x7c\xe6\xbb\x85\x85\x29\xf7\xee\x00\xdb\x02\x86\x1b\x1b\x93\x6f\x7b\x27\x04\x6b\x9f\x74\xd8\xf6\x61\xbf\xa7\xab\xab\x61\xe0\x37\x8f\xfc\x1d\xe8\xc2\x6e\x5f\x28\xbe\x96\x20\x33\x58\x78\xd7\xc1\xbd\xc9\x14\x5f\xea\x3f\xb7\x8e\x2e\xa7\x87\x23\xc3\xd2\x77\xbe\x84\x65\xec\xe0\xdd\x18\x65\xfb\xdc\x4c\x2b\x1b\xcf\x0e\x70\xb3\x45\x93\x0e\xc4\x97\xa1\x62\xe9\xae\x75\x2a\x75\x50\xdf\xfb\x76\xf8\xb7\x37\x87\x39\x8b\x44\x5b\x83\x62\x8a\x3e\xc3\x22\xfb\x5c\xa4\xa0\xcc\x65\xed\x26\x9f\x02\xf8\xe9\xf6\x6e\x3d\xcb\x96\xf9\xdd\x21\x84\xe1\x0e\x3c\xd9\x7a\xda\x8b\x59\x9c\xb5\x0c\x91\xb3\xe0\xf3\xf2\x78\x7f\x4b\xc6\x74\x4e\xa4\x76\xc3\x4a\x60\x78\x35\x29\xe5\x31\xd9\x71\x38\x42\xf2\xd7\x67\xc3\x06\xb1\xc5\x67\xcf\x9a\x64\x65\xa8\xf0\x62\x30\xa9\xef\x41\x1d\x01\xde\x00\x4d\xe3\x6c\x3b\xe4\x42\xcb\x6e\xd2\x5b\xd8\xbc\x1c\xec\x1f\xf0\xe2\xc4\x37\x6e\xe0\xc5\xf2\xe1\x90\x8b\x57\x48\x1f\xf9\x97\x79\x99\xa9\x88\x96\xb1\x3c\x2b\xa4\xf3\x42\x8d\x2f\x81\x6c\x52\xae\xfb\x7f\x62\x4f\x3c\xe1\x53\x01\x25\xb2\x43\x09\x40\xc8\x0e\x6c\x0c\x41\x60\x0b\x33\x7f\xcb\xe3\x9c\xde\x81\x08\x8e\xce\x1a\xff\x8f\x93\xc6\xa9\xf4\x05\xcb\xa9\x72\x4f\xdc\x03\xa3\x04\xd1\x42\x64\xc1\x76\x66\x96\x21\x5c\x07\x9c\x18\xa3\x0e\x0b\x4e\x0d\xed\x55\x90\x0e\xf6\xa3\xcf\x8e\x70\xe8\x98\x5b\x2c\xfe\x26\x8b\x5a\xea\x5c\x7a\xa8\x3b\x9c\x87\x73\xe9\x2a\x90\xb3\xd7\x8c\x31\x66\xbe\xdc\xc9\x98\x2d\x1c\x2c\xa5\x15\x33\xda\xe2\x12\x57\x41\x3c\x1a\xc2\x8b\x5e\x90\xc9\xfe\xba\x75\xb4\x6a\x76\xad\xd9\x4e\x5d\xd4\xed\xea\x39\x96\x32\x85\xf3\xc9\xa4\x4d\x5a\x47\xf7\x4e\x29\x9d\x19\xab\x6c\xb3\x80\x16\xcd\x65\x24\x28\x1a\xef\xcd\xf5\x32\x2b\xc7\xf1\x3c\x2f\x6f\x3d\x52\x9c\x6d\x72\xf7\xf9\x92\xcc\x80\xf8\x1a\xd9\xdc\xf5\xf4\xca\x1b\xa8\x48\xc5\x74\x6a\x8d\x9d\x8d\x75\xf5\xd3\x05\x07\x29\xf7\x48\xcf\xd9\x3e\x61\xdd\x0c\xf3\x8e\xc5\xda\xbc\xce\xd7\x65\xfb\x1a\xe9\xc9\xad\xb8\x18\xd0\x65\xc7\xfb\xcd\xc9\xfd\x7f\xf8\x5a\xb5\xff\xfe\xe7\x59\xc7\x6a\x90\x5a\xb9\x2f\xb8\x7f\x2c\xb3\xbe\x14\x8b\xf7\xef\xfa\xe5\xde\x5b\xa5\x0a\xb2\xb7\xc7\xd5\x2a\xcd\xcd\x58\xbf\x57\xda\x29\xc1\x17\xc1\x82\xd1\xde\xd4\x7a\x8a\xc9\xbd\x0a\x2b\xf9\xd0\x05\x1c\xcc\x0b\x03\x29\x7f\x44\xc7\xc3\xd8\x07\x2f\x0a\x9e\x37\x49\x81\x6d\xc7\xf9\x5c\xa5\x52\xe5\x57\x21\x23\x09\xb5\x54\xd5\x83\xaa\x25\x84\xe2\xd6\xbd\x35\x96\xc6\xcb\xf0\xf6\x5f\xa4\x69\x34\x9e\xc1\xe1\xe3\xa5\xa7\xf9\x3c\x8a\x47\x9d\x2a\x39\xb6\xd3\x7b\xf0\x99\x8b\x6d\x2f\x0a\x6d\xaf\x37\xbe\xdd\xf0\xe6\x5b\x2c\x1b\x55\xbd\x6b\x58\xe8\xb1\xfc\xe7\xcf\xfd\x78\xd7\x9c\x37\xed\x5a\x17\xf6\x1b\xab\xcd\xfc\x30\x7b\xb6\xa3\x59\x2d\x7c\x02\xf0\xe6\x0a\xc9\xee\x0f\x4f\xb2\x38\xaf\x62\xff\xfe\x71\x9b\x6f\x6d\x9a\xf6\xcd\xd7\x34\x9b\x3b\x43\x75\x47\x01\x68\xd3\x17\xab\xb7\x1e\x6c\xe5\xbd\x46\xd2\xb2\x08\xab\x37\xa9\xac\xa5\xe6\x6d\x63\xb6\x74\x52\xce\xb9\xbf\x68\x9d\x38\x63\x04\xd4\x60\x1d\x5d\x8c\xe6\x49\x30\xac\x68\x83\x50\x6f\x70\x09\x02\x1c\x88\x41\xd4\x31\xdb\x08\x12\x11\xaf\xa9\xa4\x50\x4b\xc7\xfb\xee\x58\x7a\xc8\x2f\xe2\x9f\xaa\x2e\x4b\xa9\x4d\xb4\x13\x14\xc4\x6f\x13\xd2\x4f\x13\x76\x61\x21\xa5\xb0\x42\x6e\x4a\xda\xec\xfa\x89\xd0\x6e\xb2\xfd\x0e\xfc\x04\x77\x95\x99\xb1\x82\xa6\x1e\x3f\x3e\x01\xcc\x0a\xeb\xf1\xfa\x88\x66\x44\x13\x94\x97\x04\xf0\x1d\xee\x02\x21\xa6\x4e\xa7\x31\xc2\x41\xb1\x75\x36\x1d\xb2\xd9\x50\x96\xd9\x2b\xd3\x1e\x8c\x6c\x3b\xa3\xd0\x60\x3f\x28\x5e\x06\x02\x2b\x5d\x5e\xe7\x56\xcb\x72\x6b\x3d\x01\xd9\xc6\x7e\xc8\x4d\x69\xc9\x20\x45\x45\x17\xb4\x9c\xc9\x31\x00\x77\xd9\xcc\x04\x76\x4e\x19\x09\xc0\xcb\x35\x2b\x1e\x22\x63\x07\x9e\x30\x4f\x82\xf1\xa4\xc9\x66\x96\x89\x26\x3b\x26\xbd\x4e\xca\xed\x31\x76\xc9\x82\x41\x7b\x16\x1a\x67\x2f\x30\x71\xf9\xe5\x49\x65\x59\xb7\x65\x8c\x3d\x5c\xe8\xf1\x89\x5f\x50\x6d\x2c\x00\x0a\x1b\x43\x22\xf0\xae\xf4\x42\x80\xcd\x2d\x64\x85\xd3\x84\xe8\xa3\xa0\xae\x2b\x3f\x1b\xeb\x52\x9c\x81\x59\x94\x32\x34\xef\x14\x37\xf5\xe6\x55\xef\x7b\xaf\x6e\x1b\xbb\x5c\xc7\x5d\xaa\x8e\xa5\x6a\x17\xca\x77\x2a\xed\x2d\xc5\x90\x19\x91\x48\xbe\x4b\x98\x67\x8d\xcd\x89\x96\xc5\xbb\x94\x75\x90\x54\x46\xed\x8e\x8c\x8c\xff\xcc\x9e\xae\x53\x07\x9d\x30\x92\x1b\x3c\x01\xd1\x38\xc9\x78\x40\x5c\x49\x5d\xc7\x36\xae\xb2\x5d\x94\xaf\xf8\xfa\x46\xf7\xde\xd1\x3a\x16\x3f\x91\x44\x3c\x09\x18\x06\xc4\xe7\xf7\xd5\xcc\x42\x91\x08\xd4\x88\xef\x14\xb8\xbe\x79\x0a\xa8\x16\x64\x88\xb2\x46\x8f\xba\xeb\xc6\x5e\x45\xd8\x79\x5b\x06\x6f\x57\xc8\x73\x8b\xcd\xc9\xe0\x13\xff\x97\xac\xd4\xfd\xea\x5d\x15\x45\x22\x9d\x0f\x11\x7a\x89\x8b\x4e\x5c\x6f\x9f\xde\x7e\xa7\xda\x17\x11\x08\xd1\x5f\x4f\x97\x3e\x2f\xcf\x36\xf0\x58\xa5\xd4\x30\x44\x0e\xdb\xbd\xc4\xf6\xe0\xb3\x9e\x00\x5f\x27\xaf\x31\xc1\xa8\x28\x2c\xe8\xd5\x8c\xfc\xa5\xbe\x42\x38\xaf\x15\xf9\xe0\x4d\xb3\xac\xbb\xd1\x50\x2d\x94\x1a\x19\x3b\x13\x0d\x3b\xf3\x81\x90\x57\x32\xc8\x93\x17\xe7\x33\xcd\x13\x7b\xc9\x4e\xa5\x32\x6d\x45\x60\x35\x33\x8f\xcf\x66\x17\xf5\xc4\x50\x9f\x0c\xa3\x58\xcb\x81\x1e\x67\xab\xe4\x52\xfc\x94\xe8\x3f\x52\xaa\x6d\x01\x98\xa7\xbf\x4d\xa3\xb5\xd8\xc6\x6f\xbd\x2e\x6b\xea\xfc\x2c\x3f\xda\xe8\xf4\x9b\x93\xbb\x52\x6b\x5b\x27\x5d\xa3\x3b\x09\xb2\x76\x10\x4b\x8c\x9e\xf6\xe6\xaa\x12\xca\x7b\x2c\x81\x9c\x23\xd4\x0d\x26\xbc\x6f\xbb\x2f\x8a\xd6\x39\x94\xda\x98\x54\x13\xfd\xa8\xdc\x37\xf4\x80\x51\x75\x5d\x34\xbe\x8c\x4e\xf2\x6a\x49\x79\x21\xab\x87\xa6\x69\x50\x87\x52\x09\x3a\x99\x02\xaf\x87\xa4\x6d\x48\xdd\x4b\x6b\xbd\x39\xb8\x2c\xbb\x67\x45\x6c\x79\x3e\xa9\xc8\xb1\x81\x26\x8b\x78\x8a\x1d\x61\xb9\xb5\x24\x82\x26\x82\x78\xaa\xa2\x8c\xf0\xae\x51\xc7\x83\xd7\x26\x24\x89\x9d\x42\x59\xbc\x65\x4f\x54\xaf\xc4\x33\x72\x05\xa9\xf8\xdd\xf3\x8b\xd4\x40\xb4\x8a\x68\xf2\x4e\xd0\xeb\xdb\x57\xd1\xac\x71\x69\x8e\xaf\x09\x13\x61\xd1\x8f\x38\x0a\xce\x05\x25\x53\xbf\x15\x4b\x6c\xb5\x09\x85\x15\x46\xd0\x7b\xd6\x82\x3d\xf3\x82\x7a\xb4\x16\x94\xda\xa8\xfb\x1c\xce\xd4\x3b\xed\x2c\x04\x26\x09\x65\xbf\x05\x1e\xc4\xa7\x02\x80\xb9\xeb\xb8\xce\x75\x39\x85\xcd\x6c\x5d\xf1\x5b\xe5\xda\xc6\xd4\x54\x77\xc9\xb3\x4a\x86\xf9\x9d\xeb\xf9\x86\x8b\x8e\xc7\x6c\xad\xbf\xc6\x77\xde\xe1\x3c\x97\xfb\xae\xe7\x39\xfe\xf8\x2c\x59\xcb\xe0\x1f\xcd\x26\xe0\x3c\x6f\x76\x8e\x38\xbc\xe9\x84\x36\x60\x85\x4d\xfa\x3a\x26\x14\x3f\x39\x06\x56\xe5\x63\xc6\xe9\xec\x61\xeb\x7f\x90\x12\xa5\x71\xee\xde\xda\xbd\x1e\x56\x22\x9f\xdb\x6f\xa0\xad\x2a\xeb\x9f\x39\x08\x83\x07\xd0\x2f\xc6\x7c\xe8\x58\x89\x70\xa1\xd5\xd5\x55\x54\xd8\x96\x57\xb5\x14\x76\xbb\x75\x23\x0e\xfa\xb8\x2f\x06\xe6\xc7\x1c\x2d\xae\xc9\x1a\x0e\x1b\x16\x59\xc0\x8f\x16\xab\xa2\xf8\x9d\x0e\xb6\x5e\xc7\x7c\x90\xda\x55\x88\xd5\x74\x4a\x92\xeb\x66\x7e\xab\x8f\x56\xcd\x4b\x27\xc0\x99\x14\x96\xeb\xc7\x4e\x22\xc7\xb2\x38\x76\xbd\xef\xf6\x8c\x1d\x96\xee\xf2\x4e\xcd\x2c\xaf\xe5\x6c\x7c\x5b\x73\x8a\x40\x55\xf8\x77\x9d\x9b\x11\x24\xf3\x8f\x92\xe5\x3c\xaf\x0e\xca\xa6\x4a\xff\x23\xd4\xd4\x86\xfe\xeb\xb7\xad\x6f\x9a\x6c\xc9\x82\x43\xfe\xb0\x72\xed\xef\x17\x89\xfa\xfe\x54\x7c\xfd\x40\xeb\x5b\x5f\x76\x84\x43\x01\xa5\xef\xa1\xf0\x87\x1b\x94\xe3\x21\x5d\x93\x8c\xa9\x6e\x06\x60\xac\x15\x39\x8e\xa4\xd6\x58\x02\x12\x91\x33\x8c\xd2\x95\x2e\x65\x8a\xb6\xe2\x29\xdf\x5b\x23\xcc\x10\xd5\xe3\x2b\x26\xdf\x7b\xf7\x56\xb7\x23\x2e\x52\x0c\xc0\xf6\xd5\xab\xef\x21\xc4\xc1\x02\x2e\xe8\xa9\xf6\xa1\xc2\x8c\x5f\x2b\x83\xd3\xbe\xe5\xb3\xbe\x63\xe8\xf2\x0b\x2e\x28\x08\xbe\xae\x5a\x28\x2e\xe1\x87\x78\xc1\x3f\x60\x44\x63\x3d\x67\x2c\x4e\xea\xf5\x18\x9f\xd5\x86\xd2\x86\x6f\xd3\x5d\x9c\x89\x6c\x4a\x07\x78\x20\x98\x59\xf9\x05\x57\xde\x03\x02\xec\x6c\xe6\x8e\x83\x1f\x72\x0d\x83\x0b\x07\x22\xe6\xe6\xb3\x7e\xef\x3b\xda\x06\x7f\x17\xf7\x56\x35\xc1\x16\xdb\xe0\x88\xd7\x66\x8d\x7e\xc5\xa9\x97\xb3\x9f\x2e\xbb\xf1\x0b\x49\x42\x04\x39\x6c\xca\x9b\xa8\x56\xad\xcd\x68\xfb\x38\xb3\xac\x9a\xf0\x4e\x29\x41\x0f\xbe\x9a\x20\xf8\x1f\xb0\xb3\xc0\xce\x68\xf0\x17\x92\x1c\x2e\x74\x09\x7c\x8a\x19\xac\x81\x4d\xb9\x0f\x98\x04\xfb\x82\xf7\x4e\xec\xcb\x58\xa9\xf2\x17\xa5\xe1\x74\xb3\xa1\x2d\x07\xeb\x98\xc4\x69\xd4\x2d\xdf\xdf\x8d\xe5\x62\xc7\xa9\x0a\x58\x2a\x25\x23\x66\xcd\x05\x16\xdd\xfd\xfb\x29\x56\x52\xd3\x00\x4f\xee\x74\xf6\x64\xe8\x06\xdc\x48\x22\xe8\x60\x9e\x4c\x2d\xd4\x5c\x6a\x20\x11\x8c\x6e\xcd\x82\xdd\x03\x25\xd9\x55\xb3\xc3\x7c\x50\xf3\xcf\x2f\xb7\xf3\x8f\xf4\x66\x32\x36\xcc\xde\x55\x06\x86\x99\x4b\x4f\xe8\x12\x7f\xca\x3c\x7f\xfe\x37\xaf\xa8\x49\x61\xba\x8f\x3d\x05\xef\xb3\x31\xe8\x0a\x61\x03\x89\x49\x39\x48\xaf\xf4\xee\x8a\x4b\x10\xeb\x01\xb9\x86\xb6\x1e\x8a\x73\x18\x04\xb6\xa9\x9a\x50\x9a\x06\x3b\x2d\x97\xe0\x21\xa5\x70\xa1\xf4\x0e\x52\xae\x01\x2e\xa3\x0b\x8e\xf2\x88\xf0\xe5\xf1\x93\xa4\xdf\xf7\xbf\x2b\x57\xe1\x18\xf7\x04\xda\xa9\xd6\x76\xaf\xdc\x2a\x05\x75\x59\xf1\x4d\xa8\x95\xd9\x24\x31\xa3\xd8\x86\xba\xb1\x14\x9e\x86\xda\xee\xf5\x1f\x5c\x47\x83\x98\x98\x3a\x66\xc4\x41\x5d\xdf\x94\x3f\x44\x50\x42\xf9\x75\x7d\x93\x70\xf1\x90\x6c\xc1\x35\xe1\xaf\x83\xe7\x3a\x4b\xd9\x6b\xca\xe7\xbe\xea\x63\x7b\x99\xfb\xee\xaf\x0c\x67\xff\x94\xdb\x1d\xaf\xfc\xbf\xc0\x97\xcf\x36\x6d\x34\xea\x80\x4a\x44\xb4\x94\xb9\x83\xe8\x96\x01\x22\x4f\x4a\x4e\x48\xfb\x11\x03\x6d\x97\x3b\x42\x6b\x2c\xe2\xb4\xb9\xd4\x30\x38\xef\x42\x52\x52\xcb\x28\x1b\x0d\x78\xf6\xb7\xfc\xf3\x7f\x38\x81\x1c\xe3\xf6\x85\xd3\x35\x4c\x23\x50\x90\x7d\x67\x1f\x26\xa7\xbd\xf4\x43\xbc\xc3\xd6\x87\xfa\x1d\x59\x57\xfe\x8e\x2b\x10\x7d\x18\xc7\x42\x47\x2b\xc9\xf2\xe9\x37\x12\x48\x6c\x12\x2c\x38\xe9\xa3\x31\x40\xe5\xc8\xd5\x47\x3d\xdc\xfd\x21\xa1\xbe\x4d\x21\x73\x51\x80\x3e\x0e\x03\xb3\x8f\x3b\x47\xaf\xa8\x5b\xaf\xd2\x77\x66\xee\xd7\x4b\xfe\x38\x9f\x2d\x79\xd3\xec\x3d\x8f\x78\x45\x29\x09\xed\xdb\x4f\xb7\xc9\x50\x96\xec\xab\x03\x2f\xd9\x91\xe0\x88\x0b\xd4\xa9\xbc\xd1\x55\xb5\x46\x5f\xf7\xd5\xe6\xbd\x14\xa1\x3e\x58\x7d\x7f\x2e\xc2\x24\x35\x3d\xf7\x26\x13\xf3\x6f\x4b\x3b\x4c\x1a\x9b\xd8\xf8\xab\x1e\x41\xf2\xbc\x4d\x1f\xb0\xc8\xbd\xf3\xf8\x86\xcd\x2b\xac\x03\x4c\xa0\x4b\x7f\x62\x3a\xc8\x7a\x26\xba\x01\xee\x88\xc2\xc4\x02\x4c\xcc\xde\x9a\x10\x9c\x63\xac\xde\x7e\x16\x90\xde\x65\x01\x0a\x23\x4d\x31\x16\x8f\x03\x09\xae\xfc\x80\xf1\x16\x2f\x4c\x79\xdc\x5f\x1f\x5a\x7c\xf5\x16\x6d\x82\x0d\x16\x61\x54\x07\x8c\x5a\xef\xe3\x13\xd2\xe5\x15\x6e\x32\x31\xee\x42\x06\x33\xcd\x72\x4b\x1c\x11\x92\x93\x55\xe3\x1a\x3f\x7e\x7d\xa7\x99\xef\x71\x0e\xec\x38\x5d\x2d\x1f\x64\xa2\x4b\x7c\x3c\xd8\xa7\xcb\x1f\xce\xa8\x0d\x30\xdd\xad\xfd\xad\x9b\x74\x84\x6c\xe7\xdd\x63\xe4\xde\x79\xd7\x5f\xc1\x75\x51\x35\xe2\x51\x17\x55\xde\x61\x9f\x9f\x96\xd8\x26\x5b\x72\x56\xfa\xdc\x2b\xa2\x61\x67\xe6\x5e\xa3\xba\x07\xe8\x9c\xc1\xf3\xfc\x2c\xf8\xdb\x66\x87\xa3\xe0\x2c\xcb\xf6\xd5\x14\xa9\x97\x8a\xa4\x92\x85\xa2\x7e\xdc\xc4\x17\x23\x29\xc8\x1e\x51\x70\x52\x43\xff\x3a\xb5\xe1\x6b\xad\x41\x95\xb8\x6d\x08\x5d\x16\x1d\x9f\x2a\x41\x48\x3c\x2d\x5d\xdc\xd2\x79\x99\x54\xe7\x99\x0e\x05\x8d\x71\x6b\xf3\x64\xb8\x5e\x6b\x31\xcf\x83\xc7\x81\xf0\x89\xcc\x11\x9f\xac\x86\x5d\x98\xc6\xc0\x0d\xcf\x9c\x5e\x29\x4f\x3b\xf6\x4f\x38\x27\x32\xf3\x78\xe2\x5d\x43\x66\x32\x12\x0b\x12\x71\x42\x9a\x93\x15\x92\xdf\x42\xb8\xf0\x22\x08\x84\x86\x4a\x9e\x1f\x3d\x49\x78\x8d\xaa\x27\x39\xde\x12\xb5\xf1\x5a\xac\xe1\xff\x3c\x83\x65\xab\xaa\xa3\x95\xe2\xec\x55\xf4\x24\xd1\xa3\xff\x45\xb5\x0b\x9d\x54\xbf\xed\x32\x6a\x94\xb2\xc4\x35\xec\x31\x68\x02\xee\xff\x55\xfb\x07\xee\x55\xa6\xe2\xab\x4a\x5a\xe0\xcf\x5b\x73\xa8\xbb\xa2\xd8\x0f\x11\x00\x9a\x2d\xb2\x98\xd4\x59\x07\x6c\x53\x55\xd5\x61\x5b\xf1\xe4\xf4\x56\x5a\x7b\xb4\xd9\x56\x7b\x74\x36\x49\x98\x37\xaf\xcb\xa7\x75\x0b\xe2\xd1\xd8\x78\x24\x5f\x5f\xa7\xdc\xff\x6a\x56\xfb\xc2\xec\x1e\x4c\xed\xfd\x4a\xd4\xe9\x99\x58\x68\x7e\x97\xb0\xad\x40\x33\xb0\xf1\x52\x17\xae\x19\x28\x64\xeb\xd0\xb7\xcb\x57\x68\x25\x46\x5d\x0c\x26\xd9\xbe\x02\xbd\xed\x08\x66\x96\x11\xab\x1f\x7b\xa5\x8d\x63\x3f\x4c\x00\xee\x9a\xdf\x67\x55\x89\x58\x4e\x45\x69\x5d\xed\xa7\xe0\xd8\x39\x23\xfd\x7e\xfa\xc3\x35\x36\x78\x28\x3f\x47\x3e\xc8\xf2\xc6\xb9\x86\x0f\x6b\xb7\x4a\x1e\xca\x68\x07\x6c\x8c\xf6\x6d\x47\x9d\x78\x33\x82\x59\x3e\xc3\xf8\xe8\xe2\x2d\x8e\xc8\x29\xa6\x99\x6a\x5e\xd0\x31\xb9\x4d\xea\x3d\x32\xb0\x65\x86\x29\x34\x7b\x6b\xbb\xe0\xc8\x50\xbb\xb2\x00\x2b\xfa\x17\x76\xfe\xca\x35\xcf\xd2\xab\xb1\xb3\xb5\x00\x74\xd5\xe7\x2e\x3a\x05\xa6\xad\xeb\x4c\x0d\xf6\x0f\x6b\xad\x5a\x0c\x0d\xf1\x86\xba\x6f\xa5\x33\x06\xaf\x01\x31\xaa\x23\x2d\xd8\x22\x42\x5e\x9d\xdb\xae\x01\x37\x96\xad\xf2\x08\xc1\x37\xc1\xd1\x4f\xeb\x66\xb0\x24\xbb\x3d\x75\x7c\xd1\x5d\xf7\x88\x44\xfa\x30\x5f\xc1\xb6\xdc\x49\x50\xb0\xd4\x20\xc3\xd2\xe6\x49\x95\x7d\x85\xa8\xf3\xe8\x6c\xb4\xc6\xae\x2f\x2d\xcb\x38\x8e\x91\x97\xce\x35\xba\x01\xa0\xd4\xba\xfb\x1d\xae\x17\x1e\x93\x5d\x55\x9e\x12\xaf\x6a\x51\xff\x02\x59\x6b\xbb\x02\x68\x8b\x0f\xdf\xdf\x47\x94\x74\xc2\x57\x15\x96\xc1\x61\x7f\x50\x90\x0c\xb6\x9d\x2d\x25\x9c\xa1\xbb\x7b\x66\x6f\xae\xc9\x9d\x54\xe7\xa4\xc4\x9b\xc3\xd6\xb2\x34\x75\x47\x1f\x1e\x0b\x5e\xe6\xa9\xf8\x51\x2d\x0f\x6a\xc2\x80\x57\x27\xa2\x26\xdf\xbc\x1f\xd3\xd3\x1a\x76\xba\x22\x12\x11\x6b\x0a\xd4\x70\x0b\x0a\x95\xf9\x2f\x3d\x98\x0f\x51\x9a\x1e\xc8\x31\x8f\xe0\xbe\xc5\x59\xff\xfd\xf1\xaa\x78\x09\xa6\x5e\xc1\xe9\x7a\xa7\xd3\x77\x01\x73\x86\x8a\x80\xde\xa1\xa3\xd0\x28\xc2\x66\xad\xda\x10\x28\x12\xac\x9e\x6c\x8d\x54\x78\x0d\xcd\x8e\xa2\xec\x6e\x08\x86\x60\xd8\x11\x74\x33\x5a\x33\x87\xb4\x08\xc3\x9d\x06\x32\xb6\xb5\xf0\xa3\xe6\x88\x64\xe7\x35\x66\x4c\x6a\x35\x1b\x5d\x88\x34\x0c\x41\x79\xee\x58\x08\x6c\xdb\xcc\x2a\x36\x93\x88\x68\xb7\xbe\x7e\xf3\xb3\xb3\xc2\xed\x95\x07\x4d\xb7\xff\x92\x78\x8d\x57\xa8\x18\xf5\x2e\x2f\x02\x9c\x62\x78\x2d\x93\x6a\x39\x7e\xfc\x2e\xf8\x55\x1b\xe1\x68\x9f\x97\x84\x3e\xad\x6a\xe6\xc6\x72\xac\x3b\xac\x7a\x5e\xe3\x60\x0d\xe4\x98\x7f\x62\xb3\xae\x21\xb2\xed\x01\xd4\xd1\xf3\x78\x21\xb8\x42\xcf\x6a\x8d\x43\xbf\xd3\x3d\xca\xd4\xd9\x07\x07\x76\x14\x02\x03\x1c\x6d\xc7\x02\x7a\x18\x28\x42\xba\xa2\x45\x22\xec\x70\x9a\x5b\x5c\x59\x03\x3f\x5b\xb6\x07\xe1\x79\x12\x05\x2c\x49\xcc\x36\x1a\xdc\xb5\x9f\x8b\x92\xcd\x79\xab\xd3\xae\x6f\x82\xdf\x66\x5a\x90\xa0\xad\x80\xa5\x4e\x95\xa6\x44\x1e\xd4\x36\x03\xb6\x05\x56\x6d\xf7\x86\x81\xd4\x37\x10\xa6\x0b\xdd\x37\x85\x96\x0a\xfd\xe5\x2b\x0c\x7b\xd8\x46\x23\xbb\x4b\x23\xbe\xa5\xfc\x41\xc4\x81\xc9\x85\x00\x7d\x2a\x2d\xf6\xa0\x10\x4b\xe3\xc7\x23\x93\x7c\x69\x38\x88\x53\x95\x5a\x72\x8f\x51\x2e\xa4\x5e\x3a\x88\xc0\xa3\xd4\x70\xf4\xe8\xd4\xde\xcc\x32\xcb\x9d\x58\x27\x6e\xb8\x69\xc2\xfe\x55\x68\x63\xfc\xd7\x93\xfb\xa7\x29\x51\x66\x95\x78\xde\x3d\x15\xf3\x30\xcf\xf5\x4b\x1a\xc8\xa0\x85\x67\x24\x51\x3f\x25\x09\x89\xcb\x8b\x84\x9c\x20\x01\x26\x12\xf5\x83\xc7\x46\x81\xad\x25\xc6\xf4\x40\xdb\xa6\x2e\xd0\x56\x43\xc6\xf4\xc2\x04\x32\xf4\x63\xee\x08\xf2\xa9\x55\x86\xe9\x3b\xe5\x3b\x22\xf7\x98\x0b\xa4\xec\xf1\xcd\xd3\xbf\x26\xa4\xa7\x7a\xf9\x67\xa9\x0d\x1c\xdc\x21\x2a\xf1\x26\x9c\x0c\x9e\x85\x06\x9d\x53\x01\xcc\x77\xba\xe1\x5f\xa7\xed\x94\x8a\x14\x84\x01\x72\xc0\xff\x88\x18\x4f\x0d\x36\x4c\xdc\x96\xbe\xeb\x9b\x93\x28\x19\xa8\xaf\x95\xf1\x84\x35\xb7\x5a\x6b\x32\xa4\x71\x26\xff\xe7\xea\x56\x32\x13\xc6\xcf\xe7\x4f\x82\x16\x6a\x33\xa9\x98\x66\xf9\xc9\xf0\xe2\x51\x66\x8e\xd9\x32\xcb\x66\x30\x8b\x4a\xa3\x47\x85\xf2\x93\x65\xa5\xa5\xfc\xb4\xb7\x5c\xe6\x2a\x73\xb7\x4f\xb4\x85\x09\x7c\xc7\x65\xb5\xe0\x44\xb4\xcf\xa0\xbb\x98\xdd\x6f\xb0\xea\x41\x37\x42\xab\xce\x07\xc5\x20\x14\x03\x5f\xfb\x80\x01\xee\x2d\x76\x83\xbc\xdf\x32\x10\xed\xcc\x16\xa4\x4a\xbe\x74\x6e\xac\xfa\xc1\x03\x52\x41\xdf\x37\xfe\x67\x21\xba\x60\x3b\x09\x9c\x9c\x2c\x80\xe8\xa8\xc6\x37\x23\x30\xc0\xd7\x14\xa5\xb0\x7e\x4f\x84\xe9\xf8\x71\xb2\xea\x5d\x85\x72\xf5\xe6\x9b\x8c\x1c\xdc\xfe\x32\x85\xd5\x09\x9a\x5f\x1e\x11\xab\x9f\x9e\x5a\x49\x99\x81\x84\xad\x73\xe6\x0d\x64\xc7\x50\xc8\x21\x6c\x73\xee\x5d\xbb\x12\x03\xd7\x15\xdf\xd8\xac\x86\xeb\xdc\xd1\x90\x27\xc7\x71\x64\x7f\x3e\xd3\xbc\xce\xba\xb6\xb9\xc8\x69\x89\x7b\x1b\xb0\xf4\xb6\x0f\x84\x9f\xb7\x16\x87\x5d\xe9\xe3\xb3\x8f\x23\xe3\x43\x7b\x1b\x8f\xbb\x76\x59\x04\xe6\xed\x5c\x15\xc9\xe0\x23\xc5\xec\x26\xf1\x3a\x76\xaf\xbb\xf4\xf2\x14\x7c\xc5\x93\xd3\xf2\x6a\x01\x45\x52\x03\x7b\xd4\xae\xb5\xd0\xcf\xfd\x52\x9b\x76\xed\xd5\x7f\x95\x98\xff\x71\xa3\x96\x9c\x7d\x89\x19\x4a\xfa\x17\xca\xd5\x86\x76\x0a\xd0\x06\x65\x52\x28\xc6\xd7\xdc\x71\x5c\xaa\xe3\xd2\x3e\xa8\xb4\x06\x5b\xc9\x48\xf3\x91\xf9\x8e\x49\x81\x05\x3c\x19\xc9\xa1\x34\xff\x36\x89\xf3\x1b\x20\xe7\x63\xbe\x02\xf1\x7c\xc7\x51\xe7\xd3\x59\x7b\x19\x42\x74\xea\x4f\x54\x6f\x76\x91\x4a\x83\xcf\x4f\xe6\x2d\xb2\x80\x50\x8b\x05\x02\x3a\xe5\x89\xc5\x71\x48\x45\xde\x46\xaf\x2f\x50\x06\xe0\xaf\x6f\x5e\x8b\xef\xe2\x02\x7f\xe0\x02\x7b\x03\x5c\x0a\xc5\x56\xf8\x15\x2c\x3d\x02\xb8\x09\xd9\x21\x7f\x9e\x7c\x57\x2e\xcb\x58\x0f\x33\x05\xb2\xeb\xc5\x22\x06\x7b\x65\x40\xd9\xea\xde\x1d\x26\xeb\xa7\x66\xbc\xe8\x0a\xaa\x70\x72\x0c\x0b\x94\xfe\xed\x66\xb0\x08\xdd\xb5\x57\x1e\x50\x98\x0e\x16\x4e\x53\x44\x90\x38\x5c\xb3\xab\x6d\x17\x2d\x9e\x76\x4e\x6a\xf8\xd1\x9c\x53\x24\x7a\xb0\xe9\xc6\xab\xc8\x12\x91\x0a\x31\x41\x2f\x69\x22\xa4\x25\x78\x58\x56\x7c\x1d\x55\x80\xfe\x88\x7e\x57\xef\xdc\x9f\xb7\xca\x97\xed\xd4\x97\x9e\x4e\xab\x6c\x94\x7e\x17\x39\xcd\x6b\x59\xd3\x52\x27\x26\x89\xb5\x5f\xfa\xd0\x0d\xb1\x50\x27\xf5\x6d\x17\x02\x44\xd9\x3d\xed\x9b\xb2\x08\xd6\x8b\xa3\x39\x17\xfc\xb0\x40\xfa\x61\x3c\x8d\x0c\x08\xbf\x16\x43\xc3\xa2\x10\xda\x13\xf0\xd8\x8d\x0a\xff\xc1\x76\x88\x0c\x81\x81\xa8\x21\xfc\x8a\x00\xde\x44\xc1\xbc\x73\xed\x6a\xc4\xbd\xb5\x9c\xc8\x22\xa0\xfe\x0f\x3a\xcf\xdc\x91\xb2\xc5\x2f\x1b\x89\xad\x0c\xd9\xa7\xa0\x4d\x09\x6b\x5d\x86\x66\xeb\xd0\x11\x87\x30\x18\xaa\xcd\x9b\x85\x7e\x09\xa4\xa0\x38\xfa\xe6\x51\x47\x20\x61\x1c\xdf\x98\x27\x1b\xa4\xcf\x27\x68\xe4\xcc\xb4\xa2\x1f\x9e\xb8\x6d\x51\x42\x5a\x17\x08\x87\xe6\x99\x5e\x4f\x37\xb8\x41\x21\x4c\x14\xdc\x85\x99\x2f\xff\x7a\x60\xf8\x71\xff\x30\xa3\x86\xc5\x5b\x23\x87\x2e\x6a\x54\xaf\x8c\xaa\x06\x76\x15\x48\x08\xfd\x28\x2c\xaa\x59\xec\x72\x49\x08\x5d\x14\x96\xc3\x87\x90\xb0\x6c\xad\x93\xa1\x5b\xa9\xee\xe2\xea\x20\xec\x12\x28\xcf\xc5\xee\x64\x69\x32\xb5\x31\xae\xf4\xcf\xa3\xa7\xb3\x01\xa9\x10\x9b\x62\x40\x15\x7e\xe7\x64\x9b\x81\x78\xf6\x53\x55\xf5\x0c\x2a\x43\xcc\x95\xa4\x1c\xa4\xc8\x1a\x49\x7a\x45\xeb\xf4\xfe\xcd\xcd\x1a\xeb\x73\x7f\x57\xaa\xa3\x10\x62\x7b\xf3\xf6\x35\x9e\x96\x47\xe5\x36\xa6\xa5\x30\x88\x07\x4c\x0d\x19\x06\xd7\x19\x52\x3e\xc0\x91\xb8\xf1\x12\xce\xf9\x99\x22\xfc\x26\x40\x97\x33\x59\x9d\xc4\xd9\xc1\x57\x6d\xf1\x02\xc5\x55\xa9\x4c\x25\x9e\x8a\x83\x9e\xdd\x3f\xff\x91\x25\x38\x3b\x8c\xac\xae\x3f\xef\x42\x27\x66\x86\x35\x36\x9d\xcc\x56\x43\x3d\x2a\x08\xb5\x2f\x34\x02\xe5\xc3\x0a\x52\x17\x40\x1b\x78\x55\x1b\xf8\xa4\x79\xb4\x88\xdd\x95\xa0\x75\x8c\x57\xad\xe6\x35\x9e\x20\x27\xaa\x64\xc2\xf1\x42\xc7\x00\xa7\xdc\xa4\xd4\x5a\x28\x4e\xce\x15\x31\x23\x82\x34\xdd\xa9\x43\x82\x8b\xa7\x3d\x3d\xc9\x80\xe9\x86\xde\x09\xcb\x5e\x22\x04\x0a\x0c\x25\xfc\x89\x00\x29\x1c\x92\x4a\xaf\x01\x36\x32\x51\x68\x5c\x42\x99\x24\x44\xdd\xe2\xd4\xf9\x5a\x91\xd5\x25\xf8\x0d\x97\xe1\xcc\xa1\xd8\x99\x0e\xa4\x17\xb3\x08\xbb\xd2\x3f\x7b\x71\x4b\x32\xaf\xca\x04\x5a\x69\x81\xe2\x6a\xe1\xec\x31\xa8\x3f\xf8\xc0\x10\x2e\x2d\x1f\xe2\xa1\xcc\x54\xb0\x37\xce\x6d\x9b\xa0\x0a\xc5\x11\x94\xa2\xcf\xe9\x86\xcb\x43\xbd\x05\xe6\xa6\x11\x88\xc1\x7d\x59\x39\xdc\x66\x52\x66\x73\x93\x0f\x22\xec\x77\x2a\xbf\xb9\x5d\xe0\x8f\xfd\xc2\xa5\x0c\xb7\x07\x89\xb1\x3e\xa8\x34\x6a\x4c\xc9\x5d\x14\x1b\xf9\xe1\xb4\xc0\xf2\x04\x2b\x9d\xf9\x3a\x0b\xab\x95\xb2\x68\x44\x49\x7c\x97\x7f\xca\xb5\x89\x7f\xfe\xb2\x97\x0f\x53\x16\xc7\xcb\x1a\x0f\x12\x08\xd3\x08\x40\x17\x20\xbf\x75\x03\x80\x5a\x02\xe3\xc0\x7e\x93\xf3\x38\xa4\x81\x73\x2b\xc9\xa6\x65\xec\x63\x42\x44\xb6\x10\x69\x68\x21\x56\x9b\x48\xea\x4f\xc6\xda\x96\x78\xda\x73\x8e\xfd\xd4\x22\x45\xcd\x23\xa3\x73\x6a\xe5\x91\xbc\x56\x0f\x0a\x2c\xaa\x65\x0c\x48\x0d\x78\x00\x8e\x7a\x0a\xaf\xa6\xe8\xc2\x36\x05\x4b\x78\x49\x15\x56\x23\x78\xbe\x1e\x79\x96\xa2\x36\x84\x40\xd0\x09\x76\x67\x46\xfb\xe3\xec\xe8\x2f\xfb\x85\x02\x12\xdc\x50\x97\xba\xa7\x39\x24\x26\xd2\x96\x56\xed\x41\x43\x1e\xea\xa9\x27\x17\x4b\x2a\xc1\xe9\x82\x5e\x10\x85\x75\x2a\x18\x98\xb9\x45\x80\x8b\xa3\xaf\x46\x0c\x31\xca\xb8\x58\x3c\x38\x8c\x34\x9d\x1f\x6d\x92\xf5\xda\xc3\xaa\x6e\xc9\x55\x9f\x33\xa7\x32\x17\x97\x8e\x3e\x0b\x9e\xcf\x70\xc0\x84\xd0\x51\x66\xfc\x67\xc6\x61\x38\x64\xc9\xf9\xdc\x15\xc7\x54\x32\x96\x36\xbd\x35\xdc\x4a\x02\x02\x29\xb6\xaa\x8c\xa9\x54\x75\x88\x1d\x6a\x78\x57\x1e\x10\xaa\xf4\xb2\x76\xa4\x35\xd2\x39\xa8\x91\x30\x9e\x19\x07\xc8\x67\xf9\xc3\x05\xf2\x00\xc3\x1e\x1e\x8a\x31\x7c\x4e\x7b\xd7\x70\x83\x10\x02\xf8\x69\xbd\x2a\xd7\x6e\xa9\x25\xe1\x9d\x41\x48\x05\x4a\x58\xd5\x6f\xcc\x0f\xe4\x5e\x3d\xff\x46\xe8\x7e\x4e\xa4\x25\xa5\xaf\x7c\x19\x75\xca\x5b\x86\xd8\xe6\x30\x56\x85\xad\xb8\xe7\x70\xa9\xf1\xf6\xa6\xca\x26\xca\xb0\x73\xa7\x86\xdd\xe0\x4d\x35\x9f\xc1\x81\x43\xbb\x05\x14\x7e\xd8\x2e\x2c\x80\x2f\x18\x14\x55\xdf\xab\x6c\x0d\x00\x13\xcc\x4c\x31\xd5\x01\x91\x4f\xb2\xc4\x54\xff\xa3\x77\x66\x6a\x0c\x9a\xe1\x0e\xda\xa2\x25\xdb\xcb\x9a\x75\x9f\x1c\x48\xe9\xc9\xca\xc2\x1d\xf2\xfa\xa6\x6c\x98\xfe\x41\x94\x40\xe7\x32\x34\x09\x62\x10\xf3\xf6\x10\xfc\xac\x76\x8f\x5c\xda\x23\xcf\x0f\xfa\x1f\x83\xee\x4f\xfd\x7f\x7f\x24\x6f\xbe\x5e\xfe\x5b\x3e\x66\x65\x83\x51\x7a\x12\x8c\x0e\x07\x13\xf3\x1b\xd9\xd7\x7e\x6f\xd0\x9d\xa3\x48\x13\xa5\x14\x62\x64\xa9\xbd\xdb\x8a\x72\x7b\x96\x50\xdc\x49\x0f\x3c\xbf\x74\xec\x63\xfd\xea\x7b\x2c\x9a\x17\xd0\xc0\xdc\x0d\xb1\x4d\x3b\x07\xf7\x22\xc3\xe8\x87\x25\x1a\xd6\xe8\x44\xa4\x39\x7d\xc6\x38\x5d\x00\x02\x90\x96\xbe\x70\x68\x55\x69\x97\x8c\x57\x60\x43\x94\x42\x3f\x22\x10\x6e\x9a\x62\x6b\x21\xd5\xf5\xa7\xd0\x20\x07\x00\xfc\xc7\x5f\xe8\x40\x07\xfc\x51\x57\x9d\xaf\x3c\x37\x66\xb2\xdb\xc9\x22\xab\xd8\x38\x49\x5d\x20\x2e\x25\x12\x25\xc4\x7c\xdf\x95\x4c\x97\xf0\x11\xef\xf7\xb3\x78\xba\x3a\x57\xf8\x54\x31\xe7\xa4\x93\x46\x0b\xb1\x4c\x5b\xd3\x74\x3c\x9e\x28\x15\x2c\xd3\x50\x66\xd4\xd0\x47\xe2\xa1\x36\x1a\xf4\x8a\xae\x86\x80\x08\xb8\x89\x2c\xc7\xf6\xa4\xa2\xb2\xdb\x91\x83\xd5\x7a\x83\xaf\x00\x2b\x2a\x68\x70\xd8\xca\x06\x2a\xe7\x0a\xc8\xbc\x3e\x0c\xa7\xc3\xa5\x1a\x9c\x5e\x5b\xac\x57\xef\x84\x90\x46\x2d\x0d\x4c\xc1\x9f\x0a\x40\xac\x6b\xfd\x79\x0b\x7f\x71\xed\x5f\x5e\xff\x0b\x6e\xb0\x8e\x47\x06\xb0\x37\x97\xad\x36\xa7\xca\x0f\x33\xf4\x2a\x8c\x1a\x5e\x0b\x00\xcb\xa0\xba\xdc\x8a\x16\x42\x7c\x25\x5a\xeb\x06\xc4\xe9\xc7\x6c\xa6\x61\xce\xac\x8a\x09\x45\x30\x81\xb0\x36\x27\x70\x03\x15\x66\x7f\x9c\x8e\xd4\x28\xcd\xba\x95\x73\x75\x59\xf9\xc0\xa8\x28\x8f\x02\x14\x6c\x0b\x49\x82\x2b\xa5\x3e\x02\x93\x06\xe9\x41\x10\xd6\xf5\x35\x04\x67\x7d\xbe\x82\x4c\xb8\x4f\x42\xbf\x1c\x61\xc2\x86\x31\x15\x73\xac\xab\x03\xad\x3a\xed\x38\xd1\xba\x50\xc4\xd0\xd0\xc2\x94\x75\x98\xa4\xd9\xaf\x00\xef\xe0\x88\xc5\x71\xf5\xc9\x07\xe3\x08\x4b\x51\x6d\x8f\xc3\x23\x2e\xad\xcc\x72\x5d\x6f\xfc\x6e\xad\xe9\x99\xee\xf2\x61\x72\x43\xf9\xc5\xba\xf7\xe5\xad\xe8\xeb\x9f\xb1\x5e\x89\x41\x1c\xca\x19\x8c\x01\x68\x87\x72\x33\xf6\x64\xac\x61\x4a\xa6\x00\xee\xcb\x15\xd0\xf1\xea\xd0\xc0\xd2\x52\xfd\x04\x91\x15\x6c\x51\x30\x85\x97\x06\x21\x5c\xc9\x14\x42\xd4\x37\x1a\x29\xef\x47\x1a\xd8\x4c\x1c\xd6\x48\xcc\xb6\x51\x2e\xa2\xf9\xd9\xce\x50\xc3\xc2\x8a\x83\x48\x12\x57\x27\xa4\xfe\x3f\x7d\x94\x93\x63\xc6\xdc\x12\xd9\xdf\x8e\xdc\x8e\x92\x94\xf7\x9e\x8d\x52\x82\x85\x15\xd5\x72\x91\xfa\x5d\x85\xe9\x49\x23\x3a\x79\xd7\x38\xa5\x5d\xc5\xe8\xa6\x55\xc9\x06\xd6\x20\x62\x57\x06\xa3\xc2\x91\x96\xe2\x03\x08\x98\x4c\xe8\x92\x47\x17\xf2\x67\x9d\xa5\x33\x80\xa0\x20\x32\x43\x70\x8b\xef\x22\xb6\x5b\x90\xe3\xa8\xaf\x46\x5f\xab\x54\x97\x2b\x9a\xdd\x50\xbf\x70\x28\x29\xea\x8d\x72\x54\x8c\xc7\x3a\x0a\x38\x46\xb9\x9c\x63\xde\x65\xcb\x74\x1e\x13\x8b\x0b\x92\xa5\x61\xcd\x51\xd1\x45\x4b\xbf\x66\xc4\xcf\xe1\x00\x7d\xf1\xc0\x84\x90\xf4\x53\xe5\x4d\x57\xdb\x54\xe9\x48\x75\xd1\x52\xa9\xcf\x6a\x66\x65\xef\xe9\xc1\x11\x16\x0f\x03\x9c\xcb\x54\x7c\x3c\xc5\xcb\xe2\x96\xdc\xbf\x8b\xef\xb0\x84\x26\x8e\x20\x1c\x46\x10\x10\xc7\x81\x07\xe2\xc3\xbf\xfc\x59\x0a\xe9\xab\xe1\xcf\xfe\x6d\xff\xf3\x32\x79\x9c\x71\x1e\x9a\xa7\xa7\xc8\xf9\x04\x71\xf2\xa2\xf4\xd1\x4b\x08\xc6\x2c\x33\x6b\x55\x6e\x98\x90\x4f\x63\x4c\xd4\xbb\x8b\xc1\xff\xa4\xc8\x0a\xab\x9c\xe0\x9d\x0f\x3e\xfa\x82\xef\x7e\x86\x18\x32\xa1\x86\x1e\x26\x11\xc6\x9f\xd1\x8f\x91\xc9\x4c\x95\x55\x2f\xca\x7e\x6e\x67\x87\xbc\x52\xda\x24\x4e\x42\x36\x07\x52\x6a\x55\x55\x17\x45\x37\x3d\x14\x2b\x51\xa5\x5a\x0b\xda\x74\x5e\xfb\x5e\xb9\xf5\x67\xf0\xc7\x3f\x6d\x95\xc6\xdd\x75\xdf\x8b\x4c\x19\x08\x08\x7c\x04\xba\x81\x51\x20\x4a\x08\xf0\xfe\xce\x0f\xf2\xad\x4b\xc4\xf3\xcf\x50\xe2\xb9\x27\xb6\xbd\xbf\x49\x1c\x76\x4a\x12\x50\xc2\xa2\x4f\x0b\x76\xdd\x00\xa8\x70\x43\x66\x43\x0d\x73\x6c\x96\xac\xd4\x4c\x3c\xfe\x0a\x90\x10\xd9\x34\xe8\x0d\x07\x52\x83\xa0\x20\x28\x08\x82\x16\x6a\xa5\x37\x98\x2e\x73\x32\x87\x64\x9e\x6f\x35\x6d\x77\xc1\x6d\x61\x43\x65\xb9\x2e\xf7\x57\xc0\xc1\x30\x0c\x7f\xc4\x3d\x60\x7e\xee\xc9\x6d\x03\x85\xe3\xa9\xa2\x76\x15\xba\x58\xec\xfb\xa1\x48\xa1\x50\x28\x52\x28\x14\xab\xf4\xe0\xf7\x80\x94\xe1\x41\x53\x71\x5d\x20\x95\x5a\xa6\xcb\xce\xd5\x63\x3a\x70\x79\xbe\x02\x7f\x51\xa1\x3c\x5c\x55\x7b\xcc\xa9\x37\x14\x29\x5f\x44\x57\xcc\x3b\x92\x2b\x14\x6c\xfe\xb4\x87\xbe\xe9\xd3\xd5\x84\xbe\xc3\x34\x7c\x4d\x1a\x8d\x66\x08\x0a\xd6\xa6\x1f\xdb\x34\xab\xfd\x26\x50\x88\xee\x26\xdd\xad\x4b\xa7\xd3\x0d\xb3\x5c\xf6\xf4\x66\xfa\x00\x61\x96\x7d\x66\x20\xaf\xe1\x49\x5c\x34\xad\x75\xf0\x18\x01\xbd\x8b\x99\x18\x26\xd1\x6c\x7c\xb7\x99\x71\xf3\x5a\x98\x8e\xc5\x93\xc8\x54\xc6\xba\x63\x5e\x71\x04\x09\xfd\x67\x8c\x14\x96\x57\x09\x23\x1a\xed\xa7\x3d\x2b\xe0\x9a\xbc\x88\xe5\x45\x63\xdf\x6b\x03\xd9\xf1\xb5\x4b\x56\x8a\xfb\xa9\xc8\x21\x13\x5d\x17\x00\x2e\x58\x70\xca\xd8\xcc\x07\x71\xf9\x33\x34\xb1\xa4\x2a\x0c\xf9\xd4\x23\xcb\xc0\xec\x10\x39\x81\xc4\x28\xfb\xb1\xcc\xad\x3c\x15\x59\x45\x65\xc4\xf6\x9c\x6f\xca\x9d\xfc\x7b\xd9\x54\x3f\x89\x4a\x8d\xba\x54\xa2\x6a\xa6\x3e\xd3\xe5\x50\x03\x6a\x2c\x84\xc8\x9e\xde\xa7\x6e\xab\x5f\x3d\xee\x48\x37\x5c\x4d\xb0\x4c\x0b\x70\x5a\xdb\x59\x83\x63\xd7\x66\x4e\xa7\xd0\xa9\xf7\xa9\xbb\x2d\xd7\x05\x3c\x3f\xd8\x0f\x3d\x26\x3d\xd0\x3c\x3d\xa6\x4b\xe0\xa6\xfa\x89\xe5\x5f\x08\x54\xa4\xda\xc4\xaf\x7c\xfa\xb6\x06\xaf\xb4\x3d\x61\xfa\x15\x8e\xfe\xf0\xf5\x43\x82\x27\xe9\xc7\xbf\x37\x1a\x57\xff\x1a\xdb\xcc\x52\xf7\xc4\x2d\xee\x4c\x56\x92\x73\x47\x6e\xa9\x22\xea\xe8\x29\x82\x6f\xb3\xbb\x38\xb5\x10\xb8\x76\x6b\xb9\xf7\x52\xb3\xe2\x5a\x05\x67\x65\xea\xdf\x17\xac\x63\x49\x59\x27\x7f\xa9\xb1\xa8\x45\xb9\xdb\xb1\xdb\x66\xad\x2d\x52\xa1\xb3\x67\x0f\x76\xe4\xd7\x70\x3a\xb5\x73\x7b\xb8\xbd\xf9\xe0\xb9\x0b\xee\x32\x23\xb6\xd7\x74\xe4\xc3\xaf\x00\xdb\xbb\x47\xd9\x3a\x3a\xd5\xe0\xda\x2e\x87\x27\x8b\x27\x1f\x91\x1e\xdb\x2d\x4f\x9f\x40\x45\x1a\x5d\x86\xe7\x36\x0c\xe5\x71\x0e\xfb\xf1\xb8\x9e\xde\xf0\xac\x48\x5d\x65\xf8\x9b\x47\x39\x11\x5f\x34\x13\xa0\xc2\x98\xb2\x6a\xd7\x9c\x6d\xec\x6f\x82\xb0\x04\x85\xa7\x39\x22\x97\x2e\xfc\x10\xc0\x90\xaa\x13\x86\x7e\x3b\x64\xda\xa8\x72\x51\xcd\x86\xdd\x4e\xc7\x5a\x5d\x8c\x54\x79\xe7\xae\x3e\x65\xd7\x33\xa4\xd6\xf0\xa4\xa0\x2b\x09\x52\x85\x18\x32\xed\x63\x46\xda\x1a\x45\x22\x33\x63\x7b\xe6\xfd\xeb\x77\xa6\xfa\x00\xc1\x88\x8b\x82\x7e\xae\x5c\xb6\xc3\x30\x1c\xf6\x59\xbe\x08\x84\x8b\x5b\xa8\x4d\x8e\xf3\xf0\x42\xe3\x4b\x74\x89\x26\x05\x65\xac\x37\x89\x90\xde\xd8\x80\x77\xe8\xdf\x89\xfe\x3f\x1f\x05\x1f\xf4\xaa\xf7\x66\xbf\x6e\x7b\xef\x88\xb7\xf7\x40\x30\xb1\xef\xbc\x0e\xbe\x9c\x4a\xce\xee\xfa\x75\x61\xff\xc4\xf5\x5e\xcd\x0b\xfc\xce\xaf\xdc\xaf\xa6\x0c\x39\xc6\x06\xe3\x09\x99\x42\x8e\x10\x89\x1a\xfd\xf8\x35\x04\x3d\x6c\xfb\x63\xfd\xda\xbf\x69\xff\x71\xae\xfa\xb4\x37\x52\x69\x33\x16\x72\xc6\x62\x63\x78\x6c\x4d\xf8\x6b\xd2\x34\xb5\x9a\x42\x44\x49\xd4\x59\x8e\xa3\x08\xdc\x10\x6a\xd6\x32\x36\x3c\x2d\xd0\x30\x17\x7d\x3a\x28\xae\x03\xd5\x1b\x6a\xc6\x9e\x7b\x73\x00\xb6\x7f\x68\xee\x17\x74\xe1\x34\x47\xd7\x82\x69\x85\x18\x85\x99\x8b\x67\xa0\x24\x48\x85\x9c\xa5\xdb\xd2\x13\x23\x6f\xeb\x5f\x09\xe0\xfb\xfe\xe9\x84\x2f\x10\x4b\x93\xc7\xba\xd1\x42\xdf\xac\xdc\xec\xf3\xe6\xce\x16\xc8\x2a\x44\xe5\xe6\x35\x7d\xaf\x60\x41\x85\x9b\x21\x93\xed\x79\x6c\x09\x12\x06\x87\x9f\xe2\xca\xab\xa2\x5b\x17\x7e\xea\xf6\xed\x6d\x5b\x83\x65\xfd\xca\x8e\x52\x11\x79\xbf\xee\xdc\xe6\xce\xd0\xd7\x6d\xb7\xb0\x6f\xcb\xee\x4c\xdb\x5d\x49\x3f\x8e\x3d\xd9\x76\x4a\x51\x59\xb9\x7a\xc5\xfd\xa7\xde\x45\x2f\xc8\x2f\xbb\x09\xf7\xfc\x00\x1e\x25\x71\x42\xec\x3a\xa9\x48\x93\xc9\x92\xcb\x53\x2a\x53\xab\x43\xd1\xb4\xda\xf4\xfa\x8c\xc6\x36\xdb\xb7\xd9\xc9\x6a\x7d\x6c\x10\x7a\x26\x03\xe8\x8a\xac\x4d\x77\x0c\x20\x63\xa1\x20\x02\xb6\x58\xbc\xc5\x96\xa9\xb4\x30\x1b\x0e\x86\xab\x6c\xca\x56\x91\x57\x35\x4b\xf3\x28\x3a\x72\x77\xfa\x86\xf4\xac\x7f\x9b\x31\xd3\x22\x70\x8b\x94\xa6\xd2\x96\x92\x5b\x3a\x37\x93\xa5\x3e\xea\x79\xb7\xc1\xbf\x59\x01\x00\xce\xbe\x5d\xcb\xbe\xed\x88\xc5\xb4\xff\xc9\x0a\x00\xa8\xb5\xee\xd6\x09\xf7\x74\x15\xd6\x3a\x54\xaf\x6c\x28\x82\x0a\x01\x51\xc1\x76\xb9\x21\xbf\xc9\x97\x3c\x5a\x57\x95\x93\xd0\xad\xb8\xff\xbb\x2f\x00\x80\xfe\xc8\xe3\x36\x51\x31\xb5\xa7\x3f\x33\x6b\x17\xad\x25\x15\xe0\xb8\xe4\xe6\x17\x7c\x42\xc3\x73\xa1\x44\x08\xdb\x09\xde\x9e\x68\x13\xaf\x2f\x7f\xde\xed\xfc\x01\xfd\xdf\x52\xb4\xe3\x31\xde\xbf\xeb\x84\x6c\xb9\xe2\x97\x67\x77\x49\x7b\x59\x5b\x2d\xc7\x6b\xb2\x61\xff\x23\xdd\x3a\x5d\x49\x11\xe0\xea\x69\x59\x7a\x12\xb9\x50\xcc\xdb\x69\xe3\x75\xe6\x2b\x3a\xaf\x12\x33\x33\x12\xee\x24\x54\xa1\x41\x57\x7e\x14\x44\x7c\xda\x0f\x2b\x6c\xc1\xe4\xfd\x0d\xdc\x28\xe0\xe1\xd2\x86\x04\x44\x4b\xae\xf6\x70\x44\x12\xd4\x35\x06\xa4\xb6\xe8\x83\x98\x41\xd3\xe2\x2f\xf3\x31\x5c\x0e\x3e\xd5\x0d\xaf\x2e\x04\x87\x64\xa7\x76\x0f\x9a\xcb\x6d\x38\x0f\x0f\xaa\xc7\xa3\x36\xb9\xc9\x91\xc5\x53\x15\x91\x5a\xe7\xbb\x05\x3e\x48\x04\xc9\x07\xe3\x8d\x57\xc5\xf6\x8d\xcb\xaf\xb8\xd7\x72\xd1\x0f\x73\x90\xc6\xc3\x51\xe1\xc4\xd4\xda\xd6\x31\xf9\xe7\x4b\xae\x12\x77\x13\x9e\x0f\xf3\x22\x82\x05\x8b\xf5\xc5\xb3\xa6\x8f\x61\xf5\x42\x3f\x76\xad\xc3\x0b\xf6\x86\x2f\x92\x0c\xa8\x33\xcb\xf9\xe9\x64\xb0\xe2\x71\xe8\xf2\x3a\xa7\xc9\x1e\xac\x20\xe9\x40\x9c\xc7\x38\x25\x51\x55\xd2\x60\x96\xc7\x9c\xaf\x35\x6d\xef\x48\x82\xd1\x6d\xd8\xcf\xcc\x20\x90\x53\x88\xe2\x64\x5f\x3e\x35\x39\x51\xb7\xbc\x23\x45\x52\x17\xa4\x51\x8e\x1b\x23\xf3\x0b\x9a\x40\x91\x0f\xe0\x19\x41\x02\xf2\x59\x52\xa7\x6b\x48\xce\x1f\xfe\x7f\x81\xb8\x8a\xa9\x70\x32\x95\x9c\x9b\xf7\xe0\xde\x0b\x3e\x6c\xb7\xce\xb5\xd8\x3b\x6e\xf6\xf6\x1e\xa6\x2e\xdb\xbe\x90\x8f\x7d\x64\xd6\xfb\x41\x07\x09\x27\x5e\xb0\x83\xd4\x79\xf0\xb2\xf5\xc4\x4c\x25\x53\x90\xfb\x93\x8a\xdb\x74\xbe\x53\x8d\xc3\xd3\x4d\xb9\xe0\xe9\xd6\xa3\x3e\xdd\x7e\x34\x9a\x8a\x74\xc0\xbe\x4d\x4b\xa4\x66\x9e\xa2\x5c\x62\x79\x2d\x95\xa1\xbf\x85\xe4\x6f\xf7\x9e\xe2\xb6\xcd\x32\x54\xa1\xa3\xd7\xc6\xad\x79\xf7\xd9\x24\x22\xd6\x7d\xb3\x62\x42\x21\x35\x42\xef\xc7\xc8\x25\x17\x58\x0d\xd2\x89\xf7\xa3\x93\x28\xc1\x94\x0b\xee\x8e\x91\xcf\x50\xba\x66\xf5\xe9\xf9\xfe\x9f\x3e\xe2\x0a\x92\xdc\x1f\xab\x69\xde\xd2\xe1\xad\x5a\xde\x43\x29\x48\x73\x17\x92\xeb\x30\xf2\x79\xf1\x26\x64\x70\x88\xab\x46\x8a\xcb\xb9\x0b\x55\xd7\x3c\x64\xf1\x79\xdf\xce\xf4\x72\xa9\x4d\x28\xda\x44\x37\x67\xe2\x10\xb8\xb0\x6b\xd3\xf8\x9b\xbb\x5f\x8e\x27\xa5\xd4\x67\x99\xb4\x7a\x08\x63\x7b\xb7\x18\x4b\x3d\xc4\x18\x7f\x55\xb2\xfe\x67\xc4\x31\xa4\xed\x01\x12\x7e\xcb\x97\x5a\xff\x79\xd7\x1a\xaa\x50\x59\xdf\x19\x2a\x4b\x4f\xf6\xab\x27\xfe\xcd\x29\x6e\x75\x79\xed\xc3\xeb\xe4\xbc\x60\x9d\x7f\x5e\xed\xc7\x03\xe3\x80\x8b\x62\xfb\x92\x87\xbb\xf9\xc1\xbf\xa4\xa9\xda\x09\x85\x33\x16\x6d\xee\x8d\xbb\x77\xd1\xd2\x20\x73\x5a\x76\x30\x4b\x0b\x91\x6d\x21\x97\x5d\xef\xaa\xd0\x82\x91\x8b\x5d\x70\xfd\xef\xdb\xdf\x1c\x14\x75\x46\xf2\xe5\x41\x95\x0b\x7e\x00\xcd\xea\x95\xb6\x59\x51\xf3\x43\xe7\x3f\xd2\xb9\x54\xb3\xfc\xfe\x89\x9f\xdd\xd7\xf0\x08\xce\x40\x7a\xf3\x7f\xfd\x42\x85\x88\x94\x7a\xcf\xd3\x85\xe0\x15\x8a\x6b\x58\x19\x38\xef\x22\xfb\xfc\xe9\xd7\xd5\x76\x1a\x8b\x28\xdd\xd5\x1a\x43\x4f\xfa\xb3\x97\x07\x82\xc3\x87\x64\x07\xa8\x2f\xc1\x63\xfd\xa4\xd7\x3d\xac\x00\x6d\x42\xb7\x01\xc6\x85\xe7\x3c\x8a\x1f\x44\x1b\x69\xb9\x2d\xa3\xb8\x76\xf7\x4e\x3b\x61\x5a\xfc\x50\xee\x4b\x68\xc7\xb8\x72\x69\xd7\x9b\xfe\x4b\x2f\x3f\x6c\x19\xe2\xcb\x73\x91\x8f\x22\x95\x15\x7b\x9a\xf7\xd9\xc6\x12\x69\xac\x72\xf4\x76\x3c\x5c\x13\x58\xa4\x1b\x8e\x93\x31\x7d\x95\xf6\xf0\xd0\xec\x55\xa7\xbd\x4f\x65\x5e\x42\x5f\x8b\x84\x68\xdb\xb6\x1d\x8f\xc5\x04\x67\xd9\x59\x00\x28\x39\x10\xee\x6f\xac\x58\x2f\x5c\x70\x80\x58\x99\xee\x91\xf6\xc8\x98\xd6\x6b\x79\x91\x28\x4f\x8f\x10\x0c\xfd\xc3\xc8\x4b\x9b\x04\x6c\x20\xfd\xc5\x95\x39\x23\x99\x5f\x88\x32\x39\xaa\x5b\x03\xa1\xd8\x07\xeb\xf4\x4a\xc0\xbb\x0c\x44\x04\x97\xca\x46\x4a\xf4\xbd\xd3\xe5\xd7\x23\xf0\x03\x17\xed\xc4\x45\x8e\x21\x98\x90\xb2\x6d\x29\x5a\x2c\xc4\xcc\x6c\xf2\x04\x56\x81\x5c\x4a\x2a\x05\x21\x89\x6d\x10\x45\xc6\xa1\x11\x92\xa4\xc8\x90\x31\x2c\x42\x5f\xa1\xb4\x1c\xf6\xc5\xc9\x58\x5a\x24\xb5\x2b\x5f\x41\x59\x2c\xb3\x79\x39\x94\xcd\xef\x76\x2f\x34\x69\x0b\xef\x56\x02\xd1\xcd\x3c\x23\x00\x0c\x40\x2e\x62\xe3\xf4\x4e\xf0\xe6\xf7\xbf\x0c\x57\x1f\x2c\xcf\x14\x54\x20\xf0\xf7\xd8\xb1\xa0\x9c\xf8\xaa\x5b\x8b\xdb\xb6\x06\x12\x61\x39\x41\x13\x7b\xa3\x4a\x54\x8f\xba\xf4\xe2\x2a\x3b\x50\xa3\x19\x39\x73\xad\xda\x62\x1e\x22\x56\x68\x80\x93\x44\x06\x52\x8f\x74\x73\x0e\x91\x6b\x44\x9a\x29\x2c\xac\xef\x0c\xe0\x58\xa9\x32\x3c\x32\xa0\x36\x3a\x2a\x84\xeb\x6b\x77\x2b\xb5\x29\xff\x86\xae\x0d\x4e\xfa\x54\xe6\x06\x41\xd3\x54\x37\x99\x7b\xd2\xba\xce\xa9\x6a\xec\x35\xd9\xc8\xb7\x35\x90\x9d\x48\xb7\xbf\x2e\xc0\x8e\x8d\x36\x44\x9d\xe7\x73\x14\x54\x9b\xb5\xb2\xc3\xd9\xe6\xef\x2c\xec\x27\x96\x9c\x1e\x6a\x75\x09\xd9\x76\xec\xa2\xea\xee\x08\x52\x70\x5a\xc5\xb5\x12\xac\x98\x82\xc6\x74\xad\x07\xb2\x7b\xcc\xea\xd0\x6a\x72\x08\x15\x4d\xef\x24\x58\x83\x2e\x25\xac\x2d\xac\xa0\xcc\xe1\x05\xde\x23\x41\xef\x77\x68\xa3\x00\x08\x07\x50\xce\x3a\x30\x51\xb3\x07\xcd\x03\x9d\xf9\x81\xbd\x63\x44\xd7\xb0\x23\x78\xd5\xd6\x94\x21\xe8\xbd\x33\x52\xba\x21\xdb\x48\xa5\x0e\xa3\x9a\x47\x68\x50\xd0\xa6\x9f\x38\x65\xe6\x75\x76\x0a\x81\xe1\x98\x9a\x91\xb3\xd9\xce\xc8\x1f\xd0\xc8\x74\x4e\x28\xc4\xc2\xec\x4d\xfb\xe2\xe0\xba\x36\x19\x7f\x34\xad\xa1\x9f\x33\xd2\xc6\xa3\x26\x94\xbc\x99\xca\xe0\x95\xd0\xcf\x8f\x89\x77\x13\x22\xe7\xad\x95\xaf\xda\xb1\x90\x96\x00\x76\x74\x25\xc5\xad\xf9\x95\x4b\xe9\xff\x57\x8a\xc5\xf1\x19\xf8\x7b\xd9\xc1\x06\xb3\x97\xe9\x0c\x41\x20\xbd\xe1\xc4\x67\x81\x03\x86\x4d\xcf\x65\xb0\xc6\x67\xf9\x1e\x92\x45\xb6\xe8\x34\x89\x66\x35\x35\xbc\x31\x53\xd5\x7b\x67\xc0\x64\xa3\xb6\x17\x2c\x74\x9e\xaa\x89\xe3\x2e\x2d\xce\xb9\x06\xdb\xa3\x2c\xb6\x8f\xc4\x37\x16\x01\xb0\x3e\x48\x34\x95\xb8\x63\x8d\xa0\x44\x89\x38\x60\x96\x53\x7b\x6c\x33\xc3\x84\x8d\xd4\xe3\x3f\x7a\x3d\xb3\x2c\x4f\x35\xa7\xe3\x76\x7a\x84\x04\x52\xeb\xca\xc4\x52\x75\x32\xa5\x1b\x7b\xef\x8c\x6a\x85\xb5\xb9\x4b\x85\xb0\x3a\xbc\xd2\xa5\x06\xb7\xe1\x53\xa9\x19\xd7\x21\xb7\xf8\x36\xa8\x59\x74\xf6\x38\x51\xc1\x91\xec\xe8\xf4\x4a\xf0\xdd\x6e\x2a\x5d\x03\x85\x5a\x36\x23\x56\xb7\x1a\xba\x21\xa2\x84\x5d\x6c\xb0\x4c\xf8\x5b\x31\xd0\x3b\x5d\x9b\xd4\x49\xde\x7a\x79\xb3\x6e\x66\xf7\xcb\x5b\x3c\xd5\x70\x8a\x5b\x1b\x01\x25\x7e\x39\xcb\x88\xc1\x93\xfc\xda\x52\xb2\x7a\xf8\x9b\x1c\x70\x3d\xfb\x95\x72\x92\x4b\x62\x32\x2f\x6a\x71\x97\x4e\x4f\x94\xd0\xd4\x5a\xf6\x68\x3f\x3e\x18\xfb\x2e\xdf\x4d\x3f\x05\xc1\xfa\xc9\xfb\x9a\xd7\x74\xde\xba\x34\xf9\x4c\x82\x9a\xce\x18\xc2\x81\x60\x00\x16\xe1\xb9\x02\x03\x1b\x33\xf5\x62\x72\x6e\xdd\xe5\x41\xf2\x96\x69\x52\x6d\x54\x8c\x60\x89\x49\xca\xd3\x8a\x22\x09\x5d\x86\x4d\x46\x5c\x4d\xb1\x68\x23\xa9\x42\xb8\x13\x32\xe7\x60\xb4\xd3\x33\x02\x3a\x93\xb5\x27\x6a\xb4\xbd\xdb\x61\xed\x2d\xaa\x1e\x2e\xa6\xe8\x89\x09\x08\xcb\xe0\x47\x66\x37\xda\x3c\x4b\xc0\x56\xc3\x3b\x39\xce\xb2\x82\x07\xdd\x11\x6e\xab\x70\xe8\xea\xaa\x19\x5c\xcc\x58\x1f\x88\x79\xe4\x28\x93\x37\x06\xdc\x70\xbe\x4d\xde\xfe\x61\x60\xa4\x98\x8b\x6c\xec\xce\x50\x8b\xdc\x6b\x5f\x35\xb4\x51\x51\x89\x24\x80\x2b\x06\x22\x7c\xe8\xa5\xe3\x75\x58\xf3\xa7\x3a\x8d\x9f\xe7\x3c\x93\x34\xb2\x03\x6c\xbe\xf2\xa9\x44\xb4\x34\x9f\x12\x9c\x1b\x3e\x37\xaf\x8d\xec\x93\xeb\xad\x45\xac\xcd\x58\x9f\x98\x43\x43\xe2\xd3\x0e\xf2\x08\x3c\x21\x0e\xe4\xcd\x77\x9e\x48\x6a\x42\xa2\x46\x69\xec\x6e\x37\x1c\x8e\x73\xd1\x7d\xee\x03\x4f\x84\x49\x8d\x5d\x71\x73\xe6\xdc\x84\x56\x80\xf4\xfe\x6a\x8c\x9a\xe0\x70\xbc\x35\x32\x14\xc8\x94\x16\xdb\x44\x24\x98\x15\xb8\xa2\x8a\x44\xd7\xa6\xb7\xc3\x7f\x7d\xfb\x27\x3d\xf8\xf9\x86\xd2\x92\xeb\x00\x0a\xb2\xbd\x16\x98\xde\x8d\x20\x30\x1e\xcc\x03\x25\x92\xe6\x32\xd4\xab\x17\xe7\x34\xcc\x48\xb7\xe4\xb4\x0c\x35\x10\x3b\xe7\xbb\xfb\x26\xbf\x24\xa6\x6b\x77\xba\x2a\xa3\xcd\x8e\xdb\xe3\x0e\x89\xa5\xb8\xd3\xa3\x60\x55\xd9\x9f\xb8\xcd\xcc\xa1\xb5\xa2\xdd\xc4\x2a\x71\x7d\x35\xf5\x76\x7d\xe0\xdb\x48\x81\x9f\x42\x75\x64\x5b\x29\xc3\x44\x52\x8e\x19\xf0\x4e\x2c\xbc\x18\x88\x22\x86\xbf\x13\x16\xb6\x71\xea\x97\x24\xac\xd5\xfe\xb7\xd8\xdc\xae\xdd\xff\x3a\xd3\x19\x26\x98\x5a\x50\x95\x92\x02\xcc\xc1\xfd\x70\xdb\xf8\xeb\x1f\xd7\xdf\xef\x8c\x65\x49\x71\xad\x18\x0b\xb4\x63\x4d\xbf\xfd\xc2\x8f\xb3\x1e\xcb\x8f\xda\xf5\x19\x68\xa6\x9e\x58\x04\x86\x22\x09\xf0\x89\xc2\xf5\xef\x5d\xaa\x38\x1d\x67\xd7\xf5\x87\x0e\x6b\x81\x0f\x69\xf2\xf9\xe5\x00\xc9\x2a\xc7\xb4\xfb\x64\x2c\x15\xed\xef\xf2\xd3\xe9\x92\xff\x1b\x02\xff\x5e\x5b\x6e\x99\xbb\x73\x76\xfb\x2a\x0d\xb0\xee\xab\xeb\x21\xd5\xe8\x67\x88\xa9\x8a\xbb\x36\xd2\xc4\xd1\x83\x0e\x25\x2a\x62\x35\x96\x84\x30\x6c\xf4\xa6\xbc\x9b\x71\x3a\x96\x5d\x9d\x81\x82\x72\x31\xdf\x13\x89\x30\xcb\x6f\x8c\x91\xf5\x46\x50\x51\xdc\x2d\xbb\xf7\xa9\x2e\x18\x7f\x9c\x69\x51\xfc\x04\x4b\x0c\x71\x65\xa0\x12\x81\xb9\xfd\x13\x05\x7c\xb0\xbb\x43\x11\xd6\xc5\x69\x7f\xcb\x37\xc5\x52\x1e\x8c\xc3\xdf\xf3\xab\xb0\x86\x73\x98\x68\x2b\xdb\x02\x6b\x53\xe4\x5a\x03\x47\x83\x1c\x0c\x88\xc8\x76\x9d\x89\xca\x6d\x6d\xe0\xb7\xd2\xe4\x16\x73\x42\x84\xc6\x21\x38\xcb\x1c\x07\x12\x54\xc7\x0d\xbc\x6f\x43\x0c\x3c\xbc\x94\xae\xbf\xe6\xd3\x76\x95\xb1\xb8\xc0\x07\x60\xb8\x11\xb8\x8d\xcf\x18\x91\xf3\xd0\x0f\x61\xf5\x00\x3d\xf3\xea\x43\x7a\xbd\x85\xf9\x78\xf7\xc3\x5e\xbf\x80\xf1\x1b\xb7\xce\xae\x79\x4b\x43\x55\x42\x02\x87\xf2\x42\x04\xf7\x9b\xa3\x14\xda\xae\x01\x23\x6f\x38\xda\xe4\xec\x9d\x41\x79\xbf\x5f\xc7\x31\xc8\x91\x42\xe1\xe0\x6d\x47\xab\xcb\x30\xdd\xc5\x12\xdc\xfa\xc8\x21\x0b\xe1\x48\xf7\xf5\xfd\x15\xc7\x39\x1b\x7e\xf8\xcb\xa2\xb5\x77\xca\x38\x36\xa6\x4d\x60\xb1\xe0\xfa\x8d\x9e\xde\xa6\x1d\x36\x45\xdf\xe1\xbe\xe1\x46\x3d\x07\xcb\xe3\xc6\x04\x36\xbc\x61\xdb\x78\x50\x91\xe2\xbd\xff\xe6\xad\x28\x30\xc0\x0f\x1d\xf4\x97\x7d\xf3\xd0\xc5\xe0\x6a\x51\xed\x8a\xf0\x68\x8e\x02\x7b\x85\xe0\xa3\x13\xa1\xdb\x72\x9b\x1b\x5d\xdb\xdc\x62\xa9\xd3\x7c\x5c\xa1\xea\x98\x48\xd3\x19\x1a\x79\xbb\xcf\xdf\xa9\x8c\x9e\x24\xcb\x36\x2f\x09\xf2\x51\xd0\xb6\x6d\xc8\xca\xdf\xf9\x19\xb7\x7f\xba\xb2\xa9\xc1\xd8\xed\xb7\x12\x0e\x02\x96\xe5\xfe\x50\x5d\xbf\xf3\x9b\xf7\x19\x57\xf6\x7f\xf1\xdb\x61\xd9\x63\x89\x81\xfa\xd8\x7d\x28\xbb\xcf\xd7\xef\x18\x44\x2c\x35\x58\x22\x5a\x6b\x64\x68\x99\x8d\xbe\xb5\x27\xdc\xfd\x54\x19\xfa\x6a\xec\x03\xa6\x3e\x0c\x98\x91\x70\x5c\xa2\xa9\xc8\x8e\x75\x8e\xb7\xd3\xc3\x85\x97\x7e\x40\x81\xa1\x7f\x9f\x45\xd7\xcf\x36\x19\x7a\xde\xc6\xc4\xf1\x50\x91\x96\xac\x43\xa4\xd5\x0b\x7f\xc6\xa3\x8f\x91\x2c\xbb\x49\xef\xde\xb9\x6e\x3e\x36\xd3\x04\xfc\x33\x74\x73\x33\x86\xee\xef\x0d\x54\x3a\x42\xda\xc4\xdb\x20\xdd\x38\xbb\xe7\x38\xd9\x67\x4a\x54\xda\x96\x46\x68\x41\x90\x01\x0f\x2f\x81\x9e\x40\xdf\xc0\x31\xd9\x61\x94\xe5\x57\x24\x69\x24\xe6\xfb\x0b\xae\x79\x32\x06\xf1\xdb\x8d\xf0\xfd\x86\xab\x67\xc6\x14\x7e\x9b\xd1\x92\x2f\x62\x3b\xe2\x78\xff\x0d\x4d\x13\x78\x93\xec\x23\x10\xce\x36\x49\x7b\xdb\xa4\x7a\x12\x5e\x60\x7f\xb4\x97\x91\x91\x9f\xf3\xca\x09\x5c\xec\xb7\x19\x39\xf9\x0b\xd3\x58\xd1\xbf\xb6\x0b\xf3\xe2\xed\x21\x4d\xf8\xe1\xf3\x5a\x61\x43\x4c\xa7\x29\x97\x70\x04\x39\xd2\x0e\x22\x72\x8e\x2a\x48\x45\x38\x4d\x22\x72\xef\x6b\xf0\x9c\x2f\x71\x8d\x4a\xac\x8d\xb1\xc5\x1d\x7c\x4a\xa8\x4a\xc9\xb4\xbe\x12\x24\x82\x07\x5f\xa3\xe5\xe4\x8e\x7b\x54\xe7\x6b\x5d\xa5\x77\xb9\x2b\xaf\xc3\xe3\xbb\xb8\x89\x47\xc3\x4f\xa5\x31\x53\x9b\x47\x34\x09\x94\xe1\x44\xfd\x2d\xc6\x2b\x7c\x23\x70\xa0\x91\xac\x11\xbb\xf3\x71\x8e\x38\x12\x6b\x3b\xad\xe6\x37\xb5\xa3\xa6\x84\x9f\x3e\xec\xc6\x6c\x45\xa3\x9b\x2f\xa9\x3f\xd1\x24\xee\x5b\x39\xc2\xcb\xe8\x88\xc4\x30\x3b\x49\x68\xf4\x16\xf4\x42\x0d\xa9\xfd\xdd\x1c\x57\x31\x75\x58\x8a\xe6\x72\x6d\x8c\xe6\xe2\x5e\xfd\xa9\xe3\x59\xb8\xf3\xcb\xd4\xb4\x97\x4b\x5e\xc0\xbf\xf7\x68\xbb\xf3\xb0\xdc\xd8\xf3\xe5\xed\xe6\xc3\xd0\x70\x6f\x57\x9c\xac\xb1\x3e\xf9\x11\xbe\x73\x74\xc7\xe6\xad\xa5\x4b\x4a\xc2\xca\x42\xdf\xc8\x7e\x7c\xd0\xee\x47\x4b\x9f\x4f\x6f\xd2\x90\xb2\x9d\x87\x73\xb8\xa0\x7a\x35\xa4\xd6\x58\xb5\x56\xa9\xd1\x0c\x43\x2d\x46\xeb\x79\x64\x67\x38\x06\xbc\x95\xaa\xd8\x1c\x2c\xcd\xf6\x59\x0b\xb2\x23\xde\xae\x70\xa3\xf0\xab\x86\x52\xbe\x8f\x67\x7d\x94\xcb\x6b\x83\x3c\x24\xc6\xc0\x83\xb0\x36\x59\x27\xbb\xaa\x36\x7d\xf9\x4a\xd8\x5a\xc0\xa0\x6d\x04\x2c\x50\xa3\x01\x30\x39\x9e\xf7\x0d\x36\x5b\x75\x74\xb9\x5c\xca\x38\xc5\xff\xc8\x7f\x70\x66\x02\x25\x01\x5b\x13\x91\x85\x01\x2a\xa0\x93\xe1\x38\xae\x94\x2d\x02\x06\xe0\xf8\xff\xff\x8f\x5f\x0f\xb8\xcd\xe9\x00\x28\xff\x13\xff\xd9\xd6\x32\xbd\xb3\xfd\x80\xaf\x45\x81\xc9\x02\xb4\xf9\x3f\xf4\x7f\x6d\xb3\x2c\x57\x0c\x1d\xe1\x78\x0c\x6f\xe8\x4f\x64\x3a\x78\x0f\xd1\x04\xba\xc1\xa7\x7a\x08\x53\x79\xe2\xd5\x96\x8c\x4c\x9f\x9c\x4f\x12\x00\xc0\x86\x74\x65\xe2\x21\x81\x2c\x0c\x44\x2d\x18\x7d\xa6\xfc\x12\x60\x9d\x01\xe0\xb3\x3e\x2b\x4a\xfd\x4c\x8a\xf5\x8d\x5a\x4d\x87\x62\x83\x21\xf6\x17\xa4\x0d\x01\x30\xfb\x35\x62\x15\x22\xc1\xd5\x02\x38\xd6\x3c\x60\xac\x27\x50\xc3\x0d\xaa\xbb\x96\x13\x66\xd3\x91\x3f\x58\xba\x89\x07\x6a\x9d\x95\x62\x9f\xad\xc6\x7e\x1f\x6e\x3a\xad\x64\xce\x69\x6b\x4f\xc2\x32\x2c\x01\x1b\xde\x3a\x6c\xed\x6c\xef\xa2\x4f\x0b\xf5\xda\x22\xfe\x1d\x09\xd4\x17\x30\x0b\xe8\x8d\x4d\x8b\x63\x3d\x12\x58\x6c\xea\x4b\x0a\xa7\xa1\xff\x2d\x95\xb5\x91\x43\xcc\xdd\x60\xc3\xc4\xf6\x7b\xd5\xd5\xd5\xaf\x6f\x19\x36\x06\x76\x08\xa1\xb0\xc9\x61\xb7\x72\xb7\xcc\x9f\xe7\x94\x4d\xd2\xa5\xfa\xd9\xbd\xd6\xe7\xf9\x48\x39\xd6\x63\x57\x4f\xcb\x95\xb0\xe7\x74\xa3\x3b\x8f\xff\xa6\xc7\x83\x84\x6c\x71\x9f\x07\x8e\x23\x6a\x09\x3d\xd0\x07\x22\xe6\xf4\x40\x13\xe1\x2d\xff\x1c\x38\x8b\xd2\xc1\x36\x42\x50\x75\xf8\xaf\xe0\x95\x8e\xd0\x85\x14\x40\x60\x21\x67\xa6\xfe\x2d\x77\xa7\x78\x42\xeb\x84\x5a\x7e\xc0\xa0\xdd\x0d\x0c\x1a\x8b\xc0\xa0\x59\x08\xbc\x8a\x2b\xba\xfc\x04\x7a\x7a\xf6\x1d\xaf\x92\xe9\xc6\xae\x83\xdd\x44\x6c\xfd\x33\x0b\xd5\x35\xe5\xc4\xfc\xc5\x43\xd1\x63\x82\x03\x35\x6f\xa6\xbe\x3c\xcb\x98\x99\x79\x80\xcf\xf2\x25\xc5\xe8\x96\xee\xdb\xd7\x32\x97\x6c\x07\x68\x39\xb9\x95\x54\x22\x79\x02\xf8\xfe\x90\xa6\x29\xd8\x10\x66\xea\x95\xca\xc8\x39\xa6\x9d\x90\x90\xd1\x8e\x41\x20\x55\x42\x83\xf6\x00\x2e\xd1\x1f\x9d\x50\x95\x7f\x7a\xaf\x8c\x7b\x01\xcf\x56\x0a\xb2\x09\xad\x5d\xe8\xe8\x27\x92\x36\x6d\xb9\xe8\xd8\x07\x62\x33\x46\x6d\x1c\x37\x79\x01\x50\x8b\xee\x5a\x0c\x01\x4e\x65\xa2\xf6\xfc\xbd\x2e\x4a\x03\xd2\x67\xb8\xd6\x7f\xba\xae\x14\xac\x01\xec\x4f\x10\x9c\xe5\x80\xe3\xb0\x83\x73\x95\x80\xdf\xa4\x57\xc8\x69\x52\x3a\x86\x28\xd3\x3f\x78\x46\x5e\xe0\xe5\xe0\x56\xda\xee\x4d\x1f\x3c\x3b\xc9\xab\xda\x87\x14\x91\x76\x6b\x35\x36\xf6\xad\xfe\xdf\x07\xac\xab\xfa\x20\xb4\xa0\xb6\x62\x9a\x0f\x4e\x36\xcf\x77\x7a\xad\x1e\x3f\x7c\x99\x27\xfe\xaf\xe3\xd7\x59\x11\x3a\xc2\x43\x5c\x79\x20\x86\x87\x2e\x1f\x49\xa3\x07\x9a\x59\x30\x3a\x3f\x03\xab\x58\x91\xf9\xec\x61\xd5\xb4\xf2\x8e\x8e\x04\xab\xb8\xbf\xaf\xb7\xc5\x7f\x15\x0d\x1c\xc8\xd4\xa6\x01\x0a\xf9\x07\xaf\x69\x69\x92\xd2\x9c\x19\x8b\x5a\xfc\x43\x11\x86\xd3\x48\x09\xc0\x1f\xde\x4d\xd3\x7d\x49\x59\x05\x63\xa1\x2e\x00\xfb\x5d\x7a\x73\xfa\xd5\xfb\x6b\x3d\x11\x10\x66\xb2\x97\xc1\x72\x60\x63\x40\x60\xcf\x07\x9e\x03\xcb\x84\x01\xc6\x02\xbe\x39\x2c\x78\x05\x9e\xe9\x15\xc0\xe5\x5b\xd4\xad\xe8\xfa\xe2\x5c\x5b\x3f\xe8\x48\x47\x67\x14\xdc\xc2\x31\x66\x11\x2c\xc8\x54\x57\xd2\xf6\x42\xa6\x35\xf0\xca\x78\xb5\xcb\xc7\xf8\xf4\x2c\x7f\x05\x9e\xfb\x2c\x18\x73\xd5\x01\x2e\x92\xd4\x96\xb3\x83\xe8\xaa\x0b\x78\x74\x05\x51\x24\x7c\xc6\x5e\x86\x41\x61\x60\x56\xb2\x98\x1a\xb8\xb6\x59\x7e\x44\x04\xf8\xda\x3e\xed\xc9\x1c\x7b\x91\x32\x70\x84\xab\x32\x18\x4e\x0b\x33\x78\x39\xee\xf8\x04\xc2\xc2\xfb\x0a\x01\x76\x78\xd7\x02\xb6\x45\xfe\x5d\xa7\x64\x07\x2c\x0c\xe1\x70\x53\xa2\x6f\x4c\x87\x83\xd9\xfd\xc4\xb4\x32\x93\x52\x60\x71\x5c\x3d\x02\xc9\xd7\x1c\x0e\x62\x03\x2d\xb5\xa3\x11\x93\xff\xb0\xf8\x6f\x71\xee\xd9\xb8\xc1\x4d\xbc\x02\x72\x22\xbd\xd6\x69\xd0\xe4\xd5\x16\x6f\xe2\x59\x3f\xfd\x24\xc4\x08\x79\x8e\x61\xaf\x13\xaf\xbe\xb2\x22\xc8\x74\x77\xbc\x82\xb3\xcd\x15\x2d\xd7\xc0\xb3\x68\x03\xcf\x02\x0e\x00\x63\xdc\x15\xcc\xc0\xb5\x5e\x23\x16\x7d\x83\x8a\xeb\x6c\x19\xc3\xf2\x80\x50\xb2\xae\xe4\x6a\x9e\x69\x12\x93\x89\x53\x0b\xd1\x41\xd1\xfb\x1f\x53\x50\xf6\x01\x5e\xcb\xae\x39\x2b\x60\x9b\xe1\xc4\x9f\x65\xbf\x7c\x7b\xe6\x19\x57\x84\xa9\x62\x7c\x4d\x38\x73\x57\xa9\x30\xfa\x73\xff\xc0\x7e\x3d\x74\x81\xe1\xd4\x0f\x8e\x8f\x6a\xc8\x72\x1d\x74\x2f\xf0\x3a\x34\x8c\x01\x38\x50\x44\x44\xb8\x72\x05\xd7\xb8\xdd\xd8\x1c\x2f\xa4\x59\x9d\xcc\x11\x27\x0d\xbd\xa5\x25\x8f\x9e\x39\xe8\x7f\xc7\x98\x8f\x8c\x7d\x61\xeb\x00\xa2\x26\x5f\x5d\x6b\x5b\xfc\xcc\x35\x9f\x84\xe3\x1c\xb3\xc1\x2a\xea\x1c\xa6\x1e\xc1\x01\x12\x2c\x92\x38\x0e\x45\xf3\xc7\x54\x0e\x14\xc2\x2c\x87\x3c\x07\xc6\x32\x7b\x32\x5b\xae\x02\x5c\xde\x52\xbb\x24\x7b\xc7\x9e\xdb\x74\xdc\x1e\x17\xba\x6a\x04\xab\x13\x67\x40\xb2\xad\x08\x87\x89\x00\x43\x62\x09\xa9\x49\x52\xe8\x66\x58\xe2\xaf\x0e\xc3\x32\x46\xaa\x1b\x74\xda\xf3\xcc\x15\x23\x14\xd3\x2e\x15\x3c\x37\xb0\x42\x38\x1b\xa0\x0d\x1d\x31\x91\x42\x79\x20\x31\x4e\xd1\xc4\x56\xa4\x2b\x5c\x60\xe4\xed\x7a\x58\x0c\x02\x18\x7b\x24\xa1\xe5\xdc\x8f\x2b\xb0\x64\x84\x36\x0d\x35\x20\x03\x3c\x9c\xc6\x04\xd5\x84\xb2\x1b\x11\x3a\x47\x35\x67\xe4\xfe\xda\xdd\x02\x53\x33\x78\x5b\xb2\xdb\xe9\x9b\xb5\xcd\x97\xcc\x19\x11\x8a\xfd\x1c\x3b\xf1\x61\x05\xa6\x08\x40\xe3\xf7\x5d\xf4\xaf\x15\x6b\x0c\xbb\xf7\xff\xc6\x03\x33\x20\x2a\x86\x73\x71\x38\xd6\xbf\x44\x2c\x8a\x69\x33\x54\x3d\xcc\x90\xd3\xfe\x84\x84\xfe\x40\x3d\x68\x62\xea\xbf\xd4\x4c\x2a\x68\x52\xb7\x47\xd1\xc4\x34\x29\x6d\x80\x42\x57\x21\xc9\x61\xcc\x6c\x6f\x91\xae\x09\x13\x82\x46\x69\xa1\xa8\xeb\x34\x19\x02\x83\xc1\x05\x68\xfa\x99\xf1\x88\xbe\x31\x00\x77\xec\x83\xc9\xde\x10\x37\x7c\x52\xbf\x70\x5e\x03\x72\x68\xb3\xf0\x33\x08\x4c\x6f\x4c\x41\xf7\x15\x41\xb1\xd2\x7c\x17\x2e\x36\xe9\x35\xa7\x94\xa7\x63\x25\x89\xdd\x29\x16\x35\x08\x24\xa1\x13\x27\xca\x2d\x1f\xdb\x8b\x29\x61\x62\x61\x5f\x7d\x82\x58\xeb\xcc\x19\xb9\xd0\xfa\x0f\xe4\xcf\x8f\x62\xc6\xac\x4d\x8f\x1c\xd0\xbc\x27\x04\x6c\xad\x11\x31\xd3\x15\xa5\x91\x82\x89\x75\xbb\x8f\x4c\xc8\x58\x51\x37\x75\xf2\x25\x9e\x9a\xf8\x29\xdf\x99\xf9\xb2\x9b\xb5\x50\xb8\x50\xb2\xd1\x4b\x3c\x7a\xd8\x82\xc1\x28\xdb\xe3\x0f\x1d\x52\x03\xb1\x51\x3f\xc0\x3b\xdf\x3a\x22\xc2\x4d\x39\x6c\xe1\x1b\x74\x42\x2a\x89\x7d\xd7\x06\x33\xcc\xac\x3d\xb9\x86\xbb\xc0\xa4\xf2\xc3\x8c\x85\x34\xbb\x6e\xa8\x01\x46\xcc\xa8\xc1\xb3\x47\x21\xf7\xdc\x2f\x18\xcf\x82\x5f\x6f\x5b\x91\xfe\x65\x91\x48\xc3\xba\xd5\xe1\xbc\x7c\xb0\x3c\xad\x2d\xa2\x78\x01\xbb\x2d\xdb\xa8\xdc\x92\x46\x6f\xc5\x59\x4e\xb0\x67\x4a\xb4\x1f\x11\x39\xb2\xd6\x36\xbc\x6d\x73\x9f\xaa\xdc\xeb\xba\xc5\xf8\xf6\x22\xce\x9f\x6d\x74\x48\x15\x38\xa5\x57\x52\x72\x50\xa7\xe5\x44\xed\x57\xb6\xd6\x21\x07\x4a\x1f\x21\x35\xca\xc4\x26\x2b\xed\x1b\x45\x4f\x15\xc7\xa9\x95\x12\x47\xdc\x90\xa6\xa7\xcb\xb6\x54\x2b\x52\x92\x62\xe1\x4d\x24\x12\xb5\x12\x1b\xf8\xbf\x02\x22\x02\x6e\x72\xd4\x0c\x66\x47\xbc\x94\x2b\xc9\xb0\xed\xa5\x32\x03\x46\x40\x2a\x70\xc8\xa7\xe9\xb5\x56\x8c\xe5\x02\x44\x0c\x0b\x62\x47\x0e\x98\xd4\xf0\x36\xba\xb2\x5f\x54\x03\x0a\x89\x4a\x70\x7c\x57\x3e\xce\x86\xbb\x6e\x70\x0d\xe9\x4d\x39\x01\x07\xcf\x34\xf6\xd8\x1b\xd4\x0f\x77\xfd\x24\x64\x16\x5d\x9a\xb7\x44\x53\x28\xb2\x95\x72\x67\x0e\x80\xd4\x72\x21\xc9\x40\x14\xbd\x3d\x2c\x3a\x0a\x84\xb3\x89\x68\xe2\x38\x6c\x87\xb4\x92\x89\xa9\xa5\x2f\xa1\x20\xf2\x70\x94\x0b\x53\xda\x61\xf3\x0d\xae\xdb\x37\x6e\xb8\x41\x99\xf1\x83\xeb\xf5\xcf\x6a\x6d\x91\x8e\xf8\x78\xd9\x36\x51\x86\xca\xad\x55\x52\xe9\x84\xc1\x29\x3b\x7d\x1d\xd9\xf1\x6f\x62\x05\x11\x8c\x52\x9b\xbc\x8f\x5b\x68\x87\xca\x4a\x2a\x27\xd5\xd0\x1a\x5a\x86\xd3\xc1\xd7\xcf\x66\x5b\x23\x9d\xc1\xb0\x6a\xdc\xa6\xee\x51\xab\x9b\x7f\x68\x2b\x88\x7f\x4e\x78\x9c\x2e\x45\xd5\x03\xbb\x7a\x4f\x52\x29\x40\xdc\x59\x3e\x19\x5a\x47\x91\x3e\xd6\x22\xa0\x5b\x40\xfe\xfd\x12\x18\xac\x0f\x06\x7f\x26\x21\xa7\x0b\x46\xc3\xe8\x42\x24\x9f\x25\xaf\x35\x54\xb0\x52\xef\x2a\xcc\x0e\xee\x95\xb0\x18\xd2\xac\x15\x37\xef\xc0\xb7\x3a\x5e\x1d\xd0\xa1\xcb\x29\xd4\xb5\xe9\xb6\xc7\x07\xd7\x0b\xf7\xfb\x01\x4d\x2f\x88\xdb\x92\x3e\x69\x02\xe4\x4d\x5a\x4a\xa8\xdf\xcf\xfa\x4c\xf8\x41\x2c\x7a\x29\x13\x7d\x48\xf3\x81\x20\xcd\x15\xd8\xaf\x6b\xb9\x06\x7c\xed\xf1\x51\x96\xc4\x6c\x85\xbe\x19\x33\xa9\xd0\x68\x2b\x52\x45\xff\x59\x22\x93\x01\x45\x60\xf2\xc3\x2a\xa8\xde\x95\x30\xfc\x08\x18\xc7\x25\x95\x00\xd3\x24\x9d\x06\x85\x36\x4a\x46\xd6\x1a\xef\x72\xa4\x10\x4b\xf4\xb1\x04\x75\xa8\x86\x63\x81\x58\x1a\x2e\x62\xd5\x04\x03\x25\xa6\x32\x42\xfb\x17\x49\xa7\x46\xc1\xee\x8e\x23\x84\x50\x56\x1b\xc1\xeb\x24\xfb\x15\xfd\xd6\x08\xcc\x53\x77\xb0\xae\x7e\xf1\xb5\xa1\x2f\x76\xf4\x19\x31\x75\xd9\x69\xd4\x4a\xd3\x20\xae\x50\x43\x05\x1d\xc6\xef\xc4\xf3\xdb\x7d\x34\xfc\xca\xd0\xe8\x40\x6e\x41\x25\x89\xad\xe5\x82\x09\xeb\x01\x94\x43\x01\x10\x2a\x7b\x80\xaf\xa4\x04\xc7\x76\x77\xc3\x2f\x1a\xab\x59\x48\xea\x93\xca\xf2\x30\x21\x56\x29\xe1\x6f\xbe\xac\x06\xf6\xa3\x6b\x05\xf8\xb9\x28\x11\xfc\x45\x1a\x95\x7e\x81\xce\xc7\x1f\xd6\x2d\x55\x66\x8f\xf7\x14\xd9\xff\xdc\x07\xfc\x45\x14\x50\x28\xba\x31\x72\x6d\xaa\xa4\x0a\xc8\xd2\xfb\x24\xf5\xf4\xe9\x69\xcc\x97\x78\x6a\xd7\xf7\x69\xc5\xc6\xd8\xcb\xed\x23\xd4\xf8\xbd\x7f\xa5\x61\x58\x2a\xd8\xbf\x4d\xae\x21\x03\xfc\x58\x7e\xda\xd6\x2c\x53\x1d\x5c\xcb\x06\xf7\x18\x6c\x58\x11\x8e\x8c\xd9\x34\x82\x16\x58\x66\x00\xc4\x33\x51\x75\x28\x76\x2d\x78\x19\xfb\x80\x4d\x8b\x04\xba\xee\x49\x2a\x6d\x84\xbe\x73\x4c\xcd\xa4\xf2\x33\xdd\xb9\x11\x3d\x2f\x8f\x6d\x8f\x13\x4b\x43\x88\x5a\x2b\x2d\x1c\xa7\x2b\xdd\xc1\xb2\x6b\x86\xda\x46\x8b\x05\xcb\x46\x1c\x15\x7b\x7e\x4f\x5f\x30\xa7\xf4\x31\x86\xe5\xb9\xa9\x31\x95\x36\x51\x59\x24\xf0\x58\x58\xa5\x69\x67\xdd\x21\x0d\x27\x17\x68\xd8\x95\x5d\x61\x9d\xcf\xf2\x8c\xb8\x44\x1a\x1a\x75\x06\x4a\x8d\x0a\xd4\x79\x67\x7c\xc4\x99\x93\x11\xdd\xcb\x6c\x11\x29\x99\x03\xfe\x4d\xa6\x9d\x52\xc6\x96\xca\xca\xc8\xda\x34\xba\x8d\x16\x64\x3e\xfb\x92\xa2\x5f\x80\x2f\x5b\x16\x27\x35\x5b\x0e\x3e\x14\x82\xa8\x80\x17\xe0\x69\x43\xe6\x5b\x0d\xaa\x29\x0a\x1f\x3b\x78\xb9\x36\xaa\x78\x2c\x6a\xda\x4b\xcf\xd4\x22\xec\x99\xeb\x0d\x8c\x38\x3a\xe2\x92\xec\xdc\x7f\xd4\x05\x2b\xf7\x01\xc8\x3b\x8a\xe4\x2e\xa1\xc3\xfd\x30\xc9\x7f\xb4\xbf\xf2\x70\xa1\xcb\x63\xc9\xe4\x04\xa6\x98\x18\x94\x4e\x6c\x20\x13\x9f\xa5\x26\xd1\x7c\x4d\x42\xa7\x93\x56\xe2\xb5\x27\x68\xda\x01\xc9\xca\xb4\xde\xb6\x22\x51\x35\x57\xc0\x09\x25\x3b\xd1\xb0\x8b\x32\x47\xa0\x0a\x1c\xba\xc1\x37\xbe\x20\x10\xc6\xfa\x80\x4e\x39\x78\x7a\x66\x68\x08\x46\xf3\x3f\x38\x3c\xe2\xb2\xf9\x5d\x5f\x4f\x66\x83\xa6\x18\x3d\x0b\x12\xda\x5d\xe4\x4d\x84\xc0\xe5\x26\xaa\xef\x0f\xb4\x21\x91\x7a\x50\xf4\x81\x27\xe2\xd4\x8c\x07\xb3\x24\x96\xef\x95\xd3\x72\xb0\x8b\x75\xe1\x85\x78\x0a\x79\x21\xbe\x2e\xaf\x2a\x77\xa4\xff\x07\xce\x9c\xae\x20\xc1\x4a\x50\xac\x3c\x84\x35\x20\xb7\x35\x48\xd3\x1a\x2a\x6a\x3d\xde\x9b\xae\x2d\xb0\x5b\x3b\xa4\xac\x3d\x88\xae\x26\x88\xf5\x42\xa2\xeb\x44\x86\xeb\x94\xd0\x75\xae\xfc\x5a\xe7\x3b\xe9\x9a\xe9\x48\xeb\x1b\x9a\x36\x18\xc4\x26\xa1\xda\x24\x22\x5b\x07\x4d\x9b\x33\x5e\x9b\xc7\x2b\x37\x4f\x4a\x9b\x05\xaf\xcd\x06\xb2\x79\x4b\xda\x06\x32\xdd\xc6\xd2\xb2\x25\xa8\xb6\xd4\xb1\x7c\x47\xe0\xf0\x61\x83\xfa\x28\x73\xfa\x91\x16\xfc\x38\x1f\xf0\x63\xfa\xca\x6f\x10\xd5\x37\xac\x0d\xdf\x8c\x14\xdf\xec\x51\x7e\x5b\x8e\xf4\x6d\x99\xdd\x0f\x45\x8f\x5f\x5c\x9a\xfe\x69\xdd\x72\x27\x4f\xfa\xd7\x33\x8d\x2f\x8a\x60\x41\xf4\x0c\xee\x01\x3a\x8e\xb4\x92\x6e\x7e\x6b\x13\x8a\x78\x4f\x78\xa3\x43\x7b\x46\x2e\xb5\x0f\x98\x2e\x26\x91\xe9\x94\x4e\x04\x1a\x48\x4f\x0a\x72\x10\x96\x34\xc6\xa1\x93\x92\x1c\x84\xdc\x27\xea\xd4\x10\x6f\xa5\x24\x3d\xa2\x94\x81\x86\x0f\x30\x18\x86\x13\x1a\xc9\xa7\xca\x48\x0e\x45\xe4\xa1\x37\x79\x18\xfd\x72\xb0\xbe\xd8\x4e\x4e\x07\x39\xdf\xe2\xdc\xf1\x06\x8a\xd6\x8e\x12\xde\x39\x86\x26\x8f\x88\x6f\xa2\xc7\xa1\xf2\x85\x59\x04\x5a\xd6\x20\xb0\x67\x13\x56\xb1\x2b\x3a\x2b\x7a\x7e\xe4\xf7\xe7\x84\x4a\x48\x93\x7c\xa7\xb0\x64\x2a\x2a\x63\x1c\x0a\xa1\x28\xd7\x57\xc0\xf2\x54\x1f\xe3\x55\x5b\xb1\x79\x52\xac\xf3\x92\xdf\x74\x36\x0c\xc1\xaf\x3a\x8f\x8b\x7e\xed\x23\x34\xac\x62\xd0\x61\xa7\xc4\x05\x67\x3a\x80\xfc\xfb\x41\x73\x91\x2b\xbc\xa2\x71\xdc\x13\x44\x52\x4e\x68\xa5\x02\xb3\x48\x27\x85\xd0\xa1\x16\x62\xcf\x5c\x44\x83\xe5\x2b\xd1\x13\xd8\x06\x95\xf8\x44\x94\xbe\x2c\x52\x2d\xf5\x6d\x34\x53\x2f\x1f\xcc\xe6\x6c\x1c\xca\xf2\x0b\x5d\xb0\x55\xdb\xa7\x99\x74\x43\xa8\x6f\x7d\x65\xad\xa5\x7b\x6b\xee\x49\xa5\x14\x73\xdf\x70\x8a\xf8\xac\x18\xb6\xff\x70\x20\x96\x25\xc7\xc4\xf5\xcc\xc7\xd6\x83\xba\x75\x9d\xfb\x70\x30\x9b\x00\xb1\x49\xdf\xad\xac\x3c\x59\x59\x07\x59\xc4\x81\x43\x3b\x80\xb5\x3a\xe8\x3d\x3b\xa2\x6c\x7b\xb6\x9f\xbd\x9a\x59\xcc\xc8\x04\x56\x13\x22\xca\x8e\xc1\x0c\x98\xd6\xe6\xdd\x0c\x30\x71\x5e\xf3\x4e\x3c\x65\x25\x2d\x0e\xfa\xa4\xa9\xb5\x45\x78\xa1\x11\x92\xaa\xed\xc7\x4a\x99\xd8\xe3\x70\xc3\x8b\xa5\xf6\x35\x29\x17\xb4\xda\x50\x7e\x57\xff\x63\xed\xdf\x82\x9e\x23\x5f\x7d\x64\xb7\x8a\xa2\x52\x1a\x87\x0e\x97\x27\xeb\xfe\xde\x5f\x79\x3d\x15\xd7\x56\x95\xb8\x44\x99\x3c\xc4\xa3\x56\x25\x61\xc9\xc0\x32\xf0\xbc\x0e\xdc\x8c\x90\x5a\x71\x5b\x74\x10\x80\x51\x47\x40\x67\xfb\xd8\xd7\x4a\xec\xf1\x1e\x2e\x3e\x35\x21\x1f\x29\x1f\x1b\xe8\x00\x4f\x98\x81\x99\x06\x0e\x52\x01\x2b\xed\xfb\xc2\x9b\x2b\x19\xe9\x07\x40\x4a\x47\x27\xd4\x6c\x3c\xaa\x19\xed\x9e\xd6\x4e\x64\x15\x70\xc4\x05\x4c\x61\x6f\x3f\xc5\xeb\x7a\xba\xc1\x4f\x10\x13\x45\x18\x04\x1b\x27\x21\xcd\x1b\x76\xc3\x44\x68\x87\x14\x7b\xb2\x04\x18\xdb\xd4\x22\xef\x62\x6b\x29\xf0\xf0\xb8\x31\x66\xd8\xec\x00\x62\x4d\x58\x24\x71\x47\x82\x97\xcc\xac\x76\xac\x7e\x4c\x48\x24\x92\x24\x10\x04\x05\xc1\x30\x1c\xbc\x86\x3d\x61\xff\xce\xed\xa3\x65\xb0\x64\x70\xdb\x51\xe5\x52\xcb\x24\x4b\x11\x7c\xd1\x6c\x79\x27\x78\x20\x8b\x28\xbd\xb6\x17\x04\x8f\x55\xb0\x3c\x66\x6d\x79\xfc\x43\x7d\xd6\x1b\xa9\xf9\x91\x33\xbd\x00\x65\xff\x25\xdc\x4a\xd2\xa7\xa6\xa0\x44\x21\xa4\x66\x6b\x56\x23\x89\x9c\x94\x46\x9d\xf4\x06\xfe\x98\xc4\xba\x91\xe2\xce\xe2\x81\x47\x48\x4a\x53\xa5\xee\xba\xa0\x45\xd9\x53\x5f\x7a\xea\x87\x73\xc6\xec\x69\xd3\x43\xbe\xbd\xff\xe1\x84\x68\x32\x5b\x64\x29\xf0\xa5\x0c\xa3\x66\x76\xa8\x63\x66\x64\xef\x6e\xce\xc8\x7a\xd9\x12\x1e\x62\xa2\x97\xf3\x8e\x9b\x8c\xf9\x2d\x9e\xc7\x25\x18\x49\xe4\x85\xfe\x2f\xb6\xba\x02\xc8\x68\x6f\x3c\xf5\x30\x26\xf3\x21\xd1\x5b\xe1\x0d\xa4\xc5\x76\xc1\x40\x63\xba\xf4\x1b\x4f\x2f\x5b\x77\x7c\x15\xa1\xc3\x51\x43\xd6\x5d\xcc\xe6\x1e\xcf\x24\x6a\x51\xcf\x60\xf7\xa1\xb2\x62\xdf\xde\xdd\xfc\xab\x9b\x6e\x34\xd3\x9a\x26\xfd\xe6\xfc\x17\x5b\xf7\x7a\xec\x23\x0a\x62\xae\xab\x37\xba\x09\xa6\x9b\x2d\x31\xf9\x5a\x9e\x89\xc8\x1a\x9b\x05\xa2\xf6\x21\x1a\x9a\x11\xc9\xd2\x36\x25\x1d\x71\x71\x37\xeb\x70\xf7\xcc\xab\x7b\x0c\x44\x0a\xc2\x64\xd3\xcd\x3e\xf9\x8a\x38\xf0\x9d\x01\xfd\x30\xab\x58\xcd\x33\x06\xf5\x13\xd0\xbb\x26\x73\x22\x3b\x56\xc5\x19\x5e\x78\xa1\x45\x59\xe0\x6c\x19\xd2\x22\x63\xf7\x36\xff\x9f\x09\x61\x16\x22\xf2\xd4\x22\xb1\xf2\xa6\xa9\x8a\x34\x25\x94\xa9\xd0\x16\xaa\x6f\x3d\xec\x4f\x8e\xd0\x6b\x67\x4c\x55\x6f\x36\x1b\xa2\x1e\x6a\xb0\x1d\x90\x88\xce\xef\x17\x2f\xc6\x97\xec\x53\x4f\x7a\x47\x20\x26\xcd\x7c\x38\xce\xa2\x11\x35\xa3\x5b\xbe\x99\x11\xe8\xc4\x77\x66\xeb\x3e\x7e\x04\xfe\x7e\xb7\xd7\x5f\x3e\xd6\xa4\xbf\x89\xba\x67\xd6\x69\xe1\x92\xba\xeb\xdb\x4e\x29\x91\x1b\x7e\x9f\x85\x2c\xa3\x51\x9d\x5b\xea\x7a\x4b\xbe\x7d\xc0\xa5\xe5\x07\xe0\x59\xae\xe3\xe5\xb7\x49\x8d\x07\x9f\x0d\xfa\xbf\xac\x64\x0d\xd7\xde\x96\x6e\x8f\xcd\xe7\xdc\x64\x59\x92\xee\x74\x17\x90\x35\x59\xc5\xc8\x70\x51\xe9\x9f\x2a\xe8\x94\xaf\x02\x7d\xe2\x43\xe5\x41\x08\x91\xc8\x75\x83\x9d\x07\x27\xd3\x70\xcb\xab\x77\xd3\x1e\x9b\xcc\xc9\xe2\xad\xda\xc5\xe0\x86\x9c\xe5\x7e\xa1\x7f\xf0\xbb\x75\x3e\x1c\x53\xbe\xa4\x4c\xaf\x1d\x5a\x5e\x25\x56\xf4\x37\xfd\x70\x54\x8e\x61\x65\x45\xdd\xff\xe7\xbb\x5e\x22\x58\xae\xc5\x55\xff\x6f\xc8\xd9\xec\x13\x82\x39\x85\x1c\x4a\xa8\xa1\x85\x1e\x28\x70\x98\xe1\x1f\x24\x68\xb0\xb0\xc3\x1d\x9e\xf0\xc5\x10\x63\xcc\xb1\xc4\x1a\x5b\xbc\x62\x8f\xbf\xc8\x11\x71\x46\x89\x1a\x2d\x9e\x78\x47\xaf\x25\xb3\x98\x6f\x9e\x52\xca\xa9\xe6\xdb\x6a\x97\xd3\xe2\x69\x89\x6d\x84\x96\x84\xee\x74\xa6\xef\xf4\xbc\x5a\xfa\x58\xa7\xbf\x3c\x28\xe7\xf9\xbf\xfc\x57\x52\x29\xa5\x15\x29\x5a\xac\xec\xda\xeb\xaf\x8e\xca\x75\x56\x69\xa1\xc5\x96\x5b\x69\xb5\xb5\x76\xb5\xde\xa8\x71\x43\x5b\xed\xdf\xa4\x69\xb3\xb6\xdb\xdd\xde\x6b\x5c\x7c\xe1\x92\xcb\xae\xdd\x73\x2f\x9d\x3a\x77\xf4\xd9\xff\x5d\xba\x76\xfb\x95\x1f\xff\xe6\x6f\x8d\x32\xda\xb8\x46\x1f\x3c\x30\xd6\x90\x71\x8f\x77\x7c\x14\x28\x52\xa2\x4e\x83\x84\x94\x8c\x36\x1d\x7a\x39\x70\xe2\xcc\x85\x1b\x5f\x3c\x98\x98\x19\x3c\x79\xf1\x9f\x85\x95\x8d\x37\x1f\xbe\xf9\xe1\x97\x3f\x04\x24\x14\x54\x34\x74\x10\x26\x16\x04\x1b\xdf\xe4\x15\x56\x59\x75\xb5\x75\xad\xb1\x68\xf1\xc2\x92\xa5\xcb\xd6\xbd\xde\x7f\x90\x22\x53\x54\xb6\xdc\x1a\x34\x6a\xd2\xac\x45\x9b\x5e\xda\xf5\xa7\x43\x49\x59\xa1\x53\x45\x4d\xb7\x1e\x7d\xf4\xd5\xcf\x92\x65\xab\xd6\xec\xb2\x9f\x0d\x23\x63\x83\x4d\x13\x33\x3b\x76\xdb\xb7\xc3\x6e\x7b\x6c\xdd\xef\xfe\x4e\x38\xe9\x94\xd3\x4e\x3f\x38\xfb\xae\xb7\xbe\xe5\xb5\x2f\x7c\xfc\xdd\xb8\x8a\xfe\xb3\xba\xed\xa1\xd6\xcf\xff\x9a\x6e\xf7\x6e\xbc\x93\xbb\x9e\xdc\xdd\xa3\x8d\x0f\x3f\x22\x6f\xf5\xae\x9d\x97\xdd\x5e\x9e\xb2\x1c\x78\x94\xc1\xb6\x83\x83\xbc\x95\x80\x9b\xab\x5c\x67\xc8\x4c\x89\x42\x1b\x45\xd1\x54\x92\x75\xd4\x3f\x41\x29\x4e\x25\x8a\xf8\x92\xb4\x22\x42\x1e\x46\xc2\x59\xc9\xd2\x4a\x7e\x54\x0c\x50\x14\x6e\x28\x8a\x8b\x94\x4e\x2b\x97\xd7\xf8\x84\x52\xc7\xa4\xe0\x2d\x81\x28\xc4\xd0\xd4\xc4\xc5\x99\xc4\x8c\x6a\xa8\xcf\x3a\x35\xc6\x77\xf8\x19\x27\x81\x12\xbb\xfe\x51\x85\xe1\x9a\x82\x1c\x4f\x1e\x04\x13\x18\xd2\x14\x10\xa4\xfe\xa1\x1a\xb2\x6a\xa2\x28\x31\x51\x48\x9c\xc4\x8c\xcf\x94\xd4\xe0\x15\x09\xb7\x64\x92\xe6\xb9\x8e\xb6\x9e\x40\xb2\x73\x7a\x9a\xb4\x60\x54\x3e\x16\x28\x8a\x86\x14\xb8\x80\x94\x39\x27\x13\xdc\xda\x7c\xf5\xdc\xcc\xbd\x80\x1b\x21\xe3\x2c\x75\xb8\x50\x14\xd2\xfe\xa4\xe1\xb0\x4f\x14\xf9\x27\xb1\x48\x64\x87\x29\x10\x74\xd2\x85\xca\x81\x4d\x0a\x18\xfa\x0a\x12\x89\x7a\xba\x79\x74\x99\x27\xc5\xce\x77\xec\x28\x92\xb1\x83\x18\x1a\xc0\x93\xe2\xc0\x16\x61\x60\xd0\x42\xd8\x39\x15\x98\x17\xb1\x41\x9b\x23\xb1\x61\x1b\x38\x91\xd8\xeb\x9e\x29\x93\xf7\x7f\x65\x63\xda\x65\xf9\x08\xa5\x8d\x81\x1a\x30\xce\xc7\xcd\xfe\x6b\xda\xfd\x27\xb9\x73\x44\x13\xef\xc1\x9d\x94\xf3\xb8\x0d\x05\xa5\x1e\xae\x62\x59\xae\xff\xae\xd0\xf1\x4e\x60\x6d\x5a\xca\xa3\x8f\xf5\xbf\xbf\xdb\x94\x45\x6f\xbc\xf9\xd6\xde\x8c\xf6\x98\x3d\x7e\xd5\xc8\x78\x1d\xcc\x25\xa4\xf1\x32\xf2\x2a\x1d\x23\x73\x82\x77\x9d\x25\x5b\x74\xc7\xe1\xec\x1c\x69\x1e\x71\x3d\xad\x93\xcc\xdd\xc2\xb2\x4c\x4f\x60\x77\x91\xf7\x5a\xa2\xd1\x97\xba\xaa\x46\x10\x18\x8e\xcd\x29\x13\x7e\x60\x82\xd2\x64\xb4\x62\x6c\xc8\x46\x06\x4d\x3d\x8c\x9b\x2c\xb6\x8d\x91\x7c\xc8\xe0\x89\x38\x3f\x20\xe3\x1a\x58\x0c\x53\xb2\x01\x71\x03\xe8\xe6\x97\xb6\x26\x3f\xb7\x0f\x1b\x4d\x96\x2d\x04\xd1\xcf\xdf\x05\xf6\xbe\x92\xd2\xeb\x04\xe9\xe7\xe6\x57\x9b\x91\x63\x09\xf5\xba\x97\xf8\xba\xb7\x04\xc6\x4a\xe6\x45\x48\xda\x83\x33\x59\xaf\xe4\x2d\xcc\x02\xc6\x85\xde\x85\xc0\x41\x21\x5f\x72\xcb\xc9\x90\x97\x68\x65\xa7\x5a\xa7\x96\x28\xd4\x77\xa3\xcb\xc2\x44\x66\x35\xf3\x1a\x81\x88\x7f\x18\x4b\x86\x5f\xd9\xee\x75\xa3\x27\xca\x70\x76\xf4\x2d\x59\xf9\x9a\x2e\xd9\x40\xc9\xb2\x0c\x2e\x93\x57\xb9\x06\x3e\xf9\x36\x5b\x13\x8f\x83\x2e\x7e\x8a\xd1\x2a\x34\x6b\x1f\x57\x60\x2c\x05\xc7\x7f\x95\xec\xcf\x5d\x6a\x4c\x42\xae\xad\xa0\x3e\xff\x2e\x5d\xae\x2a\xc5\x10\xd4\xe6\xe9\xab\x85\x78\x4d\xd9\xfd\x4d\x3f\xff\xd5\x6b\x1e\xf5\x38\x56\xbf\x7a\xab\xc5\x65\x5c\x5c\x88\xf0\xe6\x00\x2e\xcd\xcc\x59\x9a\xfe\x22\x89\x56\x68\x2e\xcb\x12\x6e\x1a\x9f\x59\x2f\x41\xfc\xf9\x72\xc4\xea\x57\xc6\x75\x26\x16\xbf\xb2\x2f\xce\x0b\x89\xbf\x14\xb3\x05\x80\xd0\x67\xa6\x44\xc9\x7b\xbc\xf9\x55\xbd\xb3\xcb\x97\xc5\x76\x64\x56\x41\x62\x31\x75\x6c\xbb\xdf\xf2\xba\x20\xdb\xaa\xc7\x14\xe4\x50\xbd\xf9\x27\xcf\x8c\xe8\xff\x83\xca\xbc\x98\x39\x4b\x9e\x8e\x8b\xc4\xab\xec\xbd\x32\x4e\x2e\x6b\x3e\xfa\x8f\xc5\xf5\xc2\x1a\x04\xda\x11\x2b\x22\x89\x9d\x53\xa1\x4e\x0a\xef\x25\x35\x4f\xf7\xd0\x2a\x16\x33\xc3\xab\xb7\x21\xf1\x4e\x62\x79\xf2\xbf\x8c\xc7\xe2\x78\xa6\x0f\x42\xca\x99\xea\xd1\xed\x39\x69\x7e\x4b\x1c\x0f\x72\x2a\xd4\x91\x98\xcc\x1e\x37\xba\x0f\xf7\x07\x04\x45\xc6\x32\xd1\x74\xe4\xe3\x82\xa9\xb8\xb6\xa4\xaf\x18\x26\xbb\x76\xc1\xff\x4b\x88\x9b\x44\x32\x11\xc3\x1c\x69\x6d\x8c\xce\xd6\x81\x68\x67\xc6\xf8\xf4\xd9\x32\x95\xf4\xb8\xc1\xa4\x21\xba\xf7\x38\x6d\x3d\x6f\x54\x06\xf4\xe4\x74\x67\xe6\x04\xba\x39\x92\x77\xa6\x39\x60\x84\xb6\x13\xfa\x3a\x7d\xf7\x97\x0f\x5b\x5a\xef\x16\x97\x0e\xb4\x7e\x09\xf8\x4b\xfd\x94\xf6\x8b\xc2\x62\xb3\x47\x02\x0a\xd3\x97\xb8\xff\xf2\x03\xf5\x2f\xb9\x61\x45\x33\x8f\xc8\x47\xaf\x5e\x64\x10\x14\x52\xbb\x7e\x09\x8f\xca\xdd\x2f\x2f\xe2\x49\xc2\xcd\x3c\x7c\xd8\xbd\x54\x38\xdb\x13\x15\x6a\xf7\x93\x79\xd0\x5d\x31\x3e\x2b\xb5\x7e\xae\x27\xf5\xdf\x62\x3d\x2e\xde\x65\x66\xe4\xff\x6f\x58\xa2\x3c\xbc\x29\xa1\xfe\x83\xa1\xa8\xf6\xb5\xd7\xa7\xff\xf7\x6e\xcd\x24\x0b\x69\x03\x28\x6b\xbb\xb3\xd1\x0c\x3e\x96\x49\x17\x6c\xca\x2f\xb4\xa7\x5a\x73\x57\xe4\x03\x82\x33\xe6\xe7\x7c\x8d\x9c\x05\x2b\x1c\xf3\x2e\x4a\xd7\x9f\x3d\x66\xb0\xe8\x0d\x45\x5b\x45\xa8\x04\xc3\x12\xba\x14\x32\xc0\xe2\xb6\x68\x48\xa8\x3f\x8e\x95\x57\xe5\x2f\xe0\xe6\x2a\xb6\x51\xc0\xe2\x74\xec\x0f\x3f\x19\x30\xa8\x5d\x22\x6e\x84\x81\x89\xfa\x71\xf8\x46\x5e\xc6\x44\x8c\x87\xb8\x25\xb8\x6c\x2c\x88\x5f\xdc\xb2\xe8\x65\x94\x42\x77\x32\x24\x2a\xdd\x78\xff\x67\x1c\x9f\xb6\x79\x80\xd9\xc6\x3f\xf2\x8d\x0b\xb0\x39\x53\xf9\xd0\x7a\x2b\x5e\x10\xd7\x5a\x5c\xf7\x53\x9f\xef\x3f\xe4\x2a\xde\xd3\x94\x1c\xb6\xae\xf8\xa2\x1b\x77\x2f\xd0\xfd\x88\x24\x32\xdd\x68\xa2\x14\x78\x3b\x51\x10\x9a\x8c\x41\xa1\x04\x5d\x57\xa5\x0b\x5d\x58\x9f\xb8\x3e\x34\xb9\xde\xf3\xca\xf2\x2f\x38\x2d\xcb\x7c\x40\xc7\x74\x79\x6a\xd1\x53\x3c\xc8\xd1\x8a\x2b\x00\x65\x65\xf9\x45\xd8\xa9\xf9\xe7\xeb\x0d\x6c\x2a\xc4\x0d\x02\xc8\xb9\x79\x36\xcd\xe4\xce\xdd\x44\x62\x89\x1e\xca\x37\x86\x38\x81\x89\xbc\x77\x84\xa0\x7a\xe9\x02\x3e\x37\xe9\xfe\x5d\xa6\x82\x6f\xbd\x5e\x86\x96\xba\xda\xcf\x01\xc8\x95\x2f\xde\xa2\x2d\x84\x9a\x6a\x22\x33\xcc\x28\x44\x0e\x91\x75\x38\x29\xa2\x40\x13\x71\xb8\x84\x72\x88\xac\x34\x30\x24\x50\x63\x56\x7d\xde\x2c\x56\xab\x87\x05\xe0\x1b\x4c\x15\xcd\xe1\x5d\x7b\x66\x40\x51\x86\xb4\xe9\x8c\xb5\x7c\x04\xe3\xcf\xd7\xad\x7b\x8f\xd4\xd1\x14\x99\x92\x79\x16\x5e\x59\xca\x90\xa6\xdb\xbe\x45\x31\x2a\x87\xff\xc4\x54\x66\x18\xc7\xcb\x38\x9c\xef\x35\xb8\xc4\xcd\xdc\xa9\x87\xe9\x7d\xf5\xb4\xf9\x7c\xf5\x83\x99\x7b\x65\x24\xd7\x7b\x01\x29\xb8\xb9\x79\x65\xc6\x7d\x61\xec\x02\x9e\xf5\x2d\x95\x89\xc1\x17\xb4\x84\xee\x80\x01\x15\xa0\x27\x79\x10\x22\x01\xac\x69\xbc\x1e\xd3\xb7\x9c\xe0\x9a\xfb\x53\xd1\x33\xf6\x00\x20\xc9\xfb\x95\x4f\xb3\x0d\xec\x34\xd4\x21\x21\xa5\x0d\x93\xab\xd2\xa8\x99\xc4\x1b\x53\x1a\x87\x21\xd6\xf9\x8d\x27\xcb\xa6\x67\xe3\xdc\x63\x66\x5d\x32\xa5\xcf\x85\x5a\x2f\x6f\xfb\xd9\x66\x11\x5e\x57\x2b\xf4\xe7\x19\x4a\x42\xfc\x36\x11\x99\x80\x3f\xe0\x8e\xfc\x5a\xea\xe9\x86\x3c\xce\x14\x4a\x35\x9b\xca\x03\xe0\xc4\x5c\x8b\xb5\xce\x74\xab\xe3\x6f\x19\x81\x0b\xf8\x17\x46\x3f\xee\x6c\x31\xdf\x31\xce\xc3\xda\xa5\x05\x2d\x72\xc9\x91\x31\x78\x32\x62\xf6\x6c\xbd\x6e\xed\xc0\x34\xcb\x71\x56\x83\x7b\x24\x92\xe2\x5f\xd4\xca\xb1\x2c\x4a\xbe\x64\xd0\x4c\x73\x3f\x7f\x5c\x0f\xff\x67\x6e\x0b\x7b\xf9\x1c\xd5\x90\x95\x36\xe4\x53\x6f\xc8\xc7\xe1\x97\xb0\x7c\xfc\x7c\x40\x33\xff\x08\xb7\xcf\x37\x29\x30\x3e\x37\x55\x5a\x68\x1f\xcd\x1b\x48\xbe\x04\x27\x01\x44\x42\xe3\x85\x9b\x00\x4c\xf2\xf5\xf1\x75\xbe\xdd\x95\xd9\x7f\xb1\xdf\xe2\x64\xad\x7f\x7e\x6a\x4b\xbb\xa2\x8e\xe2\x6b\x97\xa0\xd7\xaf\xd5\xa9\x80\x0b\x82\x24\x93\xde\x8d\xbb\xf5\xbf\xb0\x02\xd3\x2c\x69\x70\x47\x52\xbd\xd7\xe6\x95\xdd\xcf\xab\xd8\x24\xcf\x56\xcf\xd0\x82\x33\x28\x68\x0d\x20\xb2\xa8\x84\x66\xc9\x7c\xb2\xeb\x01\xda\x1b\x71\xec\x3f\x0c\x91\xd9\xac\xa6\x88\x49\x19\xc7\x3b\x85\x71\x98\x84\x13\xaf\xaa\x4c\x0c\x1e\x14\x00\x5e\x3e\xb1\x33\x8b\xdb\xe0\xe4\x40\xdf\x42\xd9\x60\xf9\xe0\x46\x8f\x53\x8d\x62\x4f\xd4\x0c\x21\x1e\x14\xd6\x07\x99\x27\x63\xeb\x90\xce\xa3\xd9\xb6\x0e\xfd\x7a\xce\x78\x5d\x1b\x21\xc3\x25\xcc\x85\x6a\x29\xd7\x09\xdc\x05\xc2\x1f\xa1\x19\x5e\xb1\xb8\x9f\xbc\x3f\x79\x20\x73\xd5\xbf\xa1\xee\x7e\x9c\x63\x34\x99\x84\xd6\x5f\x68\x3f\x16\x8b\x79\x05\x8b\x86\x49\x72\xc9\x09\xb2\x91\x88\xbd\x45\x07\x7c\xb1\x42\x6e\x9d\x8f\xee\xa3\x41\x6d\x5d\x82\x26\xd5\x69\x22\x6d\xed\x13\x96\xc9\xb4\xa5\xfb\x8f\x0a\x5e\xf2\x82\xfb\xee\xb8\x0c\x24\x2d\x9d\xdf\xf7\x45\xa1\x01\x3e\x68\x3a\x1a\xdf\xd9\x37\xa2\x3d\x79\x5c\x7e\x6c\xda\x98\xfa\x93\x42\x06\x43\x22\x11\x05\xdc\xc1\x9e\x07\xf8\x58\x4e\x71\x6b\x61\xfb\x81\x70\xcc\x7f\xdd\xed\x25\xec\x24\xec\x56\x6e\x25\xc3\xdc\x66\x09\xf7\x6c\x47\x9e\x5c\x2a\x60\x7d\xc3\xfb\x2c\xa2\x5b\x93\x8e\x27\x8c\x1f\x19\xf1\xe3\xeb\x48\x03\xbb\x0b\xd9\x61\xb1\x86\xc0\x26\xf8\x80\xd8\x7f\xe8\xc3\x2b\xc4\x28\xbe\x99\xc2\xdf\xe8\xbf\xc2\x9e\xd9\x11\x65\x98\xba\x2b\xd0\xed\xe9\xc0\xd0\xb0\xc8\x71\x11\xdf\xdc\x06\xcf\x18\x61\xf0\xba\xb9\x1e\xee\x10\x48\x7c\x0f\x8a\xdf\xec\x79\x54\x78\x0a\x52\x80\xc8\x6f\x4e\x48\x4b\xde\x0d\xc8\xb5\xa9\x81\xb0\x1d\x39\xe4\x8b\xf5\x59\x72\xce\xca\x45\x12\xe9\xb3\x75\xc9\x45\xab\x62\xe5\xf9\x55\x75\x31\x4b\xca\xa6\x08\x27\x02\x92\xae\x66\x55\x5b\x25\xfa\xd9\x8e\xe1\x53\x96\x60\xa0\xc2\x50\xbb\x40\x72\x08\x9e\xd0\x35\x05\x1f\x7b\x85\xfe\xd0\xbe\xc0\xe3\xba\x77\x99\xf1\xfa\x17\x7a\x74\xd7\xbe\x83\xec\x3d\x3e\x28\xc2\x81\x01\x9e\x22\x44\xd0\xfc\xf9\xc3\xa6\xbc\x6c\x52\x22\x26\xbb\x6b\x9d\x45\x26\x50\x79\xa9\x8a\x91\x0c\x96\xc9\xa1\x20\xd3\x16\xb1\xda\x2c\xae\x7d\xf4\xb3\x05\x09\x30\x09\x45\x03\x7a\x11\xca\x4d\x69\xdb\x0a\x62\x0b\x46\x30\x7c\x93\x92\xfd\x29\x78\xdd\x1c\xb7\x08\x48\xa0\x70\xa3\x8a\x8a\xae\x68\xaa\xc4\x47\x2e\xfa\x15\xb9\xe9\xeb\xb4\x1c\x2a\x49\x26\x1b\xc1\x34\x00\x8b\x45\x61\xfc\x1e\x45\xac\x30\x59\x65\x70\x80\x19\x66\x1c\xc5\xe3\xc9\x72\xaa\x9b\x69\x93\xe5\x74\x87\xb3\xfc\x7e\xe5\xbe\x8a\x33\x98\x95\x79\xe8\x8e\x6c\xca\x7d\x09\xbe\xaf\x09\x36\x33\x26\x8b\xe6\x6a\x13\x9e\xaf\xd1\xbf\x0c\xd3\xc9\x20\x41\x87\x0b\x82\x14\x63\xa6\x0b\x33\x93\xcc\xbf\x9e\x6b\x3d\xdf\xfa\x64\xd6\xc9\x8b\x4c\x21\x27\x3a\x09\xde\xd5\x6c\x7b\x90\x79\xa6\xa7\x95\xf3\xeb\xfe\x29\x2e\xb5\x17\xea\xf6\xa8\x01\x63\x22\x14\x2b\x62\x0d\x52\xd6\xf3\x69\x2c\x54\xa7\x62\xde\x6a\x2a\x4a\x17\x93\xb1\x36\x34\x26\xc5\x38\x9a\x80\x6d\xed\xce\xc9\x44\xc7\xe5\xeb\xac\x82\xbd\xfc\x2b\x61\x93\x80\x95\x5a\x65\xb1\xa2\x79\x16\xae\x4d\x55\x95\x57\xce\x54\xc1\xcc\x70\x39\x86\x3e\x3f\x94\x67\xac\xb4\xc4\x04\x14\x25\x4d\x1d\xc3\xbc\xec\x17\x8b\xd6\x0e\xfe\x93\x9b\x4f\x18\x94\x5c\x31\x26\x8d\x7a\x71\xd3\x4f\x4e\x11\x36\x04\xbc\x9e\x47\x0d\xc4\x70\x42\xf6\x57\x16\x61\x82\x8b\x00\x7f\x6c\xd1\x6a\x42\x75\x65\xae\x6b\xb4\x14\xbe\x66\x56\x26\xaf\x9a\x0a\x46\x9a\xa3\xac\x14\xef\x46\x97\x4a\x35\x4e\xa1\x2c\x30\xb9\xbe\x74\xb2\x58\xe6\x23\xbd\xa3\x01\x26\xe0\x60\xd0\x19\xec\xb0\xa8\x3a\x23\x3c\xab\xb9\xcf\x39\x50\xcc\x2a\x37\xb3\xd9\x9a\x25\xad\x37\xcf\x6f\x95\xd5\x21\x8b\xf3\x70\x12\x1a\xfa\x70\x18\x49\xcf\x3c\x5c\x0b\x9d\x15\x9a\x86\xdf\xe5\x99\x77\x9a\xe4\xd7\x8d\x22\x4a\x2b\x3a\x68\x51\xb2\x27\x9a\xa2\xee\x34\xc4\x22\xc4\xd6\x5a\xbc\x81\x85\x94\x85\x95\xa1\xfc\xb7\xbe\x35\xc3\x52\x3a\x20\x5c\x51\xd8\x2b\x2a\xde\x36\x34\xcc\x42\x36\x4c\xb5\xc0\x04\xba\xb3\x4c\xa9\x14\x2b\x60\x52\xdb\x1e\x24\xc2\xd0\x87\x8d\x6b\x12\x21\x9c\x32\xab\x0f\x6a\xdf\xfa\xe5\x02\x63\xe0\x6f\x8f\x10\x45\x20\x85\xf9\xf5\x0f\x03\x53\xf5\x7d\x67\x5d\xb2\x3e\xdb\xe3\x29\xe9\xae\x22\x58\x90\xd3\x6a\x72\x9b\x2f\x5c\xb1\xc2\x3a\x94\x6a\xae\xbe\x89\xea\xf5\x9a\x4e\x91\xd0\xee\x0a\xf2\x80\x35\xb3\x4b\x7f\x28\x9a\x79\x4f\xd7\x51\x1d\x7f\x79\xfa\x1b\x43\x44\x09\xb3\x4c\xc3\xad\xd1\x9e\xd7\xe0\x44\xac\xef\x8d\x54\xc1\xc1\x20\xd5\xad\x3b\xc2\x63\x68\x89\x7d\x09\xa1\x33\x0b\x56\xd3\x27\x45\x8a\xd4\x71\xb3\x2b\x61\x7b\x5c\x6e\xae\x19\x18\x8e\x0c\x80\x82\xb2\xb3\x3f\x63\xc7\x7e\x9b\xa1\x71\xcc\x1b\x75\x01\x59\x60\x45\xd3\x25\x1a\x89\x8c\xc4\x80\x39\x08\x27\x64\x00\xce\xb0\x42\x74\x1e\xbb\x88\xd6\x8d\x68\x42\x4b\x9b\x74\x66\xa6\xf0\xa4\x77\x74\xa7\xb5\xc5\x15\x6f\x16\x09\xc0\x48\x90\xcc\xa8\x19\x74\x9e\xd9\xea\x4b\xfb\x8f\x81\xb3\x63\x55\x9c\xb4\xd8\x5a\xad\x6b\x07\xe5\x52\x4b\xe0\x7e\x2a\xf4\x24\x7b\x3d\x25\xdc\xa4\x01\xdf\xe7\x7e\x3e\x4a\x40\xed\x0b\xf0\xb0\x6a\xec\x4a\x05\x32\x08\xbc\xaf\x58\xd6\x22\x61\xc4\x70\xe4\x92\x19\xc3\x33\x45\xab\x2f\x41\x45\x1a\x49\x26\x1a\x44\xd8\x20\xd3\x9b\x57\x84\x3d\x65\x2e\xd6\xa1\x6e\x4d\x16\x8e\xd1\xf4\x1e\x77\x40\x2c\xb1\xc3\x0e\xa4\x4b\xd5\xdb\x29\xfd\x16\x00\xdc\x94\xce\x78\x7d\x09\x4b\xf0\xc7\x92\x1f\x70\xe7\x10\x41\x67\xcd\xe4\x9a\xe0\x7a\x2c\x5e\xa2\x7c\x20\x08\xe5\x81\x19\x2f\x56\x04\x39\xb6\x30\x64\x25\x4f\x68\x14\x70\xbe\xb0\x6f\x2c\x30\x06\xe4\x64\xbf\xea\xc1\x84\x08\x56\xa8\x8a\x70\xb8\x99\x16\x92\x59\x43\xfe\xd5\x97\x20\xd2\x40\x3b\x05\x07\xed\x48\x58\x6b\xd4\x46\x04\xac\x80\xca\x56\x78\x64\x96\x2c\xe6\x35\x8a\x0f\x44\xed\xaa\x60\x84\x33\x92\xdf\xbc\xa5\x7f\xde\x58\xfb\x66\x1b\x01\xb7\xb0\x06\x62\x94\xe1\x19\xb5\x19\x86\x64\xb1\xce\x3f\x26\x06\x83\x19\xa2\x0a\x06\xa4\x61\xdd\xbe\xbf\x06\x73\xb4\x76\x94\xd1\xe2\x66\x16\x11\x76\x6b\x34\x20\x21\xcc\xd2\xd6\x2e\x22\x71\x56\xeb\x48\x15\xf2\x7b\x9e\x0b\x38\xb8\xdb\xf0\x12\xc0\xdc\x08\xc8\x4d\xca\x09\x01\x62\xb8\x35\xc1\x10\x58\xef\xdf\x47\xf6\xf5\xb1\x8c\x15\x2e\x30\x74\x7b\xfc\x58\x59\x0f\x00\x2b\x66\x17\xea\x42\x88\x67\x25\xa5\x3e\xfe\xc8\x61\x84\xf2\x9e\xb1\x14\xf9\xf4\x38\xe0\x79\x73\xba\x4c\x1d\x15\x70\xec\x26\xfc\xfe\xf5\xa0\xbf\x36\x9f\xe9\x24\x96\x6f\xf4\x6f\x70\x19\x7d\xf9\x28\x09\xe7\xcf\x69\x3e\xa0\xa6\xa1\xbc\x1a\x00\x60\x6a\x23\x46\x31\x8e\x80\xc6\x68\x13\xa0\x98\x02\x69\x27\x58\xd0\xae\xc1\x29\x86\x27\xd8\x4a\x47\xdd\x86\x9f\x1b\x9d\x4c\xa9\x38\xeb\x45\xe1\xc8\xad\x69\xeb\xca\xe8\xed\x60\x7f\x93\x59\xab\x4c\x45\x49\xb6\x72\x81\x9b\xd3\xea\x31\xec\xf0\x84\x50\x6c\x4c\xbe\x9d\x65\x7b\xa9\x1e\x15\xb2\xf5\x57\x89\xe5\xca\x4e\x9a\x01\x1c\x45\x5f\xa1\x46\xf5\xd6\x44\x53\x24\xf1\xb2\x20\x8b\x59\x4d\x3e\xe1\xba\x41\x23\x53\x27\x27\xbc\x5a\x59\xd1\x21\x0a\x05\x07\xc6\x30\x06\x91\x6c\x16\x9e\x75\xda\xca\xf9\x5e\x00\xd9\x3f\x63\x66\x10\x46\x24\xd7\xb3\xc5\xae\x6b\x97\xf3\xbb\x32\x6d\x4c\xfe\xae\xf8\xfe\x50\x00\x4e\x22\xd5\x07\x56\x48\x7c\xcd\x5e\x40\x2e\x6d\xa2\xd2\x0c\x45\xe8\x60\xaf\x91\x59\x84\xd9\x18\x12\x3f\x94\x3c\xac\xc9\x78\x43\x14\x52\x21\x9f\xc4\xa6\xc1\xc0\x35\xf3\x35\x27\xf4\x7a\xb4\x16\xf5\xb8\x50\x46\xe2\xc1\xc5\x15\x9e\x53\x5c\xb7\xe9\xc3\xc3\x87\xb7\x7f\x79\x8b\xf6\xaa\x34\x5a\x6d\xc3\x6f\xc6\xc6\xa3\x26\xa0\xf1\x90\xa4\x52\x28\x87\x41\x4e\x34\x50\x9b\x81\xb6\x69\xb3\xd0\xf8\xf2\xf8\xa9\x32\x24\x46\xf7\xda\xc9\x2d\x00\x29\x88\x75\x80\x51\xfe\x3a\x9f\x72\x7d\x6d\x4f\xe3\x9c\x7b\x9d\xd8\x4e\x01\x73\x55\x6c\x91\xa7\xbc\xee\xa1\x40\x51\xfb\x2e\xc4\xbe\xc2\xf0\x4f\xdb\xd1\x1e\x87\x7e\x64\x42\x66\xa0\x86\x11\xbb\x74\x67\x40\xb0\x80\xb9\xcc\x6d\x39\x8c\x53\xf9\x59\x3b\x65\xde\x02\xf7\x00\xe9\x3a\x29\x83\x5c\x5f\x2c\x93\xc3\x29\x70\x9c\xd4\x8e\xfd\x7a\xfe\xc3\xf0\xa8\x06\xe9\x04\x7f\xe9\xb5\x35\x68\xa9\x92\x33\xab\x34\xe4\xe6\xb5\x01\xd9\x1f\x37\xc4\xba\xac\xed\xcb\x93\x67\x40\x1c\x99\xed\xae\x17\x62\xc5\x7b\x27\x46\xbb\x9b\xc1\x1a\x9e\x18\x3a\x02\x06\xaf\x6a\xf5\x85\x56\x48\x84\x6b\xaa\x19\x4f\x1c\x4b\x32\x70\xd4\x04\x6b\x56\xe7\x93\x93\xa4\x48\x9d\x83\xf3\x0c\x4f\x7c\x80\x2f\x8a\x23\x43\xe7\x4b\x4e\x72\x18\xb6\x28\x5b\x11\x46\xd9\x1e\x79\x4b\x63\x65\xe6\x6c\x81\xc5\x08\xe1\xad\x3e\x86\x29\x89\x66\x88\x80\x5d\x45\x23\x05\xa3\x88\x41\x5a\x68\x34\x46\x92\x58\x47\x1e\x6d\xb9\xd7\x90\x71\xc0\x14\xf7\x90\x26\xb2\x50\x29\xc5\x21\x55\x16\xe0\x86\x78\x99\x41\x0c\x2d\xfd\x03\x0c\x42\x2f\xa5\x56\xa0\x84\xaa\x8a\x87\x56\xab\x23\xa4\x54\x37\x97\x58\xc4\x52\x2f\x64\x91\x7c\x7a\x94\x22\xac\x47\x64\x52\x63\x82\xc5\xd8\xe3\x78\x3c\xbd\x5a\x05\x4b\x0a\x02\x04\x63\x9c\x4d\x7e\x9c\xf9\xda\xbe\x30\x8a\xf3\x10\x5b\xde\x4c\x69\xee\x48\xa2\x60\x91\xae\xa2\x32\x51\x73\x36\xb4\x63\xf0\x91\xe6\x7a\xd0\x23\xc7\x5a\x39\x7a\xe9\x2e\xbd\x46\xa8\xe8\x62\x17\x1d\x34\x21\x09\xaa\x7d\x14\xc7\xb8\x64\x2f\xe3\xa3\x5c\x99\x4a\x5d\x48\xcc\x1a\x64\x8a\xe4\xd6\xea\x21\xd6\x69\xea\xe2\x2f\x0a\xbd\x14\xc5\x70\xd9\x40\x9b\x8a\xba\xf8\x34\xce\x8b\x3f\x29\x0d\x02\x06\xc9\xdf\xc8\xc2\x27\x41\x82\x21\xb5\x86\xff\x42\x95\xc3\xb5\xa0\x96\x83\x84\x35\xb7\xd6\x2f\x0d\x72\x0b\xe5\xcb\xdc\xb4\x56\xa7\xc6\x1e\xaa\xc2\x44\xf2\x11\x9e\x1d\xca\x5c\x01\x04\xda\xf7\xb2\x85\x13\x15\xf4\xaa\x89\xce\xc4\x1a\xf7\xf3\xc3\x64\x78\x1c\x38\x8f\xc8\x10\xc9\xba\xc0\x2c\x99\xd3\x1e\x39\x94\x2b\x11\x67\x8f\xfc\x76\xb4\xd4\x59\x41\x7c\x6e\x54\x5a\xbb\x31\x96\xa8\x8b\x48\xa9\xb5\x6c\xbc\xc0\xbc\xe0\xda\x4b\x37\xaf\x3b\x98\xe0\x31\x47\xb4\xb6\x70\x06\x5f\x5c\xca\x5f\x02\x4f\x62\x53\xe0\xee\x38\x68\x3a\x90\x70\x53\x8b\x2c\xe6\x6a\x46\xdf\x2b\x2c\x35\x27\x08\xc6\x1a\xee\x9a\xed\xf2\xe6\x82\x87\xee\x60\xb4\xf9\x24\x68\x61\x5a\xf0\x25\x7e\xca\x5b\x6b\xdf\xe7\x41\xcc\x8c\xde\xe6\x89\xd5\x14\x2f\x80\xd3\xcd\x54\x5c\x58\xd3\xd9\x31\xda\xee\xae\x05\x7e\x1f\x12\x21\x2c\x53\x02\x54\xcb\x64\xa3\x94\x73\x17\xf7\x62\xba\x07\xb5\xf3\x1e\xf7\x31\xf0\xb2\x9f\x25\xaa\x66\xc9\x6e\xca\x84\x1e\xc9\xed\xbe\xb2\x1d\x42\x69\x43\x52\x11\x6f\xeb\x45\x42\x2a\xe4\xe9\xce\xb6\x00\x66\x41\x9e\x9b\x20\x01\xc7\xef\x98\xdf\x19\x5a\xde\x2b\x01\xe7\xde\x7f\x09\x00\x4e\xf9\x13\x15\xc3\x21\xd6\x3a\x60\x28\xe6\xbc\xa8\x22\xa0\xab\x95\x38\xae\xd5\x57\xcd\x26\xd6\x96\x54\x76\x83\xca\x02\xa7\xab\xac\x7b\x3e\x6c\xcb\x2c\x9e\xc3\xa8\x56\x1b\x2b\xa7\x71\xd0\x5f\x68\x92\x6f\x7c\xbc\xb7\xf0\x7a\xed\x75\x62\x84\x7a\x40\xad\xfe\x6f\x0a\x36\x9c\x59\x45\x8f\x2c\xa9\xce\xcc\xdb\x8b\xe0\x81\x0c\x01\x7e\x67\x75\x94\xb8\x82\x04\xb6\x82\x79\x2b\x4e\x88\x80\xe5\x8f\x64\x1d\x93\x8f\x96\x0f\x2f\x71\x3d\x61\xc2\x8a\x77\xad\xf8\xf1\x4e\xc2\xe2\xb0\xdd\x89\x29\x43\x85\xbb\x4f\x2f\x40\xdf\xa4\xb5\x68\x51\xba\x79\x60\x07\x01\xd4\x42\xbb\x13\xc1\x87\x7e\x9b\xf3\xec\xa5\x48\xce\xb5\x64\xd5\xd4\xe6\xcb\x34\xe5\xe2\x4f\x73\xd7\xca\x13\x61\x8e\x3f\xbe\x8d\xa0\x46\xf5\xf6\xa4\x0b\xff\x8a\x7d\x6c\x9c\xd6\x65\xf6\xe4\x3e\x48\xd8\x25\xe3\xd1\xcb\xf2\x1c\x35\x2e\x5f\xce\x55\x16\x6d\xa3\x44\xb3\x0b\x0a\x51\x53\x6a\xa4\xef\x22\x2d\xc3\xc4\x0d\xcd\x26\x61\xd0\xb5\xfe\xc2\x18\x44\x0b\x4e\x1e\xa5\xa8\xc1\xad\x4c\xf1\xbf\x90\x72\x20\x5f\xf7\x29\xcc\xcc\x56\x1a\xf0\x12\x7c\x42\x37\xde\xa6\x18\x40\x12\xaf\x3b\xcd\xa9\x3c\x98\x00\xd2\x9f\xc4\x25\x98\xaa\x56\x4b\xb5\x1e\x4f\x3d\xb1\x99\x69\x1e\x64\xd2\x41\xd3\x10\x82\x1e\x6b\xfd\xb2\x8e\x50\xcc\x96\x22\x39\xf9\xa9\x77\x97\xb3\x29\xb9\xdc\xc0\xdd\x60\xa9\x5d\xa1\xac\xbb\xd1\x58\xe8\x91\xd5\xe0\x36\xfa\x88\xc9\xd7\x9b\x3a\x54\xc7\x62\xa2\x42\x57\x71\x48\x8a\x36\x12\x11\x5e\xc6\x07\x77\x3b\x74\xe6\x2d\xc6\x7e\xa7\x3e\x75\xf1\x4a\xda\x7e\xb4\x95\x09\xfb\x5f\xca\xf9\x52\x2e\xe8\xfb\x07\x1c\x09\xb6\x4b\x82\x39\xd7\x9c\xa7\x84\x8e\x35\x89\xbd\x60\x92\x68\x16\xe7\xe4\xee\xb1\x73\xd5\x23\xe5\x57\x32\xd1\x11\xe6\xcb\x08\xe2\x68\x98\x10\x9f\xa0\x27\x08\xcf\x93\x87\x6d\x04\xdc\x57\xd2\xa7\x3e\xcb\xfc\xa9\xf4\xca\x8f\x49\x22\x6d\x22\x11\x15\x34\xc2\x1e\xda\xa1\x5a\x8a\x83\x48\xda\x32\xe5\x56\xab\x82\x94\x05\x88\x74\x5d\x28\x4f\x94\x7f\x47\x67\xed\xff\xf2\x03\x50\x63\xda\x89\xe7\x65\x63\xab\x55\x0b\xb9\xad\x03\x47\xa6\x7d\x5f\x05\x8d\x24\xf0\xbc\x96\x9d\x3e\xff\x53\xb6\x39\x8b\x77\xdc\xee\x2c\x10\x8f\xc9\x8e\xa5\x50\xdf\x84\xdc\xf6\x9b\xef\x9a\xd3\xa4\xf7\x39\xed\xe5\x2c\xdb\x62\x7c\x24\x19\x43\x95\x92\xa7\x51\x4d\x26\x80\xc0\x4e\xcd\x53\xe2\x15\x7b\x8c\x86\xba\x82\xb0\xcc\x85\x14\x2d\x3d\x28\x2e\x98\x2a\x21\x9f\x63\x2d\xeb\x3e\x0b\xa2\xd4\xf8\x2b\xac\x41\xc6\x77\x3d\x0e\x34\xc3\xde\x05\x1d\x93\x29\xdc\x4f\x68\x04\xee\xb4\x7b\x82\x48\xd2\xb1\xab\x99\xa7\xd1\xba\xf3\xf2\x1f\xd6\x8a\xf7\x62\x1a\x04\xd1\x03\xd7\x2d\xd2\xa6\xed\xdd\xd4\xac\xf8\xfd\x0d\xc7\xbb\xe7\x21\xb9\x6a\x91\x7e\x6d\x88\x17\x0f\x1c\xb9\x04\x27\x47\xd8\x3e\xfc\xec\xbd\x9a\x24\xe2\xe1\x96\x6b\x31\x3e\xe0\x16\x98\x4b\xc6\x69\x86\xa6\x7b\x20\x54\x2e\x71\xfa\xa1\x28\x71\x28\x74\xc6\xe5\x1b\x0e\x86\xbd\x8b\xde\x2c\x27\x76\xf4\x6f\x40\x74\xbd\xf5\x48\x02\xf5\xeb\x20\xde\x5f\x4f\xb3\x68\xf6\xaa\xa7\xdf\x15\xd4\xca\xcd\x88\xb7\xd3\x1a\x8c\xfa\x38\xa1\xc8\xb1\x21\xb1\xf5\xf0\x96\xab\xa6\xdb\x1e\xe0\x3a\x77\xfd\x41\xb1\x95\x5c\x9d\xea\x50\x05\x44\xa6\x09\x50\xda\xc5\xfa\x11\x80\xc1\x22\x65\xb7\x03\xfb\xeb\x7d\xcf\x2f\xb4\xac\x44\xe8\xe6\xaf\x3d\xd2\xd9\xac\xd9\xea\x64\xa3\xa7\x2c\x02\x16\x6c\x16\x05\xb4\xd2\xac\xa3\x6c\x59\x88\x32\x03\x54\x2a\xd7\x5e\xa5\x56\x98\x26\xe4\x3c\x37\x1c\x84\x90\x30\xfc\x47\x25\x38\x55\x48\x79\x63\xbb\xb4\x37\x06\xf6\xdd\x55\xc1\x53\x62\x88\x27\xc5\x23\xf4\xaa\x83\xc8\x8b\xec\x6c\xd7\x92\x18\xb8\x17\x8d\x38\xdd\x6a\x71\xba\x71\x2e\x25\xb2\x44\xe1\x86\x59\xbd\x93\x61\xad\x05\xf0\x0d\x9c\x67\x6b\x7e\x11\xc0\x20\xd2\x28\x5f\x1d\x70\xd7\xb6\xc6\xb4\x48\xc5\x37\x84\x43\x21\x6f\xf2\x4e\x86\x34\xd4\x27\xb0\xc5\xa2\xde\xbf\x9a\x21\x95\x3c\x7b\x7f\x42\x66\xf7\xe7\x99\x5d\x2b\x80\x97\x00\xa5\x4c\x4e\x2a\xba\xa2\x7f\x9e\xe1\xa5\xd3\xc2\x6b\x17\x28\x97\x04\x4c\x95\x9b\x75\x58\x28\x09\xa1\xa2\xe6\x9f\xc8\x83\x5f\x6f\x6c\xbb\x0f\x19\x45\x0f\xeb\x0a\x0e\xf4\x1e\x19\x17\xbe\xc9\x4b\x23\xc7\x15\x09\x56\xa6\xb6\xa1\xe0\x6f\x97\x96\xf0\xf9\xbb\x8d\x6b\xd9\xa3\x0e\x9d\xde\x20\x9e\xc5\x8c\xd5\xf0\xf5\x3c\x67\x53\x68\x04\xf2\xbb\x9e\x2b\x12\xd5\xc3\x73\xce\x28\x0b\xe2\x17\x90\xbe\xca\x66\xec\x90\xa6\x8a\xc5\x48\xeb\x88\x92\x46\xc3\x1f\xd1\xd5\x47\xaf\x8f\x82\x85\x6a\xf3\x35\xd5\x5f\x4d\x49\x10\x4a\xc4\x8a\x26\x18\xbf\xc2\x51\x6e\x0c\x56\x05\x96\x72\x21\xa7\xed\x3c\x49\xa7\xba\x74\xc3\xa0\x07\x17\x52\xa4\x24\x91\xfa\xb7\x72\x80\x73\xfc\xa5\xbb\xbe\xf4\xfd\x4f\x7c\xff\x94\x61\x2b\x38\x05\x1d\x05\xf4\x1c\xbe\xb6\xc3\x30\xef\xdd\x36\xe0\x65\xe7\x7a\xf9\x57\x1a\xf8\x35\xb7\x30\xd2\x33\xe4\x3e\x7a\x62\x90\xa7\x99\xd7\x7d\x5c\xd7\x2d\xc8\xaf\x50\xea\xbc\xf0\xef\x16\xe0\x03\x50\x03\xa4\x88\x18\x20\x11\x98\xb2\xfe\x37\xe4\x18\xb7\xf8\x54\x09\x1f\x98\xfd\x76\x4d\x33\x92\x95\xfc\xd9\x0e\xff\x04\x8f\xe6\x67\x58\x5e\x19\x87\x66\x07\xbf\xaf\x7f\x4b\x37\x84\xc3\x65\x57\xbf\xe7\xb9\xc0\x63\x83\xce\xae\x88\x42\x91\x38\x77\xf4\xb3\x7c\x5f\x8b\xe9\xf0\x05\x45\x1d\xc9\xde\x47\x85\x49\x0f\x48\xac\x1d\xea\x37\x35\x34\xcb\x02\x65\xe7\x7b\xd3\x52\x20\xa4\x3b\x1f\x25\x01\x1a\xcb\x02\x34\x34\x09\xf3\x21\x52\x82\x01\x00\xc4\x75\x61\x2a\xb1\x42\x83\x25\xfc\x1f\xca\x09\xc4\xf1\x36\x20\x56\xec\x4c\xa7\xa0\xa9\x98\x1c\xc2\xe8\x71\x9a\xfe\x3a\xca\x32\x00\xae\xf0\x79\x6e\x44\x64\x54\xdb\x26\x87\x62\x8f\xfd\xa5\xc6\xb8\x44\x76\xe3\xef\x18\x1d\x2a\x1d\x8c\x03\xf8\x71\xa0\xf7\xfb\xd1\xb1\x09\xc7\xbb\x5b\xf7\x24\x53\x76\xf5\x49\x52\x5f\x38\x1a\x9c\x9d\x57\x42\x52\xa5\xcf\x65\x92\x92\x1b\x2b\xee\xcb\xd6\x49\xf8\x54\xb5\x07\x67\x7e\xe2\xa1\xf3\x7b\x8e\xa0\x92\x4a\xdb\x76\xba\x8d\x19\xf6\x59\x20\x11\x5d\xae\xfd\x26\xae\x70\x4e\xf6\x6c\x51\x01\x64\x68\xc2\xc7\x69\x5c\x8f\xe4\x78\x30\xb4\xeb\xaa\xef\xcf\xb8\xdd\x94\x1e\x2c\x43\x04\xde\xd5\x81\x3a\xd4\x3a\x0d\x14\xb9\xfd\xaf\x4d\x1f\x69\x31\xe2\x08\x81\x23\xdb\x2e\x6a\x12\x8f\x2d\x32\xc9\x50\xb5\x03\xad\x2c\x9a\x80\xda\x78\x8d\x23\xbc\xef\x97\xa5\x9d\xd3\xb6\x1d\x89\x2f\x83\x30\xdb\x63\xfd\xba\x28\x16\x29\xa9\xa3\xf9\x4d\xea\xe6\x42\x6c\x33\xca\x68\x3e\xed\xfd\xbf\xbb\x20\x73\x2b\xeb\xc6\x4e\x9f\xec\x9f\xea\xbb\xc3\x6e\x40\xa0\x33\x14\xac\x61\x75\x95\x26\x38\x55\x31\xa8\x72\x9a\x42\x87\x2e\x5a\x50\x90\x0a\xad\x9c\xeb\x61\x51\xfb\x3f\xb7\x04\x8d\xe8\xd5\x54\xaf\x3d\x27\xbb\xaa\x3b\x56\xa6\xb8\x18\x73\x66\x98\x6d\xbf\x27\xf0\x5a\x02\x5d\xbf\x3b\x7c\x31\x9b\x8b\x5c\x19\xcc\xf6\x17\x8a\xb6\xdf\x39\xe0\xa1\xfa\xaa\x2f\x5a\xbe\xfd\xa6\x78\xf9\x1a\x8a\x42\x62\x14\x40\x50\xcf\x1b\xd5\x4c\xc1\xde\xd1\xae\xbf\x87\x1d\x4c\xea\x55\xf1\x57\x02\x3e\xa1\x26\x73\x57\xcc\xb6\x9e\x47\x82\x4f\x08\x4f\x24\xcb\x6b\x32\xb4\x42\xfe\x74\x12\x48\x50\x4f\x70\xf5\x41\xbf\x51\xd8\x8f\xa5\xdc\x5a\x23\xa9\x23\x65\x7b\x63\xf9\xf0\xed\x89\xf2\x65\x27\x8c\x28\x05\xc0\xc8\xca\xaa\xb7\xdb\xa2\xe2\x54\x80\x8a\x03\x7b\xb7\x4a\x13\x9c\x41\x27\x70\xd1\x09\x7c\x64\x95\x0d\x14\xc2\xb8\x1f\xd2\xf1\x79\xbf\x46\xd5\x00\x96\x9b\x12\x67\xd4\x4b\x6c\xab\x44\x4a\xa9\x19\x02\x22\xb3\x15\x83\x86\xab\xa0\xee\xd8\x2d\xbf\x50\x6f\x49\x83\x77\xca\x7f\xc6\x65\xa2\x1d\x8c\xf1\x96\x4c\x8d\xca\x3b\x94\x36\xd4\x28\x2f\x60\x87\x15\x32\x46\x70\x08\x4d\xa1\x05\xa4\x29\x87\x51\x28\x44\x2d\x72\x7d\x39\x6f\x6a\x88\xe2\x89\x4c\x89\x1f\xc0\x96\x72\xc1\x2a\x6c\x3b\x39\x28\x42\x4c\x6e\xda\x11\x91\x33\xca\xaa\xaa\x6e\xed\x4e\x50\xac\x29\xc8\x0b\xdf\x6c\xc5\x01\xd5\x4f\x3d\x65\x7d\xc1\xaa\xbd\x9d\x27\x47\xf7\xb0\x31\xc0\x72\x63\x6a\xa7\xbe\x89\xa9\x08\x2f\xcb\x24\xb1\x50\x44\xbf\x57\x05\xbd\x26\x42\xf1\x1f\x88\xc0\xca\xdd\x0c\x1e\x78\x76\x4e\xd5\x30\xe0\x92\x15\x2b\x7f\x3c\xa8\xd8\xb5\xe0\x48\x4d\xa7\xd0\x48\x03\x84\x3c\x17\x45\xd4\x18\x63\xfe\x81\xfc\xda\x65\x95\xcb\x92\x52\xc7\x6a\x6c\xb9\x8a\xaf\x1f\x58\x51\x1d\xbf\x27\x54\x59\xdd\xbf\x82\xb1\xbd\x06\x21\xe4\x42\x48\xd8\xc0\x40\x73\xf6\xee\xbd\xfa\xb5\x78\xd3\x8b\xaa\xc5\x8e\x7a\x4a\x6a\x23\xd8\x9e\x5a\xc3\x6b\xea\xa2\x0f\x13\xa3\xb8\x05\x91\xa9\x80\x66\xb8\xb0\xd0\x28\x81\xf4\x55\xbb\xab\xac\x37\x06\x4c\xfe\x0b\x6a\x4a\x73\xfa\x10\x21\x89\x59\xb1\x67\x03\x9d\xce\x9e\x16\x79\x0f\xe9\x08\x94\x23\x88\x87\xff\x81\x2e\x3f\x13\x26\x31\x76\xa5\x1f\x9b\x45\x37\x69\xd0\xe4\x8e\xe4\x28\xec\x44\x92\x1d\x9e\xea\x7a\xd4\x35\x67\x4c\x2e\x79\x92\x96\xfe\xd5\xfb\xb4\x2b\xf8\x60\x43\xd0\x7e\x69\x23\xac\x81\x17\x61\xc4\x29\xa8\x7d\xdf\x2b\x43\x33\xc2\x6b\x13\x13\x5b\x05\x82\x7f\x03\x5d\x20\xee\x08\x7e\x46\x0b\xa5\x10\x7e\x29\x53\xb2\x45\x10\xdb\x87\x70\x54\x42\x8a\x20\x2a\x21\x06\x48\x38\x80\x72\x14\xe2\x67\x50\x09\xd0\x92\xd8\x4f\xf6\x3a\x48\xb5\xfa\xb5\x1a\x0b\x3e\x00\x1b\x14\x94\x8e\x67\x71\x94\x8e\xd3\xc7\x71\x2c\x67\x28\xdf\xea\x17\x6a\x88\xf1\xa4\x2c\xad\xd9\x4a\x67\x57\x00\x06\xab\x65\x74\x75\x12\x5b\x04\x15\x0f\x07\x23\x12\xad\x01\x0a\x69\xbd\x44\x7d\x12\x43\xaa\x92\x4d\x36\x2e\xfe\xb7\x73\xa1\x00\x52\x23\x9f\x34\x25\xb2\xf4\x80\xc0\x9d\xc5\xa0\xd9\x2f\x1a\x4e\x35\x51\xfe\xa0\xa7\x49\xa5\x84\x6e\x90\xdc\xb7\x13\x79\x64\x0b\x0d\x6b\xe8\x6a\x40\x51\x7e\xfd\x89\x45\x0c\x26\x55\x14\x50\x83\xa8\xf4\x5e\x76\x45\xd8\x78\x22\x83\x57\x24\xe9\x8c\xa3\x5b\x91\x39\xfc\xc1\x48\x77\x0c\x42\x9b\x47\xdd\x23\xa7\xaf\x7f\x2d\x39\x0a\xf2\x86\x7c\x75\xa6\xfd\x94\xfd\xff\xbf\xf5\x59\x05\x8b\xb8\xd1\x1b\x0e\xca\x9a\x78\x68\x73\x48\xe0\xf6\x34\x7d\x13\xe3\xc1\xef\xed\x80\xd9\x7f\xd7\xbd\x5b\xfa\xa8\xc8\x40\x27\xf0\x92\x2b\xd9\xee\x01\xa1\x91\xbe\xa5\x9e\x3c\xa3\x24\xd8\xfd\x1a\xc1\x01\x49\x31\x8a\x79\x45\x74\x14\x71\x4f\x0a\x41\xaf\xa1\x6f\xd8\x55\x89\xf2\x0e\x14\x22\x6d\x2a\x1f\x38\x76\x5b\x9c\x44\x76\xc8\x31\x7e\xdb\xcd\x43\x80\x35\xed\x19\xe3\x6e\xe1\x3e\xb3\xa1\x49\xff\xab\x2a\xa8\xf7\xd9\x1f\x6c\x2f\x35\x77\xe7\x2a\xe8\xed\x9b\xab\x08\x50\x78\xf5\x7a\xba\x47\x4b\xbb\xf4\x7c\xfa\xd9\xc3\xf2\x4f\x77\x68\x2a\x76\x02\xa8\x34\xba\x00\x40\x16\xab\x0f\x5c\x9e\x8b\x92\xe8\x3e\x52\xa8\x2a\x9c\xe0\xec\x84\x21\x37\x51\x82\x06\xc4\x66\x1e\xec\xf0\xb8\x49\x2a\x35\x36\x45\x0d\x8d\x5c\xca\xb6\x08\xbe\x2c\x63\x37\x51\x43\xa1\xe4\x85\x1e\x91\x51\x20\xeb\x65\xdb\xad\x1f\xe8\xad\xdc\x77\xae\xe9\x15\xc9\x95\x8b\x0d\x58\xc1\xef\xc1\xe5\x31\x8f\x5a\x08\x1c\x14\xba\xde\xa6\xab\x31\x8c\x3a\x94\x7a\xb3\xf6\x5b\xc4\x0d\x3e\x04\x33\xd5\xb9\x58\x38\x6a\xd5\xf8\x2e\x94\x52\xba\x44\xf1\x58\x55\x49\x43\x04\x8d\x97\x13\x7c\x00\x40\xc2\xba\x25\xe3\x76\x0a\x0e\x20\x56\xa1\xe4\xe7\xaa\x70\x0e\x2f\x52\x73\x97\xcb\x34\x4a\x94\xe6\xe4\x9f\x9c\xa3\xcb\x09\x02\xed\x06\xd6\x8d\x47\x5a\x59\x76\x7e\x67\xb2\xe6\xfc\x2e\x52\xa2\x92\xbf\x0f\x8f\x0d\x53\x60\x78\x35\x1d\xd2\x43\xf0\xbb\x16\x95\x23\xbf\x05\x05\x13\x92\xe8\xf4\x95\xab\xe1\xcc\x3e\x9b\xc2\xaf\xa8\x9a\x4b\x1c\x29\xbe\x9d\xd3\xcf\x20\xfc\x1b\xac\xfc\x3a\x40\x76\x61\xdf\x65\x2f\xfc\xbb\xaf\xb5\x33\x28\x6c\x43\x3d\xa0\x05\x88\x55\x3c\x12\x14\xca\x74\x80\xf4\x18\xf7\xff\xa0\xd3\x99\x0c\xcc\x87\x9d\x54\x48\x5d\xb3\x29\x20\x14\x68\x96\xa2\x64\x22\xf4\xf4\xc1\xb8\x83\x4d\x77\x3a\x37\x81\x8a\xf6\xde\x3b\x0a\x39\x8b\xcb\xcd\xd3\x1d\x45\x0f\x5a\x68\x04\x67\x02\x54\x63\xaf\x0d\xb1\x8f\xd5\x4c\x1d\x8d\x22\x35\x40\x5b\x8c\x8b\x26\x83\x0f\x6a\xba\x5f\xf6\x98\xc6\x44\xf3\xc8\x41\xa9\x70\x3b\x38\xea\x8b\x5a\xda\xcd\xa2\x4a\x51\x86\xd3\x51\xbd\xb5\xa5\x03\x34\xbd\xa3\x12\xc0\xdf\xcc\xea\x2b\xd4\x6d\x08\xce\x62\x15\xfd\x3b\xcd\xe3\xe3\xd6\xbb\x78\xdd\x89\x83\xc2\x64\xda\x94\x5a\xed\x1e\xaa\x9b\xa5\x52\x4b\xd4\xfb\xed\x78\xca\xce\xc3\x30\x27\x48\xf7\x17\x6b\xe1\x46\x57\xc4\x2e\x46\x55\xce\x7a\xb1\x96\x79\xec\xca\xb2\x08\xeb\x9d\x2f\xf6\x72\x96\x45\x4d\x16\x62\xff\xd6\x2f\x8e\xa5\x2e\x55\x69\x27\x71\xaa\xfa\x6e\x17\x7b\xc9\xcd\xae\x85\x2a\xca\xfd\xce\x17\x2e\xf9\x19\x15\x25\x3e\xa3\x52\xfa\xa5\x31\xd0\xea\x73\x4d\xad\xd5\x08\x85\xe4\xc3\x90\x11\xe5\x81\xb0\x14\x3b\xcd\xbb\x95\x5a\x25\x49\x3c\x06\x3a\x40\x06\x1a\x36\x00\xba\x48\x86\x0e\x2b\x4c\xf0\xa2\x66\x85\x38\x29\xa5\x76\x41\x2d\xb9\x55\x2b\x76\x4d\x98\xe0\xdd\x89\x8a\x76\x83\x22\xb6\x56\x4c\xc6\x90\xce\xb2\x3f\x69\xcd\xa7\x56\x80\xd8\xeb\x65\xc8\x31\x11\x19\x85\x87\x69\xf5\x87\x00\x58\x28\x3d\x0f\x61\xad\x6a\xfc\x40\x3e\x63\x86\xb7\x26\x87\x1d\xc1\xf5\xe7\x7d\x37\xac\x50\xda\xd2\x69\x09\xc7\x9e\xf8\xb3\xcb\xfa\xc5\x3f\x58\x41\x49\x57\x93\x7c\x66\x7e\x50\xa2\x4c\x09\xce\xc0\x9b\x87\x68\x49\xa2\x54\x46\x43\xdb\xbb\x0b\x90\xe0\x52\x9d\x97\xd4\x98\x6b\x96\x94\x95\xda\xe5\x1b\x70\x5e\xb7\x56\xe8\x55\xd6\x8b\xad\x10\xdd\x11\x2a\x13\xf6\xc2\x02\xe6\x04\x9a\x5d\x44\x0a\x1a\xa9\x4f\xec\xbe\xde\xb9\x54\xe3\xc5\xcb\x7e\x0e\xb3\x2f\xc9\x9c\x7d\xfe\x5e\x8a\xee\x58\x0f\xf3\x7a\x4e\xad\xe0\x87\x21\x5a\x73\xac\x49\xec\x74\x02\xd3\x44\xad\xcd\x61\x1a\x6c\x91\x1f\x12\x70\x86\xdb\xa0\x12\x72\xe4\x02\x71\x9c\xfb\x01\xa9\x62\x24\x91\xc3\x52\xac\x3b\xe3\x6f\xc0\x04\x02\x2b\x61\x9a\x31\x48\xf7\xd3\xcd\x13\x7d\x64\xa4\xd0\xeb\xe6\xab\x10\x18\xb4\x1a\xfc\x6d\xc5\xd8\x3c\x29\x01\xc2\x5e\x45\x5d\x45\x2a\x09\x7b\x20\xcc\xa7\x81\x3f\x89\xca\xa9\x05\x63\xf7\x01\x21\x55\x90\x60\xbc\x15\x64\xdf\x65\x75\x74\x5c\x9c\x6a\x1f\xdb\x2b\x9e\x54\x32\x2d\xa7\x3d\x2e\x9c\x29\xb2\x0a\x4b\x35\x98\x5f\x1d\x70\xc8\x32\x23\x73\xbf\x29\x68\xd5\x9a\x83\x44\xef\x22\x61\xae\x96\xe3\xc7\x83\xe5\xf8\xd0\xf3\x6f\x48\x4f\x8e\x0d\xe1\x17\xcb\xbd\x8e\xf8\x7e\xf2\x72\x84\x60\xe9\x22\xb6\x01\xca\xe7\x5f\x7c\x7e\xf8\xe2\x1e\xb1\xf2\x2a\xbd\xb3\x0f\x49\xc6\xfd\xf3\x10\x15\xe2\x1a\xe1\xab\x0f\x9c\xa5\xb7\x13\x99\x19\x87\x73\x3a\xde\xf6\x03\x9a\xce\xa0\x45\x2d\x6e\xe2\xac\x6a\x4a\xb9\x51\x50\xef\x2b\x33\x8e\x6a\x68\xa8\x41\xff\x41\xce\xbb\x7e\x1f\x51\xac\xbc\x8f\x92\x9d\xc5\x7d\xe7\x51\xde\x04\x1a\x71\xca\x33\x47\x88\x6a\xb6\x26\xfb\x20\x4c\x15\x76\xc6\x21\x1d\xab\x21\xf2\x0c\xb4\x1f\xa3\x9b\x38\xc2\x7d\xa2\x79\xdd\x40\x71\x96\x08\x5b\x2a\x08\xdb\x2c\x7d\xe0\xcd\x64\x58\xc6\xb5\x41\x22\x82\xc0\xed\x11\x8c\xb7\x9f\x70\x34\x62\x98\x36\xb8\x51\xbf\x97\xc4\xfe\x67\xbf\x8c\x42\x50\xfc\x55\x0c\x13\xa1\x22\xe9\xd7\x2b\x7a\xd6\x20\x72\x20\x89\x0d\xd2\xaa\xc0\x18\x99\x70\x01\xa0\x11\xd2\x4b\xc3\x13\x44\x1e\x08\x8a\x2e\x85\x26\xd2\x11\xda\x01\xc5\x61\x8b\xa3\x64\xfe\xb3\x5d\x70\x96\xb8\x4b\x8b\xab\xdf\xb1\xad\x45\xf9\x8a\x54\xfd\xb9\x6d\x12\x7a\xa4\x6c\xa3\xbd\x32\x6c\x00\x68\xa7\xa3\x57\x83\xfd\x4b\x64\xa9\xd1\x82\xad\xd3\xd5\x93\x36\x31\xaf\xbb\x38\x0c\x8e\x01\x10\x34\xbf\xe7\x13\xda\x0c\x45\x4e\x02\x6c\xe2\xfb\x18\x11\x2a\xa3\x14\xd0\xc4\xcf\x08\xea\xe8\x1a\x7b\x80\xb4\xb3\xee\x23\x4c\x2f\x51\x2b\x1a\x43\x0c\x3b\xef\xc6\x46\x91\xb0\x85\xee\x9a\xb8\x40\xc7\xa6\xca\x30\x59\x97\xed\xaa\xfa\x29\x9c\xa6\x1b\xa8\x64\x27\xab\x9d\x1f\xe4\xc1\x1e\x46\x27\x16\xee\xc1\xdb\x19\xe1\x60\x2d\x4c\x87\x64\x9e\xe1\xa0\xba\xa7\xb5\x48\x9d\xc2\xe2\x8d\xec\xb6\x60\xef\x49\x52\x4a\x88\x41\x02\x2f\x00\x6a\xc1\x25\x8a\x9f\x32\x15\x13\x43\x87\x84\x37\x6d\xd5\x91\xfd\x38\x71\xea\xd1\xe5\x5c\xcd\x1a\xd8\x40\xb1\xd0\x01\x0c\xed\x74\x91\x9e\x42\x98\x70\xe2\x15\x8f\x8d\x02\xd4\xfa\x3e\x3c\x7b\x73\x9e\xea\xae\x63\x38\x04\x56\x05\x1b\x92\x09\xc9\xcc\xf2\x2e\x7a\x57\x9e\x4e\xc6\x23\x44\xc0\x97\xe7\x11\x47\x6f\x75\xe5\xc9\x61\x43\xcf\x93\x8a\x9d\xc8\xce\xcb\x2e\x5c\x7f\x0d\x01\xd9\x07\x51\x17\x4e\x1d\xde\x7d\x15\x06\x01\xa5\x70\x07\x65\xbe\x50\x44\x71\x85\x40\xd5\x9d\x1d\xd0\x73\xb9\xd2\x73\xb7\xb6\xbb\x82\x8b\xb1\xb2\x90\x22\xcb\x33\xcc\x78\xc5\xc4\xfa\xd4\xa0\xd8\x07\x9d\xf0\x82\x0c\xae\xf3\x30\x9e\x4c\x5e\x31\x5d\x1f\xda\x40\x1e\x1b\xae\x88\x86\x50\x71\x56\x7f\x5a\x31\x41\x4b\x56\xac\x52\x13\x25\x5c\x57\x31\x7e\x84\x3b\x7a\x48\x64\x66\xa0\x19\xed\x5a\xa0\x89\xf5\x07\x47\x3c\xfe\x46\x81\x89\x95\x3c\xe0\x33\x0f\x5f\x41\x7c\xb6\x7d\xd6\x3b\x7a\x1f\x8b\x21\xfc\x15\xbb\xf5\x81\x0a\x01\x61\x93\xf7\x24\x47\xd4\x0c\x91\x93\x31\x89\x3e\x38\xa6\x67\x8e\xeb\x00\xc1\xfa\x80\x47\x76\x3f\x14\xdc\xff\x09\x27\x3c\x84\x8f\xab\x98\x3d\x64\xa0\xda\x96\x8a\x7e\x81\x6f\xda\x0f\xab\x72\x5c\x9c\x8e\x0d\x95\xd8\xa9\xe3\x43\x91\xc1\x9d\x81\xba\x47\x3c\x2c\x22\xd8\x44\xe9\xb5\x11\x21\xec\x85\xa3\x79\x94\x6b\x41\x9e\x86\x00\x37\xa6\x08\xca\x26\x80\x5d\x01\xa5\x9b\x98\x10\xcb\x90\x12\xed\x2c\x46\x70\xd2\x46\x35\x0e\xeb\xe7\x4e\xbc\x25\x14\xaf\xd2\x5e\xb8\x19\x22\x5d\xe7\x84\x1e\xcb\x28\xe9\x50\xcd\x04\x8c\x30\x95\xf5\xf0\x2e\x25\x51\xf9\x31\x6d\x89\x28\xed\x02\xca\xf0\xad\xe4\x6e\x6d\x16\x7b\xdd\x32\xef\x5d\x63\x9f\x0f\x02\xc8\x95\xc0\xe6\x5f\xa1\x0d\x9c\x22\x2f\x59\xb6\xba\xd1\x4a\x06\x2b\x75\x95\xe8\xa1\xe6\xf6\x38\x37\x70\xda\x77\xab\x6e\x8c\xaa\x28\x51\x89\x04\x31\xc5\x2f\x8d\x13\x59\xab\x84\x21\xa2\x04\x59\xf7\x6a\xfc\x65\xb8\xfc\xa0\x59\xd4\x3b\x30\x12\x1c\x8f\x6a\x20\xed\x24\x00\xb9\x6c\x42\xca\x62\x9b\x36\xfd\xe2\x7a\xfb\xa1\xc3\x9a\x1a\x18\x3f\x91\x2b\x82\xdb\x2e\xa6\xb8\xc6\xe1\x99\x33\x42\x06\x8b\x89\xe7\xef\x12\x1b\xcd\xfb\xfe\xc5\x16\x69\x5b\x2f\x7b\xb2\x7b\x26\xc0\x95\x50\x89\x81\x8b\x3e\x90\x1e\x75\x7a\x7d\x81\xdb\x5d\x8d\x38\x50\x38\x84\x14\xb6\x3f\x74\xd8\xbe\x7d\x22\x5f\xc2\xe0\x4c\xe5\xd9\x3e\xec\xd8\x5e\xb6\xc4\xdf\x91\xbd\x6e\xb0\xd1\x3f\xad\x23\x4f\xce\x84\x05\x5b\x77\xbc\xe7\x53\xe9\x53\x56\xf4\xef\xc3\x0c\xf2\x3a\x69\x64\xbe\x32\x44\xcf\x2f\x2a\x4a\xea\x62\x2b\x64\x5a\x84\x89\x46\xe3\x80\x4c\x86\x51\x05\x7a\x92\xda\x5c\x24\x65\x0d\x82\x15\x09\xf4\x1c\xff\x05\x01\x4c\xb7\x0f\x89\xcb\xfa\x1a\x95\x07\x90\xd6\x30\xc4\xc6\x7d\x19\x8b\x42\xae\x36\x14\xc3\x9e\xcf\xa8\x44\x1e\x7c\xb5\xdc\x8a\xaf\x82\x09\x3e\x40\x52\xc2\x06\x0d\xd7\xae\x12\xd7\x5c\x38\x92\xd1\x88\x40\xb8\x30\x00\xa9\xd4\xe8\x11\x91\xa1\xba\x5f\x9e\x2f\xbf\x15\x21\x21\x6e\x52\x10\x5d\x81\xd8\x1f\xa4\x6a\xd7\x0a\x27\x52\xe7\x8c\x16\x8f\x69\x07\x0b\x64\x56\xa3\xb2\xe0\x60\xe3\xc9\x69\xb9\x2f\x7e\x50\xd1\xcf\xbd\xe8\x16\x90\x80\x90\xf9\x39\x5b\x93\xa5\xe0\x63\xfc\x62\x47\x32\xb3\x0a\x29\x6d\xb7\x9a\xfa\x64\xc1\xba\x2d\xec\xce\xc0\x27\x7f\x92\x72\x4d\xe2\x68\x8a\xe0\x35\x09\xf0\x39\xcf\xd7\xd8\xc5\x94\xb7\xa3\x54\x10\x7d\x24\x12\x81\xc1\x9c\x75\x4e\xe1\x44\xa9\x5f\xef\x2d\x86\x6c\xc4\xfc\x31\xd2\x7a\x74\x2d\x59\x86\x10\x52\xaa\xc2\x6a\xcc\x5f\x38\xe2\xd2\x1d\x5e\x8b\x5e\xfd\x8a\xe6\x5e\x73\x70\x29\x29\xdc\xe0\xaf\xfd\xfe\xed\x50\x42\x16\xcc\xd2\x4c\x77\xac\x30\x91\x20\x15\xf7\x31\x76\xc9\x63\xd4\x31\xda\x38\xd3\x28\x8c\x7e\xe8\x30\x7a\xfb\x44\xff\xf0\x3f\x12\xac\xf8\x6d\x4e\xa0\xde\x08\x91\xc6\xb2\x3c\x7f\x8b\x23\xe2\x2e\xb4\x63\x5c\x0e\x13\xa1\x11\x94\x8f\x33\x5b\x6d\x80\xda\x3f\x08\x9e\x53\x58\x81\x40\xe4\x95\xaa\x15\x0a\xb1\x8c\x1e\x37\xc1\x95\xc4\xa1\x9e\x3f\x46\x38\x92\x74\x47\x22\xc7\xce\xde\x39\x51\x72\x22\x89\xc2\xb4\x54\x54\x12\xfe\xeb\x50\x4c\xa3\xa0\x73\x36\xe5\x81\x44\x4b\xe8\xa8\x20\x1b\x45\xa7\xf1\xc1\x64\x31\xbf\xe4\x52\x38\xff\xa1\xc3\xf9\xdb\x27\xf2\x23\x65\x88\xb4\xf7\x68\x2b\xee\x07\x6c\xf6\x76\xf4\x8d\x1e\xd9\xfa\xff\xa2\x45\x7c\xdd\xd0\xfb\xb7\xd1\x0c\x43\x1b\x26\x6f\xab\x22\x75\xb9\xd9\x8c\x8a\xb3\x49\x9a\xf2\x50\xa0\xf1\xf2\x9e\x6e\xfa\xb2\x36\x41\x95\xbb\x84\x0d\x26\x60\x41\x7a\x30\x42\xea\x6f\xe6\x43\xc7\x61\x32\xda\x4e\xdc\xe6\xc4\x2a\x9d\x21\xd7\x86\x88\xd9\x80\x95\xad\xe5\xf6\x7b\x13\x9c\x9a\x45\x1b\xb4\x54\x58\x9b\x76\x02\x25\xed\x85\x8b\x7c\xcb\x4d\x5c\xc0\xe8\xd1\x1c\xf4\xef\x04\xd1\xd0\xeb\x52\x70\x43\x13\xc8\xac\xa9\xe2\xa9\xb3\xa3\xf8\x20\xb1\xa8\xa9\x30\xbc\xd7\xaf\xd8\x6a\x65\x6f\xa8\xb2\x2a\x9c\x85\x77\x73\xb3\x14\x07\xb1\x23\x0f\x92\x21\xc9\xa1\x94\x9f\x7e\x34\x47\xa9\xf2\x0f\x40\x17\xbd\x28\x7c\xb6\x78\xab\x85\x8f\x05\x9c\xa1\x82\x2f\x37\xb7\x7a\x1f\xa7\x7f\x1a\x98\x9a\x01\xd7\x7c\xfa\x71\xa7\x7d\x80\xf9\xc7\xcf\xfc\xb4\xec\xdf\x32\x3a\x78\x3f\xfd\x69\x2e\x55\xf2\x5e\x78\xfe\xa1\xc3\xf3\xdb\xfb\xe2\x97\xb7\xd4\x77\xda\xd3\xfb\x01\xfd\xef\x37\xb6\xd2\x07\xeb\xc7\x4c\x57\xd8\xf0\x45\xfb\xcc\x2f\xf2\x36\xda\x89\xcf\x92\xc3\x95\x52\x2c\x47\xce\xaa\x08\x70\x57\xd4\xf7\x99\x48\x92\xb7\x4d\xd3\x15\xa4\xfa\x4f\xda\xcb\xb6\x52\x30\xb0\x2d\xa3\x12\x64\x53\x06\xb5\xde\x18\xd9\xa9\x94\x2b\xd1\x67\xbf\xd2\x9b\x32\x3e\x16\x5e\x05\x79\xb1\x4b\x01\xe3\x11\xa5\x9d\x3a\x88\x00\x70\xba\x07\xfd\xbf\xf7\x7e\x0b\x98\xea\x26\x8c\x69\x07\x63\xf5\x67\xfc\x7d\x4b\xa0\xd4\x26\xe9\xa0\x4a\xb2\x6e\x26\x36\x16\xda\xa4\x0b\xfb\xef\xa7\x89\xa1\xbc\xe8\x3a\xff\x6d\x95\xa4\x1b\xc9\xe5\xbf\x34\xc6\x07\xad\x2a\x3a\x93\xd8\xa1\x9f\x6b\x4e\xa1\x57\x90\x08\x8b\xfa\x2f\x34\xc2\x8f\xfa\x50\x96\x96\x74\x53\xb8\xd1\x2a\x44\xa4\x72\xa8\x5f\xf3\x7b\x92\x5b\xea\x5b\xfa\xf5\x83\xfe\xb7\xb7\xd4\xd7\xbc\xb3\x70\xf9\x43\x87\xcb\xb7\xf7\xc5\x27\x6f\x1f\xd0\xdf\x6a\x77\x1f\xb0\x2f\x6f\xff\x7f\xb4\x5f\xc9\x55\x6e\x44\xe8\x55\x46\x11\x6a\xad\xcb\xfd\x6d\xf7\x05\x6f\xf6\x76\xd5\xb6\x86\x47\xf4\x54\x93\x6b\xed\xc6\x41\x87\xdf\x26\x4d\x28\x38\xc8\x9c\xef\xda\xaa\xf8\x7b\xb0\x25\x52\xee\x7b\xcb\x59\x64\xe4\x91\x2f\x06\x1e\x8c\xd5\x44\xd9\x95\x2b\x83\x30\xa7\x30\xc0\xa1\xf5\xe1\xeb\x91\x82\x6b\x59\x98\x7d\x66\x18\xe7\x54\x6d\x61\x3f\xd1\xeb\x2b\x39\xa1\xec\xc6\x13\xee\xb4\x56\x9a\x3b\x19\x05\x33\xa1\xdc\xe1\xc3\xda\x51\x46\x6c\x8f\x51\x20\xd2\x11\x47\x49\x6f\x21\x69\xf7\xdc\x72\x8a\x89\xac\x74\x9a\xd3\x24\xd4\x64\x9f\xe5\x5e\x18\x6d\x0f\x7b\x40\x74\xcd\xba\x1a\xc8\x5f\x4c\x06\xac\xe2\x50\x36\x78\xea\x29\x7f\xdf\x65\x37\x7d\xe3\x2c\xdf\x09\x27\x89\x2e\x50\x06\x40\x98\x5c\x45\x9e\x77\x3b\xf2\x2c\x8a\x1f\x33\x98\x67\xa9\x15\x48\x95\xec\x3b\x37\x34\x7d\x1f\x78\x40\x5f\x6a\x51\xda\xd3\x75\x2b\xfd\xcd\x26\x5f\x5e\xed\x63\x2a\xb5\x19\xcf\x5f\x99\x83\x88\x75\x3e\xe4\x98\x55\xf5\x3f\xc5\xa4\x26\xad\x80\xca\x2d\x45\x38\x32\x69\x43\xd4\x11\x20\xac\xa2\x14\xbd\xe2\x1b\x09\x79\xa8\xd2\x72\xf1\x6e\x6e\x2f\xf9\x4b\x4b\x5a\xaf\x28\xd8\x00\x17\x58\x37\xa8\xf0\x52\x5e\x94\x61\x7a\x58\xe8\xb6\x62\xa6\xbe\x4e\xbb\x57\xbf\xae\x0e\x5e\xb5\x76\x90\x4b\x93\xeb\xd8\xe3\x8c\x62\x5d\xd0\x0c\xc9\x74\x17\xe3\x58\x8b\x20\x04\x19\x1b\x99\x9f\x28\xbe\x02\xd7\x30\x6c\xf3\xbd\x44\x88\x64\x02\x56\xb7\xed\x03\xeb\xaf\x42\xd4\xaa\x7d\x9d\xe9\x27\xa4\xa5\x9c\x13\xa5\x51\x2f\x32\xb6\x84\x18\x05\x94\xd5\x2b\x3a\x6d\x0c\xe6\x64\xf9\xc8\xc9\x11\xe9\xf1\xcb\xc9\x40\x22\x64\x91\xab\x9e\xc5\x41\xfc\x7c\x8f\x34\xd6\xad\xc7\xc4\x42\x03\xdc\x4e\x14\x71\xa8\xf8\x5e\x3f\x93\xff\xb2\x39\xca\xcd\x4d\xee\xe0\x62\xbd\x41\x56\xa2\x3f\x33\x6c\xee\xae\x78\xb6\x6a\xd1\x9e\xec\xe1\x06\x03\x61\x59\x97\x9c\xdf\x35\x79\x04\xad\xa0\xe0\x28\x87\x17\xe6\xf9\xe6\x38\xa5\x95\xbd\x3e\x37\x52\x50\x9c\x6c\xaf\xdb\xe3\x46\xc2\x38\xa1\x7d\xf7\x66\xeb\xda\x60\x3c\x5b\x4c\xc9\x15\x20\x11\x64\x37\xc7\x62\x31\x19\x04\xc8\x80\xa9\x3d\x8b\xb4\x86\x41\xd3\xa4\xc0\x9b\x88\x84\xda\xcb\x06\x85\x24\x71\x96\x69\xe0\xd9\xaf\xb8\x25\x31\x16\xc6\xa1\x71\x9a\xd2\xc4\xa6\xd3\x30\x9a\x8e\xde\xe3\x1d\xd1\x7a\xdf\x93\x87\x94\x9e\x10\xe7\x63\x37\x32\xbb\x44\x19\x0d\x21\x32\xc0\x1f\x0e\xdb\x62\x04\x2b\x93\xde\xb6\xa6\x40\x0d\xed\xf3\x59\xdf\xd9\x8d\x79\xf0\x09\x09\x32\x13\xca\x63\xc5\xe6\xbd\x1b\x1e\x07\x42\xad\xae\x80\x60\x64\xe2\xa1\xd2\x52\x64\x49\xd5\x52\x9c\x4d\xb4\x80\x19\xc4\x18\x43\xc6\x27\x73\x82\x71\x41\xb3\x39\x45\x07\x62\xa6\x31\x7f\x48\x25\xe2\x8d\xdc\x04\xa8\xaa\x54\x26\x3e\xc9\x54\x54\x43\xfc\x50\xde\x4f\x7b\x97\x8e\xd7\x63\x48\x39\x82\xc8\x61\xcb\x28\x82\x81\x93\xf3\x81\x90\xed\x4c\x49\x96\x40\x96\x6f\xb2\xe6\x59\x27\x27\xb5\x85\x14\x31\x88\x9d\xc5\x84\xfe\x45\x4e\xec\xf2\xdd\x43\xa4\xd8\x54\x39\x2e\x19\xf6\x2b\xd2\xdf\x9c\x27\x3b\xba\x2f\x05\xe1\xc4\x54\x51\xa5\x06\x91\xa4\x2d\xcc\xa2\x51\x59\xef\x65\x28\x73\x75\xc5\x74\x88\x42\x18\xc7\x47\x0e\xc7\x16\x20\x59\x88\x0c\x15\x48\x0c\x62\xae\x43\x93\xec\x89\xaa\x30\x67\x19\x5a\x75\x98\x39\xa4\xa0\xa1\xc5\x7a\x23\x66\xae\x2b\x9f\xfd\xce\xae\x17\x6c\xd0\xaa\x1b\x14\x2d\xc3\xc1\x47\xda\x2f\x73\x15\xd2\x60\x4a\x8e\x62\x69\xb1\xae\xfd\xe3\x5d\x6e\x6a\xbf\xd9\x77\x83\xbd\xe8\x1a\x90\x2a\xcb\x6c\xbc\x3d\x9b\x31\x71\xd0\xfa\xe1\xd4\x84\xec\x83\x1d\xef\x74\xcc\xb4\xb8\x2f\xc4\x69\x45\xf0\x01\x32\x20\x21\x96\xd3\x7a\x1e\xb4\x4c\x68\x9e\x5c\x4e\x6a\xc5\x10\xad\xc9\xbc\xe6\xfe\xd2\xcd\x42\x6a\x2a\x5a\x36\x5e\x18\x94\x2d\xa6\x03\xcc\x8f\xc2\xcb\x0f\x1d\x5e\xde\xde\x17\xbf\xbe\xfd\x0a\xa5\xfa\xf1\x2b\xcc\xd7\x8f\xff\x85\xd3\x95\xa2\x36\xbd\xe1\x2b\xe2\xff\xba\xbd\xf7\x0b\xd9\x7c\x29\xc1\xc5\x6a\xd9\x77\x42\xb0\xee\x31\x21\x89\xc4\x13\x92\xa7\x06\xb5\x7f\x82\x2c\x03\x61\x91\x49\xc2\x0a\x49\xe9\x34\x2f\xd4\xdd\x16\x81\xa4\x08\x37\x7c\x2b\x5d\xb2\xb5\x44\x05\xf9\x55\xb6\x7a\x55\x22\x91\x8f\x46\x83\x07\xc2\x60\xcf\xcf\x76\x7e\x30\x6c\x7a\x6d\xe4\xb4\xca\x23\x9d\x47\x0c\x53\x3f\xa2\xd8\xbd\x41\xb6\xf7\x1f\x15\xab\xeb\xda\x8c\x2f\x28\x42\x12\x3d\x0a\x12\x75\xb3\x26\x6c\x17\x14\xd5\x49\xab\x32\xf8\x7e\xcf\xb6\x87\xc5\x6a\xf0\x03\x73\x22\x4a\x44\x3e\x3b\xd0\x4c\x38\x54\x42\xf8\xb1\xde\xda\xe0\xa1\xaa\x2d\x5a\x18\x0c\x12\x0c\x1f\x69\x79\x62\xa2\x9d\x52\x12\xaa\xfa\x2b\x3c\x6a\xab\x37\xef\xd3\x80\xe4\x47\x71\xa8\x8a\x03\x09\x54\x6f\xa8\x16\x40\x9d\xfe\x99\x51\xf4\xf7\x5e\xbb\x02\x96\xd1\xf7\xc8\xcc\xe5\xed\xdb\x86\x6f\x6f\x15\xef\x37\x0b\x28\x92\x90\x14\x23\xa3\x0d\x82\x72\x2d\xee\xfa\x04\x79\xe5\x1a\x10\xd4\x3a\xcb\xf5\xd9\xde\x0b\x29\x08\x87\xd3\xe6\x97\x0d\x8a\xb7\x7e\xab\xaa\xeb\x81\xe6\x04\x73\xd7\xef\x5e\xd0\x93\x62\x5c\x6f\xed\xb7\x01\xd3\x9d\x7b\x4a\x38\xf5\xae\x48\x58\x75\xff\xca\x8b\x94\xe5\xfd\x1f\x3d\x43\xaa\xf5\xfc\x0b\x6d\x15\x5b\x3d\xeb\x2f\xa0\x62\x0a\x8b\x85\x2e\xc8\xfb\x33\x1a\x21\x9e\x43\x77\x6b\xcf\x96\x7c\xb5\xff\xb6\x83\xaf\x5c\xe1\xcf\x2f\xd5\x4b\xe1\xe4\xd3\x21\x56\x63\x14\x61\x5a\x25\x8b\x06\xa9\x22\xcd\xc5\xf9\x5e\x39\xc2\x02\x13\x15\x3e\x69\xdd\x66\x58\x12\xd5\x7e\xf8\x20\xf2\xc8\x27\x54\xf0\xe5\x83\x8a\xa7\x0f\x9a\x3c\x79\xf6\x03\x57\x4f\x9e\xf4\xf0\x14\xa2\xbb\x18\x6c\x6d\x08\x87\x55\x5c\x5a\x0c\x02\x4a\xfe\x5b\x67\x64\x7d\x5b\x84\x06\x46\x83\xa9\x1f\x85\x68\x04\xd6\x40\x61\x19\x12\x4f\x97\x8b\xf1\x78\x54\x3c\xc6\x72\xd8\xd1\x60\xee\x61\xf2\x2b\x9f\x08\x03\x5b\xa1\x3f\x08\x1f\xed\x3a\x54\x0d\x01\x54\xcd\x54\x30\x4e\x3b\x60\xd2\x44\xff\x62\x42\xf8\xcc\xdc\xcf\x0b\x1c\x87\x2f\xfd\x38\x83\xe1\x18\x35\x73\xc6\xc4\xec\x2a\x1d\x68\x9e\x72\x3e\xb5\x8f\xcd\xea\x70\xe5\x85\x55\x0c\x30\x72\x95\x53\x21\x2d\xf9\x5f\x56\x00\xfd\x98\x45\xd8\x37\x23\x5c\xd3\x79\x47\x32\xae\x65\x1f\x57\xdf\x8a\x0c\x7f\x05\x9a\x46\x22\x57\x16\xa8\xc2\x58\x23\xdf\x06\x74\xc5\xd9\xd4\x86\x4f\x09\x9b\x97\x9f\xa4\x1f\x9e\x67\xed\x95\x3f\xd7\xfb\xfa\x3e\x60\xea\xfb\x92\xad\xf6\xc3\x07\x5b\x75\xbe\x3f\xec\xe9\x83\xda\x4e\x1f\x34\x7e\xfa\xc0\xed\x1f\x1e\xf7\xda\x29\x6c\xc4\xd3\x72\xdf\xd7\xeb\x0f\xc8\xfd\x3b\xab\xf4\x62\x78\xda\x6e\x47\xe5\x60\xd6\x80\xb5\x21\x57\x72\xb7\xd8\x4c\xea\x48\xeb\x85\x0d\xb2\xbf\xc2\xd7\x03\xef\x91\x18\xd7\x44\x18\x9d\x8b\x24\xb9\x65\x98\x2c\x72\x4a\x0e\xa4\xb5\x33\x44\x72\x18\x30\xd0\x39\xa4\xfc\x58\x23\x90\xd6\xde\x12\x13\x15\x13\xb4\x27\x2a\xbf\xb9\xbe\xef\xca\xf5\xe6\xf9\x59\xf6\x71\x05\x24\xf9\x3b\x77\x52\xbd\x3e\xab\x00\x4c\x71\xa4\x40\xed\xe5\xec\x7a\xe9\xa4\x7e\x88\x69\x78\x8c\xba\xd4\x28\xe9\x34\x45\xba\xc8\x1b\xe7\x20\x76\xe9\x57\xa8\x30\xba\x7e\x64\x76\xc3\x27\xc1\x5e\x5b\x73\xf9\x3e\x84\x02\x72\x67\x74\xf5\x0a\xeb\x4b\x31\xa3\x81\x26\x55\x06\xb8\xc6\x3c\x21\x06\x3c\x31\xc5\x76\x99\xbf\x97\x74\xce\xe8\x0c\x85\x54\xc7\xf8\xc8\x2d\x9d\x1e\x52\x07\xf9\x86\x14\x0b\x07\x77\x30\xda\x09\xef\x8d\xce\x4f\xab\x34\x7e\x7a\x15\x15\x5d\x18\xb0\xb3\xc6\x1e\x6b\x72\x44\xc9\x4d\x00\x26\xea\x96\xbc\x1a\xce\x83\x66\x9e\xe6\xbe\x79\xf8\x5c\x43\x6d\xdf\xfa\xca\xce\x68\x2c\xbd\xcd\x67\xb4\xf8\xb7\xec\x30\xf6\x56\xa6\xf3\xdf\xae\x66\xf7\x24\x1e\x3a\x59\xee\x42\x33\x61\x20\x50\x9a\x19\xef\x62\x2a\x66\x9e\x54\xdf\x81\x0e\xf3\xb8\x0b\xf6\x86\xbb\xbd\xb2\x8b\xc8\x29\x9d\x5e\x9f\x67\x9e\x2c\x87\x0f\xd0\xc4\xa9\x5c\xe2\x5b\xb5\x79\xd3\x39\x23\x5f\xd6\x7d\x1f\x32\x98\xf7\x33\x4c\xe2\x0a\x8c\xa4\x98\x77\xb4\xc1\x9f\x5b\x85\xca\x33\x58\xac\x3a\xf1\xd6\xf0\x68\x1f\xee\x85\x33\xee\x96\xfd\xb8\x86\xbd\xf6\x2f\xb1\x77\x81\xee\xa5\xdd\x87\xde\x58\xa9\xf4\x15\x67\x8b\xf5\xba\x07\x06\xe5\x2a\xa0\x39\xfd\xf3\xed\x53\x30\x64\xcc\x86\xb7\xbb\xc5\xd1\x14\x9e\x2c\x9b\xb9\x8d\x02\x99\x6f\x63\xc6\xc3\x35\x0a\x55\x0b\xeb\x1d\x4f\x0c\xcc\xd7\xe9\xd2\x9e\x5c\x1a\x56\xf7\x3f\x5a\x5a\x95\x3d\xf0\x5e\xfc\xe3\x45\xe1\x4d\xf1\x5e\x78\x37\x71\x3d\x0d\xb6\x4a\x07\x23\x8d\xb9\x7e\x04\xcb\xbb\x5a\x8c\x2e\x9d\x7e\x50\x4f\x6f\x42\x9b\xeb\xbe\x71\x70\x4b\x8e\x54\xaf\xe9\xa8\x55\x64\x7a\x76\x8f\x7e\xaf\x69\x66\xe8\xdd\xbc\xd6\xb4\xfd\x47\x2c\xe1\x15\xa2\x4e\xaf\xaf\x0a\xa3\x85\x3f\xab\xac\xfb\xf5\xaa\xf5\x14\x7d\x3b\xeb\xab\xf6\xe9\x2f\x02\xf1\xb9\xb9\x2a\x4f\x81\x41\x18\xea\x75\xd3\x10\x8f\x3a\xaa\x61\xaf\xdb\x41\x08\xc0\xef\x56\xce\xff\x11\x5b\x74\xd9\x33\x41\x64\x53\x8e\x0c\x2c\xcd\x54\x7d\xe3\x51\xbe\x2f\xf9\xfa\x2a\x33\xd9\x64\xb9\x03\x95\x99\x3b\xff\xad\x66\x96\x91\x84\x61\x07\x2e\xa6\xa2\x42\xca\x08\x62\x31\x44\xb8\x85\x97\xc0\xe5\xeb\xbe\xbc\xe6\x64\x56\x48\x2a\x70\x7d\x7c\xe3\x80\xde\xd0\xf2\xf3\x32\x3a\x44\x4c\x85\x85\x82\x51\x7e\x57\x9d\xf6\xf5\xea\x40\x81\x33\x7d\xcf\x75\x57\x11\x7e\x59\x0b\xdc\x02\x2a\x5e\x36\x2b\xbf\x81\xe9\xaf\x58\x28\xeb\x72\x1c\x4c\x23\xe5\x4d\x68\x7b\x35\xfe\x80\x33\xe9\x22\x72\x76\x22\xd4\x5b\xbb\xe9\x99\xd1\x0a\xb2\x1a\x51\x0e\x6c\x80\x65\xde\x11\xc3\x97\x11\x4a\xea\x68\x26\xfe\xf2\x8d\x5d\x01\x9c\x58\x8b\xa4\xaa\x3b\x1c\xd6\x4f\xf9\xc1\x8c\xdc\x1b\x48\x2b\x1e\x2c\xd3\xf8\x9d\xd8\x41\xa8\x9c\x21\x27\x81\x62\x9a\xc4\xd9\x3e\xc0\x85\x8e\xb4\xae\x70\xa8\xbf\xba\xf4\x7d\x98\x55\xc7\xe3\xaf\x1d\xb8\x4f\x60\x3e\xab\x32\x1e\x95\x26\x06\xbb\xa1\x4e\x99\xe3\x59\xe0\x3d\xa6\x0b\xe9\xcb\x47\x41\xf5\x34\x06\x58\x41\xdc\x2f\xaa\xbb\x7a\x0f\xee\xf4\x34\xd6\x2d\xf2\x19\xd3\x48\x6f\x6c\xf8\x21\x25\xa7\x31\x17\x04\x44\x4d\x77\x67\xd8\xe6\xca\xa3\xee\x46\xe9\xd1\x0e\x9d\xc5\xb7\x41\x20\x5b\x5d\x8d\xe2\x97\x54\x93\x95\x97\x7c\x8a\xd7\xe2\x09\xbf\x73\x82\x1c\x0a\x21\xbb\x61\x0e\xf4\xf4\x8b\xdd\x7c\x7d\xcf\xd1\x7e\xaa\x71\xc1\x41\xb5\x91\x3b\x5f\x0c\x3f\xb6\xcc\x6a\xb5\x7b\xf1\xe3\xc8\xb3\x74\xe4\xca\xcf\x2b\x67\x3f\xf5\x0d\x23\x4f\x3e\x5b\xfd\x52\x76\xa0\x23\x7b\xfe\xd2\xe5\x2b\xa3\x77\xd1\x40\x1b\xb9\xa1\xbb\x11\x9a\x1c\x79\xa2\x0c\x37\x46\xa4\x80\xd2\x84\xbb\x74\x5c\x85\x4a\x0e\xfb\x60\xca\xb2\x55\xa2\x4c\x0b\x6e\x8d\x04\xff\x0f\x0d\x9c\x3b\x71\xdb\xfa\xd3\x6f\xbe\x06\xbe\xaa\x3b\x7b\x19\xd0\xa1\x86\xf4\x6c\x7c\xde\x7c\xb4\xfb\x12\x26\x83\x27\x55\x90\x89\xda\xbf\x42\xa7\x22\x5f\xe7\x1f\xc2\x89\x88\xc7\x41\xa9\x8e\xe3\xa9\x07\xd4\x05\xc2\x9c\xc1\xd4\x69\xd9\x0d\xcb\xd8\x3c\x21\x8f\xd5\xe6\x86\xc6\x18\x32\xa0\xe8\x28\xae\xee\x20\xc4\x4a\x6d\x3a\x91\x90\x84\x92\xcf\x0c\x01\x86\x1d\x94\x30\xbc\x81\x49\x3f\x93\x62\x8f\x5e\x62\xbf\xed\xa4\x6f\x49\x6b\x28\x19\xcc\xac\x29\x2f\xe7\xbf\x93\x30\x6a\xd2\x55\x1a\xcf\x01\xae\x91\x6a\xff\x49\x9b\x21\x20\xec\x25\x26\x7b\x4b\xd1\xfc\x22\xdc\xa6\xec\xc3\x33\x83\x44\x6c\x3a\x48\x1f\xd5\xb3\x25\x76\x75\xb5\x84\x2f\xa3\x2e\xf5\x9f\xdd\xc6\x10\xd0\x2c\x32\xc3\xa1\x57\x41\x52\x27\xdd\x9a\x36\x2c\x29\xb8\xc4\xd7\x2b\xfc\x8d\x95\xfe\x38\xe0\x96\xf5\x18\x39\xf3\x91\xe9\x0b\xfb\xd9\x6b\x07\xc1\x51\x1b\xb9\x2c\xd3\xe4\xe0\x07\x85\x8a\x0d\x21\x40\xea\xb9\x78\xfb\x9d\xbb\x21\x5f\xa8\x37\x92\x2e\xb9\x1b\xea\x8e\x48\x1a\xa3\xa9\xd3\xbf\xd8\x3c\xd7\xe0\xd2\x0d\xab\x13\x29\x42\x89\x14\x03\x52\x11\xdf\x91\xde\xe5\xf2\x3d\x25\xe5\xed\x7e\xf1\x30\xa4\xae\xd2\x4e\x13\xef\x49\x84\xb5\x74\x36\x1f\x87\x5f\x49\xae\x46\xa5\xc7\x25\x0b\x99\xe5\xdd\x13\xf1\x9a\x48\x26\x4a\xd8\xb4\x6a\x26\xb6\x52\x0d\x38\x67\x91\x35\x5d\x49\x7f\x1a\x8a\x02\xea\x64\x35\x09\x85\x1b\x4b\xd9\x3a\x5f\xd5\x09\xae\x64\x32\xd9\x6d\x8e\xd4\x0b\xe5\x26\x44\x27\x52\xd7\x1a\x59\x29\xbd\x36\x2a\xb9\x51\x0d\xac\xf8\x73\x32\xd4\x6a\x99\xba\xe2\x8f\x06\xbb\xc1\x91\xf1\x2e\x26\x12\xda\xd6\x4d\xbf\x32\x14\x61\xa3\x9a\xb1\xda\xbb\xea\x67\x6a\x92\x10\x11\x4a\x0a\x70\x91\x90\x20\xa0\xda\x89\xfa\x04\x30\x24\x94\x43\xb1\x5b\x14\xa4\x4b\x83\x49\xa3\x2e\x4d\xe1\xa3\xaa\xf9\xb3\xb1\xf8\x77\xda\x86\x54\xaf\xe0\x2f\x22\x53\xd6\xf6\x5f\xcb\x61\xfa\x1a\x23\x75\x26\xab\x1a\x55\xd6\xf7\x62\xf0\x25\x5a\x04\xde\x15\x2f\x9c\x67\x0c\xad\x67\x4e\x2c\x6f\xfe\x40\x47\xd2\x56\x8f\x63\x40\x4e\xb0\x4e\x90\x3c\xf1\xd0\x41\x2d\xd9\x8c\x97\xd6\xeb\x94\x3c\x9f\x3b\x3c\x14\x06\xa9\xd2\x9b\x5e\xf3\x54\xe4\x82\x29\x4f\x41\x93\x30\x3e\x1b\x28\x37\x7f\x19\xfa\xd4\x70\x23\x5d\x20\x12\xc5\xa0\x48\x9d\x59\x4b\xd0\xc9\x53\x84\x8b\x5f\x2a\x2d\x56\xf2\xac\xb2\x95\x44\xb7\x56\xfd\x19\x8a\xf8\x22\xc4\x96\x81\xd2\xaf\x92\x02\xe1\xe1\x8c\xa3\x30\x25\x67\xa1\x9c\x07\xf1\x30\x42\x87\x90\x30\x94\xda\xa7\x1d\xd6\xec\xaa\x3c\x71\xeb\xc4\x3a\xa6\x7a\xd9\x41\x7c\x46\x46\xca\x06\x21\xa7\x9d\x86\xe4\x00\x52\x12\xf6\x56\x9a\xef\x10\x62\xca\xa7\xd6\x88\x4d\xa4\x26\xc8\x03\x78\x07\x6f\xfb\xb7\x89\x11\x19\x37\xf8\xb5\xff\x95\x43\x88\xde\x37\x40\x3a\x9a\xb5\x06\xd3\x1a\x0f\x27\xe3\xf6\x17\xa5\x24\xfb\x8b\xad\x21\xb6\x47\x48\xba\x49\x55\xfb\xfc\x76\xc1\xda\x31\x3b\x0a\x39\x62\x82\xab\x7a\x45\x22\xa1\x17\x83\xca\xba\x3d\x07\xf8\x29\x90\x64\xb3\x35\x54\xcf\xb5\xbf\xa3\xbd\x78\xa0\xf5\x00\xcb\xe2\x89\xb7\x03\xd2\xe1\xec\xb5\x40\x81\x14\x98\x46\xd9\xe5\xee\x87\x91\x40\x0d\x1c\x2b\xe2\x76\x77\xa3\xdd\x22\xc2\x48\x4a\x55\x42\x56\x28\x6c\x65\x31\x14\x21\x2a\x23\xd1\xd3\x14\xd2\x9d\xe9\xc1\xa3\x62\x42\x06\x4d\x42\x37\xbb\xd8\x18\x00\x5d\x15\x5d\xf0\x0c\xed\x51\xf5\x4a\x70\xe3\x8d\xd0\xa6\x30\xc5\xaa\x75\xa8\x02\x3d\xe6\xf7\x76\x54\x4b\x6c\xcb\xe2\x02\x51\xdd\x11\x88\xae\xd7\x48\xd2\x7a\xcb\xb0\xd9\x7c\xbc\xad\x46\x55\xc3\xa1\x23\x39\x79\x1b\xa2\xcc\x36\x08\x11\x68\x3d\x28\x1a\xd5\x30\xd1\xd1\xec\x09\x14\x23\xfa\xc2\xbe\xbd\xb3\x7b\x22\x4e\xf6\x8d\x12\xb3\x45\x42\x54\x4e\x5d\x1f\xbc\xc6\x8b\x1b\xd9\x69\x02\x7b\x09\x73\xbd\xac\xa0\x5e\x6b\x85\xf5\x62\x70\x40\xee\xd7\xd8\x4e\x53\xb4\x1d\xf3\xcd\x35\xea\x93\x53\x48\x35\x85\xc5\x88\x21\xf7\x02\x0f\xc1\xae\xaf\xf6\x55\xb5\x6d\x36\xb4\xce\x6f\xbb\xa3\xaa\x0d\x6d\x70\xa4\x74\x9c\x56\xf9\xd8\x46\x7e\x5e\x4d\xb5\x22\x5e\xd2\xac\x53\x2b\xbe\xd7\x39\x1c\x63\x1d\xda\x21\x96\x6b\xf9\x2d\x5c\x8b\x45\x70\xc6\xbf\xb3\x3a\x2c\xfb\x69\x96\xf2\x27\x7c\xfe\x55\xc9\x3b\xbd\x46\x20\x8d\xd6\x92\x4e\x90\xf2\xb9\xf5\xad\x2d\x60\x1d\x2c\x34\xa5\x3a\x55\x93\xd3\xbc\xf2\xbd\x10\xd1\xf1\x23\x00\xc9\xba\xe7\x51\x81\x22\x84\x5e\x6b\x81\x0d\x3e\xa0\x92\x7c\x45\xce\xfa\x6c\xae\xc6\x1c\x50\x54\x57\xb3\x85\x3e\x59\xfe\x90\xe9\xed\x9a\x5e\x48\x36\x3a\x4a\x0e\xc7\x3b\x45\xb2\xcb\xef\xba\x4a\x9e\x84\xa3\xe2\x95\x74\x5f\xe3\x0b\xf9\xe4\xcb\xae\x69\xd7\x60\xc9\xf8\xda\xab\x97\x72\x61\xce\xad\x6d\xa4\x54\xa5\x84\x18\x42\x3e\xe4\x2a\xba\xe7\xda\x8a\xa9\x62\x5f\x3a\xab\xd3\xcc\x25\xb3\x64\x5a\x1e\x26\xa2\x1b\xf9\x52\xf2\x1c\x51\x09\xae\x98\x4f\xe8\x97\x03\x29\x60\xd7\x01\x0b\x6b\x00\x4b\x81\x02\xe2\x5c\xef\x1e\x4e\xc2\x66\xeb\x45\xeb\x1e\x34\x38\xcf\x57\x27\xc9\xea\x44\x25\xec\xab\x52\x7f\x20\x92\xb0\x65\xf0\x17\x34\xab\xc8\xcf\xc4\x12\xbb\x5e\x7d\xd4\x0a\xee\xb6\x9b\x8f\x72\xf9\xba\xbf\x50\x1f\x91\xad\x5a\xd6\x17\x48\x04\xc1\xe2\xe1\xd3\x23\xa1\x1c\x6e\xa8\xfc\xd5\x6b\xfc\x2c\x41\xbc\x8f\x08\xad\x23\x59\x78\x4a\x56\x6b\xc3\x41\x1d\x14\xd3\x73\x68\x31\x17\x42\x60\x91\xbb\xc8\xa9\x97\xea\x23\xde\xff\xda\xec\xad\xb6\xb4\x4f\xb8\x84\xa1\x86\xcd\x84\x7e\x4e\xa7\x43\x3f\xea\x7b\x34\x24\x2e\x2c\x70\x0e\x6b\x90\xd6\x4b\xe1\xaf\x4e\x8d\xdf\x18\x07\x7d\x71\xbe\xe0\x49\x8d\xaf\x71\x94\x4c\x0c\xaa\x2a\xc7\x4e\x48\x92\x3c\xba\xa7\x82\x25\xd6\x50\x6d\xda\x6f\xb3\x2c\xf1\x3b\xe6\xe5\x2c\xa5\xf3\x79\xf3\xf4\x2b\x4f\x50\x05\x40\x4c\x8f\x88\xa1\x41\x8f\xb7\xc2\x2f\x05\x05\x4f\xb7\x54\x68\xf6\xd7\x59\x5f\x4f\xf9\x57\x2e\x4e\x3b\x3d\x0a\x98\xc0\x16\x25\x4d\xaa\x33\x4d\x4b\xf2\x07\x39\x58\xf2\x3f\x9a\xcd\xb8\x4c\xac\x86\x8c\x6e\x98\x57\x2b\x50\xaa\x45\x49\x2e\x21\xd5\xeb\x10\x46\x1d\x66\xcc\x44\xb6\xd0\x0f\xfb\x73\xc0\x90\x84\xed\xa8\x02\xa3\x51\x1f\x2c\x2c\x88\x84\x82\x9c\x4f\xbc\x04\x0e\xea\x8a\x45\x5b\xcb\x24\x0b\x65\x04\x59\x24\x0d\x99\x34\xed\xf6\x2f\x2c\x62\xa2\x6e\x47\x25\x72\x82\x08\xd9\xad\xc1\xc4\x95\x3c\xca\xd6\xaa\x6c\x0a\x0d\x63\x4a\xa3\xba\xdb\xa0\x99\x21\xc2\x51\xda\x35\x66\xf2\x48\x52\x15\xdc\x48\xf7\x49\x6b\x9e\x00\x3e\x64\x33\x8c\x25\x27\xa9\x3c\x5c\xb4\x2b\x39\x15\x71\x29\x0c\x3c\xcc\x3d\xf1\x1a\xc2\x60\x96\x35\xa2\x3c\xaf\x21\xc5\xac\x97\x09\x55\xe9\x25\xb3\xa7\x87\x8f\xd6\xc0\x60\xcb\x52\x54\xb6\x3c\x46\x55\x16\xc3\xac\x59\x16\x27\xf8\x9d\xd8\x2a\xac\x4f\x02\x2f\xbd\xce\xb2\x1e\x48\xef\xcc\x26\x44\xe8\x5a\xaa\xba\x81\xc2\xa8\x1e\xbd\xce\xa1\x8f\xe5\xba\x17\x66\x67\xef\x91\xc7\x1a\x33\x1d\xe6\xc8\x18\xe0\xd6\xfc\xf3\x79\x9c\xf9\x5e\x6d\x1b\x42\xd1\x0f\x22\x69\x51\x29\x8f\xc9\x40\xa5\xc8\xf7\x50\x4c\xca\xb7\x82\xd5\x79\x8c\x40\xaa\x1a\x8e\x8c\xc8\xf0\x0c\x62\x64\xee\xb7\xec\x11\x37\x38\x85\x29\x48\xcb\x68\x72\xb3\x99\x68\x98\x3c\x37\x9c\xc1\xde\x99\xe3\xc9\xc9\x98\xd2\x1c\xfa\x63\x8f\x4a\x4e\x6e\x27\xb8\xb3\x4d\x43\x4b\x9e\xb7\xd3\x1c\xc8\xd0\xc4\x98\x58\x53\xcc\x51\x33\x9e\xbd\x66\x58\x0d\x61\x5e\x64\x4a\x33\xfd\x20\x6e\x62\x49\xb3\x44\xc8\xef\xc4\x94\xcb\x82\x66\x5f\x5e\x02\x55\x45\x93\xd9\xac\x19\x42\xce\x1c\xdf\xe9\x90\xb0\xae\x8e\xac\xf9\x85\x70\x3d\x63\x85\xd2\xa8\x17\x3f\xd9\x4c\x66\xd3\xa0\x39\x88\x78\x37\x65\x8a\x6b\x08\x06\x70\x8c\x59\x7b\xe2\x9d\x24\xc5\x37\x25\xdc\x29\x6a\x94\x8b\x22\xc8\x46\x06\x6c\x9c\x33\x64\x2c\x56\x53\xf8\x7b\x51\x67\x2c\x22\xf4\xf1\x6f\x46\x10\xc1\x6f\x68\xe4\xf0\x49\xdb\x16\xe4\x54\x64\xc3\xff\x73\xb0\xca\x42\x92\xbf\xa6\xd4\x09\xe6\x42\xe9\xe9\xf5\x29\xee\x40\xfc\xa9\xb5\xbc\xdc\x24\x87\x4e\x82\x0b\x3a\x61\x3d\x7b\xcb\x78\x4a\x27\x64\x81\xb6\x89\x81\x0b\x6c\x3b\x6f\x26\x96\x2a\x24\x7f\xe8\xb2\xdc\x1f\x68\xb1\xad\xfa\x41\x45\xee\xdb\x9f\x01\x19\x68\xd4\x1c\x0d\x76\x75\x4c\x34\x7a\x0f\x87\x3b\x00\x4d\x7e\x72\x5a\xd2\xb4\xab\x30\x0f\xbb\x8e\x2f\xa3\xee\x59\x82\xa7\xcd\x41\xe3\x82\x83\x35\xec\x61\x82\x19\xc1\x5c\xa4\x4a\xd4\x39\x63\x1b\xe6\x47\xff\xe9\x2d\x29\xac\x96\x52\x1a\x71\x53\x3a\x2b\x6b\x39\xb5\x61\x39\x21\x8f\x71\x98\x92\xf9\x08\x66\x8a\xd6\xae\x93\xbd\x6d\x2c\x20\x4e\x04\x3b\x6e\x65\xd4\x19\x38\x7d\x82\x1c\xcb\xca\x09\xdb\x28\x5b\x92\xb9\x6a\xe5\xdd\x29\xd3\x7a\x46\xb6\x83\x36\xdb\xa2\xac\x11\xa5\x99\xd6\x4e\x26\x2a\x76\x9e\x4b\x8a\x3c\x69\x05\xa4\x89\x32\x0a\xe2\x84\xb9\x40\x07\xcf\xf8\xf1\x9f\x65\x9a\x73\xf4\xfb\xf9\x9a\x4e\x9d\xdc\xcf\x7e\x7c\x11\x8b\xd3\x28\x77\x20\x0b\x30\xa3\xd6\x1a\x10\xfb\x35\x23\x24\x20\x7f\xeb\x64\x9a\x22\x3c\xb4\x3b\xb3\x43\x1b\x67\xa0\x36\x16\x33\xb6\xbe\x08\x08\xda\x94\x6a\x0c\x0b\xe6\x76\x46\x97\x50\x60\x25\x2e\x1a\xdb\xa4\x2a\x4d\xd9\x8e\xe8\x43\xa1\xce\x77\xd3\xcf\x4d\xb9\x75\x97\x8d\xbe\xe6\x86\xde\x79\x44\xfc\x52\xae\x5a\x16\x33\xd3\x77\xb9\x43\x33\xc7\x5f\x78\xa0\x44\xfd\xa0\xd4\x35\xea\xdd\x98\xe9\x66\x99\x87\x73\xed\x17\x84\xa4\xb6\x00\xf3\xfe\x17\xaf\x85\x07\x48\x42\xf1\xa8\xf7\xdf\x98\xa4\x6c\x0a\x5b\xda\xa2\xd8\xb6\x51\xf9\x83\xca\xc1\x60\x87\x95\x1c\x4f\xaf\xae\xe5\x5c\xd1\xe0\x36\xda\x01\xf4\x46\xaa\x29\xa7\x88\x06\x17\xc3\x53\xb0\x1a\x8a\xac\x22\x23\xb7\x24\x61\x81\xa7\x87\x86\x2e\xa9\xbc\x5d\xfd\x47\x16\x33\x23\x56\xec\xc0\x89\x01\x50\x00\xa2\x3b\x97\x99\x5e\x83\x3e\xac\xb2\x0e\xb2\xce\xbe\x10\xd0\xb3\x22\x02\x6c\x1d\x64\xac\x70\xa0\xba\x9e\x46\x4b\xff\x3d\x17\x1b\xc6\x0b\x22\x46\x02\x34\xd7\xf8\x25\xf6\x96\x33\xda\x8b\x6b\x92\x0f\xbe\x3c\x00\xaa\xe2\x0a\xcf\xf1\x9f\x36\xc2\xb6\x19\x45\xee\xe2\x44\xf8\x37\xe5\x08\x91\x01\x8c\x5a\xb1\x11\xcf\xec\x92\xac\x23\x3f\xed\xf2\xa9\xdd\x04\x33\xbd\x53\x58\x9a\xb2\xf1\x5f\xdb\x7e\x3c\x25\x63\x84\x5b\xd3\x3f\x9d\x52\x19\xeb\x05\x33\x62\x53\x5d\x4b\x94\x95\x17\x48\x9d\x6c\x9d\x47\x46\x50\x77\x4b\x82\xee\x5c\xb4\x76\x00\x04\x58\xbe\xec\xf8\x33\x5f\x6e\x03\x25\xe9\x1e\x3a\xa7\x5f\xc4\x63\x0a\xd8\x37\x24\x46\xbd\xd7\xaa\xce\xc4\x88\x5f\xba\x9a\x88\xaf\x51\xfb\x8c\x57\xb0\xb1\x09\x15\x17\x16\x21\xb3\x5e\xfd\x3b\xfd\xaa\x24\x17\x36\x01\x27\xdb\xf0\x20\xcb\xbf\xd8\x09\xe3\x66\x9a\x20\x4b\x44\x7c\x73\x69\x3e\x4c\xb8\x1a\x19\x19\x50\x78\x16\xac\x32\xd3\x54\xf3\x4b\xd3\x58\x35\xe6\x26\xbf\xe4\x06\x63\x39\xa6\xbb\x60\xde\xf2\xbb\x4d\x68\x32\xd3\x99\x2a\xf4\xb1\x09\xd1\xda\x1f\x8f\xb9\x94\x96\x51\xd7\x1a\xb5\xa0\x78\x3c\x99\xac\xe4\x5f\x17\x69\x04\xd5\xd3\x79\x5d\x0c\x24\xf8\xe2\x85\xc7\x8c\x1f\x1e\x4a\xb7\x3f\x49\x05\x8f\xd5\xd4\x7d\xc5\x0b\xa6\x97\xd1\x85\xca\xbd\x47\xe2\x80\x3a\x03\xd8\xd1\xf8\x97\x78\x6c\x7f\x89\x5b\xfb\x6b\x56\xc7\xfe\x60\xc3\x04\xa5\x98\x73\xa3\x15\x66\xe2\x52\xb3\x81\x44\x8f\xb6\xd6\x8c\xa9\xea\x63\xc2\xae\xcb\x2c\x3f\xd8\x7d\xec\x3f\xc9\x0d\xe5\x5e\x09\xc8\xf1\xcd\x02\x75\x20\xcc\x71\xae\x36\xe0\xa8\xd2\x5a\xab\x0c\xdd\x2f\xb9\x13\x59\xf7\x06\xf4\x42\x96\xc1\xf5\x48\x31\x22\x35\xa3\x4d\xd0\x2e\x86\x68\xc3\x4d\x11\x63\xb6\x0b\xf3\xaa\x96\xda\x45\xfc\xa0\xe9\x94\xd8\x7f\x3f\x69\xdb\xed\xba\x92\xbb\xeb\x98\x8c\xd0\xfd\x82\x1b\x19\xd1\x38\x8d\x08\x4e\x0c\x66\x51\x29\x65\x02\xd5\x49\xd2\x90\x4d\xd7\x98\x59\x8b\xd2\xdd\x5a\xa1\xbe\xdd\xa9\x49\x16\xbd\x8f\xb8\x21\x0c\xd8\x72\x20\x35\x10\x0f\x79\x2f\x9f\xa8\xca\x5b\x84\x45\x54\x72\xb5\x39\x6d\xcd\x30\xb7\x78\x20\x6a\x7d\x8c\xc2\xae\x0d\x8b\x44\xa9\xe1\xcc\xe0\xe4\x09\xbb\xd0\xf3\xbc\x70\x24\x01\xc7\x76\x73\xb3\xc2\xb1\x9c\x5b\x97\x71\xd6\x2e\xd4\x8d\xd9\x21\x48\x6a\x3b\x2d\xe3\x47\xe5\xa7\xcf\x1c\x67\x92\x43\x64\xe9\xa2\x81\x55\x63\x38\x3f\xb3\x56\x53\x29\x6b\x7b\x49\x07\x58\xf6\x6a\x4c\x70\x8a\x3b\x8f\x54\xd7\x60\xc4\xa4\x8d\x38\x8a\x6a\xc5\x43\x60\x25\x90\x1a\x1f\x96\x0f\xc5\x10\x03\xfe\xc2\x47\x0a\x85\x64\xbd\xbe\xb0\x94\xb1\x37\x03\xef\x39\xf8\xe6\xdd\x66\x83\x92\x0b\x22\xb6\xc3\xd7\xae\x96\xc9\x95\x78\xac\xfa\x51\xd7\x2c\x8c\x65\xdd\x83\xc5\xbc\x94\x02\x17\x0e\x52\x86\x66\xc3\x58\xc2\x17\x0a\x48\x6a\x1f\x10\x1d\x04\x53\xc9\x73\xae\x7c\x03\x03\x59\x92\x40\x76\x4e\x8c\xb1\x6d\xc5\x37\xe2\x11\x9b\x5f\x2e\xcb\x26\x6b\xc3\x11\x85\x56\x55\x34\x27\x65\x51\xdc\xf6\x20\xfd\x4c\x82\xeb\xbb\x80\x0a\x2c\x3f\x2b\x4c\xa9\xe3\xcb\x30\xf8\x50\x5b\xbc\x86\x72\xbd\xcf\x2f\xd5\xae\xca\x9d\x8a\xad\xcd\x7c\x9d\x94\x62\xa2\x53\x31\xd5\x8d\xb2\x28\xd5\x7f\xfb\x95\x5c\xe8\x58\x48\xe3\xf2\x43\x61\x18\x52\x36\x87\x49\x75\x71\xd1\xe8\xa3\x2c\x3d\xc4\x4b\xdb\x88\x57\x83\x34\x05\x3a\xa8\x56\xd8\xd6\xb0\xc4\x02\xd6\xb6\xda\x9c\x61\xa5\x10\xc1\xd7\x4a\x85\x4d\x8f\x2b\x6b\x85\xb6\xfe\x1b\x9a\xea\xfe\x14\xcf\x62\x92\xd9\x85\xaa\x9f\x88\x6c\xe2\x1d\xb0\xb4\xbd\x90\x85\x4d\xac\x63\x73\x71\x23\x70\x08\x09\xc4\x24\xbf\x27\x4b\xe6\x33\x6d\x1a\xf5\xfd\x52\x20\x70\x1b\x24\x94\xff\xf5\x2c\xd8\xcd\xbd\x6d\xc4\x08\x5a\x07\x3c\x9d\xf6\x2d\x08\x26\x9d\x86\xcf\x13\x16\x65\xf2\x83\x69\x2e\x7d\xf7\x73\xa6\x97\xad\x7b\x06\x03\xcf\x4f\xa8\x70\x73\xfc\x6b\xdd\xf9\x74\x72\x53\x2a\x5e\x10\x7c\x6c\xac\xde\x8d\x30\x56\xfe\xa5\xf2\x8e\x0f\x34\x0c\x08\x04\xa3\xfd\xf5\xd6\xf4\xef\x65\x81\xbb\xf0\xb5\xf2\xc9\x2f\x68\x18\xe5\x82\x27\x64\xc7\x96\x7d\x2e\x70\x1b\x3f\xd7\x20\xf9\x43\x1a\x88\x1f\x72\x72\x59\x5b\xf6\xbd\xc0\x69\xe5\x42\x87\xe4\xdf\x6c\x24\xfe\x96\xe4\xc4\xa6\x87\x54\x46\x54\x72\xf7\x8c\x7a\x57\x40\xd2\x31\x11\x7f\xfb\xa2\x11\x69\x6c\x5e\x8f\x80\x62\xfe\xfc\x5f\x74\x77\xbf\x93\x61\x29\x9a\xb0\x1b\x98\xc2\x65\x82\x1f\x90\x61\x50\x65\xf0\x0c\x51\xc2\xf9\x0b\xa6\x53\x4e\xfe\x8a\x3a\xcb\x17\x74\x12\x6e\xd4\x80\xb8\x40\xbf\x31\xbb\x7b\xc5\x80\x14\x73\xc7\x50\x81\xbb\xfb\x33\x81\xd8\xc7\x39\x0f\xaa\xd8\xeb\x08\x39\x2e\xbe\x75\x75\x39\x03\x5f\xc8\xd8\xd6\x6c\x42\x1e\xd7\x21\x66\x37\x44\x11\xf3\x30\x28\x23\x83\x8d\x8c\x3f\xdd\x30\x1e\x67\x6f\x39\x40\x31\x40\x47\x02\xdc\x88\xdc\x47\x56\x91\xcc\x52\x0a\x3b\x40\x51\xf4\xd5\x86\xc0\xf8\x3a\x98\x02\x02\x77\x9a\xd8\x3b\xc8\xbf\x4f\xef\x98\xfe\x5a\x8b\xc1\xa7\x1e\x23\x48\x8c\x21\x5d\x28\x02\x11\xcf\x5b\x10\x0c\x70\x02\x84\xb4\x70\x44\x19\x47\x31\x29\x3c\x22\x3e\x45\xaf\x1e\x89\x14\x98\x24\x96\xf2\x63\x50\x85\x7e\x31\x93\x4a\x58\x8a\xfe\x21\x11\xf3\x98\xa1\x8f\xc4\x14\x18\xca\x8b\x96\x55\xf5\xe8\xe0\x2c\xdd\x1d\x53\xe2\x91\x79\x51\xd5\xa9\x41\xf3\xe7\xea\xc5\x54\xe3\x34\x76\x9c\xb1\x91\x36\xca\x5d\xc1\xa3\x24\x0f\xf4\xa5\xc5\x32\x7f\x39\xd9\xd2\x12\x52\x65\x85\x16\x41\x98\x5a\x1f\x69\x50\x23\x76\x43\xbc\x4f\x04\x0a\xd1\xaa\xed\x89\x9e\x71\xf8\xb7\xc4\x5c\x4c\x2c\x24\x4e\xc6\xe4\x6f\x16\x76\x5e\xdd\x6e\x8c\xbc\xab\xcf\x22\x88\xe8\x50\x60\x22\x41\xaa\x45\xa0\x92\x1c\x6a\x43\x26\xfe\x9b\xad\x36\xc8\xd2\xa8\xed\x77\x60\x26\x61\x85\x87\x44\x11\x67\x99\x06\x83\x33\x64\x22\x7e\xaf\x52\xae\x6a\x2a\xaf\x26\x11\x57\x77\xa0\x10\xb1\xa1\x15\xa7\x60\x08\x4f\x62\xd5\x86\xfd\xbd\x2b\x1f\xa8\x52\xfd\x88\x94\xdb\x9d\x56\x75\xba\xa0\x67\x65\x0f\xf1\x28\x53\x09\xea\x3a\x4f\xf6\xf4\xb2\x9c\xf1\x20\x1d\x2d\x3b\x46\x8c\x53\x3e\xb9\x31\x46\xb3\x1a\x10\x6a\xf4\xea\xe8\x3e\xac\x62\xfb\x35\xd9\x21\x2a\x02\xa9\xcd\xa2\xe9\xa1\x19\x84\x4e\xae\x2f\x20\x08\xdc\x4d\xf6\x3a\xa2\x9b\xea\x03\xd1\xab\xc0\xf3\x2e\x23\x02\x97\xc7\x34\x50\xa6\x66\x11\x90\x85\xf9\x4f\xa8\x7f\xdd\xe3\x82\x67\xf2\x79\x17\x1b\x0e\x00\xe3\xa4\x5b\xbc\x6d\x64\x71\x30\xb0\x72\x9f\x46\xa5\x5b\x13\x46\x49\x22\xdf\x38\x9e\xd8\xd7\xb9\xbd\x4b\x4c\xa8\xc4\xcc\xa5\x66\x54\xd1\x2b\x71\x3f\x59\x3c\x03\x0a\xfa\xdf\x60\xb1\x8b\x0b\x9b\xd2\x01\x1e\x56\xc3\x15\xf6\x42\xa3\xa9\x0d\xdd\x08\xe7\x78\x56\x0f\x91\x40\x05\x50\x07\x94\xbc\x19\x3a\x80\xe8\x1c\x7e\xea\xb4\xd2\x95\x38\x40\xfa\xde\x67\xc8\xd4\xee\x69\xec\x4e\x2e\x46\x38\xbe\xdb\x09\xef\xaf\x8c\xdd\x04\x24\xf8\x36\xa7\x3a\x28\x4b\x09\x44\x00\x06\x34\x95\x5e\x49\x9a\xe1\x74\x60\xc2\xa8\xff\x22\x03\xba\xfa\x9d\x88\x8a\x90\x55\x9c\xe2\x79\x47\xa9\x3f\xc7\x08\xa0\x27\x29\x34\x73\xa7\x55\x05\x2a\x1a\xbb\x16\xf6\x04\xf4\xa3\xa4\xec\x9f\x52\x50\xa1\x6a\x50\x34\x23\xef\x2a\x82\x2c\xff\xa3\x1c\x21\x27\x95\xb8\x50\x11\xc1\x2c\x97\x80\x02\xbb\xeb\xba\x86\xe4\x75\x1b\x54\xba\x53\x63\xd6\xa0\x13\x71\x45\x72\x5a\xd2\x59\x64\xc1\x28\xbc\xba\x25\x98\xca\xc3\xfd\x2d\xe2\x3a\xbc\xf8\x51\xac\xc4\xa6\x76\x51\x17\x59\xb1\x49\x6f\xac\x6e\x26\xd7\x90\x63\xe1\x57\xf7\xa9\x75\x17\x82\x75\x9f\xfa\xad\x16\x86\x99\x63\xd1\x89\xe4\xae\x12\xf9\x5e\x17\x8e\x29\xab\xbd\xd9\x85\x2e\x61\x18\x67\x75\x36\xa4\x97\xde\x34\x0b\x67\x7c\xe3\x50\x8c\x79\xca\xe1\x48\x59\x28\x05\x76\x86\x86\xb0\xb4\xaa\x1b\x8c\xec\xb5\xb9\xba\xf1\x42\x80\xbd\x4f\x41\x04\x5a\x34\xcb\xf2\x67\xa9\x44\x80\xe9\xfe\x9d\x52\xde\x55\x7f\x4b\x7b\x2d\x81\x99\xf8\x49\x91\xe5\x13\x9e\xde\x0f\xa2\x51\xdd\xc3\x0d\xf3\xa6\xc9\x34\xd5\x19\xef\x52\x06\x2f\xa5\xd9\xf8\x62\xdc\x98\x2f\x16\xf2\x4d\xeb\x49\xf7\x74\x41\x5f\xc7\xda\x3b\x3f\x79\x34\x53\xe2\x5c\xb3\x29\x44\xe0\x57\x30\x8b\x06\xa7\xc3\x23\xc1\xf4\x0c\x7d\x1a\x64\x7a\x12\x3e\x09\x95\x8a\xf2\x14\xa6\x19\xf0\xf0\x93\x1d\xe5\xc9\xd2\x14\x1c\xa4\x99\xe6\x76\xc6\x13\x0a\x60\xa2\xc3\x0f\x0d\x30\x05\xf9\x75\xfb\xe1\x43\x3d\xde\x17\x55\x8f\xf7\xc0\xb2\x6a\xaa\xfb\x73\xf8\xf2\xaa\x06\xf3\x2d\x7a\xc5\x71\xa9\x53\xe0\xf2\x1c\x2a\xce\x93\x16\xd0\x23\x85\x3b\xd0\x6f\x0d\xdc\xa5\x8f\x51\x96\x24\x18\x8c\xf6\xd0\xc3\x6f\x43\x0d\xeb\x38\x4d\x85\x6e\xc1\xdc\xd8\xec\x6b\x96\x3b\xbb\x03\x1d\x32\x48\x83\xd9\xd4\x88\x77\xb2\x2d\xd2\x59\x77\xd3\x67\x69\x3b\x9e\xf8\xc6\xa0\xd1\xf2\x21\xbf\x85\xbf\x1b\xb0\x61\x4d\x30\x63\x55\x44\x92\x32\x61\x75\x75\x11\x59\xc4\xd1\x3b\xcf\x75\xdb\x28\x78\xf0\xf2\x38\x53\x88\x2a\x05\xa9\x8c\xe3\xe2\xeb\x3f\xf1\xe9\x14\xa5\x8e\x1a\x90\xe0\x56\x89\x97\x14\x01\xa0\x78\xdc\x3e\xab\x70\x49\xbf\x99\x22\xd0\x62\xaf\xa3\x40\x1a\x4d\xd7\x63\x6e\x5d\x48\x8e\xf0\x6c\x27\xed\xa1\x19\x84\x89\xde\xa4\x49\x22\x13\x11\xd4\xa5\x71\x45\x5a\xb5\x85\xe9\xbe\x97\x54\xec\xfd\xf0\xa1\xf7\xeb\xfd\xd1\xfb\x55\xfa\xf9\x83\xfa\xf3\x97\x02\xc0\xd1\x07\xb5\x1e\x1f\xb4\x7a\x7c\x25\xc5\x87\x6a\x2a\xc1\xd4\x1d\x01\xd0\x6c\x30\xfc\x3f\x7b\x8a\x81\xda\xaa\x01\x5e\xd9\x4c\xf5\xe2\xe6\xd4\x8e\xf2\x6a\x04\x2d\x42\x21\x3b\x7a\xae\x3f\xc7\xd5\x9e\x43\x1b\xd8\x5c\xa5\xa2\x98\x15\x56\x49\x96\x96\xe5\xca\xb8\x49\x1a\xb7\x8b\x7a\x03\xbc\x68\x3d\xff\x29\xbf\x41\x07\xa6\x37\xf8\x95\xb2\x36\x79\x93\x66\xeb\xcf\x2b\xa1\x13\xee\x40\x16\xfa\x02\x90\xf8\xaf\x0f\xf9\x91\xb0\x94\xfc\xed\x8b\x17\xbc\x41\x82\xe3\xfb\xb6\xe9\x11\x8c\x9c\x65\x0f\x89\x5b\xfe\xff\x00\x1b\xd2\xac\x91\x3d\x1b\x26\x19\x04\x93\x44\x5d\xde\x1c\xd8\xe7\x77\x97\xdb\x32\xa2\xac\x97\x69\x10\x6e\xef\xf7\x85\x00\x43\x09\x54\x1d\xa6\x82\xb8\x74\x3f\x4c\x30\xb7\x4c\xe2\xa3\x2c\x70\x2c\x9b\x2a\x85\xa9\xbe\x7f\x6a\xd9\x13\x0f\xfb\x1c\x3a\x70\x0c\x18\x78\x9f\xea\xfa\xd4\xd9\x0e\x39\xcb\xab\x86\xb6\x42\x49\xa3\xa7\xfd\x6b\x6c\x89\x5b\x14\xca\xde\x88\x2f\x82\x0a\x02\x07\x11\xd5\xa1\xf6\x49\xe8\x69\x46\x4f\x15\x7c\xca\x20\x26\x02\x46\x38\x06\x51\x6b\x08\x0c\x7e\x65\x86\x3e\x3b\x33\x1c\x8e\x88\xfb\x41\x48\x73\xa3\x54\x6c\xe4\xc6\x8a\x5b\x31\x66\xb3\xd0\xb9\x60\xec\x4f\x0f\x61\x86\x7c\xa2\x10\x5b\x53\x3e\xd5\x66\xab\x76\xc0\x94\xf9\xc4\x8d\x5e\x90\x92\x26\xa4\xd2\x3f\xc1\xa3\xe2\xfd\x0f\x1f\xee\x7f\xbd\x3f\xee\x7f\x7d\x50\xaf\x43\x13\x1f\xb4\x8b\x5f\xde\xdd\x3f\xc6\x8f\xc5\x6e\xf1\xb9\x78\x55\x3c\xab\x36\x0e\xb8\x65\x83\x24\xb8\xd6\x6f\x17\xa2\x4c\x82\x2b\x91\x68\x86\xc8\x2a\xbd\xa6\xf4\x73\xe1\xc1\xaf\x84\x66\xe8\xd0\x67\x55\xef\x8f\xa5\xa6\x17\xe5\xb2\x99\x2f\xf4\xc5\x24\xc1\x0b\x90\x4f\xc6\x6c\x26\x69\xa2\x07\x2e\x31\xe4\xed\xa9\xfc\x57\xe7\x6a\xbd\x0b\x1f\x7f\xc3\x6d\xe2\x72\x5f\xfc\xfc\xf3\x09\xa0\xc4\xc7\xdf\x5b\x05\x71\x2b\x2d\x36\x15\xad\x4b\x29\xbe\x81\x40\x70\x37\xf9\x8a\x50\x2b\xba\xfc\xd9\xce\x40\xc9\xb9\xde\x04\xca\x78\x03\x66\xa3\xb7\x2e\xb4\xc1\x1f\x6e\x73\xdd\xdc\xea\xb9\x0f\xe3\xbf\xc5\x5b\x58\x50\x9f\xeb\xe5\xe1\xae\xf7\xb8\x05\x30\x3f\x86\x69\xe5\x8f\x3c\x44\x7f\x63\xa8\x59\x4c\x1e\x84\x4b\xf7\x64\x5a\x25\x9a\x70\x09\x66\x9e\x24\xb3\xcb\x07\xad\x11\xe4\x9f\xbf\xb2\xb4\x35\x28\x06\xfb\x72\x70\xfd\x7f\x5d\x6e\xb7\x1f\xdb\x70\x91\xb4\xc1\x16\x0e\x70\x2b\xb3\x9c\x5a\xfb\x5d\xf5\x1f\x5e\x9d\xa3\x27\x79\x73\x65\x7d\x19\xd5\x77\xa3\x43\x05\x4c\x91\x05\x9f\x8b\xd8\xfb\x12\xd6\x5e\x29\x3e\xa5\xf7\x63\x2e\xb6\xe1\x1f\xcb\x34\x7a\x45\xbc\x3c\xc3\x5a\xd5\x49\x89\xe3\xd3\x6d\x70\xd2\xc7\x44\x3a\x19\xe0\xe0\xa5\xff\x68\x35\x4d\x6f\xbd\xde\x64\x13\x91\xc4\xfd\xea\x5c\x3d\x66\x25\x30\xd4\xc5\xa2\xec\xf4\x02\x64\x89\xd3\x89\xa3\x22\xe4\x40\x1f\x07\xd7\x44\x1c\x3f\x15\x13\x49\xc9\xb3\x67\x7f\xea\x1b\xd4\xc2\xd7\xc5\x3d\x51\x9f\xd7\x49\xb4\x5d\x28\x80\x01\x4f\xfc\x86\x42\x2e\x50\x53\xc1\x62\xf1\x62\xe9\xd7\x1a\x26\x14\x91\xc6\xbc\x15\xa8\xa3\xb0\xe2\xf7\x81\x96\xbd\x2c\xa1\x7a\x46\x26\xaf\x7d\x26\x38\xc9\x75\xae\x75\xd3\x23\xab\x2d\x32\xa0\x92\x2a\x02\x1f\x1d\xbf\xa6\x34\x5d\x5f\x98\x5f\x56\x40\xad\xca\xf8\x2b\xad\x50\x2c\xe1\x9a\xcb\x22\x07\xd8\x99\x7d\xa5\x70\xaa\x82\xf2\x06\x0f\x77\xd6\x2f\xa1\xd1\x8b\xc3\x66\xcc\x31\x39\xeb\x37\xcd\x38\x2b\xb3\x36\x05\x04\x2f\xe9\xee\x0e\x85\x49\x45\xd8\x80\x67\x43\x9a\x2b\x42\xbf\x50\x04\x06\x37\x04\x36\x98\x37\xf8\xf4\xdf\x8a\xe0\x20\x88\xf6\xc5\xf9\xef\xc6\x4d\xf1\x65\xe5\xca\xb9\xff\xea\x07\x17\x01\xf1\x8d\xaf\xea\xf1\xec\xfb\x57\xe0\xeb\xa9\x1e\x8b\xf8\x98\x8d\x81\x87\x0c\x2b\xe7\x87\xbb\xde\xef\x91\x9a\xd9\x7b\xe1\xcd\x9e\x3e\x49\x6c\xdd\xd1\x07\x23\xbe\x99\xa7\x8a\x44\x85\x76\x20\x16\xe5\x78\x77\xd8\xa1\x1a\x63\xcf\x07\x0e\x27\xfd\x9b\xfd\x2a\x56\x7a\x3b\x6b\xa4\x16\xb2\x7e\x73\xbe\xc9\x3d\x96\xdc\x5d\xa9\x59\x95\x2e\x6b\x68\xe3\x0a\xf5\x5c\x59\xa3\xc4\x79\x67\xa8\x8a\x3c\x49\xce\x64\x8d\x7e\x6e\x3d\x6b\xe1\xbc\xc3\xe3\x33\xb2\xc5\x97\x17\x1b\x61\x2b\xd2\xd9\xb1\x30\x87\xba\xc3\xad\xc2\x1a\xd4\xe0\x98\x46\x18\x0c\x4d\xf8\x22\xf5\xa5\xd3\xa3\x18\x5f\x4c\xd0\x96\x41\xa6\xb2\xc8\xc5\x4e\xb6\xea\x7f\x7c\xa2\x23\xc3\x47\x02\xbf\x8c\x8f\x41\x57\x03\x73\xaa\x79\xea\x26\xee\xe0\xda\xb0\x12\xa5\x00\x9f\x90\x7e\xbf\xe3\x50\x86\x73\x8f\xb8\x35\xd8\x60\x02\x32\x6f\x98\x7f\xd4\xc7\x60\x64\xe0\x21\x1b\xa3\x0d\xc6\xa1\x66\x74\xa7\x91\xb9\x20\x48\xa3\x12\xfb\xd9\x72\x80\x6c\x9c\x9b\xd1\xf3\x00\x99\xdf\x9e\x19\x8f\x4b\xf1\x82\x5d\x09\x57\x55\x66\x74\xe4\xa1\x05\x5f\x2e\x72\xf9\x18\xb2\x01\x05\xe3\x60\x87\x8d\x0e\x2a\xd2\x7a\x25\x32\x83\x74\xb0\xa4\xdc\x70\x9f\x88\xcc\x05\xe1\x21\xa3\x26\xe5\xe6\x5a\x8b\x30\xf2\x16\x2a\xe6\xf4\x4d\xf1\xcc\xa2\xc8\xaf\x1c\xa9\x52\x84\xce\x53\x5a\x54\x82\xe4\x4e\xde\x5a\x0a\xe4\x6d\x21\x04\x62\x2d\x14\x9c\x08\xd4\x2b\x83\x08\x75\x60\x1b\xe2\xc8\x82\xa4\xe1\xea\x14\x0d\x11\x6b\x1b\x35\xe6\xbe\x47\xa5\x3d\x82\x86\xe2\x5a\x47\x60\xd4\x92\xa6\x47\xff\xd8\x8e\xa8\xb4\xcf\x52\x30\xc7\xdf\x61\x3d\x06\x49\xf7\x40\x6f\x03\x72\x82\x5a\x15\x01\xe4\x36\xa0\x2f\xeb\xe8\x24\x68\x06\x4d\xe5\x28\x8c\xa4\x7d\xb7\xf5\x36\x92\x79\xf2\x61\x6f\x37\x8c\x1e\xc0\x20\xbb\xe3\x95\x70\xe8\x63\xa5\x71\x0d\x49\x3e\x79\x4d\xb6\xfe\xf4\xd2\xb4\x80\x15\x31\x8b\xd6\x71\xf8\x31\x25\x27\x96\x63\x2f\xdd\x95\x19\x75\x26\x16\x69\x59\x7d\x26\x1d\xf3\xd6\xa7\xa2\x69\xce\xb8\x75\x26\x1b\x72\xae\xab\x21\x6d\x2b\xde\xf9\x35\x80\xe6\x28\x3c\xe9\x3b\x83\x4e\xcb\x06\xe2\xbc\x0e\x76\xac\x4d\x50\x84\x88\x17\x23\xa7\x38\x71\xd9\x2b\x8d\xe7\xfb\x6d\xf8\xc2\xb3\xe0\xdd\x6c\x70\xc4\x90\xbe\x97\x05\x08\x21\x5d\xaa\x76\x1e\xa4\x68\x57\x17\xc8\xed\xb4\x78\x42\x71\x11\xa8\x0c\x26\xfa\xd3\xa1\x4e\x14\x37\x65\x0b\xde\x71\xb5\x02\x23\x43\x60\x20\xb3\x9a\x2f\x6b\xd1\x60\xf7\x80\x5c\x32\x65\x1a\xeb\xeb\xa1\x06\xf4\x06\x9f\x2b\x4f\x98\xba\x81\xe8\xf8\xcd\xd9\x56\x8c\x1f\x56\xab\xa5\xf5\x8c\x5c\xa6\x5a\x24\x87\xbb\x85\x5b\xe3\x5c\x90\x19\x38\x34\x4b\xa7\x78\x58\xe0\xb4\xda\x30\xd8\x7d\x8e\x15\x7a\x16\xcd\x0c\x0f\x73\xfc\x06\xe8\xe0\xd2\x48\x7d\x3c\xfc\x4b\xa7\x0a\xed\xe7\x14\xe5\x39\x6a\xda\x8c\xd0\x50\xc6\xf2\xfa\xeb\xd6\x52\x24\x4f\x13\xda\xe9\xd0\x2a\x20\xce\x09\x47\x44\x86\x2b\x13\x2f\x18\x34\xc2\x99\x0a\xf4\x8b\xa2\xdd\xd4\xf8\x74\xe2\x0b\x13\x07\x1c\x9b\x5b\xcc\xf0\x86\x11\x6f\x31\xa8\x5a\xff\x29\x16\x5b\xf1\x4d\xd6\x7c\x83\xa7\xe2\x83\xe7\x80\x9c\xfc\x1f\xbd\xb5\x73\xd6\x7e\xfd\x2d\x2d\x1b\xca\x46\xc9\x43\xf0\xfd\xde\x82\xda\xe4\xbd\x0f\x05\x99\x3d\x85\x27\x95\xc0\x6a\x1d\xa1\x2d\x56\x62\x39\xa4\x61\x0c\x88\xb5\x4c\x38\x99\x28\x64\x21\x8a\xc4\xed\x3f\x76\x45\xa8\x2d\x69\x2d\xb7\x8c\x1c\x29\x01\xc5\x62\x08\xae\xc4\xe6\x88\x51\x1c\xcf\xe2\x05\x84\x84\x20\xda\x48\x76\x71\x7a\x51\x4d\x95\x4b\x3d\x3c\x88\x24\xa9\x8a\x00\x9e\xad\x59\x16\x8f\x57\x26\x85\xb9\x6c\x78\x2c\x42\x43\x73\xbf\x63\x04\xec\xca\x83\x57\xf5\xc3\x87\xab\x74\x82\x4f\xe8\x33\x47\x3d\xea\x67\x8c\x98\x98\x04\x4e\xb3\x7b\x10\xaf\x6c\x17\xc1\x5c\xc9\x54\x5d\x11\xf0\xdb\xed\x87\x0f\xed\xf1\xa5\x6e\xe0\x83\x3f\xaf\x73\x6a\x9a\x2c\x5a\xe4\x73\x50\x2e\x1b\x23\xf4\xe5\x25\x4a\x66\x45\x0c\x82\x66\xff\x82\xd3\x37\xae\x52\x67\x75\x99\x3e\x59\x64\xbb\xbb\x41\xd8\xbc\x3d\x11\x14\xda\xc3\xaf\x3c\x79\xb9\x7d\x5a\x51\x49\x5b\x38\x41\xd8\x7e\xe3\x1a\x3d\x3a\xca\xb2\x57\x7e\x01\xbf\x25\xbe\x90\x8a\x07\x14\x18\xd1\xd1\x87\x74\x35\xb7\x0b\xa6\x7f\x5b\xfa\x97\x14\x38\x80\xa4\x6e\xc6\x2a\x52\xc6\x46\xe7\x5e\x1e\xfd\x22\x35\xa4\x3c\xbd\xe6\x2e\x65\xa3\xa1\xd1\x3a\xcc\x1f\x14\x3c\xcd\x59\x8b\x25\x61\x74\x24\x5d\xee\xd5\x06\xb5\x74\xcb\xe4\x68\x2f\x68\x1b\xd1\x2a\xe9\x9c\xfd\xfe\xba\x9e\xee\x60\x9d\x8a\x5c\xd3\xcc\x9e\x83\xf4\x05\x2a\x24\xef\x05\x0f\x74\xda\x3e\xba\x71\x4d\xb1\xb8\x15\x5d\xb1\x66\xe3\xda\x50\x08\x74\x07\xb2\x90\xa4\xb4\xb7\xef\x8a\xaf\x2d\x2d\x86\x58\xb8\x34\xdb\x52\x90\x35\x0c\x9f\x92\x71\xc0\xf2\x29\x9e\xb7\x80\x41\x1d\x54\xf4\x46\x85\xc5\xac\x69\x7a\xe7\x27\x15\x37\x3f\x7c\xd8\xfc\xfa\x84\x76\xbc\xd1\x3e\x80\xc7\xb0\xbd\xb7\xfa\xc1\xb7\xff\xe5\x8d\xe7\x1b\x9b\xe1\xf7\x60\xe8\x36\xb8\xd8\xba\xd8\xc8\x0a\xee\x3f\xd0\xff\xe9\xa4\x9b\x90\xa1\xb5\xb2\x94\xa1\x61\xdb\x19\x20\xa4\xba\x20\xb0\x34\x79\xb5\x4e\x0a\x89\x33\x68\x58\xb8\x70\x45\x4f\x87\xcb\xf8\x52\x13\x87\xb2\x86\x58\xe2\xb4\x47\x42\x0a\xc5\x2a\x87\x2b\x01\x25\xa7\x8e\x98\x56\x4d\xa1\x1a\xc2\x4b\x4e\x18\x0c\x13\x62\x9a\xb3\x06\xc1\x37\xe9\x3b\x21\x5c\xde\x2a\x94\xf7\x69\x7f\xf8\x7e\xfb\xb3\x0f\x9e\xe2\x27\x7a\x45\xaf\x0f\xaa\x3f\x3e\x68\xfe\xf8\xf5\xe1\xb4\x75\xf9\x6c\xdd\x1f\xf9\x80\xdd\x72\x4a\x80\x95\x04\xc3\xff\xeb\x32\xd8\x35\xab\x73\xbf\xfe\xb0\x46\xbc\x92\xe7\x4d\x9e\x0f\x35\xfb\x9e\x42\x4d\x45\x32\xca\x38\x62\x94\xd0\xf8\x89\xd5\xb6\xa9\x14\xed\xe3\x22\xa5\x0c\xe2\x77\xe5\xc9\x41\xde\xf7\x7e\xfa\xbd\x5b\xb6\xdc\x83\xa5\xac\xc9\xdc\x83\xc9\x05\x68\xbf\x17\xd0\xb9\x16\x42\xfc\x2a\xba\x14\x63\xf7\x97\xab\x51\x3e\xbb\xb8\x5a\x01\x8e\xf2\x34\xd7\xa8\xe8\x86\x7c\xd4\x42\x16\x94\xda\x7d\x2d\x69\x69\xb6\xbd\xa3\xcc\x4f\x7e\x36\xec\x3b\xe5\xc9\x54\x98\xac\x87\xa8\xb5\x4e\x3e\x46\x44\xa8\x71\xac\xa9\xbd\x6e\xb2\x10\x3e\x2a\x8d\x66\x4d\x81\x2d\x6a\x57\xc1\x0c\xae\x0f\xd0\x0e\x63\x07\x20\x2e\x10\x17\x9d\xe2\x11\x53\xa5\x42\xa2\xbe\x44\xb7\x78\x2f\xc7\x7d\x43\x4f\xf5\x28\xb0\x22\x02\x39\x80\x08\x94\x9a\x68\x95\x22\x7d\xe8\x27\x5e\x7c\xfc\xc3\x92\x48\x82\xa7\xbb\xd8\x64\xfd\x7d\x38\x9e\x40\x32\x28\x9f\xa1\xe4\xff\xbe\x60\x5a\xf8\xcf\x6a\xa6\x54\xec\x24\x80\xf5\xec\x0c\xdc\xb7\xc5\x07\xe0\x15\x4f\xab\xcb\x3f\x0c\xe1\x70\x1e\x0d\x84\xad\x31\x4c\xae\x6a\xd6\x6c\x97\x55\x2e\xf8\xc3\xd8\x44\x33\x29\xff\xf5\xe0\xd6\x5d\x7a\xc8\xb2\x7b\xdf\x46\x28\xe9\x7e\xcc\x36\x87\x4e\x68\x0c\xbe\x78\x0e\xe4\xa2\xff\xd9\x87\x20\xca\xfb\x63\xf3\xeb\x03\xb8\x3e\x67\xbb\xed\x9b\xcb\xb5\xe3\xdd\x28\x3e\xbb\x84\xd6\x90\x4c\x59\x2d\x41\xc3\xa2\x7d\xcf\x1b\x08\xf9\x8d\xa9\x02\x07\x00\x42\xae\x71\x92\x3c\x5d\x64\xf2\x54\x83\xd8\xe5\x6c\xf0\xd9\x97\xc9\x03\xc4\x52\x2c\xc9\xa3\xbf\x1f\xaa\xda\x1c\x67\x66\xb1\x1a\xd5\xbe\xa7\x96\x3f\xf8\x9e\x1b\xa2\xde\xc5\xc9\x5f\xa8\x35\x2b\x6e\x0b\xd3\xd2\x61\xe6\xff\x07\xaf\xd9\x67\x18\x50\xad\x0d\xca\x55\xb7\xbe\xc9\x5d\x2a\xe7\x52\x4a\x73\xd2\x1c\xc4\x8d\xd7\x4d\x8a\xa2\x55\x50\x86\x86\x91\x39\xb6\x2b\x55\x53\x05\xb8\xf2\x33\xf6\xe5\xca\xb0\x01\xa2\xa2\x1a\x7b\xb4\x4f\x4e\x4b\x20\x7b\x95\x50\xc0\x20\x00\x75\x7e\x1a\xfd\x6b\x33\x79\x48\x21\x5f\x61\xe6\xb8\x8f\x89\xe3\x38\x7b\x8e\xcb\xac\x39\xb6\x39\xf1\x06\x8c\x14\xc6\xd7\xca\xaa\xb3\x8a\x51\xf2\x63\x27\xa7\xe5\xa1\x67\xd7\xd0\x23\x35\xe6\x8e\x62\xd0\x37\xec\xdd\x81\x26\xf2\xfd\x2d\x6d\x83\x65\xb7\x48\x2d\x75\x5a\x3f\x5b\xd7\xd4\x18\x6b\x7f\xbe\xf3\x6c\x92\xb5\xca\x0b\x00\x88\xc4\xaa\x03\x51\xab\x46\x74\xd4\xdc\xa1\x05\x92\xbb\x4f\xb9\xaa\x69\xc7\x1c\x5c\x73\xfc\xa7\xf7\x54\xf8\xee\x5d\x25\x41\x1a\x85\x1b\xf7\xeb\xb7\x98\x6d\xe7\x8b\xb5\xc1\x11\x83\x3f\xfa\xef\x31\x71\x07\x98\xe4\xec\x3b\xc7\x1f\x09\x1c\xef\x34\xe8\xcd\x85\xca\xfc\xda\x7f\x56\x45\x4b\xf5\x33\x10\x36\x21\x35\x96\x75\xbe\x5d\xcc\x1a\x2d\x09\x93\x45\x9e\x19\x15\x0e\xfe\x34\xc5\x1f\xf7\xec\x63\xa2\xb3\x57\xb4\x7f\x5e\x7b\x98\x6b\x39\x5b\x62\xe6\xd7\x1e\x66\x65\x67\xd2\xb3\x3d\x57\x65\xab\x6e\x48\xa7\x2a\xe5\x3b\x61\xed\x6c\x4c\x64\x77\x6f\x2b\x38\x5b\xf9\xef\x7f\xf0\x5c\xa9\xe2\xa8\x3f\xbf\xfd\xc4\x67\xb3\xaa\x5c\xe4\x9e\xea\x34\x48\x82\xb1\xb8\xc4\x88\x6a\x07\x26\x1c\x62\x4c\xab\xff\xd1\x71\xc5\xbc\x81\x97\x68\x76\x20\x92\xad\x14\x94\x84\x19\x94\x08\xa2\x4e\x83\xf5\x9e\xbe\xb0\xa2\xf0\x82\xd0\xeb\xa2\x8b\xcb\xd3\x1a\x68\x84\xb4\x5c\x96\xdf\x58\xbd\xba\xda\x35\xde\xa7\x1a\x4f\xd5\x5c\x19\x88\x59\x26\x69\xfe\x89\x6d\x1e\x8d\xd3\x04\x50\x6f\x07\x00\xf2\xb0\x41\xfe\x92\xcd\x59\xfa\x65\x08\x3a\x40\x50\x37\xbe\x68\x0a\x6c\x64\x22\x82\x5c\xc8\x4b\xe5\x25\xfd\x45\x22\xbc\x43\xac\x66\xc2\xe6\x59\x1d\x7c\xdc\x7d\xee\xa6\xca\xe6\x5b\x4f\x20\x9f\x82\x6d\xe0\xde\x92\xea\xc1\x6e\x48\x04\x9a\x98\x75\x30\x6a\x39\x13\x46\x17\xb2\xbe\xb9\xba\xc0\x78\x3a\x00\xe2\xcb\xda\x3a\x02\x78\x1a\x79\x07\xc9\xa9\x62\xc4\x89\x1e\xad\xef\xad\x6c\x2f\x34\x1c\x3f\xf0\x1a\xd5\xfc\xda\xc5\xed\x01\x5a\x6d\x9b\xb1\xc6\x6b\xd7\x08\x42\xf5\xb9\xce\x77\x10\x66\x98\x2d\x7f\xb5\x25\x32\x3e\x16\x29\x45\x98\xfb\xcd\x70\x7d\xfb\xec\x86\x53\xd0\x30\x1a\x07\x2a\x86\xb2\xe7\x78\x81\xe4\x74\x48\xe6\x78\xd9\x84\x55\x17\x30\xaf\xdf\xfc\xe6\x52\x56\x99\x76\xb5\x45\xa6\xc8\x87\x58\xe4\x76\x47\x76\xfa\xbd\x91\x9b\x52\xa5\x36\x1a\x2d\x89\x81\x11\xc4\xa9\xfc\xce\xcd\x31\xba\x86\x62\x71\x8c\xf0\x3b\x0d\x61\xa7\x2d\xbd\xcf\xcb\xa3\xf3\x84\xef\xb3\x52\xd8\x5b\xc4\x63\x20\xc1\x23\x87\xa5\x46\xf7\x88\x2d\x7b\xdf\x25\x99\x75\x7c\xbb\xb5\x80\x4c\x4f\xf4\x3c\x0f\x05\x55\xb9\x17\xdc\x82\x26\x3a\x76\x20\x5b\xc8\x8c\xcc\x0e\xd3\x8a\x79\xfc\xc3\xc0\x68\xa6\x19\xbc\x67\x73\x0a\xb5\x11\x77\x74\xa8\xac\xec\xf6\xe3\x5f\xe9\x22\x7f\x0f\xcf\xe0\xff\x95\x1b\xc4\x21\x11\x89\x5f\x80\x6c\x8b\x01\x3e\x12\x85\xb0\x80\xf5\x81\x18\xa2\x61\x36\xb7\x11\xce\x60\x39\x95\x3d\x9b\x57\x3e\x14\x20\x5e\xe8\xca\x06\x1f\xe8\x10\xf0\x9b\x95\xb9\xfe\x6a\xe6\x7f\xb4\x25\xb7\x89\xdc\x4a\x39\x83\x3b\xcc\xd7\x38\x00\xb0\xeb\x86\x06\x08\x1a\xb1\xd9\xb3\x19\xfb\x17\xf5\x0a\xae\xb9\xd7\x96\x1d\x51\xa7\x31\x27\x21\x67\xed\x86\x74\x40\x74\xe5\x4f\x06\xec\x46\x48\x1d\x4f\x27\x78\xff\xad\x3b\x06\x80\xee\x79\x53\xfd\x59\xdb\xae\x57\x06\x6a\xcd\x30\xa3\xd5\x0c\xd8\x62\x7b\x58\xa4\x0a\xf6\x15\xbc\x9d\x96\x90\xd3\x38\x3b\x25\xc7\x73\xf2\x4c\xab\xa6\xa4\x8e\x0c\xdb\xbe\xd0\xac\x11\xff\xff\x2e\xc1\x3c\x62\xc4\x15\x6e\x28\x3e\x48\xad\xcc\xc4\x34\xfd\x0b\xd8\x2c\xbb\x59\x7f\xf1\x8a\x90\x1a\x86\xb8\xaa\x58\x43\xe2\x64\x6c\xae\x38\x46\x43\x7e\x5a\x01\xde\x3f\x05\x44\xca\x06\x3e\x81\xd6\x31\x0c\x5e\x78\x84\x1d\x4d\x04\x0b\xd5\xb1\x0f\xe7\x3d\x27\x6d\xfe\x47\x19\x8f\x83\x43\x6f\x06\xd8\x3c\xa5\xcb\x07\x05\x7a\x86\x7b\x72\x5b\x53\x02\x22\xbe\xa5\xfc\xd4\xf3\x41\x0f\xe2\x34\x7b\xac\x17\x42\x19\x71\x31\xb5\xb1\xcd\x70\x7f\x3d\x1f\x06\x63\x00\x27\x1b\x72\x7f\xab\x18\x45\x6e\xcc\x09\x85\x9b\x41\xc7\xdd\x5a\xf3\xed\x75\xe0\x48\x13\x0e\xd4\x17\xcd\x7b\x3b\x40\xd0\x0f\x34\x37\x26\x94\x49\x83\x34\x33\x0a\x61\x5c\x16\x8e\x2f\x18\x0d\x85\x20\x8f\x07\x5b\xd6\x35\xaa\x8e\x51\x11\x33\x41\x0d\x44\x3f\xa1\x0d\xaa\xa6\x2b\xe8\x43\x4a\xe1\x2f\x26\x32\x01\x53\xe7\xd1\x89\x52\x8d\x9b\x4d\x3b\xe8\x31\x62\xa6\x6b\x06\x13\x5e\xb8\x16\x0e\x90\x8c\x2f\x3f\x31\x68\xef\xa3\x8f\xb2\x51\xd6\x32\x89\xe3\x26\x38\xc1\x14\xec\x7b\xd8\xad\xf7\xe2\x18\x87\xa2\x8b\xe4\x79\x69\x3d\xea\x53\x96\x5b\x48\x6e\xe7\x96\xbc\x08\x0f\x1a\x11\xac\x2a\x1d\xdb\xd8\x32\x60\x95\x35\x01\xb9\xff\x5d\x7a\x3a\x39\xf9\x9c\x31\x88\xbd\xe5\xfc\xd0\xd6\x04\xfd\x58\xa1\xa8\x92\xcf\xbf\x65\xa6\xa1\xb1\xaa\xf3\xd8\x1b\xe6\x38\xcd\xbb\x75\xc5\xdf\xa4\xf4\x1a\x79\x81\xa4\x24\x4d\x4a\x4e\xf6\x72\xa2\xcc\x7b\x07\xf2\xb3\xf1\x70\x4c\x88\xf7\xad\x61\x04\xcd\x48\x6a\x83\xf4\xad\xde\x2b\x2f\xf1\x08\x46\x25\xc7\x51\x74\x38\x84\x30\x8c\x79\xd4\xea\x62\xf6\x88\x62\x5a\x68\x79\x99\x33\x24\x34\xe1\x95\x6b\x5e\x99\xe9\xe8\xdb\x78\x25\xe5\xb8\x87\x21\x7d\x51\xcc\x3b\x9c\xde\xc8\x30\xce\xf9\xf4\x2d\xa1\x76\x0b\x1f\x92\x34\x52\x29\x4f\x06\xf6\x4c\x38\x4f\x35\xbc\x28\x17\xa6\xe3\x94\x11\x8a\xc1\x01\x48\xdb\xab\xf3\x28\x9c\xf0\x02\x04\xf0\x22\xfd\x26\x7e\x28\x7f\xa4\x5d\x28\x12\x36\xf4\xef\x61\xd2\x77\x3f\x52\x58\x44\x19\xf2\x38\xa8\x1c\xb8\x15\xdd\x97\xe2\xcb\x1d\x47\xd2\x8a\x27\xef\x5b\xa2\x71\xda\x43\x05\xa8\x24\xba\x99\xaa\x1a\xbb\xd7\x35\x94\xc2\xc5\x33\x00\xf3\xbb\x36\xf2\xf9\xf2\x56\xe2\x80\x2e\x7d\x11\xa5\x86\x4d\x12\x79\x33\xc1\xe2\xf1\x02\x0f\x30\x6c\x8c\x1b\x0e\x1e\xa1\xe2\xce\x46\xc1\x61\x23\x8f\x4f\xa7\xf9\xd9\xda\xdd\xa9\xd9\x35\xa4\xdd\xf2\xe6\x66\x46\x7d\xfb\x75\x64\xf2\x2e\x6b\xdf\x4b\x8c\xc4\x25\xb4\xe2\x20\xb8\xef\xd2\x93\x03\xcd\x6e\x44\xd4\xa2\x1b\xea\x74\x1e\xa4\x8d\x8d\xa1\xef\xf2\xaf\xa6\xc1\xeb\x14\x7c\x1a\x47\xf1\x05\x55\x64\x62\x20\x34\x72\x92\x89\x38\x30\xab\x49\x14\xe8\x1d\x4a\x65\x1c\xce\xf7\xd5\xd6\xa5\x19\xd6\xd6\x83\xba\xbc\xd2\xab\x13\x4d\x71\x54\x67\x82\x45\xc8\xaf\x6b\x70\xcf\x11\x14\xb9\x85\xe4\xad\x10\x15\x76\x30\x30\x00\x51\x2f\xbf\xec\x8e\x39\xf7\x8c\xbf\xae\xdd\x88\x87\x82\x44\xd6\x25\x8a\xee\xf4\x6f\x6d\xf6\xb6\x41\x71\xcd\xa7\x33\xd1\xc2\x1b\x99\xb2\x53\xca\x67\xc8\x10\x11\x1a\x33\x4f\xb2\xa8\xc5\x62\xec\xf5\xe6\xba\xb9\x0e\x11\xb7\x97\x01\x0c\x89\x69\x77\xf1\xb7\xc7\x19\xf7\x09\x96\x00\x43\x25\xe9\xb8\x57\x90\xce\x88\x8e\x0d\x1f\xb8\x74\x12\x30\x40\xe2\x9c\x55\xd4\xaf\xb0\x14\x56\x1a\x45\x7d\x3b\x0d\x27\xc3\x2d\x03\xc5\xff\x58\x12\xe1\xf8\xe3\x67\x7f\x4a\x98\x90\x8f\xd1\xf4\xe7\x5d\x8c\x09\x24\xac\x2c\x6a\x28\x0e\x66\xba\x2a\xeb\x0a\x53\x76\x6b\x9b\x00\x94\xc5\x16\xc0\xf1\xa4\xdc\x9d\x57\x5f\x34\x96\x79\x13\xb0\x65\x38\xb5\x0f\xa7\xb9\xb0\x11\x19\x1f\xd8\x2c\x76\x21\x03\x6d\xbe\x45\x52\x8c\x16\xd3\x9f\xb8\xf2\xac\x59\xa2\x51\x9b\x9a\x49\xdc\x1c\xca\xad\xb3\x9b\x51\xd0\x70\x86\x32\xb8\xd9\xc3\xde\x40\x85\x25\x13\x3b\x39\x26\x52\x2d\x21\x6c\x01\x72\xf0\xca\xe8\x43\x7a\x94\xba\x6f\xa2\xed\x2b\x6a\x96\x69\xa3\x57\x59\x67\x11\x45\xe0\x82\x68\x86\xaa\xda\xf6\x97\x91\xa4\x45\x68\xff\xa8\xb8\x4b\x1b\x88\x7d\xb0\x97\x80\xa7\x67\x8b\x71\x79\xb7\x4e\x4b\x40\xcb\xf3\x1e\xe3\xc0\x99\x85\xab\xb4\x06\xc3\x29\xfc\x4d\xc7\x55\x95\x35\x4e\x7d\x6d\xdb\xb2\x21\x99\x86\x34\x59\x9f\x0d\xf5\xcb\x95\xa9\x3d\x32\x61\xe5\x4a\x74\xc4\x5c\xfc\xe5\x0d\xf1\xbb\x2b\xd9\x01\x18\x05\x83\x99\x9a\x39\x2d\x08\x6d\xa3\x57\x8a\x1e\xa4\xf6\x60\xf7\x24\xc1\x30\x8e\x04\xaf\xb2\xf6\xcd\x36\x78\xd3\xa3\x3b\x69\x1a\x70\x25\x17\xc8\x00\xac\x58\x17\xc1\x92\xda\x9b\x2d\x63\x10\x0a\x8e\x48\x96\x34\x70\x21\x2c\x72\x97\x65\xa0\x6d\x91\x3a\xf6\x03\x59\x02\x50\x31\x14\xac\x78\x5a\xa6\x83\x33\x90\x7b\x76\x58\xb6\x2a\x4b\xec\x2f\x22\xb7\xb6\x38\xd4\xbc\x74\x2a\xa5\x05\x90\x80\x10\xf6\x45\x70\x92\x16\xf3\x37\xc8\xc7\x22\x1d\x01\x68\x24\xa5\xde\x00\x54\x46\xaa\xd9\xca\x8b\x9e\x70\xce\x35\x4a\x96\x72\x88\xe8\x91\x3a\xef\x58\x0c\x74\x1f\xa4\x09\xd6\xad\x0c\x80\x05\x32\x0e\x9d\xe9\x06\xdf\xcb\xc2\xa2\x99\x0d\x67\x8f\xa7\x99\xde\xd6\x38\x7b\x3e\x92\xa4\x61\xb3\x4e\x8a\x55\x2f\x12\x74\xf3\x65\x2b\x3a\xfe\xa9\xe0\x87\xc7\x62\x88\x64\x54\xbc\x39\x61\xc9\x3a\xa2\x51\x4f\x0a\xce\x92\xe3\x95\x13\x96\xed\x95\x89\x62\xc6\xb7\x70\xf3\xae\x31\x29\xb4\x93\xdb\x51\xae\x87\x74\x87\xa4\xe2\x49\x04\x57\x89\x23\xd7\x4f\xd7\x74\xc2\xa1\xe4\xf4\xd9\x88\xbb\xaf\x4a\xe4\xd8\x4d\xe5\x84\x85\xbc\x00\x75\x90\xd1\x30\xe4\x8d\x68\x0d\x94\x28\xba\x59\x71\x29\xb9\x09\x4e\x9b\x9b\xb1\xd3\x8a\xb2\xd7\x2c\x4a\x75\xc3\x87\xc0\x7c\x65\xd0\x44\x55\x9e\x0d\x82\x19\x16\x75\xa8\x58\xd9\xb1\x9b\x25\x43\xd2\xe4\x82\x74\x37\x43\xfc\x18\x8a\x31\x5f\xab\x45\x65\xd3\x51\x81\x47\xe3\xb4\x63\xfa\x0c\x64\xc5\x83\xf9\x28\x3b\x1a\xe0\x3a\x3e\x83\x8c\xc7\x48\x1a\x66\xa4\x25\xc5\x70\x1f\x35\x01\xe4\xed\x0f\x2c\xca\xa0\xba\x2f\xf2\xfa\xfe\xfa\x76\xa9\x84\xef\x80\xca\xc5\xeb\x40\x92\x29\xb0\x11\xaf\x02\x22\xf5\x68\xf8\x85\x94\xfe\x25\x81\x40\x22\x39\x42\xd2\x4a\xcb\xf3\x3f\x2b\x8a\x37\x16\xfd\x5c\x09\xa9\xef\x82\xb6\xa5\x1a\x25\xa2\x0a\x6e\x28\xc9\xc4\xff\xd0\xa8\x9f\x99\x3e\x4d\x98\x54\x61\xd3\xa2\x98\x68\x56\xe1\x9c\x88\xe2\xc3\xe4\x22\x47\x3d\x9a\x42\x05\xc6\x28\x6e\x80\x8e\x0f\xc9\xc1\xce\xfc\x0a\x29\x2a\x80\x9e\xb9\x3b\x8d\x48\xa4\x48\x48\xba\x7f\xca\x64\xe0\xf1\xcd\xa4\xd7\xa7\xae\x74\xb8\x35\x2f\xae\x56\xdd\xd8\xf7\xa7\x6e\x6c\x89\xa8\x20\x43\xf7\xfb\xaf\x91\x06\xed\x23\xaf\x95\xf9\xab\x97\xce\x8a\xc0\x75\x20\x09\x3f\xb5\xb0\x83\xf1\x8a\x53\x35\xf8\x57\xaf\xca\x86\x88\x24\xf2\xf4\xaa\xd6\xcd\x7f\xbe\x9d\x09\x7a\x96\xaf\x50\xd2\x32\x68\x84\xc3\x6e\x54\x89\x21\x9e\x52\x7b\xa5\xef\x4e\x37\x64\x80\x21\x54\xa9\x98\x0c\x04\x56\x8a\x32\xdc\xcf\x4f\x7b\xe9\xc7\x11\x03\x61\x32\xe6\xb6\x81\x9b\x64\xb0\x95\x3c\xb5\xab\x62\xf8\xc8\x38\x76\xf5\xe8\x1b\x8f\xa3\x70\x6e\xfd\xf2\xbd\xd3\x47\x9a\x92\x24\xf1\x80\xc5\xa7\xab\xc8\x22\x26\xaa\x86\xd2\x6e\x09\xca\xfa\xaa\x3a\x8b\x4e\xb4\x19\x91\x69\x0e\xff\xa4\xe8\x18\xca\x88\x18\x7a\x63\x28\x71\x39\x54\xc5\xe3\xd0\xed\x79\x04\x0e\xbd\xf8\x00\x42\xf4\xb0\x7f\xa5\xe1\x27\xe5\x76\xf7\x64\x2c\xd9\xea\x00\x8d\xe0\x29\x53\x37\x90\xe3\x6b\x62\x59\x4c\xfa\x71\x40\x8a\xec\xcf\x43\x66\x14\x04\xec\x92\x22\x7a\x2d\x25\xb3\xc5\x08\x21\x8c\x0d\xe0\xea\x8e\xee\xdc\x78\x61\xb6\x17\xea\xbb\x1c\xcb\x9c\x53\x84\xbe\x56\xd3\x73\xb6\x58\xf6\xec\xff\x91\x92\x08\x6c\x4c\xde\xf4\xa2\x1a\x58\x4d\xcc\xa1\xb1\x06\x08\xa9\x2c\x84\xf8\xe1\x50\xef\x86\x8a\x03\xa2\xaf\x7f\x65\xf1\x7f\xca\x26\x3d\xe5\xa5\x56\xca\x84\xcc\xd2\xa4\x52\x7c\x18\xa4\x29\x0d\xe8\x7f\x3d\xac\x62\x93\x9a\x37\xb5\xfa\x8e\x95\x1c\xf4\x2c\xc9\xd3\xa2\x14\xa5\x9e\xe4\x5d\x4e\xc1\xf9\xfe\x3c\xcb\x92\x29\x5e\xf6\x4d\xb6\x91\x16\xc5\xb9\x79\x7d\x4f\xf0\x7c\x08\xce\x5a\x2d\x0d\x5e\x44\x73\x01\xd8\xa7\xa9\x7d\xcc\xed\xd5\x38\x57\x54\xdb\x61\x44\x94\xb0\x4f\xf0\x02\x79\x31\x9f\x74\xb5\xfe\x0f\x0f\x27\xe5\x5b\x75\x7f\xd3\x47\x3d\x02\x95\x2a\xf8\x85\xd3\x86\x40\xff\xa8\x40\xb3\x1b\x00\x7a\x5f\xa8\x76\x5c\x49\x4b\x16\x76\x48\x2c\xeb\xc6\xa5\x41\x0d\xef\xc3\x75\x3d\xf9\x5c\xed\x0b\x30\x5c\xd2\x08\x3e\x4b\x79\xa8\x32\x6a\xe0\x31\x99\x24\xc0\x5a\xca\x8b\x5a\x04\x58\x48\x8f\xe4\xc9\xc5\x23\x0c\x75\xf8\xa4\x80\xdb\x8c\x7c\x52\x76\x8b\xc8\x60\x01\xd0\x72\x00\x98\x38\x14\x84\xc1\xd7\xdb\xf7\x92\xab\xdc\x65\x9f\xab\xe2\x68\xa8\x12\xfa\x45\x1c\xcc\x8c\x92\x0f\x8a\x2d\x8c\x4a\xe0\xe5\x94\x1a\xa1\x04\x69\x92\x89\x60\xcc\xd3\x98\x89\xf7\xc0\x6f\xb4\x48\x67\x5e\x9c\xa6\x78\x51\x19\xb6\x86\x56\x75\xae\xc8\x05\xcf\xfb\x91\xb8\xe9\x90\xe9\x06\xb5\xc7\x27\x4e\xcf\xbe\x8f\xed\x36\xbb\x73\xf1\x95\xd4\x86\xf4\x15\xc6\x7d\xfb\xec\xe7\xa4\xe6\x2d\x13\x3e\x5b\x17\x56\x2a\x27\xa0\xe8\x84\x36\x91\x0c\x55\xa2\x29\x42\x19\x11\x9c\x8a\x0c\x7f\xf6\x61\x02\x5b\x46\xf2\x81\x89\x29\x57\x27\x4a\xe1\x31\x7f\x78\x2c\xee\x1e\xd3\x87\xc7\x91\x01\x38\xca\x9c\xbc\x42\x3a\xc0\x73\x5a\xe5\x4d\x8c\xf8\xa6\x65\x7a\xf3\x9b\xde\xab\x53\xf9\x34\xe7\x72\x84\xb3\x30\xa7\x9e\x24\xc3\x56\x62\xc4\xcf\x51\xfd\xc4\x64\x38\x57\x1c\x36\xbd\x22\xd7\x5b\x89\xd4\x43\x67\x9b\xf6\x28\xa8\x05\xf9\x4c\xcb\x60\xe8\x5c\x28\x0d\x37\x4b\xa8\x43\xcd\xc2\xf8\x94\x05\x0c\x54\xf7\x67\xe0\x35\xd4\x81\x36\xa3\xed\x1d\x79\x7d\x65\x0b\xa3\x44\x1d\x15\xd7\x1f\x03\xb3\x32\x0c\x5c\x5c\x8a\x1b\xee\xf1\xcd\x4b\x43\x30\x82\xd6\x6d\x0a\x71\x9e\xc7\x15\x13\x58\x80\x2e\x03\x46\xb4\x57\x45\x4c\x95\xe5\x87\x10\xf6\x47\x03\xb8\x59\xd0\x25\xda\xd3\x3c\x9e\xd6\x17\xe2\x81\x40\x68\xd7\xf6\x0e\x28\x1f\xfd\xbd\x80\xc9\x3e\x31\x3e\xd0\x05\xdd\x8f\x6a\xa9\xb7\xbc\x9e\x1c\x78\x5d\xc7\xa0\xf9\x66\xef\xbe\xc2\x7c\xdf\x35\x22\x84\xcc\xb2\x46\x9f\xe9\xd7\x8a\xcd\xfe\xa0\xe5\x35\x52\x40\x29\x32\x21\x75\x7f\x24\x45\x24\xcb\x83\xe7\x26\x3a\x99\xde\xd8\xec\x93\x56\x1b\xd2\x0a\xaa\xc9\x24\x3e\x95\x06\xba\x2f\x96\xb2\xbf\xd5\x72\x3d\x48\xdd\xf2\xef\xba\x81\x60\x82\x82\x46\xcd\x49\x15\x57\x0d\x8c\xb5\x30\xe1\x51\xb4\x51\xd0\xfd\x77\x88\xeb\x72\xd3\x48\x96\xed\x2d\x66\x3b\x1c\x19\xa9\x92\xfb\xf3\x7d\x5a\x5e\xd2\x3d\x9f\x96\x60\xe7\xb0\x56\x8b\xf5\x76\xb1\xc4\xac\x24\xdd\x50\x8c\x69\xb5\x36\xa4\x52\xda\xf8\x92\x8d\x49\xf3\xea\xe0\x46\x55\xf3\xff\xee\xcb\x28\x37\x54\x55\x8a\x32\x80\x5e\xc3\x96\xdc\x02\x8a\xde\x27\x6f\xb8\x67\xe2\xb6\xe0\x5b\x93\xe4\x73\x38\x6e\xd2\x00\xf5\xa3\x92\xdc\xe7\xcb\xb7\xfa\xef\x05\x66\x20\x79\xcd\x6e\xb8\x3e\xde\x60\xb2\xdc\xae\xd4\x98\xe5\xdb\xd2\x0e\x82\x34\xe9\x7c\x94\x86\x37\x34\x52\xa4\x36\x8e\x62\xb0\xc0\x71\x0f\xa3\xda\x16\x58\xd3\x80\x41\xb1\xb8\xcb\xfa\xaa\x7e\xc0\xae\x99\x0a\xc4\x6d\x32\x41\xde\xbe\xef\x33\xf8\xfd\x13\x22\x14\x1a\x6d\xfc\x7f\xaa\x09\x45\x1e\x05\xea\xe0\x0b\xca\x40\xac\xea\xc9\xb4\x3d\xd6\x83\x0a\xba\x1c\x43\x66\x98\x82\x54\x59\xd2\xec\x27\x6b\xb1\x8d\xa8\x70\x8e\xef\xb9\xe0\xb1\xb6\xae\xde\xea\x07\x7e\x3b\x05\xf4\xa2\x02\x66\xe2\x29\x71\xf1\x4d\xb3\xdd\x3e\x57\xc6\xd8\x1f\x93\x60\x9c\x99\xea\x37\x95\x66\xf4\x71\x23\xc0\x5e\x1b\x09\x30\x18\x54\xd8\x25\xb9\x94\x42\xca\x82\x80\x65\xb1\x68\x7c\xe6\x46\x47\x11\x57\x54\xfa\x6d\xb8\xb1\x62\xae\xc6\x56\xe0\x98\xc0\x6f\x0a\x7b\x7e\x42\xf3\xce\x64\x32\xd7\xa4\xd8\xdd\x16\xc4\xaa\x1d\x46\xad\xce\x95\x88\x07\xf4\xe7\xee\x7a\x65\xf1\x87\xf0\x6d\xf6\xfe\xb9\x5d\x0b\xcb\x99\x89\x21\x4c\xd8\x0a\xc1\xc6\xfd\xdc\xb3\x84\xca\x7e\xbe\x72\x74\x4a\x1c\x46\xc9\xd3\x04\x52\x23\x98\x7b\x88\xb1\xa3\x1d\xab\x98\x13\x2a\x34\xd1\x13\x7a\xe7\x13\x87\xd2\x15\x14\xf4\x41\x28\xff\x56\x80\xb9\xf6\xec\x6c\xc1\xd9\x43\x95\x23\x3b\xf9\x5e\x3c\xdb\x24\x94\xcf\xe8\xa5\xcb\x2f\x34\xac\x02\x03\xb4\xaa\xbd\x82\x05\x03\x52\x27\xa7\xe5\x6a\x8b\x82\xd0\xb9\xb8\x6e\x8f\x15\x7a\xb0\x34\x71\x53\x77\x99\xd0\xfa\x68\x1d\x5b\xb1\xc1\x81\x59\x8c\x44\x70\x3f\x1d\x86\x1b\x4c\xcd\x67\xcd\x0f\x56\x48\x56\x04\x1c\x25\x5d\x74\x14\x25\x31\x82\xdb\xc9\x41\xec\xf0\x51\xa1\x73\x22\x26\xb3\x0b\xb7\x1f\x08\x03\x1c\x5b\xae\x3a\xcb\xba\x01\xc1\x08\x35\x27\x43\x60\x2d\xe2\xca\xfa\xd8\x42\xed\x0f\x2d\x53\x92\xff\xd1\x34\xf2\x2c\xb4\xd0\x7a\xfe\x16\x4a\xf7\x02\xad\xc3\xc1\x4b\x5b\x88\xbd\xc4\x83\x56\xa6\x02\x0e\x2d\x17\x0e\xf1\x28\xe2\x45\x0e\xfe\xac\x87\x83\x61\x10\x09\x6c\x7c\x7a\xe0\x7f\x7e\x2a\xea\x09\xce\xaa\x22\xaa\x46\x41\x59\x97\x8f\x57\x69\x09\xfa\x26\x69\x28\xa7\x00\xbb\x39\x3d\x3f\x38\x02\x74\x39\x2f\xf0\x10\x55\xe7\x03\x19\x1d\x0a\xdc\x62\x0a\x03\x2b\xb9\xef\xf3\x5c\xfe\x29\x96\x25\x3e\xae\xc2\xb2\xae\x5e\xfb\x84\x8e\x92\xb7\x1e\x7b\x0f\xbd\x62\x76\x71\xa2\x7d\x10\x9b\xe7\x92\x1e\xd3\x20\x68\x05\xee\x81\xc8\x7f\x56\x88\x32\x08\xd0\xd2\x79\xb5\x56\x4a\xcb\x53\x18\xef\xb9\xb9\x91\x4f\x2e\x00\x82\x31\x5d\x40\x54\x1a\x9e\x20\x4c\xfb\xec\xf7\xef\xe7\x2e\x87\xdf\xdd\xea\xbf\xef\xe7\xa1\x84\xcd\x99\x78\x02\x22\x11\x76\xe0\x0e\x1e\xe1\x84\xf0\x43\xef\xfa\xed\x60\x89\xef\x0d\x9f\x6e\xfa\x3d\xf7\x7d\xdc\xdd\xe2\x95\x7c\xe9\xe7\x9b\x97\xb1\xb7\xff\xab\x43\x32\xed\xbb\x18\x5c\x8a\xb8\x2d\x12\x7d\x3f\xd8\x4c\xc6\xec\x46\x29\x22\x37\x88\xbc\x9e\x07\x66\xc1\x8b\x89\x20\xd1\xcd\x27\xa3\x5d\x80\x78\x1f\xb7\x31\x82\x05\x2a\xd0\x29\xa4\x09\xfd\x01\xc6\xbf\x9e\x7f\xbb\x75\x6d\xf1\x99\xd5\x28\xd9\xe7\x5a\x34\xd3\xb6\xec\xb7\xcf\xd5\x29\xe1\x51\xe9\xce\x7c\x51\xfc\x84\x43\xec\x53\xd6\x5a\xad\x49\x4b\x26\x91\xe1\x23\x0f\x3f\x91\x72\x31\xae\xfd\x29\x14\xce\x58\x43\x78\xcb\xd6\x01\x02\x66\x7c\xb8\xed\xd3\x09\xa0\xf8\x2b\x93\x8e\x0a\x82\x7c\xe9\xf6\x93\xfb\x89\x9a\x6b\x50\x97\xcd\x8e\x44\xb8\x75\x7a\x02\x9d\x40\x21\xaf\xc4\xb4\x49\xe2\xb1\x28\xb1\x07\xa2\x76\x5a\x6e\xb5\x26\x97\x99\x7d\x3a\x58\x86\x38\x1c\x99\x42\x9c\xcd\x1b\x76\x5e\x16\x77\xeb\x79\x75\x7e\xe0\xcc\x25\x73\xa8\xf4\xf6\x00\xac\xeb\xb1\x82\xe3\x38\x1f\xce\x50\x0b\x45\xe7\x3f\xb0\xac\x6f\xc6\xfd\xbd\x12\x87\x34\xe9\x22\xcf\x4c\xfd\xbc\x58\x20\xe1\xae\xb9\x16\x77\x88\x58\x76\xe3\x87\x0a\x32\x9d\xd4\xa4\x0a\x61\x32\xac\x51\x6d\x70\x7c\x56\x6d\xfa\x1c\xa5\xb4\x6f\x8d\x32\x3d\x81\x2e\x73\xed\xa6\x1d\x39\x60\x61\x3d\xd9\x24\xaa\x18\xfe\xd2\x5d\x8e\x3c\xa6\x31\x8f\xd1\x1c\x2c\x0d\x7f\x3d\xef\xbf\x16\x7f\xe8\x6d\x13\x51\x33\x85\xd5\x0a\xd9\xae\x4f\xf6\x61\xa3\x11\x65\xb8\x45\x03\x88\xa3\x94\xc7\xd5\xaf\xb1\xc9\xb4\x83\x5a\xd0\xac\x06\x10\xb5\x59\xed\xa6\xfb\x7f\xe7\xbf\xb9\x4d\xf6\xdf\xd9\xab\x2c\xbb\x34\x45\x8e\xe4\x8a\x68\x85\x04\x2d\x8f\x6b\x4c\x54\x71\xad\x75\x54\xdf\xe0\x03\x05\x40\x9f\x10\x54\x55\x0d\xba\x01\x98\x86\x5f\xaf\x16\x98\x64\x4b\x11\xe8\x29\x04\xc1\xab\xd7\xbd\x14\x14\xd8\x38\x42\x85\x84\x02\xbe\x54\x59\x64\x0c\x4d\x3d\xc3\xf0\xfe\x20\x3e\xa4\x54\xb6\xe0\xd8\xa1\xb1\xbf\x85\xa5\x1e\x9f\x5b\x6d\xc2\xed\xb4\x51\xe4\x32\x31\x18\x34\x6a\x61\x39\x6f\x93\xd3\xdc\x78\x60\xdd\x22\x6d\x98\xf2\xb2\x42\x32\xbe\xd7\x42\x46\xaf\x2f\x0b\xa5\x9c\x05\xdb\xd6\x35\x84\x91\xd5\x44\x6c\xa9\x0c\x8a\x21\xc8\x7f\x54\xdf\xe2\x3c\xb6\x67\x8a\xef\x5e\x2e\x2b\x1b\x3d\x89\xc8\x7d\x03\xc9\x0a\x02\x51\xc8\x73\xaa\x60\x4a\xb4\x50\xe0\x35\xeb\x26\x2a\x6f\x6d\x3f\x01\xa2\x9c\xcb\x64\x43\xd1\x4f\x23\x18\xda\x27\x20\x05\xf4\xa0\x21\xcd\x5b\x8f\x4e\xcc\xf2\x84\xcd\x90\xe5\x0a\x1f\x42\x60\x49\x77\x81\x61\x04\x35\xf0\xb7\x8d\xa8\x81\xeb\xb9\x06\xc8\x87\xe2\xf4\xe9\x82\x45\x5a\x1b\x68\x23\x42\xb7\x25\x4a\xd0\x20\x7d\xd8\xdf\xd2\x73\xc1\xed\x81\x03\x12\xf4\x58\x76\xee\x3e\x7d\x65\x91\xab\x9c\x0f\x28\xb2\xd5\xec\x6c\xf0\x00\x75\xda\xb7\xbf\xac\x63\x46\x14\x0f\x02\x72\x8d\xde\x85\xaf\x9c\x75\xff\x09\xa3\x48\xfc\x6c\xb9\x03\xac\x1f\xee\x7e\x9c\x38\xaa\x1d\x8f\x51\x4b\x14\x34\x45\x4d\x9c\x13\x01\x58\x04\x89\x39\x5b\x40\x5f\x83\x88\xce\xf2\xdb\x63\x31\xbf\xb9\x1b\x87\x04\x15\x5c\x97\x83\x01\x48\x68\xa0\x5c\xad\x9e\xfb\x41\xf3\x82\x0d\xb4\xf6\x77\xd9\x22\x0c\x0e\x4e\x32\x47\x0f\x19\x18\x3d\x0c\x12\x4d\x28\x2a\x48\x7d\x1a\x80\x79\x42\x64\x31\xaf\xa8\xc2\x6c\x54\xc4\x38\x65\x2f\xbe\x22\x77\x16\xb3\x06\x18\x09\x23\xa9\x70\xc7\x6a\x80\xb4\xd8\x1a\x82\xfb\xc9\x3b\x58\x7e\x6a\x86\xbc\xb3\x2a\x5e\x38\x47\x53\xf7\xc4\x43\x82\x38\x44\xcc\x25\x49\xa4\xa7\x87\x1f\x2e\x2e\x4f\x1c\xa8\x54\x07\x50\x81\xa5\xea\x9f\x0e\xa0\x56\x6c\x5d\x15\x11\x79\x7e\x0d\x93\x00\x21\xb9\x02\xe1\xdd\xe0\xdc\xce\xca\xc1\x1b\x55\x9c\x47\xcf\xd2\x1d\xba\x29\xdb\x9b\x79\x07\xfc\xf3\x52\x4c\x97\x97\x54\x98\x4f\x57\x41\xf2\xdd\x09\x64\x94\x83\xb6\xa4\xa3\x6b\x77\xee\x56\x80\xc7\x62\x78\xd1\x6f\x68\xf6\x8e\xde\x85\xa2\x71\xd4\xeb\x25\xdf\xae\x9e\x66\x98\x8d\x02\x0e\x91\x5d\xc1\x58\x9a\x40\xc0\xec\x1a\x22\xec\x65\x23\x60\x46\xf0\xc4\x08\x8a\xa5\x0f\x81\x59\x68\x0e\x57\x99\x03\x69\x34\x5f\x15\xcc\x5f\xf6\x55\xb8\xb7\xbd\x16\x56\xbb\xf0\xc3\xee\xf5\xf5\x66\xbf\x8d\x5c\xac\xdf\x2c\x54\xac\xf1\x13\xd7\xab\x47\x46\xa8\x8b\x08\x71\x0d\x32\x22\x39\x1f\x91\x4f\x52\xce\x53\x85\xd5\x34\xec\xad\x50\xb4\x9c\x59\x24\x01\xcc\xc2\xdf\xab\x21\x40\x51\x4d\x2f\x69\x29\x18\xdb\xcb\x72\x42\x21\x6b\x36\x1a\xe4\x28\x97\xe1\x13\x05\x6f\xc2\x3f\xcb\xd5\x6f\x0a\xd9\xb3\xbd\x08\xd2\xe4\x5a\x89\x6b\xbf\x9a\x86\x38\x92\xef\x55\x07\xf5\xa1\xee\xa4\x3e\x11\xc2\xbe\x7e\x75\xda\x5f\xb7\x9d\xc3\x21\x5e\x2c\xce\xde\xc5\x7a\xf8\x50\x14\xf7\x32\x52\x16\x8e\x9e\xa9\x10\x24\xa6\x0c\x85\xf9\x3b\x48\xcf\x1f\xd6\xd8\xd5\x4a\xc7\xda\xe4\xf8\xd0\x0a\x4b\x88\x58\x7a\xdc\xe9\x0b\xca\x54\xac\xfd\x48\xe0\xf8\x27\x4f\xa0\x83\x27\xf9\xc6\xb2\x56\xf0\x7d\x15\xbf\x28\xbf\x1a\xc9\x3a\x77\xfa\x69\x14\xf7\x83\x35\x33\x2a\x33\x6c\x0d\x3f\xc6\x0a\xb8\x96\x1e\x64\x4c\xd3\xf2\xcf\xe7\xb6\x1e\x9c\x81\x4a\xd2\xc6\x96\xbb\xfe\xd3\x7e\xb0\xf1\x2b\x7d\x16\x02\x6a\x10\xdc\xaa\xbe\x27\x57\x76\x39\x6f\x4e\xc8\xd4\x51\x79\x6e\xc6\x4b\xe0\x71\xb6\x17\x82\xd1\x17\x08\xca\x44\x04\xab\xa9\xef\x6d\x43\x20\xee\xa9\x21\xfc\xbb\x23\x04\xb9\x83\x13\x5e\x73\x34\xf6\xf6\x29\x30\x3d\x20\x8f\xf3\xc1\x26\x7a\xd7\x88\x60\x97\x47\x2b\x48\xe5\x34\xef\x40\x84\x42\x9e\x9b\x90\xf3\x92\x4d\x50\xbf\x3a\x0f\x4d\x1e\x6c\x1b\xef\x47\x40\xc5\xd2\x6f\xa8\x7c\xb6\x37\xbc\xb6\x6e\x5e\x5e\x4f\x23\x3f\x9f\x67\x87\x94\x2e\xad\x00\x64\x97\x80\xdf\x2b\xb0\x92\x3f\xa7\x60\xe6\xb1\x75\xab\x46\x1a\xfb\xf4\xae\x77\x4f\xa6\x58\x8d\xb0\xb7\x88\xfb\x0e\x2a\x27\x78\x11\xbc\x49\x99\xab\xfc\x4e\x02\xfa\xa4\xc8\x23\x88\xec\x63\x05\xeb\xdf\x99\xcf\x02\x44\x01\xb7\xc9\x28\x42\xf1\xfb\x3a\x06\x42\xfa\x89\x6b\x7b\xd6\xbf\x99\x12\xe5\x6d\x84\xab\x5f\xd3\x1a\x05\x68\x31\xad\xe1\xe0\x32\x6c\x9a\xcc\x6b\xae\x43\x4e\x80\x48\x01\xbe\x4b\x08\x07\x2b\xc4\x01\x07\x93\xa2\x89\xad\x6d\x4f\x6e\x7c\x7e\xe3\x05\x6b\x13\x71\xcb\xa8\xd2\xd7\x12\xdf\x7e\x49\xc2\xa1\xa4\x78\xda\xb0\x8f\x99\xc5\x5f\x58\xbf\xd6\xeb\xfa\x8f\xa2\x99\xe9\x6f\x6d\x07\x85\x11\xfb\xd1\x6d\x58\xcf\x29\x80\xdf\x59\x62\xdf\x6b\x7b\xca\x61\xb3\x77\x9f\xeb\x55\x49\x00\x1e\x4b\x79\x15\xfd\xb7\xa1\x98\x5f\xfc\x15\x44\xfe\x6e\xe8\xb1\x1d\xe1\xe3\x8a\x2a\x2b\x52\x9c\x0b\x7b\x15\xfa\xa6\x80\x91\x20\xe8\x96\xb4\xf2\x44\x4d\x97\xfa\xf9\xd9\xab\xb8\x90\xde\x4a\xd2\x1c\x2a\x65\x1b\xf6\x81\xf2\xbd\x98\x3f\x8c\x6f\x63\x68\xb9\x11\x61\x63\x24\x13\xfd\xde\xd9\x04\xf3\xff\x6a\x37\x43\xde\x07\xbb\x07\x9b\xd1\xde\xe9\xf2\x81\x37\x08\x80\xda\xbf\xf2\x10\x39\x25\x7f\x07\xd4\x63\xf4\x15\x9c\xe7\xa3\x0c\x9b\x05\x23\x5d\x2f\x3e\x50\x97\xb4\x24\x5d\x4a\x40\xcf\xb1\x79\x94\x3a\xa0\x24\x4e\x4a\xa7\x97\xb8\x44\x02\x69\xe4\x03\xf7\x71\x8d\xc9\x8d\xa6\xde\xbe\xa5\x36\x02\xd0\xd3\x50\x8b\x29\x74\x5c\x88\x2c\x4b\x40\x07\x75\xa2\x14\x35\x96\xf0\xc7\xcc\x45\xab\xc3\xd3\x07\x71\x21\x25\x97\x42\xe5\x40\xc8\x4f\x61\xf9\xb2\x18\x49\x46\x57\xa7\xde\x23\x1e\x90\x07\x19\xdf\x30\x2e\xcf\x9d\x97\x48\x5d\xda\x35\xd0\xa9\xa0\x3e\xdd\x7c\x02\x5d\x00\x76\xab\x14\x8e\xa4\x2b\x8f\xe7\xae\xf3\xdb\xe4\xd5\xb3\x02\x67\xac\xe1\xf3\x59\x7a\xe2\x67\x02\xcd\x8f\x60\x9f\x67\x2e\x79\xb4\x9f\x89\x52\xba\xeb\xb3\x91\xd2\xf8\x3f\x97\xfb\x5d\x22\x5c\x67\xbe\x6d\xc9\x17\x5c\x9e\x35\xbe\xc9\xd6\x33\x54\x12\x23\x9a\x52\x38\x9e\x2b\xb1\xe7\x2b\xdd\x89\xf7\x9b\xba\x3a\xf4\x0e\x1a\x46\x10\x47\x55\x60\x96\x20\xde\x2a\x29\xdf\x66\x49\xbd\x5f\x55\xbf\x3c\x97\xfb\x58\x25\x0f\xc1\x79\x3b\x0d\x20\x1c\xb0\x74\x30\xfe\xd6\xc1\x1c\xff\xca\xf5\x4b\x15\x60\x8e\x7b\x8f\x0f\xcb\xbe\x10\x2e\xdf\xc7\xdb\xa7\xbf\xc3\xc0\xbf\xfa\xee\x79\x6f\xdc\x7f\x7f\x0f\xa7\xf7\xc5\x56\x8d\xb2\x83\xc5\x16\xa9\xd3\xaa\xdd\xfe\x05\xe4\x6d\x79\xa6\x62\x7c\xc9\x38\x00\x2c\xd7\xae\x15\x3e\x1f\xf9\x5e\xac\x16\x2c\x38\xae\x15\xdf\x09\xd3\xd6\x85\x01\x13\x72\x5c\xcf\x9f\x51\x19\x03\x41\x45\xed\xac\xb1\x70\xce\x0a\x4f\x66\xa0\x67\x27\xf8\xde\xd0\x0c\xeb\x1a\x59\xd2\x48\xf4\x84\x07\xb9\xb6\x72\x0a\x0c\x38\x70\x89\x1a\x57\x13\xb6\x88\x11\xb8\x29\xef\x22\xce\x23\xb5\x09\x42\x86\x35\x25\x1f\xec\x02\x32\xe6\x18\x1c\x97\x41\x4c\x15\x91\xd3\x24\xd8\x9a\x4e\xdd\x57\x55\x2d\x1e\x22\x0e\xe2\xcb\x70\xac\xae\xf6\x4a\xdd\xff\x19\x62\xba\xe9\x14\x86\x5e\x24\x88\xb7\x97\xb3\x50\xda\x3c\x0a\x53\xac\xad\xda\xae\x19\xe5\xae\x6f\x2e\x95\x85\xb0\x81\xee\x75\x28\xa1\x62\xac\xe1\x5b\x81\x30\x3c\xe9\xca\xb9\xe4\x05\xfe\xc8\x3b\x8b\xd0\xf1\xb1\x22\x24\x9d\xd7\x06\x31\xd8\xc9\x62\xa5\x31\xf1\xad\x5a\xf2\x67\xa2\xe7\x63\x39\x62\x63\x98\xce\x0e\x83\x34\x07\x18\xf3\x7c\x85\x97\xee\xd4\x85\xa5\x15\x63\x4d\x32\x0c\x62\xe9\x9a\xa8\x17\x85\x16\x1f\xd8\x59\x66\x02\xed\xd4\x54\x5b\x3e\x06\x94\x23\x1a\x03\x96\xc4\x80\xec\x71\x64\x3f\x44\xcf\xaf\x44\x74\xa3\x5c\x8f\x55\x92\x8d\x2f\x9a\x16\xa2\x3d\x60\x63\xa8\x10\xa9\x15\x9e\x56\x25\x32\x11\x66\x64\x9e\x2a\xa8\x51\xb6\xc6\x7a\x0c\x54\xcc\xa0\x7d\x8b\x69\x8d\xe0\xd4\xbc\x19\x9c\x18\x42\x9e\x07\xdc\x74\xec\xf4\xe4\x02\xbd\xb2\xb9\xe0\xd0\xa0\xe8\x88\x2a\x65\x40\x65\xf0\x26\x0a\x9d\x3f\x5d\xac\x47\x29\x3b\x60\x11\x82\x1a\xb1\x45\xb3\x18\x2b\x7e\x6b\xd1\xd1\x21\x1f\xfb\x37\x35\x15\x2b\x77\x1b\x23\x5f\x25\x1b\x8a\x4e\x5f\x1f\x56\xce\x80\x0f\x9e\xf1\x7c\x10\x72\x91\x55\x0b\x97\x32\x2a\xf0\x2c\xaa\x0b\xa1\x53\xea\x5a\x4b\xc7\xa6\x28\x16\x21\x0b\xa9\xe6\x7e\x5a\xb6\x49\xfe\x7e\x8e\x27\x19\x45\x71\xd1\xdb\x19\x51\x8f\x70\x2d\x3e\x79\xf3\xc4\x97\x51\xa7\xcb\x45\xb8\x1a\x1f\xcc\x1b\x8a\x49\x68\x03\x64\x07\x0b\x8d\xf3\x05\x02\x77\x48\x32\xf9\x4b\xe3\x0d\x97\x88\xe0\x03\x28\x71\x68\x28\xad\xc2\x3d\x48\x58\xf4\xb0\x73\xae\x28\xff\xda\x77\x13\xa6\x66\x6a\x6b\x54\x55\x0f\x15\x6a\xeb\xa1\x42\x66\xba\xf3\xf3\x0a\x68\x04\x1f\x37\x38\x6a\x01\x97\xf5\xe8\xc7\xd1\x9c\x72\x0e\x81\x66\xe0\x38\x8c\xeb\xe0\xe1\x3f\xf2\x12\x08\xd1\xa0\x2c\x19\x49\x1e\x1c\x63\x8a\xb7\x87\x5d\x37\x3c\x67\x2c\xa4\xda\xeb\x2f\x50\x03\xac\x45\xba\x55\x12\xac\xc1\x51\xbe\x6b\xfc\x73\x6e\x7b\xcf\xa4\x95\x2f\xe8\xc5\x98\x05\x59\x96\xcd\x14\xf0\xe4\x54\x3d\xb6\x75\x2e\x22\xa0\x5a\xfe\xad\x45\x08\x25\x44\x2b\x29\x89\xa1\xef\xae\xcf\x19\x3b\x42\x37\x00\xd7\x0d\x8d\xd1\xd9\x0e\x3a\x50\x9b\xa1\x52\x0d\xf2\x55\x02\xaf\x9c\x41\xef\xa6\xcd\x62\x7d\x61\xa9\x17\x40\xb5\x6c\xfc\x58\x86\x09\x2f\xd7\x6d\xa8\x47\xce\x8c\x98\x85\x12\xc9\x19\x26\x0e\x81\xd7\xc8\xd1\xa3\xb1\xf9\x48\x4e\x18\x6f\x4e\x16\x64\x75\x67\xfd\xc8\x0a\x6a\xd1\x0c\x43\x48\x1c\x64\x43\x07\x73\x90\xb6\x75\x96\x6b\x93\x00\x3d\xff\x35\x7c\x41\xec\xb0\xa7\x24\xe9\x20\x34\x62\x9d\x20\x8a\xd5\x53\x4b\x83\x40\xd8\x40\x1b\xa3\x41\x10\x4d\xa9\xdf\x90\xfd\x6c\xcd\x6d\xad\x94\xcc\x4f\xca\x49\xdb\x75\x3a\x2a\x02\x97\x39\x07\x75\x98\x29\xa7\x08\x43\xdc\xb1\xad\x95\x95\xe1\x5a\x6b\x64\x1a\x09\x71\xb8\x5f\x43\xbe\xeb\xf0\x6c\xdb\x8a\x18\xc4\x86\xae\xd9\xe4\x33\x30\xff\xa6\x8d\x2a\x8b\x4c\x8c\x04\x38\x57\xf1\xb3\xc9\xcc\x7d\xc6\xcf\xcd\x19\x57\x31\x71\xaa\x85\x5a\x20\x45\x75\x23\x28\x93\xca\x06\xe0\xa8\x3b\xb9\x47\xb3\x73\x3a\x48\x07\x92\xd4\x57\x8d\xe5\xae\x7b\xd3\xba\xf9\x39\xab\x8b\xfe\x35\xaa\xc4\xc7\x87\xc6\x28\x16\x4d\x25\x76\xcf\xaa\x19\x08\x90\x49\xf3\xe6\xd0\xa2\xe9\x2d\x2b\x0f\x0d\x88\xb1\xee\x55\x8a\xab\x33\x5b\xcb\x5e\x55\x3c\x1a\x3c\x04\x62\x9f\x1a\xc1\xb3\xf0\x08\x43\x0c\x8c\x2e\xb4\xf9\xbb\x1a\x40\xaa\xcb\xdd\x22\x3d\x14\xec\x0f\x15\xc3\xa5\xaa\xa4\x6d\xf9\xa8\x30\x9c\x37\x19\x97\x7e\x8b\xe9\xa5\xab\x34\x58\x02\x5d\x21\x79\x8a\xb8\x91\x46\x0d\x23\x50\x4c\x85\x87\x42\x2a\x8e\xad\xa2\x1c\x50\x96\xb5\xf9\x96\x60\x56\xb8\x4d\x88\x7d\x92\x46\x13\x01\x41\xab\xa8\x76\x16\x90\x5c\x64\xc2\xc8\x16\x96\x29\x23\x50\xad\x62\x88\xb6\x99\x0e\xd7\x16\x14\xbb\xa8\x62\x13\x13\x94\xe3\x38\xd7\x5f\xcd\xeb\xed\xfe\x51\x4f\xfe\x70\xea\x7c\xac\x7c\xb2\x83\x23\x25\x80\x86\xcd\x18\xdb\x03\xd6\x0d\x5a\x05\xf5\x0c\x2b\x51\xa8\x0d\xb2\x61\x6a\xc1\x39\x51\x3a\x5b\x3d\xa7\x50\x85\x92\x11\x72\xf7\xca\x8b\x28\x8a\x49\xdd\x7b\x8b\x60\x5e\x93\x2e\xa2\x7f\x0b\x14\x7d\x63\xaf\xaf\x19\xe1\xfe\xed\x23\xa2\x37\x7c\x78\xde\x7f\x4c\x2b\xde\xe7\x89\xfd\x50\xbc\x39\xa3\x34\x34\xb8\x0c\x1d\x0f\xdd\x0b\xdf\x23\xb9\x1a\x7c\x8f\x06\xb8\x83\x55\xdb\x3e\xad\xd4\x00\x4e\xfa\x8d\x9c\x32\xcd\x64\x5f\xb0\x89\xbc\xe1\x07\xd4\x6a\xca\xd9\x80\xcf\x49\x1c\x06\x97\xed\x85\x80\x80\x2d\x49\x2d\x36\xd6\xe3\xae\xc1\xc2\x12\x56\xf2\xae\xbb\xa0\xcb\xec\xe4\xcd\x6f\x1b\xbf\xcb\xdb\x57\xcd\x3e\xda\xa0\xdf\x45\xd5\x81\x52\x7e\xa4\xae\x05\xa6\xb6\xef\x48\xbf\x5c\x10\x6a\xa1\x30\xd6\x3b\x9f\x22\x77\xf3\x45\x6b\xf2\xcb\x2e\x22\xf1\x8b\x4f\xc8\xb6\xe8\x45\xa5\x47\xbb\xf9\xa4\x55\xad\x4f\x55\x48\x57\x9e\x74\xe2\xd5\xbd\x67\x3b\x6c\x02\x3b\x4b\xb7\x39\x4d\x33\xd4\x0c\xf2\xc8\x6f\x18\x35\xdd\x11\x3d\x0e\xc2\x70\x30\xd9\x45\xe5\x0a\xa0\x18\xbd\x9e\x50\x8f\x5f\xe9\x83\x45\xd2\x9d\xb4\x48\x49\x89\x7c\x43\x36\x30\xa0\x94\xa4\x35\x72\x29\x7e\x5c\x76\x57\xc7\x24\x51\xb7\xe2\x72\x90\xda\x88\x00\x4b\xf8\xda\xd7\xb9\x50\x42\x01\x17\x7a\x3b\x54\xfc\x37\xc0\x4e\x52\xb0\x09\x81\xf3\xd6\xa9\x26\x23\xcb\xcd\x3c\x23\xa5\xba\x99\xf3\xae\x99\xf3\x03\x29\xf5\x5e\xbc\xe2\x98\xfa\x3c\xdb\xa6\xd1\xdd\xdd\x2b\x98\x74\xca\x74\x7f\xe0\xb4\x4e\xe3\x8a\xfb\x6c\x63\x3e\x78\x57\xb5\x7f\x2b\x4e\xc3\xfc\x26\x07\x26\xdf\xf1\x61\x0a\x8c\x86\xbd\xf4\xc2\xfc\x80\x28\x16\x65\x53\xb1\xa5\xbd\xa5\xb1\x43\x6e\xe5\xcb\xdb\xa7\x85\xd6\x34\x1b\x4d\x29\x63\xd8\x1e\xf4\x49\xf3\x8d\x5e\xb3\xd7\xf2\xe6\xc5\xdf\x26\x2f\xca\x55\x6f\x47\x78\xcf\xf6\x0b\x59\xab\x8a\x89\x3c\x3e\xc7\xdc\x2f\xc6\xb3\x6b\x3c\xa1\x0e\x5e\x02\x43\x77\x0a\x52\x27\x80\xda\x44\x0d\x59\x77\x7c\x2a\xae\xa1\x26\xfc\x17\x6b\x5d\xf5\x7f\x82\x4d\x30\x3c\xf1\x9f\x06\x50\x47\x2c\xb8\x01\x97\x9a\xbd\xe5\x98\xd4\xaf\x9c\xc8\xbe\xb9\x95\x2d\xa7\xe0\x96\xea\x48\x60\x47\x20\xfe\xda\xd3\x57\xf6\x16\x20\x98\x1c\x4a\xd0\x16\x8e\x74\xd5\xf1\xb0\x83\xf1\x51\x40\xbe\x36\x90\x04\xbd\x7e\x13\xdd\xf3\x7c\xc8\x08\xfb\x5c\x3b\x0f\xf6\x9c\x50\x85\x8b\x60\xcb\x5a\x26\xc7\xa0\x71\xcd\x4f\x93\xd6\x29\x41\xfe\xa2\xf9\xc6\x08\x1e\x44\x67\x10\x6d\x81\x0a\x1f\x82\x77\xd3\x9b\x99\x39\x1e\x81\xdf\xb0\xc3\x35\x08\x63\x9c\x62\xb0\x38\x3a\xb2\x69\xda\x36\x5a\x57\xdd\x3f\x40\xd4\xdc\xb8\x5c\xfd\xb9\xd8\x96\xc8\xc4\xa7\x25\x91\xb3\x55\x3e\x7d\x7d\x23\x41\xbf\x2a\x02\x98\x15\x69\x27\x72\x33\x02\xdf\x96\x4c\x83\x3b\x8b\x1c\xc2\x05\xe3\x96\x60\x4e\x5b\x18\x81\x85\x65\xa2\x63\xe7\xcd\x1f\x5d\x36\x0f\x6e\x34\xd7\x6d\xf4\x7a\x1a\xe4\xa0\xa5\xbb\x1d\x3f\x65\x1a\x16\x21\x47\x1c\xea\xd3\x27\x4b\x7a\x1a\x90\x6d\x99\x52\x38\x4e\x73\x92\x79\xf1\xb7\x80\x94\xe6\x0f\xa6\xec\x09\x6f\x14\xd9\x38\x31\x7f\x00\xa6\xf0\x2a\x14\x97\x3f\x76\xab\xbe\xb0\xba\x1e\x79\x51\x2e\xbf\x48\x23\x2c\x65\x89\xce\x81\x3b\x0b\x32\x7c\x3e\x4e\xea\x45\x82\x91\xbd\x5f\xb4\x8d\x37\x5e\xa3\xd5\x14\x95\x09\x31\xf7\x21\x37\xa8\x17\xf0\x71\x5c\xb0\xb4\x54\xf6\xbd\xe9\x5a\x59\x13\x1a\x51\x41\x8d\x8c\x24\x28\x06\x73\xed\xad\x77\x99\xff\xfc\x9f\x3c\xab\x5d\xf7\x99\xf2\x43\xc6\x8e\x2d\x29\x24\xde\x7b\x37\xf6\xfe\xf2\x74\x97\xbd\x2e\xa6\x9f\x45\x7b\xdf\xc1\xcc\xcd\x2e\xcf\xf4\x9e\xe8\x92\x84\x26\xac\xd1\xea\x33\xc5\xb6\xc0\x72\xc6\x10\x44\xeb\x65\x90\xd4\x5c\xa6\x04\x80\x3d\x46\x62\x75\xa7\x9a\x71\xa3\x79\x62\x3d\x13\xf0\x19\x3e\x5a\xc1\xd7\xe6\x39\x09\xab\x35\x9e\xc3\x7b\x27\x2b\x82\x97\x84\xbb\xec\x20\xfe\x5e\xf1\xc1\x33\x8f\xb8\x0f\xa5\x62\x7c\x27\xdd\x54\x21\x86\x84\xef\x98\xf5\x41\xe7\x7c\x0d\x3e\x78\xbf\x49\x0f\xc5\x1b\xa8\x0a\xf8\x45\x39\xe5\xb0\x85\x91\x75\xc1\x43\x41\x0e\xb2\xf9\xd4\xf9\xf6\x04\x12\xc4\x47\x6f\xc9\x46\x0a\x5f\xe8\x8a\xc8\x21\xca\x64\xaf\x96\x60\x7f\xee\x84\x6a\xb7\x1c\xab\x47\x90\x5c\xb4\x22\x04\x1c\xe6\xf7\x4b\x60\xfe\xcd\x4d\x6f\xc2\x33\x96\xba\x16\x93\x42\xe2\x95\x9e\x23\x90\xa3\xa9\x4f\xcc\xe2\xb2\x2c\xb5\xfe\xac\x1d\xc3\x83\x54\xaa\xa5\x93\xeb\x27\xfa\x6a\x5f\x54\x2b\xcd\xfd\x15\xb1\x44\xd7\xb1\x1b\x1b\xf5\xd3\x96\xed\x33\x72\xa3\x64\x80\xba\x1a\xc9\x98\x0f\x5c\xba\xdd\xe1\x27\x7f\xab\xb1\xaf\xa3\xa0\x40\x0c\xa1\xd9\x73\x1c\xd0\x78\x69\x66\x89\xfa\xa9\xbe\xcc\xea\x4b\x00\xc3\xca\xa2\x59\x41\x34\x9b\xc3\x2e\xff\xee\xa2\x79\xda\x7d\x8e\x19\x54\x99\x3c\x27\x8d\xd6\xe9\x54\x4f\x0c\x13\x71\xa3\x9e\x6e\x41\x61\xda\x03\x0d\xc5\x40\x05\x68\xe7\x7a\x91\x8e\x36\x14\x9b\x3f\x52\x6d\xdb\x4d\x13\x50\xdd\xf5\xea\x9e\xb2\x94\x23\xd0\x06\x96\x89\x4a\x3b\x7e\xf6\xb2\xd6\xb8\x03\xbb\x19\xb8\x3d\x6b\xaf\x62\x71\x03\xa4\x32\x1b\xe6\x0d\x28\xe2\x8f\xbc\xb9\x0c\x9b\x53\xa8\x43\x87\xf6\x73\x0c\xb7\xc2\x03\xaa\x29\xe7\x31\x56\x1c\x0d\x71\xe3\x80\xe6\x6c\xbe\x2d\x5d\x6c\x62\xb5\xd6\xe4\x26\x58\x87\x43\xa5\x33\xd6\x80\xa1\x50\x4b\x38\xa2\xf9\x2e\x48\x68\x77\x9e\x04\x70\x19\x76\xc2\x70\xb5\xdd\xa3\x98\x05\xda\x3e\x1c\xf1\x33\x5d\x88\xed\xc2\xeb\x45\x19\x38\x06\xa1\xd4\xd5\x7c\x8e\x04\x71\x6d\xab\x93\x5a\x4d\x4a\x84\xef\xf1\x4a\x0d\x67\xb6\x29\x48\x40\x03\x8e\xa2\xc7\x16\xc7\x1b\x20\xc8\x3c\x7b\x00\x9d\xa1\x5c\xd8\xb8\xcf\xbb\x9d\x66\xd3\x4b\xc0\x1a\x20\x11\x66\x5d\x60\xc4\xa0\x24\xb3\x7f\xed\xd3\xb4\xe5\xf1\x40\xa1\x10\x63\x49\x7d\x0f\x6e\x3b\x96\x68\x37\xaa\x59\x11\x91\xae\x57\x97\x10\xb6\x6a\xae\x8c\x7e\x7f\x13\x6e\x94\x10\x5d\x80\xdc\x1e\x22\x4a\x1d\x99\x43\x6b\x44\x7f\x84\x39\xa9\x36\x48\x88\xe4\x2a\x86\xb1\xf8\xc2\x98\x64\x70\x17\xab\x04\x37\x3f\xa1\x97\xac\xec\x6f\xed\x0d\x56\x2f\xa0\x98\x7f\x78\x7f\x31\x48\x5f\xb5\x9c\xfd\x42\xd3\x25\xfe\xfa\x5b\x89\x62\xdd\x5f\xa1\xf9\x4a\xf8\x0a\xc3\x2b\xf9\x2b\x74\xef\x84\xaf\xb0\xfd\x93\xf0\x15\xda\x5b\xb2\x57\x58\x7d\x25\x7e\x85\xdd\x3b\xf1\xab\xc5\xe6\x69\x7f\x93\xd8\x13\xce\xb2\xfb\xef\x74\xa5\x96\xd9\x6b\x14\x81\x0f\xdb\x87\x47\xc1\xf5\xe8\x79\xfd\x36\x66\xf4\xec\x51\x1c\x06\x9c\x46\xc9\x9f\x34\x64\xa7\xb0\xbc\xed\x64\x88\x9b\x68\xc2\xe7\xdb\x46\x55\x8f\x0a\x94\x3a\x27\x74\x44\xad\x58\x5e\x2a\xda\xcf\x05\xdf\x49\xd0\x8c\x81\xbd\x46\x16\x6b\x27\x11\x73\xc4\xf0\xc1\x75\xe3\xf7\x8c\x93\xa5\xda\x03\x04\xd3\x27\xa8\xc1\x80\xf0\xa1\xdb\x61\xa7\xdf\x63\xab\xd7\xc9\x6d\xb5\xc3\xc5\xf4\xe9\x36\x13\x94\x12\xf5\xf4\x6f\xa6\x89\xfe\xe0\x26\xb2\xc1\x6b\x38\x1b\x3e\x7b\x4b\x6b\x32\xd6\x7b\x53\xe9\xa4\x83\x11\xea\xaf\x10\xd4\xd5\xc6\x6d\x41\x3c\x04\x57\xcf\x93\xa0\x87\xbd\xa9\x27\x40\xd2\xfc\x56\x9a\xd9\xfb\x00\xca\x68\x1c\xee\x6b\xd2\x89\x44\x61\xd5\x1e\xf3\xd0\xf1\x76\xd4\xc4\x3f\x4e\x4e\x27\x1f\x5b\x7f\x77\x59\x0d\xa0\xac\x71\xf4\xcc\x2a\xcc\x86\x38\x51\xd7\x21\x92\xd3\xa3\x2a\xb8\xc2\xac\x22\x8f\xf0\x03\x1a\xcb\x67\xa2\x8c\xa4\xf8\x6b\xfe\xf6\xae\xe0\x2d\x8d\x37\xad\xea\xad\xf3\x96\xfe\xf7\x07\x9a\x49\x92\x55\x58\x5c\xd9\x4a\x26\xf9\x13\x75\x52\x7f\x7e\x66\xe7\xfd\xf1\xbf\x5f\x6a\xbb\x27\xef\xf6\x6c\x99\xea\x89\x70\x34\x10\x0a\x06\x8b\xf0\x3d\x2f\x0a\xed\xa2\x2f\x2b\x26\x0b\x1a\x0d\x3a\x97\xfd\x22\x6d\x6f\x60\x58\xa3\x57\xe6\xd9\x55\xd2\x2d\x91\x28\xdc\xfc\x70\x7a\x26\x6a\xb9\xdb\x7f\x67\x9f\xfe\xf9\x3d\x4c\xd7\x7f\xea\x7f\x92\xef\xc7\x97\x79\x29\xf3\x3f\xbe\xab\xf3\x13\xe8\x7a\x74\x3d\xe2\xf6\x90\x9a\x57\x01\x39\x3f\xa4\xe3\xe1\xff\xfc\x58\xa5\xbf\x88\x7c\x07\xc9\x1f\x42\x6a\xe9\x17\x6d\x96\xff\x7e\xdc\x56\x3c\x40\xff\x55\x44\xe3\xff\xf9\xf7\x23\xff\xdf\x7f\xa4\xf4\xdf\x5d\xc1\xaa\xae\xcc\x5e\xd8\x95\xf1\xaf\xf4\xac\xb9\xa6\xa7\xe1\xce\x8f\x97\x07\xc2\x17\xbf\xfd\xa0\x50\x02\xbc\xa3\x52\xab\xfc\x51\x0a\x39\x4e\xb8\xe4\xcf\x76\xbd\x6a\x88\xcb\x67\x35\x8d\x1e\x80\xf2\xf7\x5b\xfd\x4a\x55\x59\x5b\x4a\xda\x23\xe2\x44\x27\xac\x5d\x5e\xf6\xd2\x0a\xc0\x86\xe3\x1f\x8b\x77\x42\x0a\xa6\x50\x36\x38\xb5\x5d\xc4\x38\x70\x10\x77\xeb\xa2\xbc\xa2\x02\xe3\xd6\xa2\x05\xb0\xea\x22\x5c\x51\xcb\x06\x12\x4d\x12\xf6\x4c\x1f\xa1\xe1\x05\x3d\x33\xf0\xce\x4c\x88\xfc\x4f\xd6\xa7\x19\x05\xd2\xbb\xd7\x2a\x25\x91\x0c\x74\x6d\x20\xa8\x78\x91\xca\x55\x23\x85\xf2\x00\x45\xd7\xc3\x89\x48\x54\xf8\xc1\x42\x96\x6f\x77\x26\xa2\x5e\x72\x42\x56\x35\x2d\x92\xdc\x8e\xb3\x09\xb5\x5e\x25\x47\xd6\xeb\xc1\x6a\xab\x13\xe6\x68\x51\x85\x32\x17\xc4\xc7\x24\xb6\x5e\xba\x82\xf5\x8f\x40\x5d\xc1\x0b\xce\x2e\x7c\xc4\x57\x62\x8c\x90\x65\xe0\x21\xe0\x75\x11\x5c\x69\x62\x7d\x76\xe8\xae\xff\xbd\xaf\x5e\x81\xe5\x5a\x12\x1f\xd9\xa5\xfd\x68\x2b\x59\x21\x9f\xdd\xd5\x12\x1a\xfd\x30\x38\x85\x8e\x05\xf3\x7b\x44\x5c\xda\x50\xf9\xbc\x68\xce\x62\xbb\x5d\x56\xc0\xd2\x6c\x00\x67\x1d\xdb\x5e\xac\xa4\xf8\x68\x3a\x51\x52\x15\x3e\x5d\xbc\x42\x7b\x59\xde\x6f\xa2\xc8\xc8\x5c\x52\x10\x3a\xd3\x4b\xa2\x58\xc6\x45\xd4\x67\x0e\x97\xe5\x82\xae\xa9\xcf\x2a\x06\x8a\x9c\x91\x16\x6f\x1a\x5e\xb8\x2e\x68\x4e\x3a\x78\x58\x35\x61\x49\xb4\x6b\x7b\x49\xac\xeb\xe4\xac\xc4\xab\x69\x1d\x09\xbc\x8b\xed\x83\x6b\x7e\xd1\xae\xd6\x21\xc5\xdd\x8b\x56\xd5\x5e\xc7\xb8\x3a\x0e\xa4\x50\xcc\x12\x5d\x3a\x4c\x5e\x35\x5e\xa1\x08\x24\x8c\x76\x92\x92\xde\x03\xb6\x87\x72\xb0\x1e\xdf\xb6\xdd\x7d\x85\xc5\x8e\x80\x9e\xda\x76\x37\x83\x77\xd5\x2d\xf6\xff\x64\xf9\x7c\x0a\xd9\x44\x11\x1b\x3a\x2c\x06\x81\x59\xb6\x23\x4e\x56\x9d\x50\xb5\x05\x3b\x4a\xb4\x6a\xa0\xa6\xb6\xb8\x1b\x52\x6f\xe7\x6f\x86\x78\xbc\xd7\x7e\xb6\x5d\x3f\x20\x11\x52\x56\x04\x41\x22\xb9\x0a\x0b\xff\x17\xc1\xb5\x3f\xe3\x8f\xc6\xff\xb4\x0b\xf2\x2e\xf4\xef\x70\xea\xf5\xdc\x63\xc9\xc1\xf1\xbf\xc3\x87\xff\x3f\xd5\x52\xe3\xba\x9b\x17\xad\xd5\x02\xb9\xc2\x79\x9a\x28\xcd\xdb\x0e\x17\x32\x51\x8c\x65\x8f\x3a\x67\x0f\xc6\x5e\x8f\xf1\xea\xd1\x38\x5c\x55\xd3\x54\x53\x25\x78\xb6\x3e\x7f\x21\x57\x8b\x5a\x71\x8f\x22\xf3\x02\x23\x2a\xae\xcd\xe9\xb1\xab\x9d\x2e\xfb\x22\x9d\x6c\x8a\x59\xfc\xe5\x16\x08\xf9\xf3\x2c\xa9\x60\x4a\x95\x7f\xd3\xc0\x3f\x6e\xc2\xf1\x24\x52\xd0\x0c\x44\x83\x7c\x56\xcb\x61\x65\x0a\x22\x52\xca\x00\x49\x46\x29\x84\x3c\xe3\x42\xfc\x02\x1e\xaa\xa9\x51\x3e\xc1\xcc\x52\xc1\x03\x93\xc9\x47\xbd\x80\xd3\x04\xa3\x24\x5c\x69\xda\x92\xdc\x07\xfa\xe0\xef\x08\x32\xb7\x5c\x9c\x95\xe8\xdd\x08\xe9\x91\x6c\x44\x7d\xe2\x3f\x52\x66\x30\xd5\xe4\x32\xa4\x4b\x2f\x0c\x4e\xc6\x4f\x12\xd6\x64\x79\x55\xfe\xa6\xc0\xca\xee\x73\xf6\xa9\xbf\xc7\xaa\x6f\x1e\xf8\x9e\xf3\x5f\x9e\xb6\x2b\x7f\xae\x43\x83\x7e\x7b\x44\x44\x02\x68\x54\x03\xd8\x1a\xdf\x3a\x9d\x67\xd6\x21\x38\x88\x2e\x0b\x27\x2f\x75\xca\x5a\xbb\xb2\x15\x46\x82\xaf\xd6\x54\x26\xf1\x2c\x78\xb9\x53\x5c\x8c\xdc\x18\x8f\x96\xca\xf7\x53\xa0\x34\x60\x0b\x14\x45\xf6\xdc\x46\x89\xb1\xbb\x05\x60\x88\xc3\xf3\x20\x2a\xb2\x3b\x50\xa6\x70\xc4\xcd\x79\xcc\xfa\xd9\x7a\xea\xb2\x37\xc7\x27\x47\xfe\xbd\x88\x60\x81\x71\x1e\x43\x1a\x44\xb9\x1d\xb1\x34\xd0\xb2\x0d\xd2\xe1\xe6\x58\xd4\xae\x7b\x0a\x95\x08\x75\xc0\x48\xfc\xba\x80\xc8\xa1\xa2\x23\xb5\x49\x9f\x93\x0c\xb3\xf1\x65\x94\x58\x2c\xba\xc5\x90\xe5\xa9\x4f\x74\x4a\x4e\xc1\x62\x47\xde\x34\xe7\x14\xa2\x7e\x41\x18\x82\x3a\xb2\xd9\x58\x2d\x34\x24\xd9\x33\x1d\x43\x64\xd6\xe1\xd1\x55\x16\x55\x0d\x12\x0d\xb9\x43\x0a\x81\xec\x62\x26\x49\x9e\x1e\x74\x37\xeb\x40\x16\x3e\x04\x57\x56\x68\x81\x81\x75\x99\x58\xca\xb1\x61\x2a\xf9\x92\xc7\x86\x7f\x17\x33\xd4\x75\xed\x18\x72\x78\x9a\xe8\xe7\x5b\x31\x02\xdd\x8e\x90\xe6\x31\xcc\x0c\xc8\xda\x18\x23\x2f\x17\x5e\x86\x28\x59\xd8\x7e\x1c\x2f\xcb\xac\x79\xb9\x76\xb3\xac\x1d\xad\x4e\xda\x4c\x95\x0b\x1e\x70\x58\xad\xa3\x27\xf8\xce\xca\xd1\xd5\x17\xfb\xaf\xac\x3e\xb5\x21\x69\xe0\xa0\x00\x46\x27\x95\xd2\xba\x1a\x47\xaa\x14\x56\xd5\xa4\xa4\x81\x6d\x1c\xad\x69\x5c\xab\xd1\xeb\x42\x79\x2d\xc2\x88\x25\x90\x9d\xa7\x62\x7e\x60\x33\xbe\x47\x8b\x03\x07\x05\xed\x6a\x1a\xe0\xf5\xa2\xda\xc2\xee\x5a\x04\xf3\xb6\x86\x75\x86\x26\x3c\xc0\x50\x9a\xa0\x58\xd7\xc3\xc0\xd6\x25\x4f\xf4\x8d\x2e\x01\xf4\x69\x60\x3e\x50\x22\x23\x52\x2b\xe2\x9f\xae\xda\x23\xdd\xcc\x74\x5d\xbb\x9a\xa2\xad\x0d\x3a\xe3\xb2\x53\x80\x40\xee\xb8\x75\xd0\xb1\x6c\xe2\xad\x52\x1f\x08\x5b\xed\xcd\x00\x60\xf8\x65\xc1\x88\xa6\x90\xfd\x9e\x83\xed\x24\x70\xe2\xb9\x8b\xc6\xbc\x46\xd6\xc4\xc2\x40\x99\x94\xc8\x9e\x91\xea\x58\xd9\x8e\x34\x47\x25\x16\x46\x41\xfd\x74\x7c\xe1\x5a\xc0\x79\x55\xa6\x24\x15\x8c\x5c\x63\x3c\x7e\x32\x99\x2b\x89\x55\xa5\x79\x15\xdd\x01\x6a\x7c\xec\x0e\x8d\x00\x02\x1b\x8e\xf8\x1e\x18\x0e\xe6\x7a\x75\xc9\x7a\x1d\xc9\x96\x5a\x95\xb9\xe2\x66\x19\x06\x50\xa3\x31\x14\x1c\xb0\x84\xf3\x31\x0f\x9f\x4a\xa4\x93\x1f\x6b\x8a\x27\xc2\xcb\x76\x0a\x04\xd7\xaf\xd0\x42\xf7\x52\x20\x02\x8d\xcf\x38\x82\x1d\x41\xe0\xaf\x1a\x5a\x57\xf6\xcc\x55\xeb\xae\x85\x2f\x4b\x3e\x27\x02\x20\xa1\x32\xd8\x4d\x8f\x7c\x67\x45\xfd\x6b\x65\x0f\x77\x00\x3c\x46\x8d\x9f\xe2\x80\x89\x05\xa3\xb1\x44\x7a\x54\xbf\x0e\xaa\x68\xba\xc3\xee\x7d\xa6\x76\xa4\x77\x5f\x2e\x5e\xae\x3b\xa2\x9f\x7a\x28\xf4\x01\x50\x32\x57\xb8\x0a\x4c\x3b\x4e\x11\xcf\xf4\xb4\xee\xfa\x85\x06\x11\x95\x56\x5e\xb5\x9d\x3e\xa3\xfe\x10\x48\xed\xe0\x43\x02\x1a\x4f\x95\x32\xd5\x1a\x87\x63\xd8\x6b\xc9\x65\x65\x7d\x5a\x97\x9d\x95\x24\xac\xda\xae\xe9\x53\xbb\x33\x17\xd0\x46\x41\x36\x5d\x7c\xa0\xf9\x94\x9d\xce\xa7\xdd\x15\x8f\x47\x7c\xba\xbc\xa0\x71\xd2\xab\xda\x83\x8d\x97\x3e\xda\x75\x13\x01\xf2\x88\x73\x93\xaa\xe1\x58\x2e\x5f\xb2\x1d\x60\xc2\xfe\xea\x46\x5a\x0f\x94\xe7\x1d\x30\x5b\x59\x50\x43\x81\x5e\x26\x21\xe5\x6f\x4d\x8c\x5d\xd1\x92\xa8\xef\x5a\x3b\xfe\xf3\x5a\x52\x34\xde\x4d\xfb\xf2\x8a\x68\xd7\xac\xf7\x59\x5e\x60\xcc\xb0\xbf\x24\x86\x68\x95\xae\x58\x06\x84\x72\x03\x2c\x1b\x06\x75\x18\x2d\xb4\x3a\x17\x4b\xc5\x44\xc4\xf2\x11\x93\x87\x0b\x3b\x8b\xb6\x7c\x27\x94\x0a\xc4\x03\xf8\x27\x27\xa1\x90\x7d\x85\xd6\xb7\xa8\x82\x5a\x4e\xed\x46\xae\xd8\xe6\x51\x18\xb1\xac\x68\x80\x46\xa4\x2f\x32\x7c\xc3\x5d\x53\xf7\x37\x36\xf8\x7d\x84\x29\xaa\x14\x6e\xcf\xa4\xa1\x0c\x56\x27\x38\x5e\xcb\x62\xfb\x4d\xd6\x34\x09\x00\x96\xc0\x8b\x69\xdd\xdb\xae\xd5\xd9\x9b\xf8\xac\xdb\x75\x92\x31\xe5\xed\xb1\xf8\x49\x7d\x10\x7d\x58\xf6\x99\x0f\x0b\x3d\x90\xe9\xad\xd7\x3e\xe8\x2a\x65\x0c\x77\xed\xe2\x5f\xd8\x2a\xb0\x4b\xe1\x80\xe5\xa7\xfa\x29\xe7\x45\x29\x00\xb6\x46\x9d\xde\xe4\x2a\x16\x88\xa8\xdd\x1d\x94\x7f\x6d\x82\xfb\xd1\xd5\xd1\x27\x4b\x90\x53\xf6\x0b\x67\xc5\xbe\x09\x08\x5a\x89\xce\x8a\xe1\x47\x40\x02\x9d\x7b\x43\x27\x8f\xac\x03\x82\xfc\xdb\xa5\x18\xea\xe9\x6a\xf0\xfc\x50\x49\xc4\xc6\x3a\xd0\xb0\x26\xf2\x9b\xf0\x4b\xef\x23\xd9\x42\xc6\x13\x9d\x54\x10\xb6\xbe\xfe\x00\xc4\x0c\x53\xf2\x79\x3d\xf6\xfa\x86\x47\x55\x4b\xd8\xbf\x28\x40\x1f\x70\xef\x8e\xbf\xff\x06\x0b\x8b\x54\xda\xbf\x9e\x5e\x49\x67\xb5\x7d\xe4\x48\x3d\x48\x29\xe8\x6d\x67\x0f\xee\xef\x36\xe2\x29\x8e\x81\x61\xe0\x52\x3c\x27\xb7\x60\x18\x58\xf6\xd3\x2b\x5c\x5b\xb1\x1b\x25\x79\x81\xbe\x5a\x7c\x97\xe1\x09\xca\xec\x02\x35\xe8\xfe\x01\xa0\xa9\xf5\x43\xe9\x02\xad\xe8\x6e\xeb\x5b\xd7\xa7\x23\x20\x1b\xfd\xad\x66\xed\x4e\xdd\xa9\xe5\x42\x32\xdb\x72\x63\xcb\x17\xe5\x9c\x84\xa4\x1a\x2a\xdb\x95\xb7\xec\x30\x38\x5b\x41\x20\x4d\x07\xa8\x2b\x7a\x2c\x45\x36\xaa\x5b\xa5\xbb\x3e\xf4\x5c\xd1\x45\xb5\x4a\x4a\xa1\xaf\xa9\x5a\xd7\x0b\x4f\xb7\x1e\xda\x60\xa7\x0f\x9d\x15\xd0\x94\xa2\xeb\xa7\x4e\x1f\x3c\xbd\x27\xad\x40\x91\xff\xb5\x36\xc6\x3d\x3f\x56\x00\x3d\xb6\xd0\x10\x99\x1a\x94\xaf\xf6\x9e\x40\xce\x24\x7d\x55\x82\x13\x7b\x10\x33\x44\x61\xf5\x84\xe4\xef\x4a\xc4\xbb\xb2\x6e\x61\xc2\x1f\xe2\xb9\x48\xba\x83\xad\x93\x48\x6c\xb5\x08\x4b\xea\x32\x6a\x05\xe6\x06\x1c\x56\x13\x49\x14\x74\x6b\x91\xe7\xaf\x27\x01\x27\x76\xfd\x0d\x65\x17\x80\x93\x07\x03\xb4\xe2\x57\x52\x3f\x73\x63\x2b\x40\x95\x22\x81\xfd\x60\x00\x5a\x1a\x5d\x3b\x51\x51\x6a\x79\x2d\x55\xf7\xc1\xda\x19\x59\x68\xd7\xd2\x81\x5e\x33\x13\x49\xc4\xcc\xdc\xb4\x22\xf8\xc5\xa7\x12\xae\x01\xcf\xb4\x6c\xfb\x7a\x1c\x2f\x61\xd2\x07\xb7\x15\x3c\xf0\x36\xfc\x56\x85\xb0\xaf\xb8\x28\x4e\xd3\xb3\xdc\x23\x4c\xdc\x6b\x42\xbc\x18\xfe\x54\xc5\xb3\x9f\x82\xf4\x43\x80\x5d\x4b\x69\xdf\xd2\x8b\xb4\x96\xdb\x5a\x50\x61\xc3\x81\x57\x26\xd4\x5f\xb5\x1c\x02\xb6\xa8\x92\x73\xdc\x7e\x23\x39\xe9\xac\xe6\x17\x42\x31\x7e\x14\xe2\x0d\xde\xd9\xb1\x6e\x8b\x5e\x97\x05\x3b\x81\xad\x65\x8c\x4e\x22\xe4\x6b\xa2\x76\x42\x05\xe5\x2b\x59\xaf\x05\x18\xe7\xb3\x4e\x48\x27\x09\xbe\x45\xc8\x75\xb5\x85\xbe\xc9\xc2\xbc\x4c\x09\x60\x1f\x6f\x41\x24\x8d\xeb\xc3\xc1\xdb\x52\x12\xd7\xcd\x88\xe8\x38\x0b\x0c\x89\xc1\xa6\x92\x6c\x00\xdd\xd5\xfb\x43\x37\xb5\x36\xd1\x5f\xb0\x39\xca\x8f\x90\x25\xf2\x01\x8f\x9b\x47\x7e\x55\x73\xfa\xe1\xf2\xb8\x94\x6e\x23\x50\xb2\xb3\xe1\x71\x09\x5e\xf1\xeb\x3a\x4f\x8f\xb5\xc7\x85\x7b\x3b\x81\xd1\xcf\xb1\x0b\xe2\x48\xb9\x00\xaa\x3e\x62\x9a\xc2\x16\xf3\xfa\x76\x5a\xb3\xda\x09\x5f\x1f\x43\x1b\x54\x69\x8f\x0c\x7e\x07\x10\x1c\x19\x22\xbd\x94\x1a\x13\x07\x28\x4d\x60\x94\x21\x83\x0d\xd2\xc0\x4a\x27\x9e\x14\xd7\x4d\xa9\x19\x1b\xca\x7f\xf8\xfb\x5f\x04\x4c\xfe\x81\x3b\x10\x31\xf3\xfb\x40\xa4\x1b\xeb\x72\x5b\xee\x88\xa5\x17\xe9\x05\x5e\xa4\xca\xf1\x33\xe0\x3f\xf0\xa8\x47\x34\x19\xd5\xb4\xe9\x68\xac\x82\x0d\xe8\x10\x3e\x1c\x6e\xd4\x59\x01\xd0\x2a\xcf\xf6\x35\x95\x75\x6a\x8d\x49\x9b\xb8\xbc\x9a\x82\x54\x4b\x20\x96\xcf\x86\x74\x7c\xd6\x29\x43\x21\xac\x27\xad\x49\x9a\x56\x51\x8c\xba\xfe\x3c\xcf\x10\xff\xc4\x0b\xc6\xbc\xf0\x29\xfb\x25\x00\x1c\x3f\x86\x63\x37\x32\x96\x06\xe2\x4d\xf8\x1b\x72\x85\x69\xea\xfc\x48\xa4\x75\x7b\x40\x1b\xac\x69\x02\x55\xa1\x8c\xf4\xa6\x02\x9e\xd0\xab\xb3\x23\x3a\xb9\x61\xcd\x2c\x60\x1e\xb4\x2b\x5f\x71\x47\x7f\xd2\x59\x02\x00\x2a\x56\x71\xe1\x96\xe9\x74\x67\x20\xf5\xb8\xca\x35\x3e\xa3\x65\x9d\x89\x0b\x9c\x09\x60\xe2\x9e\xe5\xec\x36\x68\x73\xf2\xe1\xe6\xe0\x9b\xe7\x7d\x23\xb4\x79\xd1\xaa\x06\x50\xa0\x43\xbc\x33\x78\x8d\x2c\x0d\x33\xd2\x23\xa8\xf0\xa1\x71\x47\x5e\x98\x2c\x6c\x26\x5f\xa1\x95\x41\xdc\x14\x60\x4a\x65\x71\xc0\x7c\x59\xe6\x61\x04\x6c\x7f\x45\xad\xce\x50\x3d\xdf\x64\xcd\x46\xc9\xd5\xb8\x4a\xca\x8f\x49\x4b\xd9\x58\x6a\x23\x04\x1c\xc4\x5c\x48\xc4\x42\xb3\xb4\xb0\x49\xa8\x29\xfd\xde\x1c\x2f\xaa\xbe\xe2\xf5\x4a\x5e\x99\x95\xe7\xa8\x4e\x32\xf1\x56\x26\x20\x3b\xa3\x46\x99\x74\xf7\x5d\x25\xf2\x92\xc6\x20\x6d\x95\xd5\xad\xb3\x86\x49\xdb\xdf\x60\xa1\xe1\xfb\x82\xac\xd3\x58\x29\xa2\x6e\x3e\xc1\x41\xa4\xd3\xe4\x65\x3c\x13\x05\x9e\x19\xca\x33\xbd\x56\x83\xd8\x75\x3d\xdf\x82\x53\x99\x9f\x84\x81\x4e\x13\xf0\x70\xdc\x05\xf9\x08\x6d\x3d\x30\x14\xa3\x88\xec\x66\x11\x6d\x6d\x51\xe3\x50\xa9\xc0\x01\xc4\xa0\xeb\x2f\x97\xd2\x09\x47\x8f\x56\x13\xa1\x75\x48\xb1\x0c\x8f\xa6\x94\x7f\x36\x88\xa8\x08\x14\x32\x01\x26\x81\xb2\x47\xc4\x53\x21\xe8\x41\xbb\x98\xa6\x5a\xa5\xe8\x24\x20\xa5\xc2\xc9\x6b\xc9\x2a\xbc\xdc\x1b\xff\x57\xa7\x27\xef\x5a\x67\xe9\xd4\x05\xd7\xae\xe8\x36\xdc\x1e\x95\x4d\x1e\x98\x45\x8a\xf8\xea\x69\x8c\xa3\x85\x81\x02\x1d\x50\xc9\xdf\xf8\x68\xb4\x9b\x1e\x11\xc8\x5a\xac\x6e\x04\xf2\xc7\xba\x8d\x87\x5a\xab\xbd\x30\x5d\x28\x4c\x55\x13\x17\x2f\x65\x21\xea\x0e\x1c\xa9\xb7\x80\x25\x57\x72\x45\x24\xf5\x2c\x1a\xbb\x0b\x4d\x58\xfe\x29\x1c\x8c\x5c\x95\xd7\x98\xa6\x22\x4e\xec\x0e\xb3\x1a\x15\x27\x8b\x95\x86\x09\x18\x7d\x6d\xdf\xa6\xf2\x9c\x71\xda\xb1\x18\x24\x0a\xf5\xe4\x2b\x20\x2b\xf8\x50\xe4\x0a\x6a\xbe\xa8\x80\x16\xb2\x39\xec\x1a\x2c\x5e\xde\x3b\x4e\x8e\xca\xac\x1d\xe5\x02\x29\xcb\x33\x4b\x9f\x9b\x96\x5f\x7d\x95\xd2\xc4\x46\x38\xe8\x75\xa8\xac\x2a\x41\x1e\x93\x61\x22\x08\x8a\x4d\x47\xa6\xa0\xa0\x68\xa6\x30\x65\x05\x9b\x91\xb5\x0f\x0a\x32\x12\x3a\x11\x06\xa5\x1e\x39\x88\x85\x28\xf0\x82\xb4\xc0\xf3\x69\xe7\xf9\x56\x35\x17\xfa\x40\xae\xc6\x20\x26\x34\xd3\x07\xba\xb0\x8d\xf2\x4e\x45\x51\x8d\xbb\x22\x6b\xde\x70\xbd\xcd\x42\x6a\x86\x96\x56\x9e\xaa\x1a\x88\x65\x8d\x64\xbb\x32\xf2\xe9\xf4\xb6\xdb\x17\xfd\x53\xeb\xe6\x27\xf9\x1c\xb3\x10\x62\x0d\x2d\xb4\x05\x84\x26\x13\x02\xcf\x97\xc0\xec\xc8\x20\x96\x82\x36\x89\x6a\x10\x8d\x45\x13\x50\xc0\x38\x72\x4f\x8f\x21\x71\xc0\x4c\x93\xa6\xe2\xe8\x2a\x33\x0f\x92\xbe\x9c\x40\x7c\xa9\xbd\x52\xe3\x78\x35\xd3\xc1\xd2\x23\xc5\x58\x3f\x19\x87\xbd\x58\xd5\xdf\x17\x94\xb9\x8f\xa2\xf3\xd6\xcc\x19\x58\x9e\xcd\xbd\x09\x33\x64\x54\x26\xdb\x72\x25\x32\xa0\xa1\x53\x26\x80\x4d\xe1\xb1\x6d\x10\x93\x46\x89\xd7\x7f\xd5\x09\x28\xf0\x32\x0c\xd0\x66\xa8\xf5\x58\xad\xee\x2d\x92\x84\x14\x7f\x70\x56\xc5\x2b\xfb\x4a\x79\xd0\x3a\x73\x28\x85\xd8\xd5\x02\x2c\x89\x36\xf4\x04\xf6\xac\x20\x1d\xf2\x85\x99\xc3\x20\x70\xba\xa7\x57\x00\xbc\xce\x93\xdd\xc2\x1b\xa0\x7c\x81\x52\x9c\x27\xd5\x38\x79\x7e\xe1\xfc\xb5\x64\xf5\x6f\x68\x43\x40\x6f\x5d\xf0\xac\x75\xe1\x58\x29\xd0\x0e\x85\xc5\xbd\x46\x28\xb0\xc7\x80\xd3\x65\x7f\x13\x06\xec\x51\x76\x82\x01\xbe\x0a\x54\x8e\xac\xed\x66\xc2\xab\x58\xb2\x66\xf5\x6f\x76\xc3\xe3\x9c\x27\x61\x63\xfa\x3d\x63\x83\xb7\x64\xb1\x58\x01\xb8\x27\x60\x76\xe9\x3c\x98\xf6\xef\x63\xa8\xd0\xa2\xcf\x50\x7c\x16\x9b\x78\x7b\xb0\xaa\x29\x72\x25\x62\xec\x63\x6a\xe1\xfd\xf7\xca\x33\x43\xd3\xa4\x39\x19\xea\xa8\xd1\x60\xae\xd6\x3b\xf3\xef\x43\xcd\x6d\x0d\x4c\x6d\xa8\xae\x39\xf1\x22\x53\x1f\x2a\xf6\xb7\x31\xcd\xa1\x12\x45\xe5\xd0\xab\x94\x80\x2a\xdf\x5e\xab\x5e\x7e\x20\xf1\x7a\xf5\xc1\x02\xf4\xc7\xb9\x5f\x98\x90\x96\x61\xa5\x6c\x06\xac\x6a\x5c\xcd\x4d\xcb\xaa\xee\xf4\x9f\x68\xbc\xc6\x78\x32\x50\x2b\xaa\x5e\x44\x5d\xcc\x81\x97\xed\xf6\xc6\xec\xb2\x55\x77\x7f\xaa\xb7\x11\xde\x1f\x83\x21\xf7\x32\xe4\x15\xf8\x11\xae\x82\x38\x95\x7a\xec\xab\x3a\xab\x92\x63\x0a\x5e\x14\x85\x28\xca\x42\x29\xaa\x42\x16\x75\xa1\x16\x4d\xa1\x15\x6d\xa1\x17\xdc\x83\x26\x45\x5f\xd0\x2a\x97\x5b\xd1\x8a\x5a\xf4\x82\x2d\x46\x5b\x36\x07\xeb\x89\xaf\x32\xd3\x8c\x6b\xc9\x8c\x22\xd2\x9f\x37\x51\x34\x08\xa5\x6b\x80\xef\xdf\x35\xef\x2f\xce\x72\x82\xbf\x8b\xa2\xd6\x96\x30\x51\x00\x5d\xa0\x85\x97\x65\x30\x6c\x28\xf1\x6c\x3a\x7d\xeb\x95\x95\x5c\xb9\x71\xf3\xd5\x72\x0e\x64\x3f\x42\x5a\x44\xc3\xe4\x7b\x7a\x75\xd4\x14\xad\x95\xcd\x9c\xa8\xd9\x46\xcc\x6d\xb4\x92\xa0\x60\x28\xca\xf7\xe8\x72\x13\xfb\x64\x91\x0f\x75\xce\x16\x25\x41\xb1\xff\x39\x40\x3c\xac\x95\xd7\xa7\x4d\x9a\x4a\x8f\x40\xd7\x55\x47\x5d\x01\xdd\x78\xc2\x93\x45\xde\x85\x69\x72\xad\xe0\x87\xe0\x0f\x56\xe4\xed\x9e\x24\xba\x2b\xce\xcd\x11\x43\xea\x37\x3d\x3b\x4b\x48\xa5\xf7\x9e\x29\xac\x1a\xfd\x88\xbb\x8c\xaf\xa3\x2c\x33\x07\xd3\xd7\xeb\xf1\xe4\x6a\x2c\xee\x46\x69\xfb\x88\xba\x73\xf4\xa0\x86\xb3\x4e\xbb\x19\x60\xe5\xe4\xea\x7e\xd5\x5a\x87\xe2\x37\xcd\x46\x52\x19\x44\x11\xdd\x40\xf5\x3e\x09\xe9\x2b\xe2\xf1\x61\x74\xb8\x30\x3e\xa0\xde\xdf\xef\xdc\xce\xfe\x7d\xd6\xef\xf3\xfd\xae\x53\xb2\x5d\x59\xd4\xf0\x0f\x75\x03\x5e\x64\x5f\x4a\x35\x7b\xd7\xfa\x64\x52\x73\x63\x03\x40\xbf\xe5\xc2\x47\x5d\x49\x15\x75\x8e\x0a\xf8\xac\x82\x6b\x15\x15\xa4\xb3\xaa\xe5\x19\x0a\x7e\xa2\xb8\x06\xc8\x2a\x80\x2b\x3c\x68\x24\xb4\xd4\x50\xa1\x10\xce\x81\x40\x4f\x94\xec\xa5\x02\xbe\x0c\xa3\x94\x0f\xe0\x27\xae\x99\x74\xf5\x58\x85\xab\xc0\xca\x27\x26\xb8\xf0\x02\x89\x3c\x9e\x5a\xed\x2b\x77\xcd\xe9\xe9\xaa\x57\x50\xd9\x02\x80\x13\x13\xa0\x47\xb5\x56\x36\x01\x1c\x92\x60\x1d\x96\x38\x23\x9e\xe7\xc8\x90\xc4\x06\x8a\xbf\x12\x05\xd1\x30\xae\x6c\x7b\x48\x66\x72\x49\x54\x01\x9f\x7c\x98\x9c\x00\x6d\xdc\xa6\x6a\x44\x12\x8c\x6a\xc9\x24\x92\xd0\xc6\x9b\x14\x72\xe1\xaa\x74\x3a\xd1\x3d\x90\xe9\xc1\x12\x66\xa2\x82\xa6\x87\xa4\xf9\x5e\x62\x40\x60\x99\x30\xf5\x8d\x07\xdd\x12\xf1\xde\x3d\x93\xea\x39\x46\x63\xd3\x08\x2f\x34\x06\x9c\x78\xa2\x8e\xc2\x2a\x06\x87\x24\x28\x30\x89\x43\x10\x9e\xad\xb9\x3c\x24\x9a\x9e\xfc\x67\x0a\x2c\xa2\xec\x38\x60\x2a\x60\x61\x96\x6d\xca\x88\x30\x00\xa7\x3e\xe7\x2a\x66\xc2\x19\x6b\x13\x6d\x02\x23\x8e\x58\xb7\x68\x03\x18\x71\x54\x6a\x1a\xad\x01\x80\x89\x05\x90\x63\x37\x68\x15\x82\x41\x38\xf8\xa8\xa8\x6e\xc4\xcb\xd7\x78\x59\xa9\xfa\xd5\xe8\x5a\x08\x59\x61\x69\x0c\x0e\x48\xa0\x3b\x8c\x89\x78\x9d\x5f\x16\x32\x5f\xdf\x62\x0e\xd7\xb6\x16\x87\xf6\xe9\x0f\xae\xe5\x1c\x50\x4d\xfc\x5e\x36\xea\x29\x2d\xf0\x9b\x9a\x5b\x18\xf2\x57\xa8\x12\x2d\x85\x4c\xf1\xc2\xc7\x23\x71\xb4\xf5\x49\xdd\x29\x3b\xfe\xd9\xed\x73\x5c\xc5\x32\xc8\xfc\x4b\x9b\x3e\xb3\xa8\x0b\xb2\x3c\x9e\x26\x4b\x02\x42\x9e\xe4\xb1\x04\xa5\x62\x11\x83\x70\xdc\x16\x5b\x44\x13\xf4\x44\xeb\x2d\x0e\x38\x60\x1c\x78\x62\x27\x21\x85\x7b\xa2\x11\x74\x3e\x58\xa3\x77\x0f\xb0\x67\x51\x69\xc1\x56\xcd\xd7\x5a\x98\x94\xf9\x56\x13\xd5\xcf\xaa\x98\x7b\xc5\xdc\xd1\xcd\xe1\xa4\x0c\xa2\x9f\x8d\x09\x41\x0a\x18\x2e\xb6\x0b\x41\x03\x94\x7e\xe5\x17\x8e\x34\x42\xcf\x1d\x13\x33\x03\x89\x0c\xea\x7d\xc6\xc2\x15\x8e\x14\x35\xc0\x29\x78\xc0\xd2\x54\xdf\x77\x8f\x81\xc5\xea\x3e\x91\x17\x1c\x68\x26\xd2\xe6\xbe\xbb\x13\x1b\xac\x00\x25\x04\x8d\x50\x8c\xc0\xe3\xc8\x2e\x9b\x1e\xda\x83\x8c\x8b\xe7\x70\x02\x53\x67\x92\x0b\x4d\x34\xf3\x04\x33\xbd\x68\x4e\xbb\x36\xf0\x03\x00\xd5\xff\x86\x8e\x61\x26\x04\xcd\xee\xba\x61\xcd\x95\xdc\xaf\xec\xbc\x49\x62\x30\xec\x1a\x49\xc6\x34\xf3\x8b\x68\xac\xda\xc6\x3c\xd0\xc4\xe9\x4d\x13\xce\xca\xa4\x55\x35\x5c\x07\x40\x2c\x5f\x87\x02\x08\xe0\x4e\x3b\x23\x87\x70\xdb\x95\x56\xcc\x85\xf9\x73\x76\x19\xdc\x5e\xa6\x3b\xae\xce\x5c\xbb\xfd\x15\x12\x5f\x53\x33\x47\x4b\xf4\x2d\xbb\xdb\x24\x75\x7c\xe9\x12\x1d\xab\x41\x9d\xc3\x1d\x18\x32\xcf\x91\x1f\xcc\x2c\x93\x29\x0a\x6b\xad\x3a\x7a\xed\x39\x42\xc8\x97\x2f\x1a\x0a\x58\x19\xaa\xee\xd2\x6a\xfd\x3a\x0e\x9a\xb7\x6d\x14\x00\x7f\x02\x69\xa1\x93\x12\xc3\xec\x19\xb8\x64\x10\xaf\xd0\x0a\xa5\x0f\x6a\x34\xff\x65\x47\xef\x52\x09\x18\x07\x86\x1a\x6c\x68\xdf\xdd\xf7\xb7\xfb\x70\x6b\xbe\x5a\xe9\xa9\x9e\x91\x90\xe4\x2c\x01\x0f\x03\xe9\xb2\xef\xa2\x41\xe2\xc0\x13\xc7\x88\x18\x44\x11\x21\x75\x52\xc5\x65\x3f\x89\xc7\xa0\xd5\xc3\xd9\x3b\xd5\x05\x10\x5d\xb6\xf5\x2a\x48\x51\xbb\x6a\xf9\x05\x87\xb3\x3e\x36\x54\x24\xa3\xa7\xcc\x52\x20\x6d\x76\xe9\x3b\xf0\xac\x2d\x85\xc5\x82\xc7\x9f\x7a\x53\x10\xb2\x01\xd1\x4f\x9d\x66\xf4\xb3\x49\x6b\xa5\xa6\xa3\x27\x25\xe8\xcf\x5e\x9b\x63\x60\xf4\x39\xfc\xf3\xee\x09\x4d\x1e\x98\x0e\x57\xed\x83\x16\x6d\xd1\xa1\x6c\x0b\xf4\xf8\x89\x3e\xa2\x45\x9e\x36\x05\x2c\x35\x1d\xf5\xab\xb7\xf5\xb6\x44\xa8\x8a\x30\x20\xf7\xa8\x5f\x1f\x1c\x5d\x7a\x9e\xee\xf2\xfb\x69\xe5\xf0\x56\x64\xf7\x71\x62\x6a\xab\x27\x75\xdb\x63\x1d\x45\x2d\x10\x50\x31\xf5\x99\xd0\x3a\xdf\xe2\x1c\xea\x13\x93\x94\xa9\xe5\x8a\x35\x2c\x98\x04\xd0\xba\x6a\x59\xf0\xb3\x46\xa2\x58\x59\x8c\x70\xd7\x22\x64\x19\xe2\x55\xd1\x35\x3d\x30\xca\x0c\x5b\xd4\x7d\x2a\xa2\x33\x51\x14\xea\xf5\xa0\x10\xbd\x82\xba\x86\x3e\x8b\xa3\x69\x71\x8a\x68\xc6\xc5\x37\x61\x17\x5b\x01\x0b\xd9\x27\x84\xf4\xf7\x9b\x09\x2e\x64\x24\xb0\xdf\xce\x5c\x5c\xa2\xbf\x0c\x53\xb8\x20\xc8\x37\xd0\x7e\x53\x5c\xad\x39\x7d\x6c\x1d\xe1\xc6\x4c\xef\x65\x1c\x38\xdf\x9a\x6e\x59\xdb\xd6\xa7\x8d\x83\x88\x98\x4f\xff\x3e\x53\xa2\xd4\x4d\x6d\x2f\xbb\x25\xfe\x34\xc2\xaa\xf9\xb5\x15\xe5\x5b\x9f\x2d\xc8\x48\x17\x6f\x02\x6e\xa4\x24\x90\x4d\xa4\x62\xf9\xb7\xd2\xa6\x19\xc6\x91\x17\x46\x4f\x84\x86\x42\xe3\x42\x3e\xc3\x2b\xaf\x72\xfa\x0c\xe3\xdc\xab\x99\xd6\xb7\xd6\x5f\x49\x88\x7c\x4c\x40\x76\xb1\x58\x13\x78\x68\xb5\x02\xee\x03\x34\x6b\x7b\xac\x7e\x78\xac\x7c\x78\xcc\x4e\x44\xec\x5c\x3b\xa8\xfc\xe9\x65\x6f\xc4\xbe\x53\xbf\xa3\xc1\xd9\x80\xde\x0d\x6f\xc9\xcc\x92\xf3\x97\xd1\x65\x22\xc0\x1f\xad\x1f\xfa\xa3\xf5\xda\x1f\x61\xaa\x78\x0c\x7c\x4a\x48\x1b\x2a\xbf\xea\xd1\x2b\xc3\xa8\x1e\x78\x25\x2e\xe1\x35\x5f\x95\x0f\x61\xbb\x64\x90\x5b\xcb\xb0\xc6\xa6\x9c\x45\x57\xcf\x32\x3a\x80\x0e\xcf\x9c\x9d\xc2\xe1\xf4\xf4\x36\xb2\xee\x75\x64\x3c\x7f\x6b\x03\xeb\x53\x06\xef\x4d\x6c\xf5\x6d\x5d\xe2\x86\xd0\xb8\xd6\xfa\xfa\xdd\x87\xf0\x59\xe8\xcd\xac\x29\x4d\xab\x29\x3b\x4b\x61\xd9\xd5\x49\x51\x0d\x4e\x6e\xe4\x37\x43\xf9\xd1\x9f\xfa\x9d\xc7\xcd\x60\xed\x4b\x16\xa4\xef\x40\xbe\xa9\xf8\xd2\xce\x10\xd8\x05\xff\x7c\xe1\xfc\x25\x41\xea\xca\xfe\x4f\x67\xb1\x59\xb2\xfd\xe5\x3d\x23\x52\x20\x48\xc8\x6d\x1a\x84\x9c\xf6\x22\x72\x38\x2b\x56\xd7\x14\x30\x7f\x4c\x44\x51\x6d\xbe\x81\xa7\x98\xba\xbe\xe6\x58\xb5\x2c\x77\x54\xff\x1b\x5b\x85\x92\x30\x9e\x2f\x53\x9c\x28\xa3\x48\x32\x9a\x3e\x92\xea\x84\x36\x88\xc3\x98\x30\x73\xb3\x6d\x26\x46\xae\x01\x53\x90\x69\xed\xc5\xc9\x0a\x31\x41\xf7\x59\xab\x4a\xee\x4b\xe2\x35\x7e\x89\xfa\x2e\xd4\xdc\x75\xc0\x22\x54\xab\x47\x24\x62\x55\x64\x3a\xf3\xfe\x50\x77\x9f\xff\x19\xf6\xa7\xac\xd2\x4c\xe1\xc8\xb3\x06\x14\x7d\x5c\xe2\x33\x1f\xa4\xa9\xe8\x37\xfa\xc7\xde\x53\x57\x6a\x68\xfe\x34\x58\x3f\x01\x4e\x60\xcc\x25\xd7\x85\x7c\xb4\xc1\xa5\x78\xbe\xa9\xec\xee\x37\x35\x84\x47\x5f\x86\x0c\xb4\x1c\x9c\xc4\xa5\x44\x59\x6a\xeb\xec\x79\x9d\x0d\x5e\xfe\x3c\x75\x1b\xbe\xb6\x25\xcc\x79\x24\x67\xbc\xf2\x3a\xc9\x58\x8b\x7b\xd1\x37\x74\x3b\xbf\xf9\xbc\xb6\xe4\x10\x52\xd9\xc3\x26\x27\xd6\x06\x9e\xbb\x20\xd1\xf9\xf9\x2f\xfc\x6e\x7f\xe8\x9c\x20\x10\x61\xb8\x2e\xf2\x2c\xa9\x35\xbf\x31\x86\x62\x60\xf6\xf4\x89\xc4\x97\x7c\x82\x17\xcc\xb0\x0f\xf5\xb4\x1d\xe6\x44\x02\x85\x7f\xa2\xdc\x42\x2e\x12\xd6\x09\x0d\x89\x33\x05\xb4\x58\x90\xae\x25\xbe\x8c\x3c\xbc\x92\xca\xb2\x32\x5b\xf6\x99\x6f\xc7\x5b\x0f\x68\xed\xd6\x29\x13\x8e\x23\x34\x34\x97\x79\x93\xe3\x2f\x83\xb5\x79\xe9\x1f\xfe\x40\x9e\x4a\xf0\xfa\x57\xb5\x97\xb3\x28\xd7\x90\x1c\xa2\xb3\x7d\x27\xbe\x32\x1a\x8d\x22\x67\xf2\x61\xc7\x3b\xec\x7f\x7c\xa2\x83\x72\x9d\xf3\xfe\x60\x78\xeb\xf7\x51\x15\x25\x68\xa3\xb9\x61\x75\xdd\x18\xa8\xa6\x3b\x4e\x36\x27\xc1\x4d\x33\x9f\x2e\x6b\xf6\xe7\x6b\xf9\xa9\x89\x70\xc8\x99\x04\x33\x41\x0c\x00\xe5\x48\x7f\xc9\xcf\xdb\x5f\x82\x8b\x85\xfa\xf6\xd3\xbc\x3c\xce\xdf\xba\x8f\xb0\x9d\x9e\xdd\xd5\xbd\x10\x0c\x0f\x60\x6e\x7e\x62\x02\xed\x75\x61\xff\x63\x7c\xf6\xb0\x93\xbe\x72\xb6\xcc\xa2\x9d\x85\xff\x19\x4e\xdd\x84\x93\xc9\x38\x7e\x75\x5f\x35\x9e\xc8\x91\x79\x60\x2f\xab\x73\x00\x2c\x1d\xae\x68\xda\x5d\xe1\x64\x72\xed\xc9\x21\xb5\xfd\x5c\x95\x25\x25\xe9\xf4\x04\xf8\x97\x90\xfa\xf1\xf6\x7f\x5b\x88\xaf\x0a\x28\xea\x5f\xbc\x5a\x32\x6a\xac\xfb\xc6\xd6\x7d\x72\x63\x6a\xba\x40\x8c\x75\xd0\xde\xe8\x40\x34\x56\xb5\x0e\x78\x95\x4b\xf3\x93\xde\x64\xb1\xd4\xde\x4e\xab\x9b\x75\xf6\x04\x71\xd3\x9f\x92\xaf\x30\xb6\x35\xe2\x99\x4f\x2b\xe0\x56\x8e\x47\xa3\x31\xef\xcd\xde\x73\x9a\x91\x39\x3d\x6f\x7e\x1f\xf3\xb7\xe2\x7f\xcc\xb1\x07\xe7\x7b\xc5\x2f\x18\xa7\xd2\xfb\x06\x82\x7a\xba\xdc\x54\x70\x53\x61\x70\xf5\xaf\xe8\x99\x79\xb8\xa4\x73\xe7\xc5\x45\x63\x67\x43\x74\x62\x2a\x78\x1e\x70\xd0\x3b\x96\xa3\x7a\xaf\x59\x11\x95\x7a\x39\x0b\xb1\xd6\x69\xa8\x8a\x81\x56\x7a\x28\x60\x3d\x98\xe2\xdb\x3d\x09\x79\x3a\x47\xd9\xaa\x0f\x86\xa3\xed\xe2\x7e\xf4\xc5\xc1\x6e\x62\xd5\xec\x10\x59\xdb\xea\xf1\x19\x75\xe0\x79\xdb\x9f\x9b\x6f\x3c\x7d\x68\x7c\x44\x7c\xf9\xcb\x03\x35\x57\x42\xa8\x67\x30\x82\xf4\xe2\xcf\x9e\x39\xb7\xcf\x0c\xa7\x23\x0c\xdc\xb7\xd7\xfe\x47\xa6\xb4\xa7\xb4\x9d\x95\xd7\x9d\x6e\x66\x87\xb1\xc7\x45\xa6\x2d\x4a\xc8\x97\x34\x14\x4b\x23\x27\x77\xac\xcf\x24\x9f\x61\x9e\xfa\xe4\x21\xb7\xc6\x4b\x08\xcd\x49\xe4\x4a\x7c\x29\xb4\x92\xd7\x2a\x6e\x21\x1d\x42\x72\xd0\x2a\x00\xa9\xb8\xd3\x86\x0d\x3e\x91\x2a\x30\xf0\x49\xea\x92\xde\xd7\x75\xa8\x8c\x6b\xf3\x13\x83\x62\x01\x4f\x7f\x52\x67\x53\xc4\xab\x53\x6d\x15\xe9\xff\x07\x2a\xaf\xe4\x00\x37\xc9\xef\x8a\x86\xb1\xc6\x6c\x00\x74\xb9\xbe\x6c\xe6\x79\x2b\x14\x58\xd1\xfc\x73\x24\xcf\xe7\x67\x04\xb2\x6e\xaa\x0a\xa2\x13\x4e\xbd\x26\x33\xc9\x60\x25\xd8\x21\x1c\x75\x60\x0c\x7e\xfe\x31\x2b\xce\x5e\xdb\xf3\x62\x85\x36\xd2\x3e\x4f\x94\x8f\x5a\x09\x67\x26\x4b\xc5\xb2\xd6\xc5\x56\x09\x9f\x30\x3b\xc6\xda\xe7\x07\xca\x5a\x49\x0d\x5b\xc6\xe6\x42\x95\x44\x3d\xec\xe1\x5a\x60\xf9\x8c\x14\x04\x94\x45\xd0\xb3\x3f\xbd\xe9\x24\xa7\x0e\x9c\xa9\xab\x10\xe6\x30\x2e\x4a\xdb\x31\xdb\xc8\x64\xb5\xe6\x58\x9e\xf8\xe2\x44\x99\x55\x3a\xaf\x5d\x6c\xb1\x4d\x21\x75\x24\x23\x7e\xd1\xe4\xb6\x9e\x49\x0c\xb0\x80\x7b\xcb\x3e\x9d\x15\x4e\x52\xe0\x32\x66\x73\x22\x71\x13\xb1\xb2\x60\x54\x94\x76\xaf\x33\xab\x30\x51\x9e\xd7\x27\xee\xce\xcd\x2e\xa7\x4f\x31\x67\xa8\x49\x55\x50\xe5\xea\x32\xff\xab\x09\xd3\xfa\x8c\x17\x67\x26\xeb\xe2\x8c\x30\x3d\xcf\x17\x67\x4e\x27\x9f\x6b\x00\x41\x27\xa0\x3a\x05\xeb\xec\xcc\xa7\x27\x0b\x6c\x4f\x01\xdb\x53\x28\x2e\x4e\x0a\xae\x6f\xf7\x22\x07\x2f\x4c\x50\xaf\x55\x3a\x8d\x32\x15\x5c\x23\x9e\xdc\x7e\x58\x61\xc7\xd9\x13\x93\x99\x79\x40\xe3\x2c\x24\x59\xab\xaf\xe7\xb5\x38\x8d\xee\xeb\x2f\x4e\x11\x00\x6a\xf6\xa9\x31\x06\x3a\x09\x9c\xcf\xd8\x86\x7d\xa5\xe3\x7a\x6e\xdb\xae\x82\xe5\x3e\x99\xf7\xa7\x50\x75\xf8\x75\xa8\x29\xa5\x9a\xd4\x2a\x05\x70\x19\x6d\x21\x78\x24\xa3\x89\x9b\x01\x91\xb9\xb1\x8f\x13\x87\xa7\x49\xba\xbb\xf5\xda\x9f\x92\xe7\xa7\x51\x20\x6f\x83\x50\x48\x98\xb1\xa1\x37\x85\x6f\x5c\xe6\xd9\x43\xe2\x4a\x5d\x3c\x02\xe1\x2b\xa0\x7c\x1e\x87\xc7\x58\xed\x9e\xd3\x29\x80\x3f\xd9\x27\xbc\x08\xc7\x53\xbc\xc6\xf4\x30\x5f\xae\xf5\x22\x41\xc5\x1e\xb6\x6e\x73\xb2\xb6\x93\x59\x74\x6a\x62\xbd\x68\xe5\xf4\x7b\x58\x84\x42\xba\x47\x23\x6b\xfc\x54\x99\x99\xf7\xe6\x3b\xb7\xf0\x86\xd3\x6b\x92\x17\x1a\x45\xe2\xd8\xab\x87\x39\x62\xfb\xac\xe1\x32\xaf\x50\xda\x7c\x5b\x11\xd3\x53\x31\xd2\x75\x84\x9c\x44\xa1\x97\xdb\x5f\x04\x06\x46\x7b\x43\x3f\x55\x1f\x8b\xd9\x3f\xa6\xea\xbc\x42\xc3\x00\xc2\x29\x2d\x43\xc4\xbf\x0c\xde\x93\x75\x1a\xb9\xcc\xf1\x5e\x65\xee\x69\x42\xf4\x33\x08\xa1\x0d\x7d\x16\xf8\x60\xcc\x94\x23\x24\x67\x31\x9c\xbb\x5a\x88\x56\x48\x74\x75\xcb\x14\xca\xc4\xea\xf2\x1c\xc9\xb7\xb7\xba\xe6\x4d\xe7\x02\x1a\xed\x95\xe8\x78\x6e\x9b\xdc\xe6\x1e\x37\xdc\x8f\x14\x4c\xc5\x8f\x4b\x94\xf5\xe7\xc2\xb2\xac\x6e\x8b\x3c\x61\x9d\x5d\xbc\xcb\x67\x5c\xff\xa3\x18\xeb\x78\x26\x64\x39\x72\x70\xab\xa8\x0f\xa8\x82\x86\x5c\x35\xea\xbd\x94\xa8\x0d\xfd\x48\xb5\xa0\x65\x8a\x06\x9e\x94\x97\x19\x27\x00\x0c\x95\x9e\x5f\x63\x1d\x6c\x96\x71\xab\x38\xaa\x1e\xad\xd9\x6b\xcb\x7f\x71\x44\x81\x77\xa1\xaa\xa0\x39\xad\xc2\x95\xfd\x45\xa6\x88\x79\x7b\x95\x2f\x5c\xcb\x04\x57\x62\x63\xac\x74\xa6\xd5\x97\xe9\x9a\xf7\xb9\xea\x90\xa8\x61\x50\xd5\x9c\xca\x0c\xde\x6f\x3f\x5e\xc5\x20\x02\x73\x50\xd0\x8c\x1e\x93\x0b\xe7\x6a\x77\x78\xbf\x48\x52\x57\x86\x56\xc3\x4e\xef\x85\x45\x08\xf9\xc9\xa1\x90\x32\x19\x96\x2b\xa0\x51\x1d\x3d\x57\x70\x15\x8a\xce\x0b\x66\x02\x57\x43\xd0\x4b\x65\xc8\xf6\x8c\x00\x9e\x5c\xf0\x4d\x48\x65\x5f\x01\xce\x68\x4c\x80\xf2\x02\xfa\x02\xb4\xd8\x28\xc2\xee\x69\xa3\x32\xe0\x66\xa4\x89\x11\xb9\xd6\x16\x0e\x75\xd9\xa8\xf5\xd3\xc4\xa2\x03\x83\xb1\xf5\x4a\x44\x48\x30\x3e\x4e\x6a\x64\x12\xa3\xda\x7d\x61\xc7\x07\x1f\x2d\xa6\xf1\x35\x67\xa2\x3c\xdf\x82\xaa\xa6\xa9\xe5\xee\x07\x8e\x29\xfa\x37\x41\xb7\x52\xf2\x82\x46\x15\xa8\xac\xc0\x4d\x64\xb5\x7d\xc4\x47\xe1\x87\x37\x7a\x7f\xc7\x88\x7f\xd9\x0a\x16\x3d\x54\xc7\xe2\x47\x5e\x2b\xef\xf8\xa1\x55\x9a\x52\x7b\x05\x3d\x3a\x1b\x76\x96\x0a\x4f\xa5\x85\xe4\x78\x8d\xa4\x3a\x34\x56\xa8\xe2\x6e\x74\xd5\x85\xe4\xed\xf7\x42\xf6\xf3\xdd\x25\x81\xac\xde\xaf\xfd\x75\x22\x60\x2b\x61\x2f\x98\x44\xd7\xae\x0e\x46\x6d\xe0\x17\x90\x23\x29\x51\x37\xa4\x42\xad\x25\x1d\x4e\xba\xbc\xd9\x6e\xee\x93\xce\xa3\x9b\xe4\xb5\x0c\x88\x8d\x60\xfa\x8e\x2d\x9f\x8f\x33\x8d\x7f\xd9\xf6\x6a\xaf\x08\x44\xd4\xf7\x50\x66\x5c\x4b\x65\xf1\xab\xff\x6e\x70\xc3\x94\x61\xf6\xda\x9e\x81\xba\xfe\x15\xf6\xbc\xfe\xcb\xf6\xa2\xcf\x94\xb5\xf3\x83\xc5\x97\x91\x68\x98\xb1\xee\xa6\x28\x79\x1d\x41\x7b\x35\x7e\xc6\x42\x6c\x7d\x15\x03\x15\xec\x68\xb7\xc3\x13\xba\x6e\x70\xc5\xf7\x7c\xd5\x45\xf8\x11\x06\xd9\xef\x8a\x85\xfa\x62\x63\x29\xe6\x27\xba\x79\xf6\xc8\xa3\xdf\xdc\xd7\xe9\x85\x49\x2c\x71\xc2\x6d\x7c\x87\x2f\xa7\xae\x84\xba\x99\x64\xaf\x46\xb7\x85\x72\x32\x96\x39\x4c\xf6\x02\xfe\xab\x46\x58\xc8\x50\x22\x6a\x56\x8c\x10\xb9\xe2\x5f\xf6\x6a\xdd\x47\xa0\x6a\x69\x1f\xd8\xa6\x25\x97\x26\x0e\x91\xdb\xf2\xc8\xf1\xba\xd8\x01\xd7\xe5\x8e\x57\x9c\x46\xf0\x96\x03\x2e\xdf\x30\x86\x3b\x0e\xf5\x32\xde\x9e\x3c\xde\x54\xf6\xb8\x48\xd3\x08\x46\x6c\xed\xa9\x99\x64\x2f\xbf\x11\xd5\x8a\x51\x75\x66\xf2\x3d\x36\x72\x12\x85\xee\x33\x3e\x2c\xcb\x0b\x08\x8c\x64\xbb\x66\xb6\x70\x55\xf3\xf2\x21\x2f\x05\x30\xf2\x06\x11\x62\xe2\xdd\x2e\xcf\xea\x5c\xe5\x55\xbf\xd7\xae\xd5\xfc\x87\xb5\x64\x6a\xcf\x33\x28\x5c\x78\x04\x13\x9d\x19\xbe\xa5\x0c\xfc\xe6\x37\x3f\xf9\x2d\xaa\x14\x0a\x7e\xbd\x8b\x71\x23\x1c\x8d\xed\x75\x84\x64\xa8\xdc\x72\x53\xa5\x35\xb0\x28\x35\x7f\x81\xce\xee\xb9\xb0\x96\x8e\x94\x35\xd5\xba\xc0\xa9\x5a\x59\x81\x23\xb8\xd5\x01\x02\x4b\x9d\xde\xee\x94\x3c\x76\xd4\xf5\x54\x36\xa8\x2a\x49\x65\x13\x15\xf6\xa8\x5f\x58\x41\x4e\x7c\x55\x05\x8f\xca\xcc\x2f\xe5\x19\xdf\xd7\xb3\xa3\xde\xcc\xf2\x29\xa3\xfe\xbc\x76\x3b\x05\x20\x02\x9f\xad\x1d\x08\x80\x82\xe0\x4e\xd4\xf4\x7e\x81\x41\xa6\x57\x0e\x36\x6c\x05\x46\x86\x7a\x57\x41\xa5\x68\x15\x01\x74\x08\xab\xdb\xe4\x6e\xff\xd6\x93\x21\x15\x10\xd5\xe9\x27\x51\x56\x96\xbf\x3c\x84\x6f\x45\xfa\x54\x41\x00\x31\xc8\x30\x8e\x8e\xb6\xd4\xe8\x8a\xbf\xc6\x5e\xec\x7a\x90\x8d\x43\x2f\x1d\xe4\xf4\xc7\xf2\xcd\x46\x42\xaf\x78\xeb\xf6\x53\x7a\x11\xaa\xab\xfa\x53\x0b\x7a\x08\x64\xa3\x7c\xfa\x1b\xe6\x58\x95\x2b\x2a\x26\xaa\x92\x7e\x96\x97\x27\xfb\x74\x04\xcc\xc6\x3d\x3c\x64\x6d\x37\x7d\xfc\xf4\x82\xea\x38\x84\x88\x72\xe1\x96\xdc\x98\xdc\x0d\x86\x8d\x0c\x6c\xc7\xa5\xa9\xfe\x90\xe0\x30\x52\x7d\x31\x7e\xa6\x88\x44\xde\xf6\x46\x15\xec\x6e\x43\x9e\xbf\xfb\xd3\x16\xbb\x70\xbd\xf8\x3d\x3f\x3a\x77\x57\x6c\x91\xe8\xc3\x6b\x6b\x82\x8a\xe7\xc3\xfe\xfb\x16\x92\x03\xc5\x70\x55\x5d\x4f\x5b\xdb\xb8\x76\xdc\x53\x3b\x4d\x0d\x32\x02\xc9\xb5\x8b\x0b\x83\x76\x1a\xf0\x92\x00\x02\x2e\x1c\x94\x19\x5c\xaa\x12\x66\x3a\x45\x3c\xdc\xbf\x90\x37\x87\x14\x35\xdc\x5e\x4f\x12\x12\xa6\xe2\x9c\xff\x60\xf1\xba\x01\x44\x4b\xc4\x4a\x36\x85\x40\x9a\x57\xfe\x97\x6c\x22\xc6\xd5\x55\xaa\x8e\x5d\x4d\x0e\xd1\x7b\xbc\x34\x91\xd5\x77\xe5\xdd\x53\xd6\x1a\xee\x06\x4a\x6f\x36\xa6\x0f\xcc\x2b\x58\xd5\x6c\x33\x8f\x1a\x24\xac\x9c\x0e\x2d\x14\x15\xa6\xee\x23\x8c\x98\xef\x96\x76\x1d\x0e\x5c\xfc\x33\x9b\x9d\x72\xc9\x05\x59\x4d\x2e\xbf\xe7\x65\xd2\xab\x78\xa3\x17\xd5\xc1\x96\x5f\xb2\xdd\x3a\xe9\xce\x92\xfd\xd1\xfb\xb3\x82\x48\xe7\xfc\xf0\x16\xd1\x14\xfa\xa6\xeb\x5e\x48\x90\xd4\xb7\xa6\xcc\xb9\x9f\xb1\xee\x5a\xcf\x01\xa4\xfc\xd9\x6c\xd7\x19\x60\x7e\x56\x6b\xfe\xd1\x83\xf7\xa2\xf0\xc1\xb0\xfe\xb4\x10\x75\xab\x5e\x59\x9b\x8c\x1a\x35\x43\xe1\xf9\x9b\x4b\x34\x1d\xcd\x08\x17\xd2\x6c\x9d\x20\x04\xaa\xc8\xe2\x95\xfc\xc4\xae\x26\x73\xc0\xd7\x53\x3d\x4b\xdb\xea\xc6\x71\x79\x10\x48\xc6\xe2\x14\x31\x4e\xd2\x02\xf1\xc8\x23\x9e\x3e\x10\xe0\xc3\x56\x94\x05\x16\x69\x7c\x1a\x84\x19\x13\xb6\xd4\xec\x6a\x94\xfd\xf9\x9c\xe5\x42\x2d\xfb\x73\x0f\x13\xf6\x1d\x55\x07\x9c\xa7\x18\x5f\x98\x19\x16\x19\x28\x03\x6d\x8e\x73\xa7\x81\x73\xac\xac\x1f\xe0\x89\x86\xcf\xa5\xf6\xa3\x09\x7e\x37\x3d\x35\xb7\x45\x8f\xc4\x4a\x33\xd8\x4e\x29\xd9\x2c\x8f\x92\x67\xec\x10\x2b\x28\x2b\x1c\x1c\xb4\x00\x04\xa7\x14\x19\x71\xc5\x39\x7a\x20\x63\xed\x01\x5f\xa9\x23\x49\xe0\x15\xd7\x4b\x5f\x10\x3f\xd1\x51\x09\x14\x44\xbd\xbd\x0c\xda\xcb\x72\x73\x15\x2f\x23\xde\xf9\xc9\xc4\x07\x0f\xf2\xdf\xd1\xb0\x1e\xa1\x2a\xde\x2c\x44\x05\x65\xe7\xa7\x23\x3e\xea\x54\x09\x1e\x45\x66\xe9\xa1\x69\xd1\x4e\x6d\x26\x30\x37\xb3\xe4\x46\x8f\x44\xc8\x6c\x68\xed\x85\xe8\xd4\xc8\x54\x85\xe5\xca\xcc\xb1\x10\x4a\x0c\xa0\xc4\xea\x99\x29\x01\x53\x60\x68\x3d\xb8\x2c\x24\xf9\x76\x41\x08\x27\xd2\xd0\xba\x3e\x7e\xf6\xbb\x8e\xeb\x3a\x85\xf9\xf1\x66\x82\x84\x1e\x07\xaa\x48\xc5\x65\x0e\x02\xf0\x6f\xe5\xf2\x7d\xfb\x01\x55\x2d\xd2\xb2\x08\x8c\x8c\x1b\xb3\xc6\x6d\x90\x84\xd7\x84\xdb\xa0\xc5\xa6\x1b\xd9\x79\xeb\x0f\x8d\x23\x1e\x9f\xb2\xd8\x86\x59\xaa\x3c\x0c\x2c\xd1\x21\xad\x73\xc5\xeb\x73\x49\x30\x25\xf7\x05\x8f\xe3\xe7\x44\x3b\xe8\x20\xba\x3b\xc4\xeb\xeb\x5b\xc7\x5e\x49\x9b\x59\x94\x40\x7c\x07\xab\xbe\x9e\xca\x40\x02\xd0\x1c\xb8\x83\x51\x95\x59\x70\x5a\x5e\x80\xbe\x61\xa3\xd4\x3d\x13\x85\x73\x5e\x32\x7e\x61\xbf\x8e\x79\x2e\xf3\x54\xe4\x0f\x98\xa6\xc2\x3c\x05\xf4\x4d\x04\x70\xce\x62\xaa\x7e\x4e\x40\x91\xeb\xbd\x54\x03\x17\x30\x54\x19\x08\x50\xbe\x94\x00\x2b\x7f\x16\x65\x52\xca\xd3\x55\x95\xaa\xb4\x74\xdf\x99\x10\x22\xbc\x25\x09\x46\xfa\xfa\xb8\x9d\xd9\x41\x8f\x85\x41\x08\xc1\x34\x44\xdf\xa2\xfd\xca\xc7\x24\x38\xe6\xbc\x90\x28\x88\xb7\x15\xc4\x7f\x13\x34\xe9\x21\x78\x14\x3f\x39\xc8\xa5\x65\x0f\x96\xc3\x4d\x3f\xd0\xca\x5d\x68\x8b\x35\xda\xef\x4e\x15\x60\x30\x8f\x6d\xd3\xc6\xfa\x9e\xbf\x66\x64\x20\x41\x71\xe7\x6c\x51\x0b\x7c\x06\x6c\x8b\xd5\xd4\x6e\x29\x48\xe6\x03\xbb\xb4\xda\x53\x52\x34\x96\xc4\x32\x53\x3d\xe2\xdc\xfe\x1f\xca\xb1\x5b\xe6\x0a\x24\x86\x9e\x95\xc8\xe4\x15\x4a\x4a\xa2\x04\x10\x8c\xb4\x71\x5d\x9e\x2f\x72\x67\x7d\x18\xd2\xda\x2c\x5b\x18\x64\x1d\x48\x23\x67\x7f\xad\x93\x6c\x58\x8e\xf6\x13\xd2\xd5\xf8\x02\xd5\x93\x0d\x73\x9a\xa5\x47\x76\x7a\x56\x3c\xfa\xc8\x50\x5f\x41\xba\x10\xf2\x92\xc7\x70\xde\xc2\x59\x31\x2c\xa9\x40\x1d\x7e\x63\xf9\x16\x5c\xf6\x85\xc4\x20\x64\xc1\xb9\x99\xa1\x99\x0d\x7e\x0d\x35\x52\x7b\xae\x91\x1d\x67\xd3\x87\x12\xb4\x61\x74\x21\x8c\x54\xa3\xc8\x37\x21\xa2\x59\x59\x96\x8a\x3d\x69\xa8\x50\x5f\x70\x46\x46\xf5\xbd\x40\x3d\xb3\x00\x5a\x10\xb1\xfe\x49\x41\x0a\x69\x89\xa9\xdf\x8d\x59\xe9\x6a\xce\xa1\xa6\xbf\x7c\x2d\x51\xdd\x82\x9a\x01\x15\x5e\x19\xfc\x28\x7e\xe9\x2c\x9d\xc8\x12\xd5\x41\xc4\x24\x87\xd6\x25\xa5\x0f\x27\x43\x73\xd2\xbc\xe4\xd1\x7a\xba\x95\xcc\x0d\xe6\x4c\x74\x19\x28\x4f\xcc\x54\xa7\x4a\x5d\x53\xc2\x6b\xcc\xe4\x37\xb2\x62\x3a\xad\x42\x39\x19\xca\xbc\x5f\xe8\x0d\xe2\xc5\x72\x94\x42\x41\xd4\x47\x46\xd9\x46\x16\x40\xb9\xe0\x7a\x10\x1b\xb2\x7b\x1d\xde\x6b\xbb\x9e\x09\xe1\x36\x31\x9b\x29\x28\x26\xf7\x29\x43\xff\x7c\xb1\x25\x0b\x0f\xbc\xec\x9a\x8d\x11\x44\xf0\xc7\x57\xa4\x8c\xb2\x26\x1e\x55\x4b\x11\xf4\xa3\xab\x5a\x0c\xbb\xd0\x7b\x26\x9f\xe7\x9e\x30\x2a\x52\xbb\x9e\x69\x74\xbb\x7d\xf3\x48\x93\xf1\x90\x3f\x62\xf2\xab\xde\x18\xa5\x56\x79\x5e\x65\x3c\xce\x17\x0a\xc1\x0e\xf9\x4b\x6f\x1b\xe8\x60\xe1\x32\xe4\x1b\x05\x1a\x38\xaa\xdf\xaa\x73\x42\xad\xcd\x2a\xa6\xc2\xe0\x31\xf2\x23\x3a\xc8\xfa\xdc\x41\x04\x9e\xde\xce\xfe\x51\x61\x51\xf6\xc4\x58\xcd\xa4\x74\xfe\xf2\xf5\x04\x83\xb6\x0d\xde\x99\xc0\x29\x51\xc8\x80\xb5\x34\x0a\x32\x56\xbc\x7a\xe8\x25\x18\xf0\xad\xd3\xc6\x6e\x92\xf7\x71\xe4\x00\xca\xa4\x5f\x60\x40\x99\xd3\xcf\xa5\xd9\xa2\xd0\xd4\x3e\xf8\xd8\x4f\x7a\x06\xda\x7d\x0e\x29\xdc\xef\x85\xea\x4f\x43\xb6\x56\x6f\xf5\x61\x9d\xb3\x8a\x78\xc0\x25\xb9\x92\xa9\x66\x57\xf6\xa6\x38\x7b\xda\x73\x97\x47\x13\x69\x49\x99\x90\xfd\x78\xf3\x9b\x33\x09\xc9\xaa\x2f\x6d\x83\x91\xaf\xde\x78\x2f\x4b\xe4\x45\xb1\x57\x11\xab\x31\x88\xab\x79\xda\xb3\x2f\xbb\x1a\x09\x4a\x1a\xf9\x29\x58\xa9\xcd\x58\xd1\x92\x45\x7c\xb6\x38\xd2\xd3\xc5\x08\x4f\xd2\xc8\x8e\x35\xa2\xe3\x18\xbd\x99\xad\xf6\x18\x4c\x97\xb7\xd7\x23\x2a\xc9\x7f\xb2\x39\x06\x8f\x10\xce\x98\x10\xe2\x2c\xe4\x7e\x65\xb9\x1c\x95\x47\x5f\x36\x67\x50\x77\xb6\x3d\x38\xda\x30\xec\x53\x96\x4c\xf9\x0e\x7c\x42\x45\x6a\xb2\xf1\x61\xf8\x3d\xea\xe0\x79\xd3\x43\x2c\x7c\xb6\x3c\xcb\x09\xf1\xe9\xb1\xd5\xab\x24\x73\x91\x27\xbd\x3b\xc0\xc1\xfd\x53\xe7\xd8\xdc\xf4\xd0\x69\xb2\xc0\xf3\x82\xc4\x42\x0e\x5d\x7c\xcb\xbb\xcd\xc0\xa3\x24\x78\xc5\x4b\xc2\xa4\xbe\xc5\x6b\xaa\x01\x68\x7a\xe4\x55\xa2\x09\x5e\xfd\x2c\xd1\xab\x15\x3c\x39\xe5\xd2\xd0\xf3\x96\xfe\x94\x9c\x1d\x9b\x0d\xab\xf7\x85\x35\x32\xa8\xaf\x70\x4f\x24\x1e\xf8\x06\x4b\xc3\x3b\xc7\xa5\x10\xf3\x9f\x00\x7e\x9b\xdc\x96\x7e\xff\x04\xfd\x2f\xf8\x8e\x63\x73\xf1\xaf\x28\xac\x35\x2a\x6c\xe4\x10\x61\xae\x34\x46\xf2\x15\xdc\xa4\xc6\x8a\xa9\xe4\xb3\x55\x9a\x8f\xa4\xe2\x2d\x5f\x0e\xa0\x2a\x98\xe1\xc4\x76\x70\x62\xa2\xdd\xca\xc8\xdc\x5d\x91\x3a\x58\xab\x1c\x92\x67\x0b\x25\x0c\xdd\x29\xa2\x45\x0a\x32\xdd\x9c\x92\xab\xd8\x50\x60\x28\x48\x51\x21\xfb\x0c\xb9\x79\x44\x1f\x50\xd8\xbf\x16\x28\x5f\xd3\xf4\x0f\x99\x44\xd6\xe7\xad\xa7\x27\x61\x23\xe9\x63\x65\xf9\xb2\xc6\xa3\xf4\x5e\x82\x3f\xe9\xb1\xe0\x4d\x3a\x06\x71\x20\x21\x66\xe9\x4e\x31\x7c\xca\x28\xb3\x33\x5f\x66\x00\x3a\x56\x2c\x2b\xf8\x27\xa4\x5e\x30\x70\x5f\x66\x54\x24\x39\x36\xcf\x2f\xe6\x33\xdc\x3d\x4c\x78\x08\x01\x1a\x0c\x3c\xad\x51\x6f\x59\xd7\xfd\xee\x37\x09\xcf\x07\x41\xb0\x99\xf1\x86\xd2\xb5\x60\xd2\xac\x6c\x4e\xad\x25\x7e\x7a\xc1\xed\xb2\xa9\xd0\x01\xea\xfb\xaa\x5e\x6e\xcb\x23\xb3\xe7\xa8\xa5\xe3\xb0\x07\x68\x15\xd0\xa5\x74\x17\xce\x89\xeb\x2a\x8a\xf5\x92\x4c\x46\x0a\x9f\x83\x27\xf3\x8f\x8c\xba\xe4\x24\xba\xf4\xa4\x74\xf1\x69\xcf\x4d\x8b\xe2\x85\xfb\x49\x54\x26\x4f\x6c\x97\x4f\xe6\x94\xa4\xb0\x3f\x62\xcc\x36\x2a\x25\xab\xd9\x0a\x20\xa6\x55\x09\x2d\xc6\x79\xeb\xbe\x80\x0c\x15\xea\x1c\x23\x6c\x61\x82\x3c\x87\x7d\x27\x02\x88\x20\xa8\x6c\x02\xe3\x5d\x27\xb7\x55\x10\xb4\x91\x7e\x3e\xf7\x6a\xb4\xe9\xf5\x1c\x71\xbf\xf6\xfd\x3d\x3f\xa2\xc3\xbc\xc9\xf7\xd5\xb0\x3e\xd6\x30\xbe\xcb\xb4\xea\x5f\xcd\x1f\x96\xa0\xc2\x25\xf2\xd9\xdf\xa1\x0a\x85\x8e\x12\x94\x5f\x6f\x11\x31\x58\x77\x95\x3a\x2d\x5d\x54\x17\x2b\xc0\x35\x63\xdd\xbd\xea\x72\x29\x2a\x7b\x1b\x3d\xbb\xbe\x30\x7f\x9d\x40\xd0\x0d\xd0\xaf\x86\xe5\xa7\x11\x3c\x56\xdf\xfc\x00\x13\x44\xa0\x74\xa5\xaf\xf0\x1b\xcf\xfe\xe6\xe1\x6b\x69\x88\x3c\x5e\xad\x1e\xcf\x6d\xe5\xfc\xd7\x1f\x71\x2a\xe9\x45\xb9\x39\x23\x8d\xdc\x90\x43\xc7\xae\x61\x36\xc7\x90\x23\x8d\xee\x9c\xe9\xf0\x45\x02\x49\x63\xc3\xe2\xb3\xad\xcc\xca\xfa\xe3\x16\x2c\xa1\xb4\x13\x92\x25\x5b\xe8\x32\x5d\x91\x63\x62\x0e\x32\x89\xf4\xf7\x77\xd3\x51\x76\xa3\xee\xa8\x7a\xc2\x66\xb0\x13\xa9\x89\x50\xef\xde\x07\x1d\x7a\x94\xad\xbe\xb9\xf4\x79\x99\xe8\xeb\x67\xa5\xae\x7e\xc1\xac\x46\x2c\x78\xa5\x4e\x87\xa2\xfd\x04\x1c\xb4\x7b\xa3\x19\xc1\x85\x66\x46\x73\x85\xb8\xe7\x95\x0a\x5e\x75\x20\xd6\x46\x0b\x44\x77\x90\x88\x3b\xb4\xfa\x6b\x37\xa4\x6d\xb4\xa7\xae\x36\x93\x7e\x10\x8a\x76\x14\x35\xa3\x14\xa6\x58\xe8\xbf\xd7\x8a\xc0\x05\x74\x47\x2c\x35\x86\xe4\xb7\xec\xb4\xf1\x1f\x85\xfb\xdb\xf6\xa4\x33\xa7\xa7\xd8\xb3\xd1\x66\x2b\x25\xef\xb0\x71\xf5\x27\xe9\x37\x20\xcd\xed\xc8\xad\x5b\xca\xeb\x52\x5c\xcd\xb0\x5d\x7e\x91\xd6\xdd\x4a\xb4\xb8\x5f\x46\x37\x82\x5f\xdc\x81\x0b\xe4\x0f\x4b\xb7\x69\x58\x9e\x37\xa2\x33\x3d\xcb\x94\x58\xb7\xea\xda\xda\x37\xd5\x82\x1b\x88\x01\x1c\x05\x7e\xa3\x85\xe2\x93\x0d\x87\x6f\x85\x0e\xc1\xe0\x86\xc4\xb4\x53\x49\x3b\x2e\xa3\x72\x6b\xf0\x0a\xc8\x46\xca\xa3\xc6\xb4\x98\x5d\x55\xed\xfa\x0b\x5c\xca\x86\xb2\x12\x87\x2b\x2b\x72\xfa\x8d\x3c\x42\x5b\xe6\xca\xb4\x49\x79\xc8\x4e\x16\x3c\xe6\x40\x89\xf6\xbb\xa3\x67\x84\xa3\x05\x7d\xb1\xb4\x40\x72\x75\x18\xd5\x23\x8a\xee\x4b\xf9\xb8\x7e\x65\x13\x40\xcb\x23\x3b\xd1\x1d\x0a\x16\x6d\x42\x41\x8b\x65\x4b\x34\x92\xd0\xe0\x80\xc7\x30\x84\x01\xac\x13\xa4\x47\x8d\xb4\x2f\x54\x92\x96\xdc\xe3\x20\x0d\xd3\xba\x83\x55\xf5\x33\x4e\xa4\x35\xaf\x68\xb0\x33\x34\x67\x0d\x37\xf9\xb6\xdf\x69\xfb\xc3\xab\x87\x43\xb9\x1f\x68\xd8\x7f\x57\x84\x66\x41\x88\x72\x8c\xa2\x19\x54\x0e\xad\x1b\x45\x33\xec\x1c\xba\x0d\xd3\x4c\x3e\x43\x7f\x5b\x34\x9b\x19\xd3\xd2\x28\xda\xa4\xed\x09\xcc\xba\xf9\x84\x1a\xa4\x71\x38\x9b\x0d\x89\x4e\x07\x61\xae\xe0\xb5\x49\x1a\xd2\x85\x35\x91\x3e\xec\x89\x61\x19\x3b\xd1\xf4\xfb\xad\x63\xee\x59\xc9\xa3\x31\x86\x14\x6b\xaf\x22\x2e\x58\xbf\xe8\x48\x0a\xdd\xa6\x6c\xba\x18\x5f\xf4\x54\x1a\x82\xce\x64\xee\xb8\x7a\x1e\xf1\xb5\x59\x99\x12\xb7\x6f\x5f\x58\x11\x14\xb1\x59\xad\xb8\x84\xab\x58\xbe\x2f\xce\x0a\x89\xca\xc3\x57\xc1\xed\xdd\xcb\xcb\x84\x11\x4a\xb0\x82\x5e\x9a\x1c\xcd\x55\xfa\x47\x65\x0e\xb2\x46\xe6\x33\x62\x71\x6d\x1e\x86\x81\x80\xd3\x1e\x07\x6b\xd8\xb4\x23\x72\x2a\x0e\x07\xb3\x9f\x1c\x13\x98\xd8\x4c\x07\x6b\x01\xd8\x9c\x3c\x11\x1c\x83\x5a\xf1\xac\x01\x38\x67\xde\xe2\x4b\x35\x10\x51\xb0\x30\x8d\x80\xef\xfc\x71\x88\x11\xf7\x34\x18\xcf\x55\xca\x49\xe0\x2a\x84\xd0\x82\x04\xf6\x30\x83\x29\xa1\xa9\xb1\xe5\x23\x3a\x6e\x50\x2e\xd9\x7f\xe7\x3c\x9f\x46\xe3\x90\xe8\x56\xec\x4d\x2a\x2f\xae\xf8\xe4\x9d\xce\xd8\x55\x49\xe3\x96\x6d\xaa\x1d\xca\xf3\x6a\x88\x22\x92\x96\xf8\x04\x38\x68\xdd\x70\x21\x31\x1b\x41\xbe\x32\x33\x23\x73\xaa\xaf\x96\x4b\xe2\xb0\x36\xef\xd1\x44\x9b\xf0\x72\x4f\x69\x3c\x52\xa0\x35\x07\xcd\x18\xae\xc1\x6b\xe1\x99\x04\x2a\xcb\x75\x60\x55\xc6\xf5\x2c\x9b\x2f\x12\x46\xca\xa7\x9b\xc8\xe2\xd9\x2b\xf8\x1f\xe9\x81\xaf\xef\x61\xd9\xc7\x58\x4d\xf9\xb9\x05\x21\xba\xd9\x22\xd4\x1e\x85\xbb\x71\x05\x03\x50\xd7\x87\x8b\x74\x88\x35\x17\x0e\x73\xd0\x06\x7a\xb9\x1f\xc6\xbe\x3c\x73\x01\x40\xbe\x10\x19\xc5\x17\x1d\xe1\xcc\xce\x86\x4a\x7c\xf2\xd4\x47\xe9\x91\xc3\xe8\xa1\x78\x4f\x1d\x3d\x4a\xe7\x81\x6d\x66\x7e\x7b\xf2\x0d\x10\x6c\x44\xf3\xdc\x67\x44\x9c\x51\x50\x6b\x52\x72\x92\x5f\x18\x16\xbe\x50\x3f\xbf\xb3\x51\x67\x47\xe6\x3a\x52\x96\x43\x48\x41\x5e\x4d\x4c\x95\x09\x09\x41\x58\x89\x28\x3e\x86\xab\xb2\x0e\x25\xc9\x4a\x7e\x4c\x92\xed\x62\xaa\xb7\x38\xe1\xca\x87\x0d\xaa\x41\xb2\x5d\x4c\x1b\x8b\xa8\xeb\xbe\xe5\x91\x33\xd5\x76\xb5\xe2\xcb\xfa\x4e\x0f\x92\xff\x80\x16\x58\x50\x59\xf1\x7d\x04\x0b\x0b\xbe\x5b\x27\xca\xad\x4b\xbb\xaa\xdc\xef\xda\xba\x01\x2b\xc7\x37\xaa\xd8\x7f\x65\xc9\x41\x99\xca\x23\xc1\xa1\x10\x98\x86\x91\x6c\xc6\x9b\x2e\x7c\x93\x30\xbb\x75\xb2\x9c\xaa\x41\x5e\x0d\x54\xc6\x68\x34\xb1\x91\x93\xae\x0d\xd6\x65\xbd\x8c\x22\x7a\xb3\xcf\xfd\x76\x03\x91\x4a\x5d\x62\xcc\xa9\x66\x08\x1b\x11\x6f\x05\x49\xbc\x95\x06\xd0\x97\x2f\x97\x64\x08\x6c\xd1\x10\x50\x6d\xf0\xb2\xb6\x4e\x02\xae\xa4\x1e\x89\x25\x56\x80\x41\xa9\xf2\xe6\xb2\x91\xf2\x8f\x77\xb1\xca\xb0\x62\x90\xfd\x99\x6b\x92\x22\x2d\xc8\xa8\x76\x4d\x79\x39\x7d\x8f\x0a\xff\x78\xfb\xb4\x9a\x55\x73\xd2\x4d\x34\xf3\xaf\xd0\x76\x8b\x44\x13\x3c\x28\x8b\xe4\xb0\x71\xab\xb5\x6a\x99\x4d\x4b\xd5\xa5\xd4\xde\x9a\x33\x85\xf9\x93\x21\xac\xea\x2b\x6e\x6f\x63\xd0\xc9\x29\x1e\x96\xab\x3b\xdc\x11\x32\xe9\x6c\x71\x6d\x62\x6c\x81\xad\xe2\x6c\x91\xe7\xb6\xf9\xeb\x82\x2d\xef\x2a\xf2\x6b\x8f\x07\x61\xb9\xf7\x97\x89\xf2\x5c\xde\xa0\xf8\xbe\xd9\x4a\xe4\x60\xbe\x09\x8d\x38\x8b\x93\xf4\x44\xe9\x89\xc3\xa8\x72\x3b\x5b\x4e\xed\xbd\x0a\x6a\x88\x13\x95\xa6\x8d\x39\x50\x24\xb8\x5b\x85\x69\x2a\x9c\xa6\x29\xae\x74\xd7\x7d\x16\x2b\xe7\xb5\xcb\xd3\x5e\xc8\x1d\x48\x87\xbb\x7c\x31\x9d\x4a\xbd\x34\xba\x58\x11\x6a\xbd\x38\x5a\x62\x07\xc8\x94\x93\xf9\x54\x84\x88\xbd\x5c\xfe\x50\xfa\x09\x1b\x90\x14\x02\x5e\x67\x8d\x91\x81\xce\x8d\x39\x25\x7d\xbb\x76\x39\x5c\x64\x39\xc8\xfc\xd2\xf2\x63\x22\x5f\x0a\xff\x75\x94\xb2\x16\x1e\xc0\xbc\x48\x06\xda\xac\x17\x4e\x19\x63\xc4\xf9\x52\xaa\xb6\x5b\x42\x15\xf6\x7e\xfe\x0b\x6a\xb2\x0a\xe0\xe6\x73\x7b\x75\xfb\xdc\x62\x3d\x3b\xa8\x82\xec\x0a\x99\xf1\xf9\x94\x35\x8b\xd0\x76\x8c\x32\xf2\x1a\x88\x57\x2e\xd0\xcc\xe4\x36\xbe\x6d\x8c\xc3\x93\xaa\x69\xc4\x61\x87\xb2\xc4\x71\x75\xe1\x9b\x54\xcf\x6e\x9d\x06\x72\x44\x4d\xd9\x01\xb8\x5f\x50\x55\xc8\x48\x0d\xab\x1b\xa3\xc8\xe0\xc2\x8c\x68\x9a\xa7\x2c\x2d\x0b\x55\xa1\x52\xb1\x26\x74\x4c\x7b\x9f\xfc\xd7\xfb\xb2\xfc\x0f\xef\x84\x86\x3a\xa3\x88\x5d\x3a\xa3\x92\x7f\xdc\x50\xca\xb2\xec\xa8\x55\x31\x90\x06\x1d\xa6\x54\x08\x89\xae\x9c\x04\x4d\x95\x97\xeb\x7b\xad\x00\x55\x71\x0d\x56\x31\x05\x0b\xbf\x5f\x4c\x5b\x7e\xb8\x3c\x8d\x75\x17\x55\x91\xc5\x51\x81\x54\x7d\x48\x05\x2b\x24\x11\x46\xeb\x50\xfa\xa8\x85\xae\x40\x73\xea\x89\x52\x68\xfe\xcd\xf4\x1e\xb8\x57\x32\x62\xbb\xde\x98\x5d\x84\x0c\x88\x45\xf2\x11\x94\xb1\xc3\xc8\x12\xdf\x56\x04\xf7\x63\x48\x71\x33\x8c\x9b\x0d\x92\xd3\xeb\x97\x0e\x91\x03\x31\xde\xb2\x45\x8b\xff\xca\xb6\x59\x8a\x8b\xec\x7f\x45\xa4\xa8\x77\xcf\xaf\x0e\xa3\x40\x90\xc8\xca\x51\x85\x35\x76\x6b\xbc\x7d\x5a\x6e\xbb\xf6\xd4\xaa\x55\xf8\xd9\x87\xe9\x6c\x7e\x30\xcb\x4d\x26\xb2\x0e\x79\x3e\x3c\x50\x39\xb1\x75\xb0\xbe\xae\xab\xdb\x0b\x17\x6b\x80\xe0\x36\x47\x08\xd1\x9b\x7e\x5d\x9e\x18\x0c\xa6\xe8\xc8\x5f\x6e\xf4\x88\x2b\xae\x46\x61\x25\x72\x85\x0b\x83\x8c\x8f\xec\x0a\x12\x90\xc3\x57\x11\x75\x3c\x58\xf0\xf0\x6e\x47\x12\xbe\xf3\xd4\xe7\x2c\xd8\x01\x13\x60\x2d\xc9\x52\xed\x11\xbe\xaa\xbd\xd4\x20\x79\x7d\x4d\xf4\xba\xa2\x9a\x6a\x91\x21\x6d\x3b\x7c\xfd\xb5\x30\x18\xe9\x68\x77\xf2\x4c\x5f\xfb\x85\xa4\x09\xca\x51\xf3\x5e\xce\x35\xbf\xd0\xf1\x78\xe0\x25\x2a\x58\x9a\x16\x35\x63\x33\x6f\xce\xea\xe0\xfa\x4b\x38\xd4\xfd\x35\xb6\x92\x28\x0f\xe9\x71\xb1\xe8\x90\x23\x5f\x60\x19\x07\xf1\xd6\xa6\x83\x3c\x63\x58\x88\x0b\xa8\x98\x67\xf6\x6b\xf4\xa7\xff\x59\xf7\xae\x03\x72\x50\x17\xb8\xf7\xdb\x90\x92\xeb\xf5\xdf\x7d\x42\x30\x9a\x71\x11\x83\x25\x28\xff\x14\xc8\x89\x4e\x5e\x0c\x40\xb5\xcb\x7f\xc3\x00\x28\x0c\x15\x9f\xa1\x48\x4e\xb7\xcb\xb6\xe5\x4d\xe2\x52\xff\x1a\x19\x0a\x18\x29\x24\xc5\xab\x43\xfc\xea\x89\x22\x6f\xc2\x37\x71\x18\x22\xb5\xfb\xa6\x6f\xa8\x6e\xe2\x05\x3d\x14\x6d\xa2\xa0\x71\x0a\x3f\x03\x5e\xea\x26\xb3\xa4\x4a\x9f\xce\x36\x14\x54\x1a\x0d\x50\xdf\xa6\xd1\x8d\x9a\x12\x90\xcb\xcb\x1a\x61\x03\xc7\xab\xf8\x04\x91\x5d\xb2\x50\xb2\x73\xd4\x99\xb6\x0e\xd6\x80\x12\x86\xec\x1a\xa8\xee\x6f\xc5\x26\x54\xe7\xbc\x57\xc2\xc8\x32\x09\x07\x2e\x80\x28\x23\xf6\xf7\x71\x5b\x90\xa0\xba\x0b\x98\x76\x05\x46\x82\x4a\x83\x96\xfb\x04\x76\xef\x4f\x09\x5e\x0f\x92\x52\xa3\x1a\x88\x5d\xfe\x92\x2b\x0d\x7c\x14\x10\x0d\x23\xe2\xdc\x7a\xed\x09\x2b\xf5\xe5\x57\x46\x6d\xda\x07\xf5\xc9\x7f\x12\x7c\x4c\x4a\xd1\x8a\x32\x21\x13\x96\x6a\xe9\x6b\x06\x05\x94\xd8\x14\x7e\xcc\x28\x59\xe9\xb5\xc1\x43\xc5\xd4\x4f\x68\x01\x6b\xbe\xa3\xa4\x5b\xd6\x7c\x85\x7e\xfc\x35\xaf\xc0\x45\xac\x06\x51\x6f\x9f\xa3\x38\x87\x8d\xb4\x35\xf6\x51\x6a\x9e\x9f\x94\xa2\xd6\x37\x2a\x17\xdc\xdc\x9a\x31\xaf\xb9\x52\xed\x8c\xd0\x55\x4a\x3a\xb4\x6a\xb8\x4f\xbc\xda\xc8\x7b\x8d\x90\x00\x4e\xd8\x01\x68\xf5\xf4\xa6\x47\xb6\xec\x9f\x60\xb3\x3c\x77\x25\x48\xef\xc8\xac\x74\x58\x77\x54\x76\xbc\x09\xc8\xcc\x63\x17\x13\x76\x29\x27\x97\x44\x96\x5c\x10\xa3\xa8\x5e\x5e\x87\x2c\x2e\x8c\x56\xd9\xc5\xe7\x20\xb4\x4d\x2c\x59\x5a\x38\x64\xd3\xb5\x92\x36\xca\x49\x60\xcb\x68\x31\x88\xd5\xdc\x1c\x50\x0c\xef\x61\xa6\xee\x09\x80\x6f\x45\x6d\x13\xec\x51\x3a\x9d\x4b\xf4\x42\x88\x87\xc2\xd1\x3d\xf0\x7b\x5b\x08\x5c\xfb\xec\xaa\xc0\x99\x97\x70\xb5\x96\x6e\xf8\xd2\x8e\x95\x89\xa2\x65\xd6\xb6\x98\x39\xd8\x8d\x9b\x5e\x09\x09\xfb\x36\x16\xc9\x50\x7d\x7e\x9f\x66\x8f\x3d\xb3\x29\x60\x15\xc9\x02\x09\xc9\xf5\xc9\x12\xec\x10\x57\xe4\xcd\xeb\xce\xd1\x96\x7e\xb2\xd1\xb6\xda\x8e\xb8\xec\x88\xf9\x08\xce\x1b\x63\x8a\xe1\xa1\x47\xe8\xad\x5d\x66\x38\xce\xd0\x6c\x8e\xfe\x90\xfd\x5c\x5f\xec\x7b\x6f\x33\x32\x6b\xd9\xfe\x90\x40\xd0\x78\xf8\x0c\x43\x5b\x3d\x3b\x9d\x48\xb4\xdc\x72\x5a\x0d\x17\x3f\xa8\x32\x68\xfa\x6c\x18\xdc\x24\x99\x18\x95\xdf\x81\x31\xc4\xe9\x4f\x2a\xdd\x17\x52\xd6\xee\xd3\x9d\x44\xe1\xd7\x7a\x95\x67\xe0\x76\x2e\x78\x93\x14\x0a\x02\xbb\xbb\xab\x34\x8f\x1c\xfc\xe9\x3c\x2f\xd3\xe2\x72\xf3\xeb\x37\x99\x38\x18\xd3\x2b\x64\x12\x63\x7c\x7c\x37\x75\x1a\x52\x08\x38\x36\xac\x55\xe9\xc1\x1e\x8a\x02\x3e\x84\x1c\xdc\xe9\x0f\x9f\x95\xe8\x11\x26\xba\x68\x41\xdc\xf4\xc2\x9b\x72\x40\x80\xfd\xad\x07\xc6\x99\x6c\x00\xd4\x49\x47\xcc\x39\x37\x8a\x50\x59\xd3\x72\xe7\xa1\xfb\x1d\xa6\x9c\x5c\x12\x7a\x0c\x91\x23\x80\x23\x12\x71\x2f\xe4\x30\x1e\xb9\x67\x38\x96\xb9\x0b\x25\xf9\x43\x4d\xf1\x1b\x3a\x59\xdd\x46\x97\x15\x0d\x8e\x8e\x62\x3b\xd7\x6a\x85\xad\xf1\x5a\x6c\x86\xb9\x13\x7a\xa7\xfe\x28\xaa\x35\xbf\xc4\x54\x35\xa5\x04\xe5\x41\x2e\xc1\x70\x35\x69\x5a\x9e\x51\x8e\x6d\xec\x55\xc8\xe1\x10\x61\x9e\x95\x38\x72\x4e\x9a\xf3\x99\x99\x3d\xa5\x22\xae\x9c\x98\x80\xe0\x43\xfd\x9b\xc7\xd3\x28\x37\xc2\x76\x9e\xc5\xc9\xb1\x8f\x9b\xd0\x3c\xfe\x85\x41\x26\x93\x79\x57\x7b\x90\x44\x40\xeb\x1b\x69\x51\x60\x9b\xd7\xa7\x44\x55\xcf\xb3\x8a\x31\x25\xd3\x68\xaa\x8c\x88\x80\xa1\x27\x0a\xc7\xe1\x6e\xec\x67\xa6\x07\xf1\xdb\x78\x26\x20\x5c\xec\xe6\x38\x20\x5c\x36\x98\xdc\x8e\x9b\xf8\x32\x1b\x70\xd1\x10\x63\x37\x8a\x2a\x7f\x7a\xd7\x8a\x79\x4b\x9e\xd2\xf1\xcc\xd5\x0d\x4c\x3e\x00\x12\x43\x08\x04\xb8\xb5\x11\xe9\x1c\xc0\x14\x6a\x1b\xcc\x26\x67\xa9\x45\xe7\x9b\xca\x56\xea\x8a\x81\xe9\x3b\x47\x9a\x54\x1a\x15\x02\xc2\xaa\xaf\xd5\x36\x30\x66\xe5\xc3\xc3\xb0\x1a\xb0\x7b\xd2\xe7\x2a\x6b\xf3\x1e\x8f\xdf\x51\x3d\x5d\xed\x46\xde\xaf\x61\x16\x63\x9d\xd5\xbb\xc1\xe4\xcf\xc9\xd2\x65\xba\xc6\x58\x39\xb4\xe9\x09\x76\x0a\x18\xeb\xe5\x73\xb6\x6c\x6b\xe9\x28\x67\x5f\xdb\xfb\x74\xa8\x42\xec\xc5\x34\x4a\x84\xf9\x45\x06\x90\x67\x9e\xf4\x1d\x14\xcd\xc6\x45\x8b\x85\x93\xfe\x08\x71\x56\x2b\xa7\xdb\xbc\x30\x40\xb4\x2a\xdb\x81\x5a\x86\x7d\x23\x7f\xc5\xa1\xd7\x9d\xb9\xb2\x3e\x0d\xae\xf2\x17\x28\x1a\xf7\x0a\xc1\x8c\xee\xf9\x82\x17\x54\xb7\x26\x33\x21\x43\x77\xf4\xd8\x6b\xb7\xde\x40\xf5\x4c\x98\x09\xf3\x06\x52\x02\x18\x1f\xe1\x21\x9d\xf2\x8a\xb8\xb2\x5d\x34\x5d\x84\x2c\x30\x0f\x47\x21\x07\xb8\x57\x00\x74\xbe\x94\xd3\x4a\x26\xcc\x4f\x06\x2f\xd8\x77\x92\x5d\x01\x9a\x00\x62\x7d\x21\x61\xda\xee\x81\xd1\x22\xcf\x47\x53\x74\x71\x51\x90\x79\xfa\xd1\x82\xce\x04\xff\x42\x7b\x3f\x0d\x62\x9c\xa1\x19\x5a\x20\xf1\x8d\x72\x43\xc1\x8b\xab\xe5\xf9\x77\xa9\x64\x96\x10\xff\x37\x99\xa9\x48\xf5\xc8\xad\xea\x4e\x72\x0e\x64\x04\xde\x45\x22\x37\xa9\x8a\xb0\x3d\x19\xc5\x24\xcd\x50\x4f\x87\x91\x31\x62\x7c\x7c\x3a\x99\xb4\x52\x2d\x8e\x7c\x91\x33\xd6\xf4\x09\x78\xfb\x5d\x13\xc5\x58\xc5\x34\xd0\xa7\x29\x1f\xc3\x80\x3a\x0d\x3e\x8a\x35\xc2\xb9\xa6\xfd\xac\xff\x25\xf2\x42\xe2\x36\x4b\xe6\x98\xbd\x7e\x1c\x8c\xfa\x77\x25\x2d\x12\x59\x72\xdd\x49\x0d\x8e\x45\x86\xe3\x01\x54\x38\xd3\xa3\x7c\xab\x74\x22\xea\xc7\xbe\xec\x2c\xe3\x67\xee\xde\x2d\x60\x02\x33\x64\xac\x79\x2d\x97\x5a\x99\xd9\xa9\xfe\x8f\x54\x86\x4e\x86\x28\x3f\x2e\x0f\xd4\x6b\x5d\x0c\x5b\x68\x84\x96\x16\x7a\x8a\xb0\x0d\x2a\xd3\xce\x5e\xd3\x50\xda\xe2\x3e\x88\x88\xbe\x90\xc2\xdc\x58\x8a\x05\x4c\xe3\xf4\x5a\x11\x7c\x77\x50\xa4\xae\x59\x8d\xaf\xe5\x65\x0d\x19\x59\xd5\xa9\x28\x6b\x9c\xf1\x48\x88\xb1\x1e\x6d\x52\x3c\xf0\x36\xa8\xb6\x99\x7f\x47\xe4\xcc\xed\x4b\x7d\xc1\x57\xbc\xee\x00\x2a\x57\x5c\xe7\x78\x98\xf5\x07\x10\xf6\xa8\xc4\xa3\x1d\x0a\xda\x49\x84\x64\x8b\x50\x85\x22\x3e\x90\x2a\x43\xe5\x5b\xe9\x8b\x86\x58\xbc\x52\x20\x19\x9e\xaa\x13\x5a\x87\xac\xe4\xf9\x2a\x46\x6f\x17\xf9\x2c\xfb\x89\xca\x28\x9b\xa5\xb5\xf4\x6a\xbd\x6b\x23\x6e\x1e\xf7\xb1\x91\xb4\xa2\xad\x5a\x4f\xef\x8b\x7f\x9b\x51\x65\x2d\xc7\xfa\x6d\x82\xaf\x54\xb6\xac\x01\xfd\xe9\x71\xbf\xfe\x1a\xc3\x41\x19\xab\x39\x53\xe7\xe4\x93\xb5\xc0\x67\xfb\x52\x5e\xe0\xff\x66\xce\x2a\x83\x3b\xa0\x59\xca\x39\xea\x54\x75\xd9\x55\x19\xd6\x0d\x9a\x1d\xe5\x1d\xe1\x67\x7e\xd3\x4e\x69\x2b\xb4\xbc\x76\x9b\xa8\x5e\x4d\xa6\xea\xeb\x59\xab\x8c\xf4\x2a\xeb\x16\x77\x56\x9b\xab\x4e\xb4\x47\x56\x73\x4b\xae\x5f\xed\x76\x2a\xaa\xe5\x88\xbd\x8d\x11\xe1\x7a\xa5\x60\xf6\x3c\x66\xa0\x1c\xa5\x80\xec\xb3\xd1\x07\xc0\x89\x4d\x35\x1e\x98\x3c\x01\xba\x36\x09\xb8\x43\x86\x0a\x3a\x62\xb4\xa9\x64\xf3\x96\xa8\x51\xb9\x50\xa8\x76\x13\x93\x28\x83\xbe\xfc\x86\x28\x79\xdd\x81\x58\x03\x7d\xd7\x08\x52\x68\x53\xd5\x72\xd3\xd3\x32\x0a\xc0\x4b\xe3\x50\x61\x79\x89\x9a\x11\xf8\x1f\x4c\xdc\x2c\x37\xef\x51\xc3\x21\x66\x30\xab\xfc\xf4\x44\x58\x53\xa2\x56\xa4\x40\x1d\xe9\x60\x82\x75\xc5\x1a\x49\x2a\x67\x66\x15\xdb\xd4\x53\x3c\xce\xa4\x30\x87\x94\xbd\x02\xf6\x23\x23\xd5\x20\x16\x52\x2c\xd3\x30\xab\x9c\x20\x42\x49\x49\xab\x12\xcb\x6b\x0c\xca\x43\x96\x78\x9e\x4c\x12\xc7\x93\x34\x45\x13\xe9\x81\xf7\x7b\x48\x69\x3a\x7d\x51\x0c\xc5\xd3\x1c\xc0\x1b\xd8\x6e\x9e\xe6\x02\x34\xa2\xb9\xa8\x40\x7a\x84\xc4\x2b\x8e\xc8\x2f\x25\x53\x74\xff\x8e\xb9\x91\x26\xc4\x99\x61\x69\x78\xea\x99\x00\xda\x7c\x30\x0d\x30\x12\xfb\x01\x60\xd6\x77\xfc\x11\x6d\x7b\xc9\xb4\x6b\x66\x5d\xd4\x61\xe9\x20\xad\xdf\x45\xbb\x35\x60\x98\x18\x3a\x6a\x01\xea\x59\x96\x8e\x1b\x84\x7f\x6a\xbb\x66\xfb\x8e\x08\x08\xab\xa6\xe1\xa5\x7f\xf0\xe0\xb0\x2e\xa1\xd7\xcd\xd3\x6f\xc1\xab\xba\x64\x5b\x5f\x5a\x3d\x34\x74\x07\xba\x47\x39\xb6\x86\x6c\xf9\x70\xdf\x30\x6f\xfc\xbc\x3f\x54\x8f\x57\x0c\x35\x34\x4b\xde\x1b\xaf\x61\x47\xa9\xe8\xaf\xb7\x6b\x9c\xc5\x59\x7a\xc5\x69\xc2\x3f\x71\x9e\x97\x1e\xad\xa4\xa8\x38\x41\x18\xbf\xd2\x17\x37\x65\x01\x29\xf4\xa4\x45\xc0\xf4\xa4\x24\x66\xc6\xd7\x58\x90\x32\xb4\xc6\x90\x8c\x35\x17\xcd\xa6\xd9\xa4\x96\x33\x9b\x9c\x36\x1c\x0f\x1e\x8d\xec\x0c\x63\x12\xe8\x86\x83\xb2\x2f\xa5\xfa\x4f\xd3\x89\x8c\xcb\x32\x2c\xcd\x60\xd2\xd0\x17\xc0\x5b\xd2\xf1\x31\x1c\xb9\xbe\xac\xea\x4a\x3e\x10\x83\x29\x0f\x65\xff\xa4\x63\x7d\xb8\xc3\x76\x1d\x38\xc8\x87\x46\x93\xae\xd4\xba\xdc\x5a\x0a\x78\x07\x6c\xba\xd8\xf6\x1f\x21\x8c\x3a\xb0\xb3\x09\x59\x6f\x90\x97\x05\x49\xe3\x7a\x4a\x78\xd8\xb2\x37\x60\xa9\x7f\x93\xd8\x1d\x22\xd4\x34\xd9\xee\xa0\x20\x20\x61\xbd\x56\xb5\xe3\xe0\x89\xd8\xb7\x17\x74\x55\x3d\x7b\x1d\xb5\x58\x33\x2a\x9c\x4a\x43\x95\x54\xc7\x75\x38\x3d\x1e\x4c\x89\x74\x00\xc9\xf7\x89\x25\x9d\x59\x0d\xc3\xbb\xa3\xaf\xb2\xcd\xe8\x62\x1d\x2a\x0c\x7a\x5a\x72\x24\x18\xbb\x49\xce\x6f\xa2\x3e\xff\xd5\x5a\x37\xe7\x14\x97\x68\xa4\xbc\xb4\x7c\x4f\xe6\x57\x1a\x58\x98\x0b\x07\x22\x0a\x48\x5f\xc1\x92\xb8\xa9\x00\xfc\xee\x07\x4a\x7d\xef\xe3\x65\xbb\x23\xd7\x6e\xc0\x18\x2d\xd6\x8b\x4e\x9e\xef\x05\x92\x4d\xbe\xea\x6c\xd5\x22\x34\xd3\x33\x3a\x5f\x32\x73\x63\x69\xa7\xf2\x90\x9a\xb9\x49\xe5\xea\x2b\x4a\x86\x6f\xcc\x8f\x53\xf6\x03\x23\xe8\xfe\x0a\x14\x92\x44\x78\xaa\x25\x56\x72\xe7\x54\xbc\x5e\xdd\x24\x07\x4b\x49\x6c\x18\xb8\xd5\x24\xfd\x48\x51\x10\xe4\x20\xf5\xd2\x9f\xda\xcf\xbd\x0a\xde\xfb\x54\x23\xf0\xa4\x18\xd5\x24\xfa\xba\xe9\xc9\xbb\xe3\xe8\x52\x14\x98\xac\x38\x56\x28\xfc\xfc\xd6\xd6\x70\xd9\x01\x46\x0c\xee\x41\x0c\x8a\xd2\xf0\xc6\xc8\x57\xe1\xf2\xe2\xb2\xec\xc5\xee\x4d\x5e\xa9\x55\x2a\x30\x2e\x83\x6e\xa1\x0b\x72\x84\x47\xba\xc4\x2e\x65\x78\x36\x0c\x09\xa1\xff\x32\x30\x62\x10\xb1\x1c\x49\x14\xda\xa4\xe0\x0f\xeb\xbe\xe2\x20\xab\x1d\x97\x05\xab\x6d\x29\xc9\x3b\x02\x5e\x72\xe6\x1e\xf3\x69\x47\x4a\x11\xf3\x4a\x20\x36\x92\x69\xa8\xe2\xc5\x7a\x04\x08\x5a\x87\x98\x9c\x50\x43\xb8\x43\x35\xb5\x99\x53\x66\xc5\xa7\x8e\x2a\x31\x87\x1e\x71\xe0\xb3\xf7\xc0\x31\xab\x96\x2e\xf4\xba\x54\x57\x32\x1b\xa6\x3e\xe2\x55\xca\x0a\x87\xea\x03\x81\x23\x14\x56\x62\x85\x43\x66\xdb\x5d\x65\x29\xe4\x02\x93\xd9\x1a\xca\x0c\x80\x27\x6c\xe6\x04\x9e\x33\x8d\x7c\xc5\x6a\x85\x89\xa6\xe3\x03\x40\xcd\xed\xe7\x0e\x10\x3d\x32\x3f\x2b\xe8\xc0\x93\xe0\x96\xa6\x1b\x54\x97\x1e\xc4\x1d\x6d\x81\x7d\x7a\x5c\xc4\x58\x1e\x9c\x2f\xa3\x4e\xac\x70\xf7\xad\x70\x6b\x7c\x3b\xeb\x83\x85\x50\xa4\x7d\xe8\x0e\xf4\x0d\xd8\xab\x61\x40\xa9\x39\x7f\xb3\xc1\x50\x93\x27\x55\x85\xcd\x2c\xca\x25\x21\xd7\xa1\x88\xfa\x42\xd8\x2a\xa4\xb3\x4e\xc5\x01\xb7\x96\x36\x8b\x92\xe6\x5e\x74\xd1\x86\xea\x4e\x96\x45\xf5\x45\xc8\xad\x6b\x8d\xb2\xf1\x4b\x09\xa3\x14\x00\xa4\x54\x00\xcf\xa5\x81\x92\x34\x22\x66\x90\x2f\x24\xd7\xe7\x91\xbf\x21\x97\x08\x2b\xd8\x70\x26\x00\x4a\xd8\xa7\x02\xef\x4b\xe9\x8c\x55\xea\xbc\xe2\xdf\x4e\x27\x12\x50\x35\x99\x6a\x69\x81\xd7\xb3\xa9\x64\xc8\xcf\x4c\x30\xd2\x0f\xb9\xd1\x5d\x61\x7f\x57\xab\xec\x51\x5d\xe3\xd9\xf6\x18\xce\x0e\x1c\x48\x0e\xfc\x51\xd3\xb2\xfa\x63\x87\x43\x8f\xfe\x98\xab\x92\x67\xd6\xef\xa0\xb7\x40\x8a\xb9\x4d\xf9\x66\x3a\x90\x49\x86\xe7\x15\x3e\x32\xe9\x54\x54\xb9\x07\x98\x50\xf4\x57\x4f\x0d\xaa\xba\xfa\x1e\x69\xd3\x01\x32\x04\x45\x77\x4e\xcd\x75\xa8\x94\x94\x5f\xa7\x1a\x0e\xd3\x2b\x89\xbd\xab\x99\x58\x73\x21\xd8\xaa\xcc\xbe\x80\x54\x00\x71\x25\x21\x29\x6b\xa3\xfc\x3b\xec\xbd\x03\x2f\x4b\xdf\xcc\xc6\x52\xd6\x49\xd4\x54\x06\xc5\x65\xc7\x6f\xea\x55\x1f\x66\x74\x5b\x19\x8d\x59\x6c\x5d\x60\xc9\xd1\x45\x01\x24\xff\x58\x7c\x0d\x09\x96\x05\x8a\xc0\xce\x46\x01\x8f\xd1\x06\xff\x6c\x4d\x49\x2e\x2b\x97\x8b\x08\x40\xac\x38\xca\x13\xc3\x53\xeb\x8d\x18\x35\x29\x58\x6c\xe3\xf0\x6a\x95\x9a\xd0\x8c\x33\x34\xa3\x36\x1a\x2a\xeb\x6d\x1e\x2d\x95\x15\x93\x88\x46\x13\xb2\xd6\xab\xfc\x00\xda\xf8\x80\x47\x28\x54\x5a\x45\x1e\xf9\x2e\xc6\x9d\x88\xc2\xee\x85\x49\x7f\x68\x59\xa9\xef\xf9\x5a\x6d\x28\xbd\x50\xdd\x4c\xe8\xe7\xad\xe8\xd5\xe6\xc9\xaa\xd3\x5e\xbe\x24\xb8\x84\x15\x9a\xdb\x4f\xf9\x59\xa1\x2f\x6f\xfc\x9f\x8e\xa7\xf7\xeb\x5a\x64\xfe\x72\xa9\x85\xbf\xec\x8c\x35\xdb\xb7\xd8\x86\xf8\x1d\x3f\x20\xd3\xa3\x16\x6e\x1b\x55\xcb\x54\x47\x92\x8d\x41\x72\x9e\x45\x75\xe2\x18\xb3\x97\xd5\x93\xb7\x3a\x93\x5e\x1e\x14\x82\xfe\x82\x6b\xda\x3d\xb9\x23\x90\xb2\x83\x15\x53\x57\xdf\xf6\xee\xce\xe4\x67\xdf\xd4\x69\x1b\xa8\xab\x36\x78\x2b\xfa\xe7\xb7\xd6\xe1\xb7\x84\x09\xcb\x03\xa0\x91\xe9\x41\xd9\x61\x9a\x57\xe1\x26\xae\xe2\xb8\xa0\x3d\x35\xcd\x64\x79\x0b\x73\xc9\x3d\x6f\x19\x2e\xd8\xab\x7e\x12\x5c\x90\x3d\xc9\x2d\xc0\x35\x0c\x6d\x14\xa6\xfb\x8a\x5b\xdd\xf4\x6d\xaf\x7b\x26\x8c\x22\xd7\xdd\xab\x83\x15\x19\xea\xc7\x5d\xad\x9f\xee\xb7\xf4\xbc\xfa\xff\x9b\xe5\x8c\x05\x3d\x34\x28\xb0\xcb\x7d\xff\x60\x92\xeb\x16\xbb\xda\x1c\xf8\xb2\xc8\x6e\x73\x33\xfd\xcc\x67\x62\xd4\x2a\xe0\xe2\x2a\xcc\x6b\x97\x2e\x18\x3a\xff\x0e\xf2\x34\xd5\xfa\x00\xa2\x50\x63\xbc\x2f\x64\x31\x37\x2f\xa8\x1e\x64\xfe\x9b\x8b\xbd\x71\xf0\x7d\x83\x46\xfc\x60\x32\x62\x50\xe0\xb9\xeb\x99\xda\xe2\xd6\xc6\x38\x93\x21\xca\x60\xb9\xe9\x2d\x65\x44\x60\xb2\x9e\x67\xa6\x2a\xbf\xa3\xb3\x9b\x57\xcf\x37\x2b\xa9\x16\x79\x78\x45\x97\x6f\x68\x0c\xc9\x1e\x2c\x3b\xf1\x83\x01\xdb\x85\x6a\xa8\xf5\x9a\x9c\x1a\xe8\x10\xf9\xe1\x08\x38\x29\x51\xa0\x37\xf3\x63\xa7\xb0\xb6\x66\x10\xa2\x61\x62\xea\x4e\x7a\x01\x07\x89\xc7\x03\x93\xf2\x6a\x8e\xc6\x23\x5a\x01\x1e\x15\x97\xab\x56\x4f\xee\xd0\x7d\xc5\x78\xa7\xcc\xc4\x6e\xee\xba\x64\x36\x53\xcf\x35\xfb\x65\x45\x85\x1d\x24\xc1\x1c\x95\xa2\xa8\x40\x60\x77\xd3\xe4\x28\x87\x18\x22\xd3\x8e\xd9\x8a\x9c\x90\x52\x3c\xdf\x1c\xf9\xf1\x51\x1d\xba\x55\x17\x90\xcc\x8c\x52\x12\x72\xaa\x7e\xf9\x40\x9c\x02\x91\x5f\xa1\xd5\x21\x26\x32\x4b\x2b\x04\xef\x0f\x90\x9d\x9f\x31\xee\x4c\x87\x2d\x43\x2e\x51\xb4\x40\x38\x40\xac\x6d\x06\x08\x1e\xa5\x63\xbb\x45\x69\xc5\x6b\x03\x34\x25\x21\xdf\x0a\x58\x42\x23\x27\x0c\x72\xb2\x2a\xc5\xa2\x50\xa3\x1c\x55\x49\x2b\x66\x32\x52\xde\x8b\x51\xd0\x00\x19\xce\xda\x84\x94\x28\x03\xac\x94\xd1\x12\x0a\x85\xeb\x0b\xfd\x34\xa5\xbf\x09\x79\xe5\x58\x0c\x6f\x1a\xc7\x0c\x22\xbd\x36\xf8\x6a\x88\x1c\x3b\xb3\x84\xb5\xe7\xb4\x98\x8d\x75\x14\x25\x3b\x86\x46\xa9\x91\x7f\x11\x33\xf4\x4c\x24\x2c\x3a\xd9\x59\x72\xda\xc4\x46\x07\x47\x75\xd6\x4c\x0b\x19\x9a\xcb\x0e\xff\x23\xc9\xa4\x7a\x0d\x6d\xe6\xa0\x0e\x58\x85\xf3\xf9\xed\x18\xd5\xb2\x5c\x5c\xff\x45\xbd\x1b\x86\xd1\x69\x6c\xc3\x39\x60\x6d\x0f\x4e\x69\x5e\x49\x90\xa2\x9c\x02\x2c\x96\xbd\x52\xb4\x27\x3f\xfa\xce\x1f\x66\xda\xb1\x62\x24\xbe\x8f\xc8\x19\xef\xee\x35\x24\xb2\x79\x5b\xa2\xa1\x9c\x4d\x64\x32\x1e\x33\x2c\x9b\x13\x41\x28\xa9\xec\x9d\xd7\xc7\x87\xf7\x24\x69\x34\x37\x10\x8d\x95\x7b\xca\x59\x07\xd2\xbe\xcf\x5e\xf5\xe9\xf8\xf8\xc2\x75\x64\x16\x49\x06\x94\xf0\x62\x49\x39\x08\x2d\xfb\x21\x89\x7e\xdf\x52\x6e\xad\x6f\x3e\x77\x36\x57\x1e\x69\xc3\xa6\x0d\x43\xa3\x34\x86\x1e\xd0\xf1\x49\xc8\xb4\x74\x35\x5d\x83\x95\xdf\x59\x51\x77\x41\xca\x6e\x43\xd7\x80\x52\xc8\xf0\x3e\xd2\xca\x82\x8a\x19\x98\x10\x8b\x61\x54\xac\x2a\x6b\x39\x81\xf2\xac\xa8\xe7\xee\x53\x25\xd1\x50\x16\xda\x6c\xaf\x6d\xd1\x86\xc8\xcf\x7c\x7c\x05\x65\x8b\x06\xa7\xf8\x0a\x27\xa5\x9d\x55\x65\x5a\x3a\x4a\x2d\x65\x3a\x26\xe7\x32\x51\x5f\x68\x90\x47\x49\x7c\x2c\x16\x5f\xf2\xf5\x0c\xe2\x03\x3d\x51\x54\xe3\xce\x0c\x10\x20\x4c\x3e\x67\x34\x81\xa0\xd2\x08\xe9\xb6\x83\xc6\x1a\x41\x09\x2b\xf2\x98\x4c\xb0\x0e\xa3\x7a\x0e\x6e\xc3\x29\xc0\x23\xce\x39\xb3\x62\x57\xeb\x41\xb5\x3f\x53\xdf\x5e\xff\xbe\x08\x9a\xa0\x9d\xdc\x3d\x28\x10\x6a\x3f\x42\x2b\xfd\x64\x31\x38\x23\x79\xd2\xa6\xc6\x7f\x6f\x4e\x77\xef\xc2\xed\x53\x68\x18\x35\x1b\x9e\xc6\x9a\x5e\x2d\x50\x90\xed\xa6\x02\xd9\xe2\x59\x8a\xcb\xd1\x6c\x2f\xe3\xca\xcc\x7a\x92\x66\x7e\x20\xd9\x7a\x2e\xb6\x79\xba\x07\xa8\xac\x14\xff\x5f\x99\x5e\xa6\xbb\x70\x48\x03\x44\xdf\x36\x60\x4c\x58\xa2\xf0\x9c\x56\x08\x7d\xed\xe5\xa3\xbf\x82\x47\x1d\x0f\xc1\xa6\xac\xd7\x22\x37\xdf\x4a\xc1\x23\x36\x20\x41\x2c\x79\x3b\xe1\x43\x4f\xe8\x2a\x78\xb6\xc9\xb5\x5a\x3a\x61\xf7\xae\x30\x0e\xdd\x21\x27\x62\x94\xed\xa9\x69\x02\x6e\x5a\x02\x46\x68\x2e\x0a\x44\xf3\xf8\x27\x20\x6f\xc0\x4b\x6d\xd8\xa4\xc5\x69\x28\xbd\x07\xf7\xca\x75\x07\xd9\x2b\x17\x4b\xd3\x77\xea\x21\x5a\x33\xe5\x6f\x6b\x26\xd6\x2b\x65\x55\xf4\xc8\x7c\xde\xe9\x56\x65\x9e\xa8\x2c\x83\xce\x5f\xc4\x07\x12\x76\x1d\xb9\x19\x96\x02\xd2\x79\x96\x5d\xfb\x17\x47\x90\xe5\x4a\x42\x2e\x57\x52\x5e\xb4\xe9\x88\xea\x70\x68\xf7\xf5\x27\xa5\xe5\x01\x18\xc0\xd7\x11\xfd\xfe\x18\x5c\x4f\xfd\x76\x8e\x86\x5f\x3b\x6c\x0a\x7a\xa2\xe6\x3d\x65\x76\x09\xa3\x72\xe6\x04\xf3\x83\x59\x44\x7a\x55\x89\x55\x06\x51\x4a\xe9\xb7\xee\xf5\x75\xc2\x53\xc9\x14\x1a\xb8\xc8\x58\x97\x6b\x37\x18\x80\x47\xce\x45\x16\x6d\x6c\x05\x48\xfd\xf4\xaa\xdc\x2d\x29\xfa\x54\x3f\x78\x21\x65\x51\x8c\x3c\xd2\x51\x00\xce\x86\x74\xdd\x54\x09\x33\xcf\xcd\xbe\xec\xdc\x84\x45\xb8\xde\xd5\xb3\x98\xa6\xcb\x34\xd1\xbc\x47\x43\x20\x8e\xa4\xe6\x2c\x7b\xe6\x5f\x0b\x85\xd9\xc3\x57\x3a\xd2\x55\x9a\xee\xee\x32\x41\x40\x8b\xb4\x22\x0b\xb5\x97\x4a\xae\xc4\x94\xdd\x5a\x38\x4a\x71\xf7\x92\x8b\x6c\xea\x16\x41\x9a\x8d\x88\xdd\xee\x83\x87\x27\x35\xaf\x42\xed\x89\x34\x2d\x70\xd6\x6c\x93\x2c\xae\xcc\xdc\x11\xf2\x2d\x33\xe8\x8c\xb2\xf4\xf2\x0c\x5d\x52\x96\x22\xdc\x31\xe5\x92\x54\xc1\x21\x14\x50\x33\x7b\x19\x86\x2d\x6f\x98\xc5\x83\xb9\xd1\xda\x09\xad\x71\x83\xbe\x08\x58\x35\x55\xfc\x29\xe4\xe0\x6e\x73\xcc\x0e\xda\x3f\xf6\xc3\xed\x16\x3c\xfc\x85\xd5\x34\xde\x88\x24\xda\xe7\x5d\x4c\xb7\xac\xa3\xd1\xed\xf5\xc4\x6a\xe6\x8d\x88\x6e\xbe\x58\xc9\x49\x3b\x76\x9b\x66\x88\xc1\x02\x76\x0f\x9e\x65\x6c\x76\x4c\xcf\x20\xd4\x71\xc1\x61\x73\xfc\x7d\x2a\xa7\x64\x4a\xfb\x2d\x51\x10\x8f\xcd\x54\x46\x0d\xd3\x8d\xba\x09\xd1\x1e\x06\xaf\x96\x0e\x1c\x79\xd5\xd9\x07\xc8\xeb\x52\x70\xac\x3a\x28\x93\x50\x3e\x74\xf3\xb5\xde\x8d\xbb\x5c\x5c\x10\xb0\x6e\xe2\x34\x46\x6f\x3f\x54\x62\xaa\xb6\x6c\x50\x39\x9d\xeb\x71\x50\xd6\x91\x9a\xc1\x83\xfa\xae\xf1\xd0\x58\x6c\xbc\xc2\xed\xed\x9c\x71\xd1\x27\xf9\x8d\x5e\x67\xec\x67\xa8\xfa\x14\xc5\x2c\x5d\x3a\x42\x72\xe6\x38\x33\xd2\x1b\x52\xbc\x27\x60\x90\x7f\xa0\x65\x90\x2a\x75\xe2\x61\x70\x55\x02\x40\xcc\x1b\x65\xaa\xca\x7d\xf0\x6a\xf6\xc9\x03\xea\xac\xcd\x81\x7b\x15\x34\x65\x6b\x66\xc0\x45\x3b\xd6\xd7\x91\x80\xf4\xb8\xbb\xb7\x55\xa4\xf7\x83\xba\x24\x1c\xc0\xf5\xc2\x4e\xaa\x4c\x08\xd1\x91\x9e\x75\x26\x06\xef\x4b\xc7\xf3\xc4\x19\xd9\x44\xf5\x38\x59\xa4\xc6\x8b\xd3\x77\x94\x2d\x27\x9e\xd4\x23\xd4\x90\x0f\xae\xc6\x10\xc4\x30\x38\x73\x8b\xd2\xae\x72\x58\x49\xed\x8e\x37\x58\x79\x4f\x78\xea\xdd\xca\x31\x79\xd3\x2a\xae\x3a\x49\x67\x74\xdd\x07\x49\x95\xf8\xdc\xef\x32\x19\x08\xa1\x5d\x66\xa9\x96\x04\x01\xc1\x70\xd2\xe9\xae\xed\xc1\xd4\xe3\xef\xf3\x9c\x43\x0f\xcb\xa0\xfb\x09\x19\xbd\x5f\x23\x81\x8a\x2b\xb9\xa2\x68\x86\x87\x15\x4a\xef\xc7\x35\x9f\x61\x7e\x99\x91\xd5\x17\x13\x2b\x36\x4c\x9b\xd8\x49\xc6\xd3\x23\x57\x09\x28\x61\xf4\x25\xa6\x25\x2d\x6a\xa5\x8e\xaa\x4b\x88\xf7\x16\x51\x03\x99\xd6\x5e\x65\xec\xf2\x79\x99\xde\x34\x87\x9e\x1e\x1a\x7b\x41\x74\xb9\x39\xe2\x4b\xa2\xda\xcc\x30\x95\x13\x29\x82\xbb\xa4\xe0\x9f\xf7\x8c\x5b\xa0\xcb\x6a\x67\xd1\x4b\x74\x42\x85\xcc\xb2\x98\xb8\x53\x37\xd3\x4b\x83\x54\x6d\x59\x4e\x26\x85\x99\xb8\x9f\x74\xc9\x2c\xf3\x7d\xa2\x2a\x9f\xd7\x33\x51\xd0\x05\x55\x95\x38\xe0\x7f\x88\x0d\xd2\x46\xb7\xb4\x50\x60\x3d\x8c\xf2\x72\x0f\x19\x6b\xfb\xd2\x50\xcb\x6c\x9d\xd6\x39\xf4\x6f\x4e\xa9\xd2\x82\xce\x47\xf3\xeb\x8c\xf6\x28\x5d\x69\x3f\x93\x54\xfa\x67\xce\xdb\xb4\xa6\x14\xbc\x4a\x6c\x26\xbe\x54\x9a\x71\xcf\x14\x45\xcc\x43\x81\x48\xf6\xc2\x8f\xd6\xe1\x60\x42\x41\x41\xc2\xca\x3f\xac\x94\x6c\x6b\x29\x48\x51\x10\x03\x91\x98\x6d\x33\x3a\x6a\x41\x9f\x0b\xb5\x82\x5a\xdd\x24\x9c\x26\x09\x4e\xdd\x9c\x0f\x37\x0d\x2b\x36\xb7\xc6\x4b\xd7\xff\xcf\x5e\x4d\x78\x6f\x38\xf6\xfc\x7a\xc2\x90\x8b\x7e\x84\x3d\x9b\xe9\xaa\xa7\x97\xc9\x81\x2d\xdf\x5b\x3a\x9b\x79\xce\xef\x67\x7c\x49\xa8\x70\x08\xf4\x11\x2f\x3f\xe7\xf3\xb4\xff\x71\x2f\xef\xdf\xdc\x41\xc1\x4e\x1e\x86\x6e\x23\xf8\xfe\xcd\x2b\xe9\x96\xb5\x47\x1a\xb7\x99\x48\xdc\x1e\x2d\x57\x25\xee\xbe\x8a\x5f\x4d\x80\xe5\xd1\xb5\x73\xf9\x9a\x2b\x59\x08\xe6\xc7\x0c\xe6\x13\x21\x65\x6d\x74\x07\x42\xf6\xf2\x85\xb1\xeb\x46\xcf\xf3\xd5\x4a\x40\x8b\x95\x9d\x69\x71\xb8\x35\x7c\x7b\xf2\x63\x19\x47\x6a\xac\x95\xd3\x0e\x4d\xc1\xe6\x3d\x26\xca\xe4\xc8\x5a\x0c\x78\x14\x99\x69\x46\x5f\xa3\xf7\xef\x4b\x14\x1e\x87\x68\x61\xdb\xb8\x77\xff\x08\x53\xf5\xc0\xc9\xde\x8e\x47\xd4\xa0\x60\xaa\x88\xd6\xc9\x1b\x83\x36\x6d\x3e\x7e\x2b\x2b\xa1\x77\x9b\xcf\x5e\x70\xb5\x06\xce\xd4\x3c\xc6\x4f\x50\x57\x5c\x00\xd3\x5a\x53\x9b\x95\x37\x0f\xa9\xc9\xb9\xe3\x17\x8b\x87\x12\x18\x65\xd8\x9d\x6b\x8e\xd3\x7a\x86\xf7\x94\x17\x83\x81\x70\xfa\x58\x90\xb7\xbe\x6e\xd5\xb6\xb4\xbe\xc6\xca\x70\xf4\x39\x59\xbe\x78\x74\x72\x7a\x58\x3b\xe8\x8c\x10\xff\x94\xb2\xe4\x59\x51\x73\x78\x21\x0e\xc5\xec\xba\x5c\x96\x6d\xa5\xa3\xcb\xb3\x99\xde\x11\xa8\x26\x2d\x4e\x11\xa5\xbd\xf2\xa1\x69\x51\xfc\x2c\x84\x8d\x80\x7f\xc9\x28\xe5\x8d\xc0\xc0\xa9\x22\x60\x98\x28\xad\x79\xaf\x55\xe9\x65\x24\xa2\xfa\xf2\x23\x35\x4a\x79\xa8\x59\x22\x26\x91\xf1\xb0\x12\xb0\xd4\xb4\x43\x97\x59\x2f\x12\xb5\x6b\x7b\x94\xf0\x11\x7d\xcc\x19\x7c\x41\x9d\xee\x82\x33\x2e\xee\x38\xc8\xe0\x97\xbc\x05\x64\x6c\x29\xad\x96\xee\xe5\x33\x4a\xa3\x1a\xd5\xb2\x1a\xd3\xfc\xc2\x06\xb2\x39\xa9\x99\xcd\x19\xab\xaf\x5c\x20\x69\xb8\x78\x3b\x89\xfc\x8c\xe9\x54\x3a\x6c\x6d\x64\x40\x5a\xe4\xc6\x10\xad\xf9\x29\xf3\xae\xaa\x2c\x2d\xa0\x10\xff\x36\x67\x49\x54\x39\xfa\x59\xb9\xf7\x62\x0c\xe8\x06\x74\x73\x02\x60\x00\x88\x2c\x41\xdf\x01\x03\x38\x7d\xe4\xf9\xdd\x09\x59\x80\xdd\x57\xc0\x1c\x67\x77\x8b\xad\x4f\x91\x7d\x90\xe7\x23\x7e\x3a\x27\x5f\x6f\xea\x62\x1d\x3b\x72\x03\xa5\xe4\x84\x89\xdb\x85\xbb\x79\x9c\x3f\xd3\x92\x44\x86\x04\x67\xfd\x6d\x8a\x34\xf2\x37\x7d\x33\xd5\xe2\xcb\xd4\xdb\x24\x15\xa5\x04\xc2\x13\x11\x83\xa2\x8a\xda\x23\xfd\xdd\x67\x62\xcf\x7b\xfb\x41\x90\x34\x55\x07\xc5\x9a\xa0\xfa\xcd\x2b\x0d\x0d\xc1\xec\x5b\x1b\xca\x15\x8c\x59\xb1\xc3\xae\x3a\xca\x4a\xdc\xce\x23\x1e\x2b\x89\xdd\x6f\x82\x04\x61\x9d\x44\xab\x0f\xdd\xe3\x1a\xe5\x0f\xd9\xc5\x43\x23\x23\x7d\xe1\x46\xb7\xea\x6e\x3b\x3c\x65\xc5\x4a\x71\x01\x1f\x9a\x99\x0c\x43\x9a\x87\x44\xd2\xa2\x80\x1f\xa0\x15\x62\xa0\xb2\x34\x37\xbb\x23\x35\x17\xff\x16\xda\xa0\xc7\x09\x54\x35\x07\xfe\xad\x9e\x85\x7f\x33\x97\x49\x33\xe0\xf3\x34\xa7\x5d\xc6\x6b\x38\x82\x9b\x55\xb2\x45\xd8\xa4\x81\x91\x58\xf9\x55\x0b\xfe\x40\x96\x07\x0d\x11\x2c\xc1\x4c\x4f\x38\xf5\xbc\x7f\x3f\x59\x2a\xc0\xa5\x5e\x1f\x8d\x4e\x1b\x34\x07\x35\xb4\x20\x61\x6e\xda\xb1\x41\x71\x91\x17\xc3\x74\xd7\x53\x88\xa4\x44\x6b\x69\x56\x48\xa2\x4e\xf5\x05\x91\xb6\x6e\x48\xf4\xd1\xd3\x4a\xdb\xaa\x03\xc6\x34\x89\xd8\x0b\xe1\x9a\xc1\x6a\x52\x75\xe0\xc7\x8d\xec\x66\x13\x1c\xd4\xea\x2f\x7f\xe4\xcd\x3b\x63\x7a\x56\xb0\x43\xb1\xa1\x6e\xda\x0a\x3a\x8b\xad\x2a\xb1\x91\xcd\xf9\x2c\x49\xf8\xd7\xab\x60\x04\x3a\x6f\xf5\x44\xee\x25\xfa\x23\x55\x92\x51\x6c\x8b\xfc\x57\xa3\x87\x9c\x48\x97\xa0\xbd\x62\x72\xa9\xaf\x28\x65\xe9\x79\xfb\x1e\x26\xdc\xe0\xad\x89\x5c\x4e\xd5\x43\xbc\x90\x0b\x09\x86\x07\x08\x4e\xb4\xcb\xb0\x91\xdb\x8a\x35\xf3\x13\x96\xc3\x03\x04\x47\xe8\xcc\x17\x2d\xab\x11\xce\xf1\x2d\x22\xa2\xf2\x5c\x4b\xb9\x97\x6f\x5d\x26\xa5\x75\x41\x02\x17\x81\x8a\x78\xf6\x85\x9d\x80\xd3\x22\x82\x8a\x45\x0a\x09\x1e\x15\xf2\x46\xbf\xf8\x74\x35\x93\x83\x89\x11\x3e\x92\xc8\xf6\x7f\x7a\x39\xc8\x6f\x66\xfa\x67\x8e\x0c\x0e\x0b\x2a\x11\xfc\xbd\x28\x11\xe6\x83\x21\xa9\xe4\xb5\x68\x51\x60\x25\xea\x6f\x90\xa9\x4a\x51\x92\xfc\x14\xf4\xaf\x5b\xb1\x57\x05\xb7\x5e\x2c\x6f\x85\x45\x11\x2b\x0f\x54\x25\x72\x55\x75\xc2\x46\x52\x75\x05\xd0\x27\x29\x36\xb2\x6a\x10\x44\x2b\x68\x07\x4c\x11\x51\xb5\x62\x28\x67\x05\x49\xf9\x36\xf2\x89\xf4\x8a\x12\x35\xed\x81\x66\x9b\x55\x91\x93\x00\x95\x6a\x6b\xc8\x6a\x91\xc6\x28\xec\x09\x44\x0f\x9e\x48\x6f\xb9\xc7\xec\x2f\x91\x0c\x59\x30\x86\x63\x6c\x6f\x83\xaa\x7d\xa6\x86\x9b\x5c\x5a\x5a\xdb\xdb\xa4\xc2\xc1\xc1\x7c\x8b\xa5\xa4\xd6\xdb\xe1\x8b\x75\x83\xb1\x99\x9f\xdb\xc4\x42\xee\xe9\xdc\xe0\xbd\x24\xd1\x68\x9a\x75\xa9\x68\x6a\x68\x65\xb3\xc4\x9a\x92\x5f\x7d\xb1\x47\x71\x8b\x25\xb0\xfd\xe6\xc4\xd8\x82\x18\x93\x51\xd9\x8b\x79\x61\x06\x49\xcb\xee\x4f\xaa\x15\x86\x00\xad\x03\xa3\x78\x57\x02\xbe\x05\xab\x6d\xdd\xea\xfc\x44\xdc\x56\x20\x6b\x97\xe1\xc3\xd6\xc8\xfe\xef\x2e\x1f\x05\xc2\x2c\x85\x98\x93\x64\xf4\x50\x06\x41\x39\xd9\x4b\x7b\xa2\x4e\xea\xab\x19\x1f\x01\xd5\xff\xed\x0b\x7f\x9f\x82\x28\x05\x52\xde\x6d\x73\x51\xb5\x35\xb7\x0e\xb5\xfe\x2b\xd1\x7a\x1f\x95\x37\xca\xde\xc9\x6d\x0b\x92\x77\xa3\xf7\xbb\x22\xb8\x1b\x95\x97\x43\x4e\xff\xe6\x9a\x53\x19\xd2\xff\x5b\x95\x47\x0c\xa8\x88\x1e\xa3\x76\xd6\x8d\x4b\xb0\xca\xbf\xcd\x92\xa5\xb8\x94\xdc\x96\xcc\x83\x8b\x73\xf7\x3d\x27\xbf\xb1\x3c\x7a\x67\x51\x77\x91\xe6\x67\xb9\xe8\x87\x58\x52\xd6\x50\x0e\x7d\x9d\x71\xc6\x8b\x32\xbf\xd5\xcf\xd2\x39\x84\x7d\x3d\x9f\x16\x9b\x40\x9f\x45\xfd\x6f\x7a\xe8\xc3\x34\x22\x15\x52\x02\x49\x57\xda\x43\x9b\x7f\xd5\x7c\x74\x76\xfe\xa4\x2b\xf5\xcd\xa6\x04\x8b\xdb\x15\x73\x93\xc3\xca\x7a\x92\x8e\x06\xf6\x85\xab\x5f\x20\x5f\xcd\xd2\x92\x73\x27\xca\xa5\x5c\x36\x78\x2f\x55\x59\x51\xad\x75\x61\x76\xe8\x4b\x48\x10\x3b\xd7\x73\xa5\x28\xcf\xf3\xff\x3d\xf3\x99\x55\x70\xda\xd6\x7f\xb4\x11\x19\x79\x45\x0b\xed\x2a\xd8\xf7\xb6\x4a\x87\x73\x31\x6e\xd0\x79\xf7\x67\x7e\x7f\xf6\x9d\x0c\x8d\x59\xd9\x24\x3d\xf5\x71\x7f\x01\x28\x09\xc5\x36\xea\x0d\x3e\x2a\x5d\x3c\x3f\x8e\x22\x3c\x46\x7f\x5b\xaf\x7e\x48\x81\x9c\x0c\x0a\xc9\xd3\x81\x45\x7c\x16\xf2\x50\x30\x3d\xea\xfc\xee\x2d\xd7\x52\xf6\x46\xc8\x15\x8c\xfd\x94\xe8\x5c\x42\xb1\xef\x7f\x22\x82\xa1\x58\x70\xfa\x88\xee\x65\x44\x0f\x3f\xc1\xcf\xdf\x89\xeb\xe0\xe2\x2d\xba\xfb\xeb\x3d\x9e\xcb\x9e\xff\xec\xf2\xe2\x3d\xa7\xb3\xc3\xdc\x30\x65\xc2\x2c\x6b\xcb\xb2\xb8\x44\x5b\x37\x90\x4f\xbf\x17\x71\x38\xdb\xd1\xb3\xc3\xc7\x89\xb8\x3f\x97\x96\x45\x24\xf5\xe7\xa1\xe3\xab\xb0\x41\xf7\x4e\xcb\x7f\xf8\x84\xfb\x3a\x8e\x77\x32\x0c\x84\xfc\x0d\xd5\xdf\x1e\x4d\xde\x7c\x67\x0f\xf3\x7b\xd8\xb6\xca\xfb\xe7\x75\x2c\xd3\xc8\xdc\xc3\x44\x04\x73\x99\x08\x76\x1d\x3a\x76\x71\x9b\xc0\xd0\xc8\xa6\xfa\xbf\x9b\x2e\xe2\x74\x15\x1a\xab\xc9\xca\xce\xec\xaa\xdd\x36\xf2\x87\x18\xd6\xfa\x4f\xc9\xef\x7d\x15\xff\x7c\xbc\xa2\x6f\xca\x38\x20\x9e\x38\xeb\xc1\x70\x78\x59\xdf\xc5\xed\x60\x89\xaf\x0c\x40\xaf\xbc\x14\xfa\x79\x50\x4a\x1c\xd4\xc6\x81\xbc\x13\x3b\x5d\x14\xa0\x4a\x53\x85\xa5\x03\xbd\x2e\x5a\xe4\xea\x11\x42\xa5\x5a\xca\x81\xe4\x65\x1c\x47\xe6\x83\x17\xe2\xd5\x4c\x79\x6e\x86\x15\x6e\xc6\x60\x13\x36\x15\xfe\x17\x9c\x3c\x3e\x32\x2b\xe9\xa9\xf7\xde\x34\xab\x3d\x29\x81\xe3\x93\xfe\x78\x1d\x7f\x33\xef\x3e\xc4\x68\xb7\x43\x1d\xf6\xba\x4a\xb1\x6d\xe6\x06\xea\xb0\xf9\x55\x60\x38\x66\x32\xd2\xa5\x9d\x12\xbe\x8a\x90\x01\xdd\x13\x75\x7d\x55\x91\xd1\x54\x1e\x98\x73\x05\x2e\xf2\xcf\x8d\x25\xcc\x91\x02\x61\x75\xae\xa4\xf4\xca\x1e\x35\x0f\x9d\xb5\x77\xee\xc3\x82\x69\x47\x73\x02\xdc\xf6\x03\x97\x06\x23\xdc\x56\x2d\x97\xb7\x07\x82\xc2\x1a\x1a\xdb\x81\x28\xa7\x94\xaa\x04\x84\xd7\xe2\xd3\x2a\x0e\x83\x20\x7b\x74\x4e\xf9\x0b\x7d\xb9\x8f\x4b\x71\x83\xc4\x7c\x2e\xfa\x62\x93\x7a\xae\xb0\xb2\x5a\x09\x56\x58\xfb\xcf\x3b\x37\xf6\x8d\x8c\xc0\xc0\x72\x10\x3f\xe9\x73\xa0\x12\x18\x21\xdf\xe5\x86\x85\x87\x98\xa8\x27\xec\x4f\x0c\x9c\xc7\xdf\x19\xea\x99\x3e\x4e\x0c\x87\x5f\x6d\x94\x92\x44\x92\xa2\x71\xd0\xb1\x58\xa4\x63\x9d\x44\x11\x3e\xfa\x66\x02\x20\x20\x42\xa7\xc0\x10\x48\x4b\xcd\x3b\x73\xb6\x2b\x77\x96\xe8\xaf\xcb\x7c\x4d\x32\x7e\x60\x47\xa1\xcf\x78\x5e\xda\x65\x6d\x5c\x65\x1f\xf1\x4f\xbd\x13\xe1\xf1\x17\x1d\x0c\x06\x60\xe9\xf2\x00\xe5\x35\xd8\x66\x4d\xf7\xe6\x23\xa0\xff\xa0\x5a\x07\xda\x97\x94\xec\xec\x83\x51\x82\x31\xc8\x01\x49\xd6\x6c\x88\xbc\xc9\xe6\xd3\x36\xfe\xd8\x6b\x9e\x9e\xb2\xbc\x68\x83\x98\xc0\x15\x36\x11\x09\xb7\x9c\xb1\xe9\x9a\x64\x7e\xe7\xf7\x6e\x2a\x50\x64\x96\x34\x82\x71\x4a\x16\x08\xea\x4d\x27\x29\x4d\x42\xab\x64\x12\xfb\x6b\x91\x13\x63\x2f\x03\xb9\x04\xc0\xbf\xe3\x9d\xe5\x4f\xa6\x89\xed\xbe\xb3\x63\xe4\x54\x2e\x83\x01\xb3\x73\x1a\x82\x41\xef\xd4\x9a\x8f\x2b\xf1\xc7\x79\x88\x69\xd8\x92\x53\x1f\x31\x46\x9e\x75\x79\x54\x69\x6b\x31\x2a\x42\x3b\x5b\x85\x1a\xa5\x4d\xa8\x3a\xc7\x16\x23\x8b\xf3\x14\x35\x41\xec\x3c\xa0\x6b\x34\x26\x22\x0c\x65\xb7\xfa\x95\xd4\x84\x2b\x2d\xd5\xa7\xaf\xad\x69\xc8\x18\x19\x64\x5a\x32\x8a\x6c\x52\x37\x84\x3b\x37\xc9\xb8\x94\x06\xa9\xcf\x89\x5c\x5d\xab\x0d\x61\x9b\x67\x6e\xcc\xd3\x6d\xeb\x5b\x7e\x95\x41\x3f\xf6\xff\xe6\xe5\x39\x18\x15\xaf\xd3\xdc\x5f\x79\x6b\x0f\xf2\x77\x8b\x10\x40\x0d\x85\x6c\x2f\xa4\x28\x28\x57\x19\x59\xe8\xa9\xe8\x9d\xb6\x31\x95\x1e\xe7\x53\x95\x03\x79\xa5\xab\xf9\x03\x2a\x5d\xcc\x6f\xa6\xb2\x06\x65\x80\x13\xaf\xb0\x0c\xe2\x16\xf5\xa2\xe2\xd0\x73\x18\xe3\x0b\x96\xe2\x6f\x0f\xb4\x19\x33\x34\x41\xc5\xc4\xf5\xea\x81\x4d\x40\xbe\x41\x25\x73\x04\x48\x52\xb3\xbc\x2f\x8d\x47\xbc\x30\x84\xa2\x16\xb5\x4a\x53\x11\x66\xb3\xfd\x39\x19\x5b\x40\x73\x52\xcf\x57\x0a\xd5\xeb\x87\xde\xed\x62\x8f\xdd\x27\x7a\x19\x39\x3f\x52\x12\x34\xa5\x4c\xe0\xfe\x5d\xad\xcf\xae\x5f\x78\xf9\x87\x1a\x9b\xf6\x45\xab\xa2\x0e\x45\x25\xff\x1d\xd3\x45\x43\xde\x32\xe5\xc6\xf3\xe7\x5e\xda\x16\xd2\xac\x02\x92\xa2\x2e\x98\x42\xf1\xaa\xae\x98\x3e\x1e\x06\xf2\x4e\x5f\x8f\xab\x6f\xe2\x18\x01\xc3\xfa\xff\x6b\x1f\x99\x5b\x78\x6d\xa9\x80\xdf\xc3\x5a\xf9\x11\x59\xab\xc0\xda\xa3\xa8\xf6\x6c\x1d\x4d\xa2\x3a\x3f\x6b\x23\x49\x9a\x18\x66\x0f\xb0\x53\x1b\x7f\x9e\x38\x0d\x1a\x7b\xd8\xb3\xe6\x40\xbb\x18\x67\x65\x2f\x4e\xe5\xa2\x9a\xdb\xd7\xc5\x38\x10\xac\xa6\xa4\x6a\xb0\x9b\x76\xd9\xab\x01\x2b\x22\x78\x55\xa4\x11\xbb\xd2\x9d\x25\xcf\xc1\xbe\xc1\x5e\x2f\x12\x87\xe3\x74\x9c\x01\xb1\x94\x94\xa9\xac\x25\x6e\x10\x94\x54\x79\xe7\xf4\xbf\x90\xc0\x1d\x14\x45\xdc\x77\xb1\x5f\xcb\x7c\x77\xe3\x42\x65\xcc\x2f\x12\x5c\x7b\x73\x95\x53\x62\x8e\x92\x2e\x82\x67\x7d\x89\xb2\xab\xf7\x8a\xa8\xde\x4a\xd4\x24\x62\x95\x7e\x88\xa6\x47\x7e\x37\xdd\x89\x4f\xb5\xbf\xf3\x4c\xef\x97\x79\x53\xb0\x36\x28\x15\xc7\x47\x97\x0c\x9b\xb1\xfe\xd8\x7a\x10\x8d\x60\xe4\xb8\xd0\xae\x99\x1b\x82\x91\x6d\x05\x25\xe4\x26\x40\x43\xcb\x77\x30\x1b\x76\x91\x16\x1e\x61\x58\x3e\x19\xfc\x81\xcc\x94\x4e\x9e\x6d\xef\x01\x07\x82\x19\x01\x70\xdf\x5d\x38\xb1\x76\xb6\x9b\x66\xd1\x3a\xa8\x5e\x60\x88\x72\x3a\x00\xe4\x19\xa5\xaf\x43\x21\x7e\xb9\x2b\x33\x10\x35\x0b\x7e\x84\xd0\x3b\xb4\x60\x67\x4f\xe2\x6c\xad\xd6\xb9\x9b\x2d\x82\xd9\x6b\x43\xb1\x82\xcc\xe4\x6e\x70\x92\x78\x13\x3f\x8d\x4d\xdb\x65\x92\x29\xf7\x2b\xc9\xcd\xff\x59\x7a\xb3\xea\xc5\x7f\xc5\x73\xe1\x5d\xb8\xee\x76\xf4\xef\xb4\x42\x4f\x41\x51\x1f\x2e\x12\x35\x68\x7d\x9b\x85\x29\x52\x21\x2e\xfc\xe3\xc9\xc5\x7f\x06\xab\x07\x40\x0f\xbd\xa2\x82\xec\x90\x15\x54\xe4\x64\x89\x84\x19\x7e\xaa\xc4\xb4\xf8\x4b\x8a\x5f\x66\x72\xa4\xa8\x2e\xd1\x9a\xbe\x39\x71\x18\x92\x85\x6f\x23\x6a\x1b\x28\x3a\x7c\xaa\x27\xc1\xd7\x22\xe0\x6d\xb6\x86\xca\xab\x81\xd0\xf0\x7c\xc5\x79\xf1\x67\xf2\x70\x6f\x16\xd2\x7e\x28\xe7\x8c\xe9\x22\x64\x33\xc7\x5b\xd8\xdd\xd8\xef\x3d\x34\x41\x7d\xc3\x55\x46\x0a\x0f\xac\x14\x01\x19\x20\x28\x20\xf7\x61\x30\xf6\x0b\x03\x11\xfe\xac\xe5\xd7\x2e\x15\x56\x8a\x57\xa3\x85\x23\x75\x5b\x8f\x80\xb5\x59\xb5\x23\x48\x57\xd7\x09\x8a\xa2\x3d\xb7\xbd\x17\x4b\x30\xfc\x92\x47\x4f\xc4\x06\xcf\xf5\x4f\x1c\x8f\xea\xfb\x8f\x4f\x8a\x1f\x65\x42\x10\xfd\x3f\x16\x22\xff\x1f\x7e\x02\x2c\x8a\x19\xcc\x92\x36\x9a\xf0\x2c\xc2\x7f\xa6\xbc\x30\x85\x91\x89\x38\x3a\x28\x60\xe8\x21\x0e\x0b\x0a\x60\x3f\x84\xe2\x31\x95\x7a\xc0\xc8\x33\xcf\x13\xb6\x10\x16\xe9\x9b\xc0\xfa\x93\x7f\x09\x56\xe1\xbd\x01\xb2\x2a\x0c\x6c\xd4\xe1\x6f\xac\xb6\xc8\x25\x11\x42\xf4\x7a\x2c\x9e\x25\x1c\xf1\x9f\x26\xe1\xb4\x1a\x7a\x7d\x90\x4d\x20\xe8\x9e\x95\x08\x57\xd3\x10\x52\x08\x31\x48\xcd\xac\x43\x21\x4c\xd7\xbb\x34\x5c\xba\x1a\x36\x59\x47\xb7\x92\x4e\xaa\x96\xc0\x54\xb0\x9e\x74\x06\x88\xbd\x7a\xc4\x02\x3a\x98\x4b\xc7\xd3\x1e\x2c\xd1\xa9\x82\x15\x56\x59\xb4\xa2\xbb\x28\x55\x57\x55\xae\x2d\xa8\xa4\xe0\x91\xc5\xa5\xca\xe5\x63\xd3\xa2\x9b\xfd\x73\x8a\x2c\x3e\xb9\x97\xff\x7d\xef\x55\x55\x65\x41\x13\x7b\xd4\xfe\x78\x71\x39\xa7\x3d\x18\x55\x51\xf8\xb9\x73\xef\x2c\xcc\xc5\x7b\x4f\x7c\xf4\x7b\xa6\x14\x99\x80\xaf\x8e\x07\xd7\x2f\x07\xb2\x2b\x0e\x39\x3f\x43\x48\xde\xd3\xca\xa4\x5f\x78\xd8\x73\xc1\x94\x9b\x03\x76\xa1\xab\xaf\x27\x8d\x73\x21\xe0\x20\x8e\x09\xb0\x58\xaf\x65\x3f\x7f\x0b\x95\xa5\x80\xc1\x2f\x98\x53\xd3\xdd\x43\xeb\xe0\xf4\xae\x00\xfe\x80\x82\xe9\xaa\x96\xbe\xbe\x4f\x4b\x03\x1a\x3a\xe3\xde\x10\x42\xcd\x6e\x34\x1f\x37\x6c\xae\xe8\x3d\x3a\x17\x60\x04\x0c\x98\x64\xa8\xb4\x4a\x67\xcf\x8d\xa3\x44\xd5\x4c\xb5\xca\x17\xad\x92\x82\x59\x97\xaf\xdc\x68\xec\x33\xf3\x63\x56\xd9\x0e\x69\x13\x86\x1b\x2c\xc9\x55\x11\x57\xbd\x00\x4f\xa3\x09\x33\x67\x2c\x7e\x51\x2e\x4d\xd5\x0c\x87\xb0\xba\xc3\x62\xd8\xae\x1e\x88\xa8\x78\x79\x06\x3a\x6c\x79\x2b\x89\x60\x45\x58\x42\xe9\x10\x0a\x5d\xd6\x3e\xdf\x86\x83\xa1\xec\x66\x50\x37\xa9\x2a\xa0\xbd\x66\xba\xf1\x45\x72\x48\x4c\x66\xe9\x80\x43\x48\x78\xcf\xb9\xf6\x89\xb3\x69\x0d\x1a\xe0\xf1\x60\xba\xf6\xf2\x8b\xcb\x82\x5d\x78\x7b\x72\x76\xb3\x31\x95\x29\xf7\x7a\x5d\x23\x14\xd7\xef\xab\xce\x32\xc1\x39\x46\x2b\x13\xb8\x5c\xd3\x9c\xd5\xd6\xc5\x95\x5c\x92\x78\xa9\xed\xd7\x37\xf5\xa4\xa6\xae\x46\x69\x70\x0e\x3b\x17\xbf\xd6\x42\x78\x4e\x1f\xea\xd3\x8d\xbe\xb3\xbc\xdc\xd1\xc7\x4c\xa8\x62\xa0\x43\xfd\xbe\x9c\xd6\x2b\x35\x96\x1a\x3b\x8c\x3a\x83\x7d\xfa\x5a\x4c\x28\xeb\x8b\x3e\xbd\x67\xa2\x8b\xdc\x37\x35\xf7\xe5\x43\xf5\x0b\xfe\xf8\xcd\xa2\xa4\xd7\xac\x6a\x7b\x50\x00\x41\xc6\xbe\x93\x95\x2f\x86\x38\xb5\x88\x31\xe7\xc9\xab\x7d\x65\x1a\xa5\xac\x1f\xf5\x29\xae\x79\xaa\xc9\x42\xc5\xa9\xa8\xfb\x65\x6d\x87\x9e\x67\x39\x35\xb6\x67\x32\x8f\xf1\x67\x92\xcb\x1a\x83\x13\x63\xc7\x38\x31\x36\x8a\xd3\xb2\xe6\x52\x2b\x59\xf9\xcd\x20\xf9\x8f\x27\xab\xdd\xc3\x1a\x75\x6e\x01\x28\x00\x4d\x60\x0e\x17\xaa\x32\xe0\x7e\xca\x0d\x89\xc4\xca\xfb\x6e\xf2\xca\xfe\x92\xd6\x17\x9c\x36\x8a\xbc\x2a\x2d\x2a\xad\x78\x52\x66\xda\xf3\x60\xaf\xb0\xac\x1d\x0d\x01\x0b\x9c\x56\x41\xd6\x49\xba\x64\x4c\xa4\xa8\xe8\x4e\xed\xd8\xcf\xcf\xc7\x41\x12\xb1\xe8\x52\x57\xb1\x38\x6d\x25\xd5\x38\xfe\x23\x53\xd4\xd3\x6c\x40\xcb\x12\xd8\xbf\x17\xf3\x55\xc7\x8e\x8a\x71\xd1\x51\x49\x30\x0d\x7f\x65\xa4\x66\x56\x1d\xb9\x59\x25\x2f\xdd\x5a\x3a\x7b\x79\xed\xab\xe8\x02\xfb\x56\xc3\x77\x81\xb8\xac\xc7\x78\xd0\x6c\x80\xd2\xde\xbb\xda\x3a\x40\x2e\x9a\xe8\xae\x48\xb3\xe1\x05\xd1\x3a\xfc\x94\x26\xb3\xef\xcd\x06\x62\x3d\xb2\xae\x36\x9a\x2a\x6b\x65\x89\xf3\x68\x79\x03\x27\x3d\x1e\xd0\xb6\xe3\x83\xab\x54\x36\xf4\x93\x3d\xab\xb6\x50\xba\xb7\x77\x83\xa0\x12\xf6\x09\x3f\x4a\x41\x9a\x63\x2b\x77\x01\x7a\x2a\xd8\xe2\x7a\x16\xb5\xd3\x0f\xb6\xd7\x88\x7c\x63\x86\x11\x9a\xcf\x69\x1f\x4c\x9e\xcd\x2f\x36\x5e\x70\xa5\xcc\xfe\xae\xa2\x66\xb6\xe0\x75\xc3\x1d\x4d\x83\xcd\x63\xc7\x4f\xb7\x38\xaa\x85\xd6\xcb\x69\x8b\x7e\x8c\xb0\xbb\x32\xe9\xe4\x8c\x5d\x3a\x4b\xf0\x83\x55\x91\xac\xf9\xe7\xe9\x88\x26\x5a\x46\x4e\xa5\x47\xd0\x2a\xc1\x24\x12\xa0\x5c\xbb\x7a\xe8\xe4\x70\x78\x13\xea\xaf\x2e\xef\xc5\xab\x27\x5e\xa7\x96\xb8\x0c\xb0\xc4\x12\x2a\x7a\x8d\x93\x6e\x04\xdf\x6f\x47\xe5\x35\xe9\x69\x9e\xaf\xba\x0f\x2c\x5d\x44\x2f\xa1\xa7\xd0\x5a\x0d\xa7\xb5\x4f\x4f\x50\x7a\xb9\x42\xba\x9d\x9b\x97\xfb\xc1\xa0\xac\x10\xab\x9e\xb4\x42\x5e\xd2\xbd\x30\x93\x2a\x60\x7e\xf7\xf5\x25\xfc\xa2\xf9\x25\xf6\xa2\x95\x22\x0f\x93\x25\xe7\xe9\x1c\x2f\x3a\xf5\x02\x4b\xa9\xa9\x13\x86\xe8\x2a\x13\xc2\x1b\xd4\xad\xd4\xc4\x20\xe3\x7a\x7d\xd0\x93\x17\x7d\xa2\x42\xb2\x54\x0e\x81\x82\xac\xab\xd3\xc3\x6c\x42\x52\x61\x6c\x2a\xc5\xb1\x74\xda\xce\x91\xd1\x91\x27\x1e\x5c\x5e\x26\xbd\x59\x16\x2b\x3f\x76\xb7\x0d\x37\xe9\xc3\x39\x62\x52\xff\xc9\x2d\x52\xbb\x28\x4e\xbf\x50\x42\x94\x92\x22\xd8\x98\xca\xf3\xa1\x52\xe4\x14\x8e\x06\xaa\xf8\x35\xce\x77\x30\xef\x01\x5b\x2e\x0b\x1a\xa6\x67\x1f\x2b\xbd\x5a\x00\xbd\x42\x50\x7c\x62\xb5\xee\x95\x27\xc7\x47\x69\xa9\x24\x81\x20\x7f\xa1\x76\x65\xd2\xf3\xbd\x95\xe3\x0b\x33\x8f\x95\x33\x91\x32\x43\x45\xf2\x3b\x61\x27\xa6\xfc\x21\x06\x97\xbd\x35\x5d\xad\xe0\xdf\x67\xa9\x5e\x0b\x86\x2f\x6e\xd1\x5e\x28\x2e\x35\x66\x45\x67\x29\x20\xe6\x13\xcb\x9c\xd2\xbf\xae\xfe\xe1\xc7\x34\xfa\x3b\x5d\x06\x1f\xfb\x62\xef\x42\x68\x0d\x42\x03\x73\x35\x2d\x87\xbb\x10\x2c\xbc\x91\xda\xc5\xf4\xe6\xb5\x43\xd0\x09\x48\x1b\x74\xc7\x8e\x39\x88\xd3\x83\x99\xb2\x1b\x9b\xa3\x32\x3e\x5b\x45\x1c\x7d\x0b\x7d\x71\xc6\x21\x81\x1a\xab\x8a\x9f\x11\x34\x42\xb1\x04\x0c\x54\xe8\xef\x16\x24\xd1\x49\x67\x87\x70\x41\x1a\xa4\xcb\x62\x21\x32\x4a\x5a\xcd\x18\xe6\x44\x68\xad\x23\x1d\x8c\x1c\x7d\xe1\x14\x45\x49\x8c\xaf\x2f\x94\xb6\xb5\x7e\xc2\xfd\x1d\x6d\x5a\xab\xfd\xe0\xf4\xc2\x74\xfe\x1e\xf5\x8a\x76\xba\x69\xdc\xb7\x3f\x06\x43\xca\xc4\xf4\x05\x51\x2d\xed\x01\xda\x85\x7a\xe0\x76\xe0\x52\xb3\x59\x97\xa5\x97\x3a\xf0\x71\x9b\x17\x8f\x83\xbb\xa6\x83\x21\x43\x24\x55\x97\x9f\x92\xc7\xf3\x1c\xcb\xf5\xb9\x95\x85\x0a\xa7\x14\x39\x58\xe4\x57\x98\x3f\xf2\x15\xf0\xaf\xde\x4c\xfc\x96\x9a\xe9\x85\x3f\x0e\x4e\xa2\x31\x81\x44\x87\x29\x14\x5b\x8a\x3b\xb2\x73\xe9\x6b\xc4\x99\xb4\x92\x94\x1b\x3c\xf2\x50\xaa\xd2\x7f\xc2\xb0\xc3\x88\xe5\x55\xe8\xe1\x03\xf3\x28\x29\xab\x28\xdc\xb1\x1d\x14\xd8\xb1\x9b\x4a\x19\xe6\xac\x60\x48\x9f\xdb\x70\x46\xb9\x52\xf9\x74\xea\x69\x6e\x16\x00\x33\x5e\x9e\xf2\x51\x88\x11\x02\x63\x34\x73\xdc\x71\x74\x85\x7c\xdf\x5a\xaf\x3a\xb9\x72\x5c\x68\x72\xfc\x79\x15\xf5\x71\x70\x4e\x50\x94\x88\x2a\x68\xb4\x6d\xd2\x8f\x10\x41\x5f\x23\xc5\x59\x51\x6f\x19\x43\x75\xbf\x4e\xdb\xe9\x7a\x29\x57\xab\xe3\x39\x69\xbd\x9c\x86\xd7\x1d\xd0\x31\xbf\x96\x0e\xec\x19\x5b\x2b\x34\x6e\x29\x2c\xcd\xdc\x7d\xc8\xe9\x46\xa0\x68\x76\xce\xb1\xcf\x30\xbf\xb0\x99\xb4\x2a\x72\xf3\x58\x40\x50\xeb\x10\xba\x9a\xe2\x27\x4f\x9c\xa5\x22\x36\x55\xbf\xb0\x9a\x63\x54\xd9\x60\x1a\x53\x78\x50\xbb\xae\xf4\x94\x33\x37\x4b\x0f\x95\xf9\x1b\x33\x83\x44\xcf\x1c\x44\xd5\x11\xa7\xfa\x45\x67\x1a\x20\xc1\xc4\x82\x8b\x90\xba\x63\x4b\x44\xf9\xef\x9f\xbb\x6d\xb8\xcd\x5a\x38\x02\xbb\x39\x0c\x0a\x51\xef\x24\x67\x2b\xef\x7a\xef\x22\x3b\x00\x49\x79\xd2\x45\x9e\xfa\xea\x74\x47\x0e\xa7\x04\x52\xcd\x7a\x2c\x85\x38\x73\x4a\x96\xa0\x1a\x4b\xc8\xb6\xef\x38\xa8\x05\x86\x9a\xe2\x19\x6f\xb3\x4e\x61\xaa\x3f\xd8\xe6\x1b\x61\x33\xd1\x42\xb4\x84\x27\xb9\xc0\x93\x79\x82\x31\xb8\xe3\x73\x96\xce\xa1\x09\xb3\xfa\xde\xca\x4e\xad\x46\x5e\x08\x4a\x74\x52\x0b\x3a\x59\x26\xf4\xf5\x9c\x46\x26\x0c\x3b\x07\x68\xa3\x12\x26\x03\xc6\xf4\x1a\x34\x6f\x4d\xaf\xb3\x2f\x23\x9f\x53\x43\x27\x1f\xb7\x75\xbb\x2a\x28\x03\xce\xe3\x62\x72\x2a\xa2\x2c\x23\x27\x54\x36\xf7\xbe\x5a\x2b\xbe\x0c\x5d\x23\x29\x3d\x95\xca\x0d\x19\xf7\xdf\x22\x0e\x6d\xee\x17\xbf\x07\x7c\xc2\xb1\xbe\xe8\x0b\x8e\xf3\x8b\x7e\xe3\xb8\xbe\x0e\xc8\x1c\xbf\x66\x89\x8c\x80\x84\xea\xf8\xd3\xab\x72\xd8\x3e\xfd\x46\xd7\x14\x9d\xaa\x97\x1c\x5c\xcc\x6b\xc3\x80\x06\x96\x38\x53\x16\x74\x3a\x8d\x57\xa2\x87\x70\x25\x78\x90\x28\x1e\x43\xc2\x4d\x72\x49\x13\x2c\xeb\x29\xae\x21\xce\xed\xa4\x5e\x01\x05\x4d\xe0\xa6\xb2\xcf\xd9\x07\xa7\xc3\x21\xfe\x1f\x54\xae\xb6\x3c\xe4\x11\x52\x28\x18\xf9\x3f\x8e\x4d\xed\x72\x94\x2d\x8d\x63\x94\x93\xec\xff\xe3\x7a\x68\x67\xe2\xf1\x85\xf0\x4b\xf5\x08\xb4\x5c\x6d\x5c\x77\x71\x57\x15\xd8\xb5\x01\x47\x04\x57\xd2\x0f\x75\xce\x92\xf4\x8d\x6c\x03\xb7\x12\x37\x68\xae\x51\xf5\xf1\x4f\xed\xaf\xac\xc4\xd5\x59\xef\xfc\x9a\x8c\x7b\xc0\x54\xff\xfb\xa7\xbc\x08\x2a\x8a\x63\xc8\xff\x1d\x7b\x11\x06\x99\x88\x63\xb0\x3f\xe8\xaa\x17\x4c\x51\xe2\xaa\x2f\xbe\xe3\x45\x02\x67\xb5\x39\x82\x77\x7d\x16\xdc\x7f\xd2\x91\xd4\x5c\xcd\x95\x7b\xff\x60\x0a\x51\xce\x10\x38\x67\xa1\x5e\xa9\x7e\x3c\x6c\x0a\xde\xbe\x0d\xff\xcf\xe9\x80\x73\x19\x34\xe1\x67\xae\xcc\xda\x24\x3f\x40\x4f\x85\xf4\xae\xf9\xbe\x0d\x76\x7f\x04\x6b\x3d\xeb\x47\x67\x32\xdf\x6c\xe4\x0d\x47\xae\x78\x89\xec\x6f\x56\x52\xe5\x85\x5b\xc2\xcd\x95\xef\xeb\xfd\xab\x69\x76\x3e\x71\x34\x67\x5a\x42\x93\x0f\x6b\x14\x87\x73\xaa\x48\x0c\x0a\x26\xcc\x73\x1c\xb8\xf7\x2d\xf5\xa2\x0f\xf4\xaf\x7b\xff\x1a\x78\xd1\xeb\xe5\x6b\xbf\xeb\xe9\xab\xd7\x8b\xd7\xb3\xf5\xa2\x7f\x53\x06\x3d\x4f\x2e\xa1\xa5\x3d\xbb\x44\x3f\x26\xcf\x66\x9e\xe9\xfb\x34\xcb\x58\x53\x2f\xcb\x9d\x05\xda\xda\x4e\xb8\xcc\xc6\x61\x42\x5e\x55\xbb\x0c\xef\xe3\x74\x52\xac\x6f\xba\xa7\x0e\x6e\x01\x86\x96\x6a\x13\x06\x49\x9e\xaa\xd0\x81\x24\xb2\x9f\x12\xf9\x32\x41\x1b\xf9\x40\xca\x70\x40\x53\xa2\x71\xc9\xc7\xbd\xab\xc3\x32\x77\x1a\x48\x12\x62\xc2\x0a\x09\x9f\x7d\x32\x77\x68\x8b\x88\xf3\x40\xe8\x73\x9a\x88\xb3\xa0\x9d\x44\x31\xd0\x0d\xa7\x33\x69\x44\xa3\x0c\xb3\x10\x5d\xd0\xa4\xed\x67\x9b\x77\x07\x42\x9a\x4e\x3d\x5c\x65\x3a\xf2\x83\x02\x28\x69\x3a\x09\x59\x98\x14\xa8\x84\xa6\xa8\xa4\x4e\xd0\x44\x99\xa2\xf9\xa9\x4b\x68\x8d\xe2\x2a\x09\x8f\x6a\x1a\xa3\x27\xa1\xb9\x41\x41\x28\xd9\x77\x9c\xa8\x1f\x22\x83\x19\x34\xda\xdc\x36\x9d\x70\xd7\x35\xb8\xa4\x1b\xc7\x3e\xae\x03\x45\xfb\xdd\x48\xbc\x0f\x64\xfb\x5b\x24\x53\x5c\x09\x47\x23\xca\xf6\xb9\x29\x82\xe2\x4f\x76\x48\x6b\x98\x48\x90\x17\x3f\x66\xc6\xc8\x8c\xa3\x2f\x89\x16\xe0\x0c\x5f\x08\xe3\x3d\xa7\x26\xf1\x90\xef\x89\x67\x9f\x97\x63\x54\xe5\xc0\xd0\x21\x9b\x38\x9b\xda\xa1\x84\x48\xa1\xb1\xa9\x9c\xd8\x97\x3c\xbe\x27\x93\x8e\xdd\x7c\xbb\x78\x65\xf5\xac\x52\xce\xce\xb7\xf1\xee\x92\xd5\x0e\x5e\x67\x57\x15\x80\x55\xcf\xee\xf6\x4e\xac\xa0\xb8\x17\xca\x56\x64\x18\x85\x40\x61\xb7\x02\x10\x30\x67\xc6\xdf\xca\x2b\x62\x73\x71\x62\x08\x6d\x09\x5b\x97\xc4\x79\xb1\x1a\x96\x4d\x8a\x26\x32\xd2\xee\x56\xc2\x36\xfa\xf4\xda\x9d\x35\xb6\x48\xab\x27\xd2\xa6\x88\x47\xd5\x30\xf4\xf3\x04\x21\x87\x62\x75\x57\x75\x8f\xa7\xe2\x9f\xbd\x00\x6a\x4c\xda\x3b\xcc\xbe\x56\x4d\x1d\xf7\xcf\x92\x68\x90\x5a\x2d\x49\xab\xa2\x50\xc6\x41\x57\x23\x7d\x06\x80\xad\x86\x38\x80\x40\x06\xee\x78\xb6\x33\xef\x7b\x5b\x3b\x5b\x72\xd3\x99\x44\x79\x75\xe6\x46\x2c\x07\xb8\x71\xc4\xd0\xf9\xfb\xdd\x67\xe5\x55\x6a\x6c\x41\x8f\x27\xdf\x6a\x76\x9e\x06\x8d\xe9\x18\x60\x92\x30\x43\xd6\x0c\xc6\x8e\xa1\x95\xaf\x21\x2e\x70\xde\xd9\xbe\xd5\xdf\x01\xb0\xe1\x53\x4e\xc0\x57\x93\x05\xdd\x21\xa3\xfa\x18\x4f\xbb\xe4\x27\xc2\x14\x4d\x93\x91\x33\xd1\x95\x89\xfb\xab\xae\x48\xdc\x1e\x45\x7b\xff\x01\x72\x23\x6c\x10\xea\x7d\xff\x6e\x50\x7f\xd7\x78\x26\xa9\x83\x24\x3c\xa7\x35\x4b\x35\xda\xf2\xdf\xbf\x46\x81\xe6\x92\x3f\xc7\x41\x90\x72\x65\x92\xe2\x61\xab\x4b\x8f\xa5\x47\x35\xea\xd0\x90\x1b\x42\xf8\xfc\x19\x3d\x40\x5a\x71\x4f\x50\x27\xec\x75\xc4\xed\x03\x16\xbb\x3c\x9f\x85\x3b\xdc\x67\x97\xee\xa8\x31\x08\x50\x22\xeb\x15\x16\xe1\x82\x6a\x19\x4f\xba\xeb\xb3\xe8\x89\x48\x95\xe4\x8a\x42\x12\xb5\xc1\xaa\x13\x69\x52\xd5\x25\x09\xc2\xaf\xaa\xe9\x75\x83\x9e\x19\xbf\x6a\xec\x4d\xcd\x2e\x93\x98\xea\x24\xff\x9f\x3f\x36\x9a\x7c\xc8\x8c\x19\x90\x3a\x11\x32\x39\xe8\x69\x73\x1b\x56\xc1\x78\x73\x44\x55\xae\x2e\xd7\x74\xdd\x47\x9f\x6b\xa9\x6e\xaf\x86\xfd\x56\xaa\x02\x74\xae\x18\xff\xd8\xb3\x53\xab\xa7\xfe\xee\x1c\x23\x59\xb3\x0a\x32\x59\xf2\x8e\x5b\xae\x14\xe8\xba\x11\x0c\x6c\x8f\x48\x86\x1e\x10\x3c\x7f\x08\x36\xba\x86\x18\x86\x2f\xa7\xa2\xee\x98\x6c\x57\x79\xde\xbe\x6a\xea\xdf\xfc\x8f\x26\xc9\xba\xff\x8c\x32\xe8\x5d\x66\xfe\xe3\x08\x9a\x40\x1c\x3d\x37\x16\x5e\xce\x97\x4c\x68\x8a\x8d\x31\xfd\x5b\x91\x08\xb1\xfd\x63\x24\x41\x74\xbd\x77\x2a\xc0\x3c\x85\x63\x5b\xb1\x34\x77\xfc\x39\x01\x54\x9c\xe3\x2a\x51\x81\x31\x60\x92\xc6\x60\xe7\x72\x53\xa0\xad\xf0\xb9\x62\x9d\x03\xb6\x83\x34\x7f\x43\xe7\xba\x97\x09\xc8\x51\x04\x36\x8a\x71\x45\xbb\x8a\x25\x29\xc9\xa5\xc6\x52\xb5\x61\x13\x77\x9d\x06\xce\xff\x33\xbf\xfb\xae\x9d\x6c\xb7\xe4\x06\xa2\x80\x5e\xa5\xdb\x2d\x95\x59\xa1\x62\x59\xa3\xbf\x95\xd5\xd2\x76\xa5\x2d\x2a\x7d\xfd\xf1\xf1\x9e\x28\x95\x0c\xc4\x15\x21\x9d\xbc\xe4\xb1\xd2\xe8\xc2\xed\x34\xa9\x48\x03\xde\xbe\xc5\x27\x8e\x99\x82\x2f\xab\x55\x1b\xe8\xc3\x2c\x6f\x54\x5a\xa2\xb4\xc7\xe6\xfb\x23\xd9\x94\xae\x80\xb5\x07\xcc\xe7\x01\x34\xfb\xa8\xff\x73\x99\xfe\xac\x69\x41\x7a\xfc\xef\xb2\x3c\xda\x87\xef\x3c\x9c\xf5\x23\x4d\xf9\x57\xa1\xb9\x37\x6d\xfb\x75\xa4\x30\x65\xe1\x33\x8c\xcc\xde\x68\x37\xd1\x80\x7f\xca\x3f\xd3\x7b\x5e\xf1\x74\xdd\xe6\xc8\x27\x60\x82\x92\x0f\x71\x6a\x6a\x57\x23\x31\x21\x98\xfa\x80\x99\xc3\x63\xf0\x44\xa1\x90\xc0\xef\xb7\x80\xad\xb7\x9e\x5b\x34\x26\xa2\x8b\x9a\xaa\xf4\xaf\x1a\xab\x60\x18\x99\x1e\x41\xd5\xe4\xcc\x91\x66\x31\x21\xe5\x85\x68\xf1\x1d\x6f\xbc\xcf\xec\xf6\x9a\x96\xb1\x65\xc2\x5c\x0e\xad\xc0\xe5\xd4\x2c\x73\xf4\xc2\xaa\xb0\xc0\x11\x8f\x0d\x73\x43\x59\x9f\xae\x62\xd3\x01\xcb\x19\xef\x0f\xcd\xe2\x30\x78\x13\x22\x1b\x7b\x57\x67\x6c\x09\x8d\x3b\x02\x48\xec\x5d\x11\x6e\x13\x26\x41\xac\xf9\x1f\xd5\x35\xc1\xb9\xaf\xbf\xcb\x93\x4c\x79\xf6\x39\x07\x35\x2d\x87\x9c\x9c\xff\x8b\xcc\x78\xad\xbd\x66\x77\xf5\x68\x69\xae\xa5\x3e\xdf\x49\x5b\x93\x4e\x22\x36\x44\x4d\xbd\x67\x1f\x7e\xef\xa2\x0e\x87\x5d\x49\xc4\x6b\xbe\x0f\x79\x8c\xf8\x38\xcd\x4c\x70\x96\x95\x91\xf7\xa1\x6e\xec\x01\x4c\xbb\xb8\xee\x40\x79\x47\x62\xb4\xbb\xb9\xdf\x65\xf8\x7c\x16\x02\xd9\x9a\x47\x0e\xb4\x3e\x32\xb8\xc5\xd5\x7f\x76\x61\x90\x61\x90\xcf\xa0\xdb\xc4\x95\x7b\x96\x15\xd4\x93\x69\x9f\x49\x53\x98\xd2\x82\x27\x47\xcc\xa0\xda\x5e\xde\x5e\xd0\xb5\x88\xfb\xeb\xcd\x9d\x32\x31\x9b\x53\x80\x2d\x42\x58\x0a\x56\xe3\xe1\x56\x49\x7c\xb8\x93\x8a\x8b\xf3\x87\x6e\xbb\x5d\xf6\xd3\x75\xce\xb4\x74\x97\x8c\x6e\x74\x1a\x5d\x93\x8f\xee\x49\xcc\xa9\x0b\x36\xcf\x26\xed\x13\xa0\x33\x36\xb7\x8e\xef\x9a\x3e\x4a\x75\x5a\xbc\xfa\x63\x3a\x2e\x37\xc2\xb8\xa1\x25\x74\x52\x4c\xca\x5e\x9e\x69\xaa\x93\x22\x77\xa4\x7b\xca\x94\x89\xf0\x19\xf3\x64\x76\xf1\xcc\xd9\x24\x71\x83\x52\x91\x69\x9f\x8a\x1f\xd5\xf2\xdf\x2a\x69\x7e\xeb\xeb\x3a\xf1\xcf\x60\xfd\x6b\x96\x2a\x8f\x69\xa7\xd9\x4a\x89\xa1\x1a\xa4\xb2\x07\x72\x96\xb0\x3e\x1e\x1e\xad\x26\x91\x34\xf6\x9e\x4d\x8e\xd7\xe7\x29\x63\x55\xed\x60\xe4\xc0\x59\xe5\x60\x25\xb3\x8a\xd5\xfa\xe4\xf2\x83\x37\x7f\xb3\x5a\xb6\x9e\x0d\x58\x91\x6e\x66\x4c\x9c\xf7\x78\x73\x3d\x07\x62\x71\xee\x42\xc8\x4c\x76\x5d\xd4\x51\xbd\x09\x2f\xbb\x87\xa9\x72\x0a\x4a\xa1\x26\x30\xb0\xd8\x33\x4b\x2f\x28\x7d\x91\x63\xfc\x3e\x20\x62\xed\xce\x07\x1a\x3c\xb9\x4b\x32\x8a\xde\x3d\xb0\xbc\x49\x2a\x55\xe8\x32\x00\x64\xb7\x5e\x4b\x3c\xee\xc6\x1d\x9d\x3e\x3c\x53\x22\x90\x46\xe8\x7e\xcc\xc3\x4d\x8c\xd1\x17\x64\x73\x63\x01\x92\x6c\x8d\xee\x13\x33\xd3\xcf\x3c\x93\x7f\xf4\x52\x6c\x95\xf5\x26\x49\x10\xb2\x1b\x87\x37\x70\x26\x76\x17\xe7\x87\x1b\x23\x89\xae\xd2\xdb\xa4\x79\x3f\xb1\x7b\xb3\x88\x57\x7a\x37\x42\xcd\xea\x8d\x5e\xcd\x64\xf4\xf7\x3f\x6f\x5d\xb2\xef\xaf\xd2\x40\x65\x72\x99\x3e\x1b\xad\xdd\xd0\xb4\x5f\x01\x65\xe8\xd9\x7d\x63\x39\x89\x6e\x7a\xf7\x17\x27\x5d\x96\x5d\xa2\xd3\xbb\xac\xa9\x93\xa0\xa7\xff\x74\xc8\x0a\x18\xa3\xf3\xc6\xba\x74\xa9\x4f\x17\xb7\x52\x38\x1b\x66\x5b\x76\xc8\x65\x96\xda\xf4\xe4\xe1\x53\x77\x31\x43\x47\x3d\xb1\xa8\xd7\x56\x4d\x13\x4f\xf7\xd9\x3e\x97\x4f\xf3\x8e\xf3\x3a\xf3\xd6\x34\x8a\x9b\xfa\xd6\xeb\xf7\x97\xfd\x52\xbc\xea\x28\xf8\xf7\x32\xd0\x51\x47\xcf\x4c\xd6\xf6\x39\x58\x91\x47\x26\x01\xfe\xb0\x53\x48\x0a\xe1\x34\x76\xd8\x5e\x48\xb0\xb6\x3a\x64\xd3\x74\x17\xd7\x66\x18\xb6\xb0\x97\x8f\xc8\x9e\x07\xc8\x73\x86\x02\xe6\x34\xd9\xef\x8f\x8c\x8c\xbc\x18\x7a\xf5\xde\x3a\x84\x0c\x8f\xb9\x80\x83\x91\xd5\x86\x60\x75\x89\xd7\x48\x8d\xf6\x62\xca\x93\xe8\x89\x8e\x33\x4e\x4e\x90\xf3\x78\xcb\x44\x21\xf6\x35\xfe\x0b\x18\x3a\x8d\x8b\xcf\x59\x82\xa2\xe8\x62\x90\x21\x08\xf3\xdc\xc2\x18\x21\xe9\x14\x18\x05\xb3\x4f\x85\x59\xfe\xa5\xe5\x28\x1d\xff\x10\xe5\x04\xe0\xb2\x77\x39\x62\xc0\x3c\xa9\x0d\x14\x1a\x1d\x7d\xe9\xe6\x62\xfc\xa9\x6b\x83\xa3\xa1\xdf\x8b\x71\xb0\x69\xfe\x91\x85\xaa\x76\xf3\x2a\x84\xb1\x5a\x30\x3f\xad\xa0\x0f\x29\x63\xeb\x93\xb2\xb2\x36\x9d\xdc\x8e\x97\xcd\x23\xf5\xe5\xf3\x24\x13\x78\x61\xa8\x7f\x5b\x24\x83\x63\x5a\xfe\x2c\x95\x83\x89\xe1\xe2\x1d\xcf\x7a\x29\xda\x8c\x1f\x0e\xbe\x0d\xa2\x68\x71\x30\x09\x07\xc5\x4b\x68\x07\xfc\x11\x18\xf1\x12\x4a\xe5\xfe\x1b\x31\x01\xe7\x85\xac\x38\x19\x7e\x7d\xa3\x75\x40\x63\xc5\x2c\x88\xd6\xea\xf5\xf0\x46\x46\x7c\x86\x3c\xcd\xd9\x78\x0a\x22\x34\x84\x84\x38\x31\xd2\x1e\x1e\x71\xf6\xbb\x6b\x6a\x14\x33\x81\x45\xb9\x8f\x34\x97\xb5\xe0\xad\x87\xeb\x40\xe0\x80\x60\xb4\x4b\x66\xab\x7c\xa8\xa0\xa1\x2f\x36\x28\x57\xa6\xf8\x44\x1f\x92\x1e\xbd\x10\x38\xcf\xfd\x56\x7b\x9d\xdf\xc7\x83\x69\xfa\x1d\x23\x49\x67\x92\xa2\xd4\x49\xd6\xe4\x26\x44\x82\xd2\x82\x95\x2e\xf7\x16\xdb\x23\x04\x6b\x7a\xdf\x9f\xe9\xc4\x58\xb9\xb3\x4a\xb2\x60\x74\xe1\xc5\xa2\x94\xa6\xd6\x68\x56\xd2\x21\x78\xc7\xeb\x4a\x32\x85\xc8\x5c\x08\xf6\x93\x52\x8f\x6a\x5a\x17\xdd\xc4\x2b\x4f\x5c\x7f\x7c\x92\xe4\x15\xf5\xfc\x75\xa7\x54\x4c\xb8\xc2\x10\xbd\x85\xf4\xf6\xc5\xcc\xb1\xd9\xf6\x1c\xf0\x5d\xfc\xda\x34\x60\xe3\x1f\x2c\xb5\xb6\xbc\x9d\x7d\x34\xe3\xc2\x3c\x18\x82\x93\xd3\xba\xba\xce\x68\x81\xd0\x0b\x53\xa0\x84\x6e\x89\x79\x5c\xbb\xce\x41\x57\x78\x8e\x2d\x12\xd6\x83\xe6\x5a\x6d\xd6\x03\xbc\x66\x6a\xe1\x0f\x79\xe1\x24\xdb\x4b\xf4\x54\x6f\x24\xcb\xee\xe6\x97\x13\x93\x6b\xdc\xd3\xe5\x43\x92\x41\x9e\xce\x68\x79\xc8\x9f\xad\x2b\xdb\xb3\x4f\x7b\x8f\x05\xf7\x99\x2b\x2c\x5a\x9f\x3a\x38\x7b\x33\x80\x13\xea\x10\x2e\xd8\x36\xe7\x1f\x05\xb8\xe3\x5c\x79\x94\x5b\x48\x28\x0b\xc6\xb2\x9e\x4b\x3d\xb5\xb3\x79\xbb\xd7\x95\x42\x33\x58\x86\xbe\x61\xcf\xcb\x63\x60\x11\x05\x09\x9d\x7c\xfb\x2d\x85\x39\x97\x85\x64\xc4\xbc\xc8\x82\x39\x4c\x1b\xa9\x5c\x09\x9b\x0a\xdb\x98\x69\x73\xf6\xfa\x7b\xb9\xcb\xff\x71\xd6\x63\xab\x60\xc3\xe3\xb0\x8a\xfa\xe5\xca\x86\xd0\x74\xb5\x99\x92\x18\x5f\x79\x60\xef\x63\xc5\x0d\x97\xf8\x90\xfc\x4f\xcc\x94\xf7\x92\xc5\x17\xf6\x82\xa5\x93\x73\xbf\xf2\x61\xb0\x2e\x98\xdd\xb4\x8d\x1c\x04\x01\x98\x3a\xbb\xa2\xc7\x52\x87\x4d\x27\x8e\x79\x59\x12\x8e\x0d\x58\xe7\xbe\x02\x71\xe1\xa6\x2b\xec\x60\xc2\x50\xe0\x2b\x64\x1b\x8f\x10\xc0\xc5\xa6\x7a\xae\x98\x97\xa6\x01\xf1\x3a\x06\x3e\x02\xe2\x12\x8d\xb5\xb9\x11\xf2\xd9\xfa\xf6\x0e\xb7\x3e\xf7\xe6\x0f\x36\x34\xcf\xc4\xa5\xcf\x3b\xe0\xe0\x4a\xb8\x00\x9d\xfb\xda\xb7\x57\xb1\xd5\xb4\x8e\xc4\xb1\xe0\xdd\x15\x77\x6f\xce\x2d\x7f\x5f\x65\xc5\xef\xae\x69\x8c\x19\xec\xfb\x12\xd6\x14\x25\x87\xbc\x9b\x43\x9d\x8a\x75\x37\xeb\x6d\x0b\x33\x87\xad\x00\x5c\x32\xc9\x97\x6b\x9d\x21\x9d\xa7\xd8\x97\xfe\x9f\x8b\xad\x26\x7e\x99\x76\x88\x40\x32\x80\xcf\x90\x17\xed\x80\xa1\x81\x89\x1d\xa8\x2d\x21\x84\x23\x24\xc8\x90\xeb\x37\x37\x7e\x9e\x30\x67\x34\xd8\x03\x09\x91\x93\x8a\xf6\x55\x25\x71\x2a\xe3\x6f\x82\xb9\xcf\xab\x7e\x30\x5d\xbb\xed\x73\xf6\x09\x71\x68\xd8\x3a\x55\xa2\x0d\x28\xbc\xda\x8c\x40\xa2\xb5\x81\x05\xaa\xd7\x22\x2c\x03\x3e\x8b\xe2\x9a\x06\x15\x2f\xdd\x82\xff\xb4\xe4\x64\x83\x15\x70\xb4\x24\xc5\x78\xb5\x79\x92\x49\x2c\x1b\x96\x53\x7d\x8a\xc3\x5b\xbd\xdc\xee\x03\x2a\x10\x03\x6c\xc7\x0a\x11\xb7\x6a\x59\x84\x3b\xec\x05\x39\x32\xef\x74\x02\xce\x58\x92\xc7\x49\xb0\x60\xf7\x25\xbe\xda\x24\xab\xe9\x3d\x0f\x46\xa5\x1f\xa5\x27\xfb\x64\xbd\x4f\xc9\xfe\xfb\x70\x7b\x25\x98\xf5\x28\x2c\xb5\x67\xe5\x51\x58\x3a\xfb\xd0\xef\x85\xe5\x47\x9e\x67\xbc\x80\xaf\xc7\x23\xa1\x25\x6c\x8a\xc4\x33\x28\xdf\x4f\x8f\xa2\x40\x60\xbf\x6a\xf5\x3f\x1f\x5e\xac\xbe\xc7\x65\x54\x98\x16\xa3\x8a\xaa\x70\x83\xfe\xac\x33\x99\xff\x81\x88\xb0\x00\xa8\x65\x24\x0b\xaa\x2c\x9d\x9a\x45\xc8\xb7\xcf\x53\x16\x5e\x41\x05\x4f\xc1\xd7\x62\x49\x43\x30\x60\xbd\x87\x2a\x51\x9f\x3d\xca\xbe\x6b\xaa\x7a\x05\xfb\xd5\x67\xfe\xa2\x9e\x4a\xf0\x2d\xb9\x9d\xd7\x16\x34\xde\xb3\x3a\x2b\x74\xb4\x2a\xd2\x80\x38\x77\xfd\xa8\x57\xa1\x80\x00\x4d\x1e\x9f\x6d\x87\x96\x2c\xf3\xce\x93\x8a\xf2\xeb\x3c\x2d\xa3\x88\x64\xe7\xb9\x10\x2c\xbe\xcc\x75\x6a\x2d\xfd\xdb\x64\x91\xfd\x12\xdc\xc8\x25\xd2\x1a\x1a\xd2\x11\x3a\xc2\x84\xc3\xc7\x15\xc1\x11\x0f\x1c\x45\x6a\x80\x4c\x79\x5e\x53\x6c\xf3\x8d\x0d\x57\x7e\x7c\xcb\x8a\x04\x35\x97\xd2\x44\x4c\xb7\x75\x1f\x8a\xd2\x01\x73\x13\x73\x74\x88\x00\x0c\xb5\x58\x13\xab\x91\x0c\x06\x68\xb7\x16\x9d\x8b\x11\xe7\xd2\x21\x82\xeb\x11\x85\x05\x91\xeb\x2f\xf5\xdd\x67\x6d\xd3\x65\x9f\x3b\xdf\xd7\x5c\xf9\x7e\xc6\x31\x64\xa4\x80\x8d\x42\x16\xd8\xc3\x98\x0d\xb7\x51\xfe\x5b\xf1\x95\x1e\x49\x9d\x5a\x6f\xbb\xc7\x24\x54\xe5\x93\xc2\xca\x0c\x6b\x20\x9a\x61\xb1\x34\xc3\xae\xd6\x24\x65\x7a\x9f\x13\x4b\xe2\xcd\xc4\x8a\xd6\xc0\x36\xd1\x17\xf5\xdd\x22\xa4\x74\xde\x4f\x1a\x03\x71\x1e\x25\x65\xdd\xc9\xa0\x5f\x12\xb1\x63\x1e\x88\x81\x73\xe1\xf8\x9f\xf1\x44\x90\x20\x6f\x45\x0c\xa6\xab\x59\xad\xd8\xf9\x21\xce\x67\xdd\xeb\xc3\x8e\x5c\x1e\x50\x1c\xb6\x99\x37\x1c\x79\x49\xa9\xbc\x4c\x4d\x77\x10\x85\xe8\xca\xa6\xc9\x80\xbb\x6c\x3f\x0f\x29\xa5\x03\x7a\x2c\x2f\xb9\xa9\x96\x67\xa3\x36\xab\xd6\xa5\xe5\x12\x6d\x40\x40\x66\x13\x70\x2b\x39\x1b\x5c\x5d\x80\xee\xb5\x7b\x27\x7b\x72\x5f\xd4\x5e\xb0\x19\xdc\x73\x36\x2c\x62\xc7\xa5\xa8\x3c\x5a\xd8\xa2\xae\x6c\x1f\x65\x4e\x21\x76\x7a\xd8\x46\xcc\x32\x88\x82\xae\x1d\xe3\x3e\xb6\x1e\x2b\xc6\x74\xbb\xd2\x7f\x4f\x39\x0e\x13\x53\x50\x51\xb0\x3e\xcc\x36\xcd\x66\x57\x6d\x70\x36\x4a\xd5\xc6\x20\x89\xf7\xd5\x3a\xef\x70\x36\xf3\x6c\x2e\xcd\x46\xbe\x7c\x7c\x2f\xfc\x33\x2e\x7a\x00\x9b\xbf\xe9\xc5\x46\xd4\x3d\xf7\xfd\x6f\x3a\xf4\xf4\xba\xd5\xf1\x5f\xdd\x98\xf9\xce\x17\xbb\x77\x37\x2c\x33\x5d\x6c\x41\x07\xb1\x87\xd4\x59\xb7\x3f\xe2\x60\x1e\x77\xa8\x55\x52\xbc\xa2\x64\x42\xaa\x57\x13\xfc\x9b\x56\xb7\x6f\x8b\xf3\x11\x08\x64\x94\x0b\x16\xf2\x56\xe2\x31\xc4\xb3\x0e\xc2\x6f\x9e\x31\x53\xc7\xbc\x8f\x6f\xf4\x2a\x3d\x82\x09\xf9\xa1\xc5\x3e\xa8\xfb\x11\xb5\xd1\x2a\xbf\xd4\x45\xe4\xe0\x70\xf6\xac\x10\xf5\xe3\xc0\x91\x0a\x4d\x4f\xab\xae\xdc\xdd\x92\xde\x72\x54\x3e\xf7\xa5\xac\xc8\x34\x8d\xf9\x45\x56\x46\x17\xd2\x74\x3c\x2b\x8e\x01\xdc\x1e\x9e\xe7\xae\xfd\xde\x9b\x73\xe2\xd0\x14\xb0\x01\x49\x82\x8f\x16\x13\x49\x4d\xc3\x0b\x01\xc2\x1e\xe3\x4b\x31\xb1\x7e\x25\x8f\x61\x73\x6a\xd3\xb5\x3b\xd5\xe6\xb0\x6f\x36\x68\xd3\x13\xf0\xf5\x54\xf7\xfa\x62\x68\x42\x10\x9c\xd9\xf3\xad\x42\x39\xbb\x10\x80\x2c\xbb\x22\xd6\xc0\x40\xf7\x24\xa5\xeb\x5a\x77\x66\xab\xbe\x63\xde\x3d\x15\x15\xfd\xa8\x20\xc8\x26\x24\xad\x9e\xc8\xe8\x7d\x92\x50\xf1\x51\x5e\x65\xd4\x78\xbf\xe2\x74\x9e\xd3\x1d\x32\x51\x2a\x05\x6c\x28\x0a\x88\xa1\x84\xdb\xbc\xbe\x0b\xb0\x43\x4d\xda\xcd\x1f\xba\x6a\x0f\x3d\xf7\xfa\x4d\x7d\x3c\x74\xd3\xc2\x11\x5e\x52\x74\xf3\xa9\x67\x87\x45\xc6\xbf\x41\x78\xdb\xd9\x17\xc3\x3e\x46\x98\x32\xa5\x6d\x23\x55\xc9\xed\x22\xc7\x2f\x7d\x1f\x9c\x17\x7a\x21\xb7\x34\x01\xe6\x9f\xf6\xcd\xdb\x93\x6f\x67\x2c\x01\x92\x14\xb5\x54\x5b\x98\x96\x76\x51\xe5\x7f\x89\x07\x6f\x03\x7b\x06\x42\x12\xdc\x76\xf3\x81\xcc\xef\x5b\xd1\xc8\x2a\xb8\xe3\x2c\x71\xb7\xb4\xed\x65\x19\x66\x7d\xda\xca\x49\x61\xbf\x00\x0e\x3a\xbe\x83\x58\x54\x53\xb5\x09\xc7\x21\xe5\xb8\x2a\x43\xcf\x70\xd2\xa2\xf9\xf3\x8f\xca\xf3\xb4\x7d\xb1\x0c\x68\x99\x72\xf9\xc4\x55\x4b\x3e\xf2\x02\xd5\xdc\xf0\xd6\xc5\xc9\x51\xfb\x3f\xb0\x5f\xe7\xaa\x6c\x5e\x06\x06\x53\x4d\xc6\x0b\xd9\x87\x64\x57\xd0\x52\x6d\x59\xec\x10\xbe\x2d\x9b\xcc\x1c\x14\xc1\xec\x61\xd1\xe6\x05\x31\x62\xb9\x0d\x1b\x8a\xab\x33\xda\xdf\xe6\x9b\x65\xfb\x1c\x0a\x12\xce\x85\x5a\xae\x0a\xa8\x1c\xc4\x95\x41\x76\x36\x12\x2b\x2e\x73\xe0\xff\x26\xdf\xba\xec\xb2\xa4\xa5\x09\x95\xd9\x9d\xf0\x38\x80\x64\x01\xcc\x7d\xce\x90\x52\xb1\xbd\x25\x5d\xee\x0c\xe2\x4a\x27\x25\xd2\x0a\x64\xd6\xfe\x77\x7e\xc8\xf7\x62\x1c\x85\x19\x16\x45\x5d\x82\x02\x95\x93\x34\x41\x35\xf6\xb4\x0b\xcd\xa7\x27\x13\x09\x7b\x57\x9a\xbd\xb3\x41\xdd\x9d\xc3\xe7\x3d\x0f\x9c\xe6\xc5\x7f\x49\x05\x2d\x69\x68\xed\x37\x69\xbb\x99\x2a\xe8\xab\xcb\x3d\x44\xab\xda\xbb\x04\x6a\x16\xb1\x39\x70\x31\x3d\x05\x3b\x13\x68\x15\x7c\xea\xf3\x27\x30\xb2\xe9\x9d\xdf\x13\x6f\xcf\x53\x50\x4f\x55\x1b\xa4\x3e\x0d\xe9\x5c\xa4\x64\x27\x12\xd0\x87\x0f\x72\x32\xaf\x86\xf7\x06\x2d\x23\xc7\xc8\x94\x2e\xad\xf3\x7f\xde\x45\xfc\x31\xa4\x12\x19\x4e\x39\xba\x7d\x1f\x78\xde\x33\xb3\x80\xb3\x3b\xfb\xd1\xc4\x90\x0b\x65\x87\x54\x37\x64\xd2\x7e\x89\x0e\x34\x1b\xe6\x50\x08\x55\xd4\xbc\x90\x3d\x58\xbf\x95\x38\x3c\xdf\x6d\xbd\x24\xba\x33\x53\x56\xbf\x9b\x7a\x51\x5c\x71\xf2\xaf\xb5\x06\x3d\x5c\x17\xeb\xf9\xd2\xb4\x7d\x3d\x5d\xfb\x4b\xbb\xc8\xbb\x0e\xe5\x56\xa2\x19\xaa\x91\xff\xfc\x3b\xa7\x9b\xbc\x34\x5c\x5d\x3d\xfc\x1e\x93\x3a\xd0\xb0\x6d\x99\x61\x78\x29\xee\xb3\x1b\x5b\x1c\xc1\x34\xcd\xb5\xf1\x4e\x32\x2d\xad\x7a\x7b\xab\x45\x8f\x88\x73\xdd\xe0\x86\xe4\x2a\x2c\x63\xc4\xf3\x06\xf8\x2c\x0f\xde\x8a\xc8\x6c\x04\x01\x56\x3f\xa4\x11\x05\xcc\xdd\x45\x7c\xdc\xf7\x28\x9c\xa7\x76\x75\xfb\x3f\xdb\x66\xc4\x4d\xeb\x71\x74\xd8\x48\x45\x84\x18\x53\x54\xdb\xb7\x2b\xa8\x90\x92\xf2\x48\x9d\xbd\xda\xe2\x8e\x78\x7f\x95\xbf\x15\x57\xbd\x7d\x30\x16\x59\xd9\x0e\x49\x0a\x35\x1c\x10\xc1\x4e\x48\x27\xcf\x10\x94\x7a\xc0\x1a\xa9\x8e\x8a\xfe\xe6\x20\xf8\x0a\x5d\x12\x6d\x78\x69\xfa\x11\x25\x45\x83\x7d\xe8\x32\x56\x83\x24\x1f\x1e\xa5\x4b\x9a\x24\xc9\x5d\x5f\x8a\xf2\x33\x4b\x42\x0f\x4f\x43\x87\x9c\xcb\xc5\x1f\x9e\xdf\xa7\x3c\x75\x5e\x38\x60\x2b\x36\xbb\x41\x40\xee\x26\x99\x91\xa6\x91\x69\x46\xae\xda\x92\xc8\x19\xbe\x60\x58\xa6\x1c\xb7\x23\x1c\xaf\x28\x42\xf5\x1e\x3a\x16\x7a\xb6\xef\x94\xe8\x33\x8b\xc2\xf4\xb3\x42\x3c\xcb\x9f\x94\x71\xf5\x16\x4d\x1e\xdc\x07\xcc\x54\xa7\x4d\xa8\xde\x93\xe7\x48\xee\x2a\xc2\xea\x48\xa6\x6e\x44\x71\x8d\xff\xea\x98\x38\x12\x9c\x9d\x74\xfb\xe8\xbe\x74\xdf\x91\x1f\xdd\x67\xd8\x76\x5c\x18\x61\x4d\xee\x86\x54\xc1\x72\xa7\xb2\xae\xee\x71\xeb\xc3\x93\x18\x74\x67\x07\xe1\x0e\x13\x9c\xbe\x78\xbc\xa7\xc2\x82\xb4\x8e\xba\xfc\xb9\xba\xb3\x27\x77\x57\x08\x4a\xeb\x9c\x98\xaf\x96\xb0\xd6\xe7\x04\xab\x89\x80\xa3\x4e\x65\x05\x0b\x18\x0e\x10\x73\xb7\xbe\xce\xc5\x07\xc5\xc8\x15\xb0\x89\x01\x44\x04\x0e\x2f\x51\x0c\x47\x22\x1f\xae\x04\x42\x6d\xb9\x28\x9c\x46\x11\x1a\x58\xef\x1b\xe1\xb1\xc0\xcf\x05\x4d\x97\x59\x73\x59\xef\xe1\x09\xc4\x8a\x53\x65\x29\xeb\xe4\xaa\x3a\xcb\xf6\xbb\xed\x6b\xf1\xf8\x85\x53\x80\xe0\xa9\x34\xea\x09\x23\xf8\x2e\x6a\x0f\xb4\xc4\x0f\xa8\x15\xfa\xcb\x7b\xcc\x91\xc4\x35\xdc\xec\x5c\xe4\x05\x96\x96\xd3\xa5\xb1\xaa\x05\xec\x1d\x0b\xe2\x6e\x92\xb0\x82\xfe\x23\x68\xac\xfd\x5c\x7d\xf4\xe8\x5e\x98\x63\x67\xa8\xd6\xab\x87\x7a\x85\xea\x5f\x67\x78\x2b\x9e\xc1\xbc\xbb\xa9\x79\x37\xa7\x61\xcc\x4a\xe5\x8e\x0a\x73\xbd\x19\x7c\x42\x0a\x68\x45\x52\xff\x85\x8c\xa4\x0f\xa7\x59\x41\xdf\xab\xa2\x2a\x74\xde\xc1\xdf\x72\xa8\x5f\x8b\xa4\x51\xbf\x8f\xf1\xe8\x9c\x4b\x37\x29\x82\x2f\x14\x79\x4a\x77\xc7\x4e\x5f\x61\x04\xd2\xf4\x79\x5d\xff\x88\xf2\x37\x44\x43\xdc\xd7\xaf\x84\x72\xff\x2e\x91\xb4\x36\x92\xe1\xda\xa9\xf9\xb8\x85\x87\xf4\x0d\x11\x31\xd8\xf3\xcf\x39\xa0\xfa\x1e\x66\x7e\x52\xe7\x70\xcf\x05\xa5\x33\x00\xf6\xd1\x0e\x2e\xcf\x95\x07\x5a\xa5\xe5\xb7\xf2\xb8\x96\x90\xd1\x61\x05\x9a\x36\xe0\x00\xfb\x37\xfd\xf5\xec\x4e\x81\x41\x7d\x2e\xf0\x5b\xc9\xa4\x46\x7c\xe8\x13\x62\x7e\x38\xf3\xb7\x03\x0e\x21\x47\x70\xdf\xac\x91\x48\x8f\x0d\x2c\x7f\x5b\x4a\xac\xc3\x86\x3c\x7f\x7b\xd7\x23\xf4\xa6\x7e\x5b\xd6\x81\xd9\xac\x89\xe7\x24\x16\xb9\x35\xe5\x2d\x70\x50\xb8\x0d\xbd\x72\x76\xbb\xab\x13\xa6\xd5\x2b\x6b\x6b\x80\xac\x04\x5e\xc1\xdb\x6d\x49\x7e\xfc\xff\x53\x59\xd6\xdd\x79\xe5\x66\x78\xb5\x73\x0a\xea\x9a\xd2\x23\x51\xce\x18\x2c\xa7\xa1\x15\x0a\x5d\x0a\x49\xa4\xb8\xeb\x8f\x7a\x2d\x57\x99\x02\xc5\xbe\xa1\x06\x01\x86\x83\xbb\x5f\x38\x1e\xec\x4f\x8c\xe2\xe3\x53\x19\xbd\x57\x13\x84\x01\x6d\x93\x46\x68\xbb\x5d\xc0\x15\x92\x9e\x45\x08\xf3\xeb\x0d\x2c\x0e\x1d\x5e\x66\xb5\xfa\x46\x1b\xde\x75\xa3\x82\xc5\xbf\x49\x32\xc2\x1b\xd8\x08\xaf\xfa\x69\xb2\x21\xe9\x20\xf6\x38\x9e\xef\x1b\xeb\xcb\x92\x2c\xe9\x0a\x49\xe6\xd8\xac\x50\x47\xf9\xc3\x57\x5e\x9d\x5b\x7b\x12\xf4\xa5\xd9\xc1\xcd\x4f\x70\x95\xcf\x55\xd3\xa7\x49\xfa\xbe\x2e\xb5\xc8\x05\x3f\x6d\xde\x73\x78\x78\xfb\xa8\x65\x1f\xe4\x6d\x10\x74\xd7\x37\x4c\x3f\xc6\xee\x76\x6c\xe8\x36\x8f\x3a\xeb\x63\x87\x82\x81\x17\x87\x1d\x60\xbe\x7a\x0c\xb1\x07\x05\x83\x61\x85\x8d\xfc\xd5\x6c\x84\xd1\x32\x47\xe5\x6d\x48\x6b\x4b\xd5\xd5\x93\x6f\xb9\xe7\x76\x0c\x7c\xce\xa0\x38\xa6\x50\x5c\xdd\x9d\x8f\x2a\xc0\xad\x34\x8a\x3d\xc1\xa5\x55\xc8\xe9\xa0\x7f\x8b\x9e\x1c\x5a\x83\xdf\xa0\x6f\xc5\x6b\xfd\x4b\x10\xf0\xa2\xe1\x87\x74\x95\x3a\x6d\xa1\x50\xbf\x3e\x86\xf8\x32\x12\x59\xdf\x0a\xc5\x2b\xdd\x7a\xbc\x47\x51\xa5\xdf\xcc\x10\x4b\x77\x1a\x68\x6f\xa9\xba\xdc\xb5\xaf\x1b\x4e\x3a\xd4\x6a\xeb\x4d\xf3\xb1\x04\xa4\xfa\xaa\x39\x5b\x02\xd7\xb9\x51\x66\x7a\xe5\xa5\xe3\x6e\xaf\xda\x5b\x57\xe3\xfd\x51\x27\xf0\xea\xca\xfb\x58\x60\x4c\x4a\xe7\x4b\x66\x07\x96\x6f\x2f\xbc\x79\xff\x7c\x0a\x7e\x3e\x85\xf4\xd9\xf2\x4f\x6d\xb6\xd1\x98\x0f\x8f\x40\xa1\xfa\x82\xb3\x5e\x9e\x49\xec\x56\xe7\x27\x57\x58\x23\xd8\x53\xc3\xee\x8f\xc2\x5a\x92\x93\x1a\xc9\x31\x41\xd4\xcf\x14\x11\x5f\xa0\xc1\x21\x35\x2c\xcd\x5d\x6a\x9a\xc5\xde\x88\x6a\x62\xdb\x37\x6d\xf7\x27\x3b\x08\x40\xfd\x12\x55\x8b\x5f\x9c\xc2\xdb\x9c\x6b\x4a\xfe\x69\x2f\x3b\x55\xfb\xca\xc6\xbc\x06\xd4\x58\x66\x40\x94\xe7\x0b\xb3\x26\xea\x5b\xe1\x7a\xd5\xff\x0c\xf5\x5a\xde\x84\xc2\xe3\x6c\xa5\x27\xe3\x6a\xc0\xfd\xf4\xf6\xa3\xf0\xdf\xc4\x85\x52\xf4\x31\xe8\xf1\x66\xa7\xdd\x88\x6a\x1f\x9a\xb7\x58\x58\xdd\xeb\x89\x50\xf7\x6c\xeb\x36\x68\x7a\x21\xc8\x25\x8b\x2b\xaf\x84\xc8\x49\xaa\x5e\xf4\xaf\x85\x13\x9e\xb7\x4e\x32\xe8\x0e\xe1\xd9\x85\xeb\x86\x74\xe5\xcd\x33\x18\x37\x19\x6e\x80\x61\xfa\x0e\x1c\x89\x66\x58\x59\x3e\xea\xc6\xd3\x02\x89\x7a\xd0\xf0\x0b\xd3\x57\x21\xf8\x56\x46\x1d\x9b\x6b\x3a\x58\x1f\x7d\xa9\xc7\x40\x7d\xde\xca\x9d\xc4\x6e\x03\x15\x84\xec\xc3\xfd\x4d\xb9\x7f\xef\x2d\xfc\xe6\x10\xa7\x0d\xeb\xf0\x19\xb2\x43\x6e\xda\x26\xce\x0e\x0c\x85\xe1\xf5\x02\x01\x4c\xa7\xcd\x91\xbf\x97\x5d\x41\xc7\x7e\xfb\x1d\x73\x67\xe3\x67\x1a\x4f\xb4\x0b\xf4\x04\x6d\x11\x77\x9b\xd8\x2d\x9a\x78\xa0\xab\xbc\x28\xbe\xea\x84\x76\x54\x98\xd4\xbd\xdb\x9c\xaf\x13\x0a\x74\x1e\x24\x39\x20\xb9\xd3\x7d\x18\x80\xcc\x2a\xc2\x1b\x42\x07\x23\x4b\xf7\x06\x35\xfd\x13\x32\xc6\x4c\x77\x4f\x0e\x26\x08\xfe\xfc\xc6\x89\x6e\x67\x81\x16\x7e\x53\x68\xd7\xd3\x45\xf7\x79\x4b\xd6\x4f\xd5\x60\x41\xd4\x58\x55\xe7\xfa\x67\x4f\xfe\xf6\x4c\x9d\x32\xc4\x1f\x75\x0c\x6b\x36\x67\x29\x6d\xe8\x73\x04\x44\x64\x55\x56\x19\xa3\xd6\x03\x91\x83\x62\x0c\x1b\xad\x17\xc6\xbb\x26\x96\x89\x1c\x80\x3b\x77\x75\xac\x83\x8c\xa2\xd3\x91\x48\xc5\xc3\x28\xd0\x5a\x50\x9a\x78\x8f\xd9\xc5\x5e\xbd\xec\x87\xed\x67\x28\xb8\x10\x2e\xa3\xcf\x02\x54\xbe\xea\xb5\x3c\x64\x9f\xf9\x28\x00\x59\x5c\x5e\x10\x2e\x1a\xb2\x91\x8c\x79\x23\xe2\xd7\xb4\x1b\x9e\x8f\xc6\xd4\x73\x6f\x31\xee\xb9\x9d\x9b\xdf\xa4\xb9\xb4\x8e\xe8\x2e\xbb\x7d\xbc\x77\xe3\xbf\x40\x0b\x81\x57\x21\x2c\x18\x88\xcf\x6a\xde\xa6\x0c\x35\x05\xf6\xd8\xe8\xed\x52\x9c\xdd\xd5\x4f\xcf\xb5\xb3\x7b\xc7\x0f\xf7\x9a\x49\x13\xec\x27\xd9\x85\xd0\xb2\xb4\xab\xfd\xe8\x5e\x49\x2c\xe3\xbc\x1f\x42\xa1\x5b\x1a\xae\xcc\x56\x61\xb8\x3e\x71\x86\xb6\x99\xcd\xe7\xa6\xf9\xf0\xd2\x3d\x76\x59\xf2\xc3\xdb\x3b\xda\x9e\xc8\x00\x87\x35\x38\x3d\x57\x34\xcc\x5c\x7f\xea\x11\x17\x91\xd3\xe2\xaa\x13\x78\xeb\xcd\xd1\xb2\xe3\x09\x9e\xe4\xc5\xed\xd4\xd5\x6f\x27\xcb\x27\x3b\xce\xb5\x5f\x62\x48\xc9\x4f\x34\x09\x08\xf5\x77\x1c\x5e\xd9\x7b\x89\xdf\x32\xb3\x2d\x93\xe2\x44\x08\x97\xec\x92\xa2\x83\x8f\xee\xa0\xd5\x80\x7e\x09\x82\x95\xd3\xfe\xa4\x28\xff\x83\x99\x13\x26\x87\x53\x14\x61\x88\xd2\xa3\xe1\x47\x23\x09\x01\xc3\xe4\xd7\x8e\xd2\xe8\xdd\x67\x9e\x1c\x42\x07\x60\x19\xa5\x24\xb0\xd5\x92\x21\x74\xcc\x80\x39\xd7\xde\x1f\xa5\x9c\xba\xbd\x60\x08\xc9\x5c\x06\xe2\x2f\xce\xfa\x51\x5a\xa4\x18\xd7\x18\x4e\x06\x37\xbf\x63\x92\x42\xad\xa5\xae\x2e\x50\x53\xf8\xdc\x14\xab\xb2\xd0\xdd\x9d\x34\xe6\x1d\xc8\x34\x75\x2f\x9d\x4e\x1c\xcc\x8e\x49\x13\xcb\xd5\xfd\xb5\x61\x7e\x30\x53\xb5\x83\xd7\xbd\xce\xd2\x2c\x9d\xe9\x98\xf6\xf2\xc0\xeb\xa0\x0c\x6b\x2e\x7a\xd4\x1c\x67\xf1\xbc\xc1\x67\xec\x0b\x5e\xad\xa1\x46\x57\xde\x1d\x2c\x8e\x24\xaf\xe4\xdb\xdd\x85\xed\x0c\xd3\x74\xa5\xf3\x2d\xaa\xf6\xf0\x2a\xc5\x20\x34\xf7\x50\xef\x4d\x62\xe5\x4d\xe0\x4d\x46\xe7\x7e\xf2\x2d\x85\x44\xd5\x17\xac\xe3\x4a\xee\xa1\xc6\xbc\xd9\x4e\x9e\x4a\xad\x05\x2f\xa6\x3a\xb3\xb4\x37\x14\xde\xce\x04\x04\x81\x8c\xd9\x87\xa7\x12\x49\x97\x75\xb6\x49\xe7\x79\xa4\x6d\xc4\xd7\xe3\xa3\x10\x78\xdd\xe1\xd8\x19\x49\xe8\xfb\xcf\xbf\xea\x8d\xaf\x76\xbe\x8d\xf2\x7c\xc0\x84\xc4\xe7\x65\x2c\x51\x43\x48\x64\xfb\x95\x1a\x09\xec\xbb\x1d\x34\xc3\xba\x0c\x62\x62\xd6\xac\x12\xdd\x46\x21\x31\x99\x47\xa9\x8b\xe0\x2e\x66\xc7\x3f\x31\x72\x09\x0e\x86\x63\x25\x56\x64\x13\x4b\x98\x07\xa4\x2e\xcf\x11\xeb\x08\x4c\x44\xff\xcd\x51\x43\xc3\xd3\x29\x69\xc2\x5a\xdd\xb8\x2d\xa4\xed\xf9\x52\xec\x9e\xd0\x73\xba\x63\x85\xb9\x51\x90\x4f\x77\x8c\x74\x09\xb6\x2e\x19\x3c\xb7\x4c\xd0\x49\x96\x2d\x74\xf1\xdc\xe4\xc5\x96\xd0\x6f\x9b\xc4\x49\x60\x9b\x21\xaf\x6f\x26\xb3\x3e\x43\x7c\x3b\x4c\xbd\xfd\xc7\x77\xbf\x04\x0b\xfd\x85\xf0\x8e\x10\xd0\xd9\x81\x90\xbb\x4d\x82\xb9\x6d\x85\xac\xed\x13\x9e\x6e\x37\xbe\x1d\x41\x76\x3f\x21\x78\x9f\xe5\x19\xc4\x6b\xd3\x2a\x2b\xa6\x32\x81\x84\xa6\xd6\x5f\x71\xe0\x88\x98\xb8\xa0\x84\x01\xd2\xd5\x1f\x4d\x90\x33\x5e\x9f\x8e\xc0\xff\x81\xbc\x26\x90\x89\x48\x6a\x3e\xe2\x91\x47\x1e\x7d\x1c\x23\xa1\x69\xd6\xa3\x3a\x5c\x8d\xf5\xff\x0f\xef\x6b\x89\x26\x77\x14\x2c\x5a\x96\x15\x7a\x74\x02\x2e\x9b\x1c\xf5\xc8\x3f\xb6\x60\xf9\x83\xcd\xa3\x27\xfd\x0a\x19\xdd\x2f\x2b\x44\xf5\xa5\xfe\xf7\x99\x34\xf1\x22\xaa\x3c\x1e\x67\x24\x8f\xb4\x3a\xa7\xee\xf1\x86\xfc\x80\x20\xbe\xf6\xef\x45\xca\x10\x5e\xc5\xf6\x4d\x1f\x98\x7e\x0b\x1d\x23\x4b\x21\xd2\xcf\x4c\xf4\x23\xde\x1d\x28\x7d\x20\x5c\xec\x04\x3a\x49\x4f\x72\x43\x44\x4d\xd5\xfd\x9f\x48\xe1\xe4\x6a\x48\xfb\x16\xe0\xf7\xda\x97\xd8\xb1\x0b\x01\xa3\xd5\x45\x5e\xb5\x7b\xf3\x8b\xfb\x0f\x4b\x3d\xc7\xe1\x57\xd0\x8f\x11\x1d\xd3\x2e\xf3\x80\x8b\x38\x9c\x19\x15\xbc\x72\xb9\x97\x23\x82\xbb\x36\x1f\xa4\xee\x8d\x0c\xba\xa9\x93\xf2\xf0\x15\xe0\x67\xe7\xd8\x1c\x2c\xf4\x87\x4f\xfa\xb4\x5e\xfb\x48\x6c\xa2\x2c\x6e\xcc\x25\x8f\x52\x0f\x83\x1d\x5a\xbb\xe7\x20\x63\x97\xe8\xbe\xf8\x10\xdc\x39\x5d\x75\x85\x80\xd1\xaa\x8c\xad\x43\xc4\x55\xd6\xc4\x24\x8f\xf9\x44\xe7\x00\xff\x71\xee\x75\xb2\x2b\xb8\x42\x36\xf6\x96\x4f\x87\x2f\x19\x8f\xbc\x28\xed\x54\x63\xf3\x79\xf6\x76\x6d\x94\xe9\xe1\x8d\xa6\x67\x85\x5a\x9a\xab\x78\xa4\x24\x69\x2f\x38\xb4\x8d\xf0\x83\x8f\x18\x65\xf6\x6d\x64\x12\xac\xc7\xb9\xdf\x32\xe2\xa0\xcc\xd8\xcf\x8e\xf1\x71\x0c\xa7\x38\x6a\x8f\x21\xa4\x38\x91\x23\xb5\x5b\x68\x8f\x7c\xf7\x2b\x53\x20\xe5\x52\xc1\xa8\xe8\xbe\x48\x98\x27\x55\x4f\xd7\xc0\xcf\x52\x03\xbb\x7c\xd6\xdb\x4c\x28\xc5\x8a\x38\x5a\x98\xa5\x0e\x47\xf7\xa5\xe9\xe7\x60\xc9\xdc\x8b\x77\x5d\x1f\x6b\x6c\x8b\xe6\x70\x14\xc1\x6b\x1e\xd1\xc1\x46\x72\x35\x21\xd7\x7c\x16\xd4\x6b\x0b\x09\x7c\x50\x50\x77\x1f\x47\xf5\xfb\x23\xc2\x40\xba\x45\x72\x6b\xa9\x52\x8e\xd7\x27\xec\xc2\x53\x42\x9b\x1a\xce\x55\x81\xc6\x2f\xa0\x8a\x97\x3f\x4c\xc1\x72\xce\x7a\xfa\x43\x19\x8e\xc7\x71\x4a\x91\x38\x0e\xe5\x78\xfe\xf7\x6a\x2d\x20\x28\x6e\xaa\xb3\xe8\x5b\x75\x2e\xab\x03\xaa\xe0\x06\xed\x1c\xf7\x1d\x2d\xf9\x65\x93\xfe\xe3\xcc\x63\xbc\x34\xf9\x15\xc3\x97\x66\x4e\x7b\x79\x00\x45\xc9\x5a\x05\xdc\xed\xe7\xbe\x4f\x16\x48\x50\x73\x8a\x42\x0e\xcb\x83\x78\x90\x2c\xd3\x27\x04\x12\xba\x57\x82\x0c\x26\x1d\x4a\xbb\x43\x54\xb5\xd6\x40\xa4\x77\xcd\xfb\x78\x59\xe6\x39\x58\x3a\x68\xd8\x53\x22\x50\x6d\x28\x04\xa3\x21\x62\xff\x18\x74\x41\x92\xc7\x24\x15\x34\x93\x48\x85\x09\x00\x78\x6d\xce\x20\x26\x39\x9e\x8e\x00\x7c\x79\x40\x48\x13\xf3\x30\x50\x78\x2d\xf4\xde\xbc\xb2\xd8\x02\xa3\x42\xc9\x0a\xa2\x13\x9e\x70\x68\x92\x2b\xf4\x9a\xfc\x7f\x19\x50\x98\x6e\x21\x8b\x1a\x87\x26\xf9\x1c\x41\x78\x16\x5f\xa8\xaf\xef\x7b\x9b\xa5\x4e\x8a\xd4\x21\xe2\x0b\xd1\x4c\xe1\x8a\xd1\xbc\x74\x05\x8a\xf1\xeb\x40\x13\x5e\x6e\xd4\x92\x5d\x60\xb9\xf0\x62\xfd\xb2\xb3\x81\x24\xd3\x48\xeb\x78\x3f\x12\xe9\x31\x01\xa5\xe1\xaa\x76\xd9\x63\xa1\x5a\x39\x28\x93\xc8\xfb\x4a\xa0\x07\xa9\xe7\x98\xbc\x8f\xc8\xc8\xfe\x4a\x4a\x1e\x53\xc9\x71\x3b\x64\xbc\xc2\xa7\xbf\x48\x1c\x65\xb1\xe2\xa8\x40\xa3\x87\x80\xba\x56\x0a\x40\x49\x3f\xc4\x44\xd0\xd6\x2d\x38\x07\x13\x22\xaa\x5d\x3a\x49\x28\x9f\xb9\xe1\x21\x3c\x40\xb6\x89\x70\xc3\x16\x90\x96\x61\x79\xae\x43\x37\xe1\x63\xc9\xf9\x71\x8e\xd9\x64\xf4\x80\x60\x80\x64\x5d\x36\x9b\x82\xb8\x8b\x3f\xe6\x24\xd0\x99\x8c\x56\x09\x00\x07\xea\x50\xf6\x74\xf3\x85\x8e\x89\xed\xd2\x3a\x38\x7c\x58\x33\x90\x83\xb8\x70\x1e\x1d\x75\xa8\xba\x2a\xe4\x64\x0d\x16\x21\xf0\x26\xd8\x02\x15\x5e\x0b\x3d\x41\x44\x7e\x7b\x72\xf2\x24\x18\xe9\x5e\x3a\x6c\xfd\xea\x10\xe5\x82\xec\xab\x86\x94\xf3\xe7\x01\xec\xee\x75\xa9\xcc\x14\xe1\x97\x5a\x4e\x6d\x9c\x81\x00\xbc\x9c\x87\x71\xea\xe8\x7e\x91\xb3\x73\xb4\x00\x08\x96\xbb\x59\xa7\x2e\x66\xbf\x2f\x9f\xb1\x1f\x0e\x5d\x86\x9c\x74\xbf\x43\x5a\x21\xfa\x14\xb5\x1b\x76\x84\xbc\xd8\x96\x39\x26\x15\x7b\x74\x65\xfe\x08\xf9\xd6\xd0\x66\x23\xb7\xe4\x29\xc7\xdb\x94\xdd\x7d\x78\x5e\x6d\x8b\xee\x2b\x7b\xb2\x6d\x9c\x13\xbd\xb7\xb8\x8e\x62\xb7\xf6\xe6\x7a\x51\x1e\x14\x61\x4e\x86\x5e\xdd\x02\xe3\x69\xa3\x27\x13\x0b\x51\xec\x18\xe4\x8b\xcb\x3a\x86\xa2\x70\x06\x60\x31\x6d\xe1\xde\x81\x9e\x19\xae\xdc\xc2\x25\x33\x84\xfb\xdf\x67\xc7\xa1\xd0\xd7\x27\x2a\x98\x9b\x7b\x1b\x4d\xaa\xb0\x92\xd7\x9e\xa4\x0a\x56\x98\xd1\x7a\xb6\x7b\xe9\x3f\xb1\x5d\x58\x55\xf2\x99\x65\xe3\x81\x28\x90\x5e\x6d\xa2\xf3\xef\x0e\xd9\xb3\x9a\x5d\x25\x8f\x46\x81\xfe\x08\xea\x35\x12\xa9\xec\x2a\x93\xff\xb9\x2c\x4f\x0c\xc8\x98\xae\xaa\xf6\xc2\xf7\xcd\x76\x0b\xf2\x99\xe2\x98\x72\xee\x07\x14\x41\x5e\xdd\xd1\xc3\x4b\x93\x3b\x3b\xf6\x59\x0b\x20\xa7\xe0\x2e\xd9\x8b\x60\xa2\x5b\x8d\x54\xc8\x06\xdd\x71\x62\xe0\x7a\x44\x8d\x23\x58\xfc\x16\x23\xaf\x23\x9b\xc3\xd6\x99\xa9\x4e\xb5\x5c\xfd\x97\x89\x21\x65\xa2\xab\x57\x4e\x94\x39\x4e\x17\xbd\xc2\x89\xc4\xf9\x87\x27\x87\xd6\x4b\xb4\xe6\x06\xba\x0e\xa9\x06\x49\xf1\x40\x5b\xd5\xf4\x08\x32\x9c\xa8\x81\x59\xf9\xcc\x75\x22\xd6\xfc\xab\x86\xcd\x88\x70\xa5\xc1\x7c\x64\x88\x0f\x02\x9e\x79\xde\x7d\x79\x88\xab\xff\x19\xf4\xe7\x50\xa0\x89\xa2\xa3\xd3\xcc\x59\x67\x2f\x28\x1e\x65\xde\xe9\xb8\xc4\xa0\xc7\x0b\xb0\xb6\xeb\xf9\xa6\x55\x92\xca\x79\xe5\x40\xc6\xf0\x60\x26\xb5\x0a\xe9\xb7\x11\x49\x05\xdf\x17\x26\xa4\x72\x6e\x9c\x15\xb2\x94\x0e\x47\x0c\x5c\xc8\xb6\xe1\x0b\x66\x71\x15\xa0\x5c\x69\x1a\xf6\xb8\xfd\x05\xe7\xe5\x6c\xe3\xf8\xf1\xb2\xc4\x26\xb3\xdf\x7b\xca\xad\xa0\xab\x6e\x82\xd0\x9d\x66\xb0\xc0\x6b\x56\xb0\x0b\xb2\xd8\x8a\xd0\x64\xfa\xc1\x43\xa4\x58\x1b\x10\x01\xc3\xe7\xc9\xbc\xd4\x2b\x85\xc2\x4f\xbf\x15\x28\x0d\xe5\x5d\xb6\x1e\x02\x0e\xa6\xd5\x0b\x1e\x6b\x47\x10\x54\xb3\x44\x5a\x25\x40\x29\xd4\xcb\x78\x26\xce\xee\x88\xce\xd4\x34\x35\xbe\xad\xb5\x72\x7d\xf5\x8b\xd5\xc8\xe6\x94\x67\xed\x82\x0e\x0e\xa7\xbd\x19\x5f\xec\x5e\x97\x5c\xa8\xb3\xd1\x2c\xd1\xae\x3a\xb6\xa7\x5c\x8c\x4f\x69\xde\xa6\xd8\xee\x27\x50\xdf\x21\x04\x30\x6b\x17\x92\xb2\xa4\x70\x83\x9c\xea\x5a\x71\xce\xd2\x92\xe6\x39\xc5\x71\x1c\xd5\xa2\x83\x10\xb2\xe4\x3c\xbb\x58\x72\x32\xe6\x52\xbb\x54\x48\x8b\x63\x7b\xe0\x98\xc9\x62\x73\x84\xfc\x31\x6f\x57\xe9\x03\xc0\x11\xd7\x01\xf3\xc5\x3c\x5e\x2f\x34\x38\xb9\x2f\x8a\x4a\xa9\x9f\x0c\xa2\xfd\x4c\x94\xa8\xac\x16\x11\xfc\x1c\x4f\xa2\x1a\xda\x5d\x44\x35\x37\xb7\xa4\x13\xc1\xd4\xfd\x5a\x04\x45\x7f\x0c\x45\xa5\xf2\x26\x5a\x49\xe0\x1c\x57\x21\x7b\xc9\xe5\x38\xbd\x24\xa0\x3e\xa8\x49\x42\xe1\x44\xf0\x14\x63\xf2\x87\xb9\x18\x56\x90\xaa\x0e\x5f\x9b\x34\x2d\xe3\xb9\x91\xea\x00\x5d\x10\x1d\x39\x85\x36\x63\xc1\x65\xd1\x04\xeb\xf0\x57\x63\x52\x8e\xb5\xfd\x39\x16\x74\x31\xc0\x9b\xb1\x60\xcf\x7e\x90\x74\xe2\xd2\x1d\x3a\xbe\xb3\xab\x77\x20\x06\x06\xee\xaf\x98\x4c\x26\x7d\x83\xbf\x62\x15\x0d\x36\xe4\x5f\xf7\x1c\xdd\x36\xb2\x14\x86\xa6\x49\x21\x83\x12\x47\xef\x6e\x72\x3f\xd0\xa4\x59\x8e\xfc\x62\x68\xef\xde\xd6\xd6\x98\x0c\xfb\x0f\x8a\x2e\xd6\x5a\x74\x96\x44\xc6\x18\x2a\xe7\x59\x4a\xfe\x65\x25\x60\x2f\xb5\x06\x18\x55\x50\xb3\x51\xa6\xb5\x82\xa5\xa2\x99\xb4\x42\xa0\x3c\x3a\xf6\xdc\x24\xa4\x1b\x9a\x27\x5a\xf0\x69\x3b\x26\x3d\x02\xfc\xa7\x60\x55\xdc\xcc\x32\xb9\xc5\xbe\xe7\xbf\xde\x9f\x74\xad\xef\xf4\x7b\x50\x2a\x37\x79\x5a\x9b\x2a\x4a\x1c\x54\x51\x38\xef\x3d\xc9\x7a\x73\xec\x70\xdc\xf4\x9c\x14\xfe\x6f\x51\xc4\x60\x20\x9c\x7c\x16\x4a\xdc\x66\x7d\x7b\xcc\xd6\x5f\xd9\x8d\xa6\x99\x61\xad\x76\x39\x59\x3f\xa9\xdf\x97\xe5\xcd\x1c\x38\x6a\x54\x48\x9e\x44\x03\xac\xd4\x81\x62\xe8\x45\xa5\x11\x72\x17\x86\x77\xa8\xd5\x6f\xfe\x65\x76\xa8\xbd\x3f\xaa\x5a\x6a\xee\xa3\xb0\x76\x3b\x2d\xb7\xde\x69\x31\xa7\x96\x17\x13\x20\x25\x40\x77\x29\xd1\xfa\xe8\x88\xf2\x41\xe4\x26\x29\xd7\x6b\x4d\x97\x2d\x69\xd9\xce\xd2\x6c\xdc\x4d\x0c\x52\x59\x8c\x4f\x26\xa9\x2c\xb4\x86\x57\x60\x71\xd2\x41\xde\x85\x6e\x55\x58\xbc\x7c\x4c\x66\xd2\x17\x64\xd5\x07\x28\x0a\x75\x05\x7c\xa2\xbf\x53\x2a\x1f\xc8\x85\x81\x4d\xc3\xcf\xee\x0a\x6b\x63\xb8\x9e\xe7\x47\x4f\xa8\x45\x53\xa2\x2b\x6d\xb7\x22\x57\xab\x8b\x3f\xc2\xae\x56\x60\x68\x70\x4d\xa4\xd5\xfa\x6b\x88\xa0\x17\x4e\xde\x7f\x5e\x3e\x61\x86\x72\x9e\x5e\x4a\x18\xc6\x7e\x06\xd8\x17\xfd\xd9\xfa\xea\xc3\xa3\x40\x23\x39\x29\x52\x5a\x70\x2c\x09\xc9\x77\xe7\xe5\x98\xbd\x96\x12\xeb\x86\x07\x53\x57\x72\x09\x70\x36\x3e\xf4\x83\xe9\x2f\x14\xd5\x77\xbb\x48\xd7\xf2\x27\xc6\x37\xef\x87\x1d\x4b\xf4\xea\xeb\x30\xf4\x11\xf5\xa4\x3a\xa7\x39\x29\x28\xd7\x5d\xce\xb9\x6e\xbe\x7b\x96\x72\x67\x1c\xea\x57\x11\x00\xea\x8f\xaa\xbd\x1c\x9c\x1f\x3b\x57\xe4\xb1\x5f\xa4\xab\x0a\xd0\xf0\x75\x6e\xba\x6e\x2f\xe9\xd4\xb7\x50\xbf\xca\x2c\xbf\xfd\x7b\x99\x37\x29\x9b\xe5\x84\x08\xb5\x16\xb1\x49\xb3\xa3\x43\x1d\x7d\xd2\x5e\x93\xa3\x6a\xe6\xf9\xc3\xda\xe8\x8c\x4f\x75\x76\x00\x07\x9f\x0c\xfe\xc2\xdf\xe1\xe3\xf9\x3a\x9a\xc4\x90\x83\xa9\x7d\x3f\x55\xda\xc7\xff\x80\x88\x87\x73\x0a\x7c\xb8\xce\x22\x84\x1e\x07\x1a\xbd\x28\xfe\x3f\x7d\xd2\xf1\x9e\x8e\x4b\xb7\x20\xbe\xc8\x09\x16\x8c\x3c\x06\x24\xd6\x83\x23\x9b\x47\xf5\x02\x37\xc9\xe8\x86\x24\x73\x97\x19\xc6\xf3\x89\x23\xd8\xa7\x1c\x5d\x32\xd7\xcb\xea\x0b\x22\x92\x3d\xb9\xda\x24\xf3\xe2\xf4\xd2\x12\xe5\x4b\xef\x07\xea\x16\x33\x11\x43\xfd\xcd\x03\x00\xef\x8e\xcd\x50\x0a\xd8\xd1\x71\xcb\x53\xbe\x57\xa2\x5c\x3a\x58\x01\x2c\xb9\xe4\x7e\x08\xcf\x13\x67\x07\xef\x4a\x9d\xf6\x74\xb0\x59\xb9\x3a\x0d\x6d\x5f\x52\x5b\xf6\xb8\x30\xd8\x67\x01\x05\xc1\xc3\x74\x8e\xef\x50\xe5\xc2\x95\xbe\xfc\x4c\xb5\xfc\xfb\x7f\xe3\x67\x8b\x64\x54\x89\x3d\x8a\x0c\x81\xc9\xc2\xb2\xaf\xbf\x8c\xcf\xf9\x43\xfd\x04\xf0\xe8\x5b\x84\x84\xb0\x80\x89\xb7\xa7\xc8\xc4\xc3\x11\x20\xdc\x57\xf5\xe8\x2a\x7c\xd9\x9a\x4e\xb5\x18\x30\x39\xb1\x3b\x0b\x23\x7e\xff\x28\xc6\xad\x1a\x7d\x03\x2b\xb3\x48\xb1\x54\x2a\x53\xd8\xe8\x85\xaa\x47\x21\xd9\x1b\xff\x84\x24\xce\xd8\xb6\xe7\x10\xdd\x46\x94\x8a\x4e\xbc\x7a\x23\x13\xb4\x38\xaa\x54\xde\x68\x79\x34\xab\xbc\xb9\xf0\xa0\xaa\x9c\xfe\xed\xc1\xab\x42\xf3\x08\xeb\xfb\xfb\x42\x6d\x78\x9f\x1f\x85\x46\xb5\x9e\x66\x2d\x78\x29\x5e\x48\x60\x17\xb6\x44\x96\x39\x6e\x8f\x0b\x38\x83\x16\x2f\x44\x7c\x8a\x35\xd7\xe0\x5d\xe1\xaa\xe1\xb7\x45\xfc\x6e\x69\x5a\x7b\x66\x9d\x5d\x35\x44\xb6\x48\xc7\x69\x56\xf0\xdb\x5c\xad\x68\x66\x13\x4e\xee\xef\x33\x47\xf7\x3f\xf5\x77\xca\x3e\x3b\x62\xf4\x46\x7c\x4f\xbc\x1d\xa4\x0e\x44\xf7\xd5\x6a\xbb\x2f\x2b\x8a\x6f\x76\xd7\xcc\x8e\xeb\x1b\xec\x33\x65\x25\xc6\x83\x9d\x59\x2a\x8d\xc7\x62\x28\x48\x85\xbb\x44\xb2\xb0\x8c\x83\xbc\xf0\x34\xe6\x92\x27\xcb\x51\xf7\x24\x57\x46\xf9\xdf\xa1\x1f\x3c\x67\x57\x05\xcb\x6d\x97\xff\x09\x1c\x49\x6b\x14\x57\xeb\x52\x6e\x40\xbf\xce\xeb\xe6\x16\x0b\xb7\x53\xfb\x49\x5f\x4c\xee\xa5\x17\xfe\xb6\x0f\xe2\x96\xee\x09\x32\xf3\x22\x9e\x0f\x5d\x24\x14\x7c\x8a\x49\x82\xf6\x7a\x94\x8f\x0e\x3f\xb0\x6c\x72\x4c\x96\x52\x78\xc8\xd6\xbf\xf3\x0d\xb8\xdc\x56\x4c\xcb\x2d\x36\x17\xf9\xbf\x3d\xdc\x38\x40\xdb\xa6\x81\xb3\x96\x13\xdf\x8b\xd0\xf5\x83\xd4\x4e\x9d\x3e\xfe\xd0\xb6\x3c\x7e\xfa\xbc\x3c\x1e\x1e\xf8\x28\x2c\x3f\x3e\x69\xd6\x57\x80\xc9\x1a\xd9\xb9\x5d\x2f\xcf\xb7\xf3\x19\x1a\xc7\xde\x7b\x20\x86\x68\x82\x75\xdc\x82\x48\x9d\xbf\xa1\x4b\xef\x69\x66\x82\x73\x44\x07\x72\xcd\x8c\x71\x5f\x5f\x9c\x0e\xf6\xc6\xd3\xb2\x23\x4f\xe0\x48\x57\x4c\x56\x57\xb0\x62\xc2\xb2\xce\x59\xd0\xa9\x33\xd3\xd6\x98\x52\x13\xfa\x6c\x8d\xe6\xc5\x8a\x60\x5f\x64\xb5\x19\x87\xfa\xc1\xd3\xc1\xce\x79\x6a\xf9\x5e\x49\x61\xf4\x66\xce\x7c\x9b\x3c\x9b\xb3\xec\xba\xb3\x3c\xf1\x12\x45\x7a\x6a\xc2\x46\xb1\xa2\x88\x25\x2d\x48\xf3\x4b\x67\x45\xe3\x82\xf7\xdb\x49\x72\x7a\xf3\x0f\x40\x2a\xfc\x6f\x17\x89\x01\x4c\x22\x22\x1c\xb7\x8b\x23\x81\xc5\x00\x61\x16\xce\x2a\x3a\xd6\xcc\xdb\xde\x5f\x74\x79\x00\xe1\xe6\xc6\x46\xa0\xc7\x70\xf0\x24\xc6\xd0\xd9\x96\xce\x14\x7e\x49\xe9\x7b\xdc\x75\xd3\x65\x5a\xfb\x7a\xd0\x7a\x2a\x28\xe1\x82\xf3\xb7\x4b\xbd\x17\xfb\xb8\xd3\x50\x1a\xd5\x37\x96\x1b\x11\x26\x87\xd9\x2b\xc7\xb8\x7e\xc7\x74\xcb\x49\x05\x2b\x1b\x95\x8a\xd1\x0a\xee\x66\x57\x68\x80\xeb\xac\x84\x28\x8f\x8d\x5d\x3b\x39\xf5\xdb\x33\x18\x7c\x79\xeb\xc9\x52\x85\x3b\x49\xcb\x08\x84\x2a\xd5\xc8\xfe\x8f\xea\xa1\x9b\x1f\xa6\xa8\x71\x52\x36\x38\x12\xdb\x55\x70\xfb\x7d\xac\x18\x64\x7a\xcc\x4a\x1d\x08\x15\x33\xc9\x49\x69\x71\x68\x4d\x75\x59\xd3\xfc\x35\xdb\xd9\x5f\x92\xd6\x92\x3a\x80\x82\x04\x15\x25\x36\xe0\xda\x17\x99\x41\x93\x33\xfd\xda\x18\xdb\x96\xaa\xf6\xef\x35\x3c\xf5\x8b\xfb\x0a\x78\xc5\x43\x9d\xf1\x22\x28\x5d\x63\x8d\x49\xc8\x78\xe5\x55\x38\x69\x5f\x2d\xc9\x57\x9e\x2f\x39\xf0\x28\x4a\xb5\x60\x05\x9c\x12\x78\x60\x67\x39\xa1\xc1\xdf\xaf\x2b\xca\x27\x5c\x27\x6a\xff\x4e\x91\xa1\xb8\x34\xe1\x16\xb5\xef\x63\x6e\x1e\x22\x8b\x38\x76\x57\xe8\x71\xa8\xc3\xd4\xd6\x5f\x6f\x08\x59\xbc\x58\xa8\x51\x64\xfb\x3e\x3c\xb1\x13\x4c\x93\xa9\x2a\xdd\xcd\x81\xe6\xec\xf0\x48\x57\x01\x24\xa3\xf0\xce\x9c\xaf\xef\x9d\x70\x12\xcd\x55\xff\xea\x7e\x0b\xdb\xf2\xbd\x37\x27\x5b\x0f\xdf\xb4\x44\x1b\xf4\xcc\x7d\x28\x83\x7d\xfb\x84\xf5\xf0\xad\x31\xb9\xe8\xc0\x9e\x45\xdd\x23\xcb\x62\x39\xc9\x97\x1e\x03\xda\xbb\x63\xc7\xf0\xf2\x82\xab\x40\x32\xc1\xe6\xca\xef\x63\x91\x88\xd7\x33\x17\x17\x6c\xf5\x3a\x96\x5e\x08\xbe\xec\xc7\x31\xc3\x86\x40\x34\xa9\xbe\x44\x13\x33\x86\x0c\xde\x17\xa2\xac\x6e\xd2\x65\x74\x19\x83\x2c\x26\x6f\x18\x24\x51\xb2\xac\x4c\x21\x1e\x70\xf4\x83\x3d\x4b\x31\x19\x30\x32\x02\x89\x42\xf4\x96\x90\x8a\x1f\x06\xe3\x58\x09\x7a\x62\x70\xb0\x3b\x0c\x7a\xc7\x57\x37\x4e\x98\x1e\x66\x34\x19\xd4\xec\xaa\xa6\x88\xaa\x8d\x5a\xb3\xda\x74\x31\x62\x86\x3a\x06\x9d\x8e\x78\x02\x77\x4d\xd8\x44\x33\x3a\x18\x81\x8c\xc0\x92\x98\x6c\xf4\x68\x93\x92\x09\xa7\x1d\xa0\xef\x64\x2c\x1d\xcb\x89\x5a\xb8\x9b\x64\xbe\x46\xf2\xdd\x44\x94\xc4\xeb\x11\x74\xed\x9e\x1d\x39\xc6\x75\x8d\xce\x37\xb1\xed\xd8\xaf\xc5\x75\x28\x9f\x42\x44\x5f\x0b\x38\x1c\x84\xb8\x98\xcc\x72\xd7\x94\x79\x26\xc1\x21\xb0\x81\x5c\xb0\x74\x10\x23\x75\x2e\xed\xfb\xec\x28\x72\x42\x5e\x4b\x54\x36\xb5\x3c\xc0\x6d\xfa\x98\x1e\x42\x35\xa5\x0f\xd7\x99\x55\xf3\x4d\xb3\xd5\xd9\xa3\x2c\xd5\x86\xe6\xc8\x99\x9f\x45\x91\x8c\x96\x4a\xab\xf2\xe1\x63\x72\xc5\x37\xd9\x11\xa2\x43\x38\x52\x46\xb4\x46\x1a\x6d\x64\x22\xcb\x4e\xe8\x5e\x2c\xc1\xc1\x75\x7a\xac\xcc\x66\x11\xed\x70\x92\xba\x23\x77\x65\x9b\x94\x5d\xc8\xe9\xac\x75\x4c\x1c\x26\xbf\xd5\xb5\xd6\x6e\x3b\x1b\xb9\x30\xc0\xca\x71\x0c\x6e\x8e\x91\xc9\x67\x86\x31\x79\x59\xac\xcb\xe1\xfc\xdf\x77\xdc\x0f\x67\xa1\x77\x17\xe6\x0a\xbb\x47\xfd\xbf\x73\xe8\x72\x32\xe2\x34\xb3\x9c\x2e\xce\xdb\x6f\xa9\xbe\x1e\xa6\x16\xe0\x62\x88\xdd\xe6\xf5\x30\xab\x38\x9c\x4f\x78\xd2\x43\x8d\x02\x18\xa1\x95\xea\xbd\xa6\x08\x90\x11\x5e\x9c\x35\xa2\x5b\xe8\x2a\xcc\xfe\x66\xba\xe5\x50\x49\xd9\x46\xc7\xa1\x71\x6b\x2f\x93\x8a\x23\xe5\x44\xc4\x07\xf9\xac\xfb\xd1\x32\xfc\x71\x80\xa3\x24\xdb\x87\x89\x48\xb5\xb2\x2f\xd8\x8a\x2e\xf6\x84\xd0\x91\x8f\x6d\x75\x0f\xf8\x1c\xc2\x0e\xfa\xb3\xf9\xd6\x74\x2e\xf9\xec\xbe\x5e\xb0\xc1\xac\xb1\x36\xbb\x67\x9d\x9c\xc9\x99\x38\x53\x95\xa8\x76\xb1\xdf\x8d\x60\xd5\xfb\xdb\xc5\x41\x9b\x1a\x90\xf1\xa6\xfb\x05\x51\xd9\x97\x59\xb7\x95\x30\x78\x90\xa0\xcf\x6e\x52\xe2\x16\xcf\xd2\xd5\x42\x76\x82\xb3\xd0\xae\xe8\xf4\xad\x9b\xf8\x79\x74\xd0\x27\x3e\x93\x9f\x91\x30\x1d\x2d\x1e\x56\xf9\x6c\xbf\xa0\x40\x4a\x8e\x07\xa6\x4c\x93\x6b\xa4\xb3\xef\x30\x87\x9d\x75\x7c\x77\xb9\x76\x48\x25\x72\xd0\xe1\xa1\x46\xef\xe5\xc1\x86\x9b\xdb\x4b\x40\x14\x63\x54\x64\xc3\xa7\x46\xb2\x21\x44\x10\xa7\xb7\xe6\xc3\xc0\x0e\xcc\x7e\xe6\x0e\x59\xf3\xbd\xbd\xc7\x59\x4f\x14\x0a\x9e\x2e\xb5\xac\x70\x14\x56\x91\x4f\x09\x2c\x86\x51\xaf\x49\x82\xc2\xbf\xb0\x54\x12\xce\xae\x33\x40\xae\xb9\x70\x10\x4d\xeb\x5f\xb3\xc3\xab\x53\x51\x7a\x38\xef\x52\x16\xc5\xb1\xac\x99\xb5\x42\xdf\x0b\x21\x54\xcd\xe6\x04\x08\x3c\x54\x4a\x34\xfe\x79\x42\x2a\xea\xc5\x48\xf7\x69\xdb\x38\xaf\x05\xc9\xab\xab\x6c\xf1\x94\xe3\x65\xda\x12\x57\xf7\x48\xca\x09\xa4\x79\x26\x23\x1d\xa6\x12\x5b\xa8\x71\xec\xd9\xe2\x9f\x05\x3e\xf3\x6a\xb0\xd5\x9f\xa7\x5e\x93\xe7\xb5\x12\x47\x4e\xae\x48\x77\x08\xff\xf7\x40\xd4\x1c\xdc\xf1\x77\x8c\x77\xea\xe3\x7a\xce\x3a\xd7\x37\x3a\xde\xa5\x9f\x5e\x79\x14\xcc\x58\x96\x87\x76\x8e\x1d\x81\x0f\x30\xcb\xad\x52\x84\x17\x9b\xb1\xe5\x9a\xfe\x64\x7a\x96\xd8\xdc\xe7\x39\xb9\x7e\x78\x75\x4d\x50\x03\x98\x7a\xa1\xee\x45\x6e\x47\x70\xc2\x3d\x7b\x67\xdc\xc6\x1c\x62\x8b\xef\x4d\x65\x44\xf0\x84\x9d\x72\xdb\x7b\xf4\x76\xdb\x74\xa4\x4b\xb5\x75\x52\xae\x4b\xb1\xe1\xfc\x1d\xee\x99\xa7\x96\x1f\xed\x6f\xed\xcf\xbb\xdc\xe2\x12\x62\x8e\xf8\x02\xd7\xe9\x3f\x74\xfc\x8d\xf6\x81\x8b\xb2\x2a\x68\x1d\x81\x2b\x38\xad\x3d\x32\xa6\x08\x34\x81\x95\xfb\x4d\x47\xe1\x67\xfb\xcc\x97\x1f\x98\xcc\xd1\xb3\xcf\xda\x37\xf5\x9f\x7a\xdf\x7f\x03\x61\x2b\x76\xdc\x62\xa1\x31\x7c\xfd\xb7\xcb\x81\x25\x84\xc1\xce\x07\x9d\x10\x1c\x1b\xfe\xb6\x48\xa3\x69\x21\x85\x30\x1f\x45\xf2\xb5\xe3\x3c\x16\xfe\x26\x3c\x5a\x6c\x24\xa7\xee\xae\xa5\x2f\xac\x6c\x64\xbb\xf7\x08\x79\x20\xe9\x9a\x5d\xc9\x0c\x57\xd7\x12\x5d\x57\xbe\x4c\xad\x0d\x78\x0d\xf8\x9e\xc4\xea\xd1\xfb\xb0\xd2\x2d\xb1\x94\x01\xfc\x51\x48\xcc\xb0\x45\x76\xea\xe4\x24\x49\x71\x94\x11\xc6\x70\xcc\x19\x81\xeb\xd7\x9c\x76\x89\x55\xf9\xe8\x12\x1a\x91\x1d\x3b\xa5\x5c\x9f\xdd\xc9\x5d\xc2\xcc\xd8\x9a\x76\x3c\x99\x9a\x5f\x61\xfe\x34\x18\xad\x25\xfc\x23\xf3\x37\xa4\x63\x35\x03\x9b\xe1\x8d\xec\x13\x88\x3d\x2e\x19\x9c\xc8\x12\x7a\x77\xdd\x74\xec\xef\x0d\x2b\x97\x9b\xde\x17\xe6\x7d\xa8\xed\xec\xbc\x81\x1d\x19\x2f\x74\xeb\xc0\x8c\xcc\x6c\xd0\xad\x03\x2b\x32\xb3\x5b\xe9\x1e\x18\x91\xb1\x86\x3b\x9a\xc1\x7c\x8c\xcb\xd4\x86\x73\x38\xa3\xb6\x6e\x4b\x74\x3b\x12\xba\x67\x20\xbd\xa4\xf2\x42\x18\x43\x48\x38\x91\xaa\x30\xe2\x1e\xbb\x56\xf6\x15\x73\x75\x4d\xb1\x7e\x41\xb5\x58\xda\x65\x9d\x73\x0d\xca\x3a\x92\xa3\xf6\xd8\x19\x54\x8e\x19\x2d\xcb\xe2\xd1\xad\xb9\x2c\xa5\xfa\x88\x97\x9f\x66\xb9\xdf\x37\x6c\x0e\x4b\xd6\x90\x66\x84\x0d\xac\xdb\x5c\xc6\xad\x5d\x9d\x3c\x02\xb0\x19\xca\x22\x06\xc8\xb2\x2e\x5f\x5d\x36\x04\xe7\xc1\xa2\x6a\xce\x42\x77\xc0\xee\xcb\x50\xab\x80\x9c\x19\x7b\x4f\x14\x94\x08\xdf\x58\x8a\xaf\x7c\xa8\xb9\x5a\xf6\x94\x57\x08\xf2\xe2\x32\xac\xa3\x87\x97\xa6\xd1\x23\xbc\x52\x6e\x2b\x95\x40\xf7\xff\xe6\xe1\x1d\xcc\xc9\xcc\x86\x11\x67\xed\x78\x02\x53\xb8\xcc\xdc\x7c\xef\xb5\x9e\xcc\x3d\x72\x41\x8d\xce\x85\x4a\x75\xcd\x3d\xf2\xbd\x57\xa5\xa3\x9c\x88\xa3\x62\xf2\x0b\xfd\xac\xcc\xfb\xd2\x57\x8c\x8f\x83\x97\xef\x03\x00\x51\x06\x07\xb5\x67\xd6\x43\x46\xb0\xa3\x41\x3f\x99\xd3\x7f\xe4\xb9\xb1\x88\x6c\xe7\x39\x6c\x8a\xa9\xc6\xe0\x69\xb9\xda\x7a\xa6\xfe\x32\xa0\xce\x87\x1b\x2f\x8a\xc7\x3a\x9c\x5b\x03\x9f\xd5\x50\x10\x8e\x41\xf9\xe6\x44\x36\xe9\x3d\x52\xdf\x11\xfe\xbb\x52\x2a\xf5\xf0\x08\x1a\xcf\x20\x88\xe6\xa3\xd9\x71\x6d\x8c\x56\x95\x67\x2f\xc9\xff\x77\xac\x4e\x95\x05\x30\x52\x46\x6d\xfe\xb6\x99\x68\x52\x95\x87\x72\xa5\x57\xa3\x30\x28\x13\x5f\x34\xfd\xb4\x37\xcc\x5c\xf1\x45\x84\x6d\x47\xb6\x8c\xf0\x8e\x54\x78\x0d\x07\xbb\x53\x5b\x81\x51\xc3\x82\x16\x55\x23\xc3\xea\x8a\xff\xee\xe1\x39\x3c\xc7\x66\xa0\x71\x19\x75\x82\xb6\x64\x72\xd8\xaa\x54\x95\xa1\x17\xcd\x69\xe0\x53\x99\x25\x7c\xe2\x2d\xe1\xa2\x68\x88\x5c\x8c\xdc\xd5\xab\xd3\xa3\xa9\xdd\x3d\xa3\xc8\xf3\xa2\x6c\x9c\x84\x34\xfe\xa6\xaf\xe4\x1c\x1e\xf4\xf8\xea\xd5\xf5\x77\x0f\x4f\x82\xbb\x11\xc0\xaa\x7b\xa6\x6c\xcd\x0c\xea\xa2\xf1\xcf\x94\x2d\x58\x35\x89\x2c\xf2\xc0\x76\x0d\x20\x96\x4d\x1c\xd4\xd6\xb7\x7b\x08\xa6\x56\x0c\x5f\x8f\x7f\x4b\x3f\x38\xe2\xb6\xa8\xd7\x00\xdf\x25\x00\x14\xe5\xf2\x46\xbb\x8e\x08\x43\x4f\xf3\x77\x7f\xe0\xcb\x70\x8e\x5e\xa9\x3f\xf8\x7d\x85\x8c\x74\x4b\x4c\x43\xf8\x91\xcc\xee\x63\x10\xd8\x9b\xcf\x7a\x96\xf6\x6d\xa1\xba\x54\xd7\x28\x09\xee\x6d\x17\xc2\x68\x5e\x8a\x82\xf0\x4b\xb0\xc4\x71\x15\xcb\xab\xbe\xe8\x8c\x8a\x53\xa8\xba\x38\x45\x57\xd8\x72\xc8\xe6\x6e\xb7\xee\x9c\x2c\xaa\xaa\x94\x48\xe8\xa9\xea\xa6\x64\x25\xbd\x19\xc0\xca\xde\x57\x74\xc4\x95\xef\x60\xac\x66\xab\x96\x5a\x52\xac\x4d\x45\x09\x63\x36\x8d\xfa\xff\x59\xa6\x7d\x5d\x0f\x63\xeb\x4a\xce\x59\x6b\x55\x91\x31\x96\xe7\x87\xd5\xa8\x0a\x91\x48\xec\x2e\x9a\xc7\x99\x77\xed\x37\xa6\xa3\xdc\x66\xfb\xb4\xeb\x53\x17\x78\x0c\xab\x2c\x60\xc8\x8c\xf4\xf0\x9f\xb2\xa7\x63\x95\x81\x4a\x24\x80\x44\xbe\x22\x15\xf9\xb8\x9a\x87\x86\x7d\x44\x1a\xd5\x21\x36\xb3\x02\x4b\x45\x4c\x7e\xf7\xe1\x5b\xcf\x4b\xe8\x04\x32\x6a\xe9\x17\xd8\x70\x4c\x15\xf3\xad\x63\xdf\x95\xc7\xc3\x2a\xdf\x2b\xb6\x60\xcf\x52\x99\xc1\x17\x8f\x1d\xfc\xc1\xc6\x54\xad\x7f\x84\x6d\xdb\x10\x18\x60\x84\xf4\x55\xaa\x06\x54\xb8\xe1\x3f\xff\xa6\xbb\x36\xbb\xb7\x23\x57\xd0\x26\x61\x35\x50\x5a\x57\xed\x21\x18\x6d\x61\xdd\x4f\xee\xff\x04\x34\x8e\x1e\x38\x96\xae\x03\x11\x39\x4b\x29\x3a\xc3\xc4\x24\xd2\xae\x20\x6e\xc5\xe6\xec\x46\x52\x41\xa5\xb6\xab\x53\x41\xb3\x42\xd3\xca\xc5\xd9\x9d\xe5\xdc\xc9\x74\x65\xdd\xbc\x19\xe3\x7e\xd1\x3a\x60\x2f\x1f\x07\xca\x0f\x71\xfb\x7b\x2b\x2e\x52\x60\x62\xdb\xe0\xa4\x9a\xd6\xf6\xf1\xe5\xba\x2c\xa7\x3a\xcd\x04\x73\xf2\xd7\x1b\x0c\x60\x3b\xbb\xea\xf9\x05\x79\xf3\x07\x90\x45\xcd\x13\xa0\x3a\xc7\x33\x31\xa6\x56\xe1\x6e\x53\xa3\x98\xb8\xfe\x63\x34\xaf\x71\xeb\x62\x35\x4c\xe8\xb6\x6b\x8c\xac\xfa\x6e\xb6\xc6\xbd\xbf\x84\xe1\x5a\x6d\x2a\x77\x17\x7b\xf3\xc9\x16\xdf\xdf\xce\x88\x77\xa3\x2b\x7d\x17\xb2\xc5\x5d\x7b\x6b\xc4\x84\xa4\x98\x1c\x59\x22\x8c\x2b\x24\x28\x83\x93\x05\x0e\xa4\x05\xd5\x34\x72\xfa\xcf\x4a\xef\x94\xfe\xeb\x35\x14\x37\x9e\x22\x6b\x1c\x37\xf8\x4f\xf9\xa4\xb3\x6d\xfc\xd3\x09\x67\xc6\x5d\xe1\x46\xd0\xf3\x7d\x24\x7f\x1f\x5c\xc9\xab\x64\x8c\x69\x76\x9d\x48\x33\x1c\xc7\x1a\xa6\xb1\x33\x39\xf9\xa2\xf7\x86\x6e\xef\x24\x7b\x53\xf7\xe3\x76\xbd\xbf\x1a\x26\xd5\xe5\x15\x30\x33\x02\xa4\x8d\x3f\x3b\x9c\x32\x32\xbb\x94\x39\xa3\x12\x90\x52\x83\x87\x1c\x3d\xab\xb4\x4e\x87\x79\x78\xe8\x4a\x2c\xbc\x2b\xdc\x2d\x93\x69\xf4\xaa\x22\xe3\x94\xea\xb2\xa6\x7c\x1e\x4f\x6d\x1e\xa7\xfa\x56\x11\x66\xd0\xe2\x85\xf3\x8a\x0e\x98\x9e\xa9\x6c\xda\x27\x89\xc9\x29\x9d\xf6\x26\x33\x53\x31\x7d\xfd\x3b\x75\xb8\x24\xa7\x66\xba\x8f\x29\xad\xa5\xb8\xaa\x41\x66\x69\xda\xbe\xa7\x69\xc7\xc3\xe7\x09\x54\x00\x33\x30\x77\x15\x80\x5d\x3c\xfc\x48\x5e\xb5\xe8\xd4\x13\x35\x3e\x47\x79\x75\xbf\xe8\x4b\x10\x46\xe9\xb6\xb1\x1c\xda\x1f\xe0\xb4\xee\x46\x7c\x35\x40\x42\x0b\xe2\x97\x13\xd1\x05\x9a\x27\xf9\xaf\xef\xb7\xc9\x59\x69\xca\xee\xc1\x5a\xb8\x92\x90\xef\xa5\x91\x2a\x3d\x6f\x64\x10\xdd\xa2\xff\x9a\xe5\xa0\x94\xdc\x80\x96\x59\x91\x21\x87\x12\xa9\x4c\x6e\x5c\xdc\x16\xb7\xcb\x7b\xa5\x49\xdd\x32\x22\xd3\xb9\xae\x67\x18\x8e\x35\x1d\x2d\x88\x99\x59\xa1\x21\xa6\xec\xaa\x9d\x39\x2a\xc7\xa9\xc8\x44\x09\x5d\xe3\x9e\xb2\x9d\xfa\x9a\x30\x1c\x39\xf9\xc6\xfd\xc3\x31\x3b\x86\xc5\xde\xc8\x42\x88\xdd\xdf\xac\xc7\xa6\xc8\xa0\xba\x0a\x52\xf8\x0a\xbc\xdb\xf3\x9a\xc3\x2b\x73\x80\x70\x75\x3c\x41\x9c\xab\x71\x3f\x13\xd2\x7f\xe4\xaf\xd0\x3a\x13\xd1\xe3\xde\x3f\x16\x7a\x2d\x4a\x6a\xd8\xbe\x8f\xa1\x85\x5d\x7c\x86\x13\x6e\x8b\x29\xc6\x3c\xc5\x5d\x96\x0f\x2c\x60\xf0\x74\x62\x9e\x13\xe8\x49\xd3\x34\x3b\x4c\xc7\x44\xef\x5b\x29\xd5\xfe\x6f\x79\xe5\xbf\xe0\x85\xf0\x6b\xb9\x00\xbd\xd4\xbf\x01\xce\xf0\x43\x73\xa7\x94\x17\x1f\x95\x68\xfb\x92\x04\x71\xf5\x52\x5d\xe1\x3f\x32\x57\x09\xc9\x66\x50\x61\xf3\xe0\xe0\x3e\xf3\x95\x95\x65\x54\x56\x8b\xfa\xc6\x93\x45\x6f\x5f\x86\xa0\xf8\x76\xf7\xe0\xa6\x27\x05\x05\x47\x95\xd1\x4b\x8e\x16\x7c\x86\x7b\x28\xe5\xd6\xea\x24\x5b\xbb\xca\xdd\x24\x70\x90\x03\x59\x37\x87\x67\x72\x3e\xc8\x49\x67\xea\xcb\x34\x12\x42\x3e\xbe\xb6\x4c\x9e\xb5\xd6\x36\x97\xa2\xa1\x8a\x8f\xdd\x93\x37\x44\x9a\x17\x64\x35\x7b\xcf\x6c\x82\x7b\x0b\x1b\x1d\x77\x85\x7d\xe7\x5f\xb7\x70\x5d\x6a\x9d\x2b\x34\x7c\x7d\x0c\xb9\xe6\xd7\x0c\xdf\x94\xd2\xe6\x9c\x50\xa0\x52\x44\x00\x25\xc1\xaf\xa2\x53\x9c\x6a\xe3\xfe\xb2\x81\x7d\xf2\xf6\xa0\xea\xa4\xe4\x3e\xbf\x95\xbb\x52\x12\x04\x17\x14\xd1\x97\xff\xda\x8b\xbc\x94\x0a\xc3\xad\x7c\x0b\xf2\xf0\xbe\x35\xbc\x09\xb8\xe7\xb9\x72\xd3\xd9\x53\x23\x6e\xcb\x35\x1c\x7a\xf3\x59\xec\x0b\xa6\x6c\xac\xc9\x17\x50\x9f\xac\x8d\x35\x67\x04\xad\x08\x9f\xbd\x57\x18\xe0\xcb\xc2\x3c\xe2\x29\xf1\x40\x0a\xdf\x71\x7c\x63\x93\x77\x37\x46\x91\xf5\x98\xb0\x32\xc7\xa5\x77\x79\xeb\x4e\x2c\x7d\x20\xd6\x54\xeb\x5d\x33\x22\xe3\x89\xab\x95\xb5\x49\xbe\xcd\x84\xdf\xda\x9d\xa4\x93\x93\xbc\x43\x9d\x2b\x28\xa5\xd4\xbc\x4c\x20\x3f\x6c\x5d\x3e\xea\xa2\xb6\xd4\x15\xe2\xf1\xaf\x24\x2e\x57\x97\x9b\x3b\x82\xb9\x21\xd0\x45\x62\xea\xe5\x64\xf5\x15\x53\xf8\x5d\x37\xf9\x5b\xb7\x7c\x7b\x28\x63\xd5\xba\x3e\x7d\xbb\x09\x66\x7e\x1b\x04\x06\xeb\xda\x80\xd5\x93\xda\xec\x15\xf8\x58\x56\xf1\xb7\x65\x2d\xf2\xd6\xd6\xa2\xb7\x96\x56\xd9\xbc\x02\x0d\x6b\x94\x01\xd7\x19\x44\xb5\x4f\x72\xd5\xc6\xa9\x16\xee\xe7\x00\xae\xf2\xe4\xec\x1a\x83\xf5\x4b\x7e\x44\xd1\x87\x3b\xae\x60\x0c\x7f\xcd\x55\x3a\xee\xea\xe5\x19\x10\x71\x3d\x05\xa2\xa4\xa5\x11\x8a\x76\x4c\xa8\x67\x79\xd6\x7a\xba\x73\x25\xbb\xe3\x92\x2a\x31\x64\xe4\xea\x23\x79\x10\x92\xc7\x49\x36\xf5\x84\xe8\x94\x87\x7a\xbd\x59\x68\x3a\x0c\xef\xf4\x4c\x04\x61\x49\x69\xe4\xdd\x1e\xd6\x46\xfd\xc6\x65\x84\xf4\xff\x06\xb5\x26\xc8\xe0\xd2\x5c\xb4\x73\x9e\x67\x6c\xa8\x8a\xf8\x7c\xa2\x8c\x1c\xda\x2e\x03\x74\x80\xfb\x4c\x7e\x61\x43\x52\xc6\x5b\x70\x24\x17\x02\xe6\xc3\x38\x74\x47\x90\x21\xf3\x3b\xd2\x6f\x2c\xee\x4a\x55\x53\x94\xf7\xad\x92\xc1\x83\x65\x6c\x52\x10\x5e\xfe\xef\xa0\xb5\x55\xcf\x0a\x89\xf4\x56\x6a\x2d\xe4\x19\x8b\x80\x7d\x61\x80\xbd\xa0\x0c\x8c\x50\x38\xec\x7c\x96\xcd\xe3\x4e\x29\x5a\x81\x16\xf0\x2c\x65\x39\x98\xc9\x9a\xa0\x5f\xfd\x5b\xf7\xb7\x9c\xa0\x19\xf7\x23\xc4\xea\xd2\xe3\x06\x78\x4a\xde\xda\xb7\xc5\x5b\x23\x48\x10\x5f\x1f\xe2\x1c\x21\x74\x86\xd0\xd3\xfa\xa2\xd0\x00\x5b\xa7\xcb\x22\x0d\x1c\xe1\xfb\x6c\x8c\xf1\xe5\xda\x55\x40\xc6\x0c\x2f\x2f\x30\x75\x0d\xd1\x6b\x9d\xd4\x78\xb6\x1a\x27\xf9\xa5\xa7\xa2\xde\x3c\xb4\xe9\xc7\x99\xf2\x02\x5c\xc1\xf8\x0b\x8c\xe0\x65\x0f\xdb\x38\x9c\x9b\x21\x53\xef\xe6\x54\xae\x08\xc4\x0d\xb1\xe2\x75\x4a\x37\xdd\x80\xeb\x2d\x93\xd9\x6e\xb4\xce\x32\x7d\x85\xc2\xa8\xd3\x18\xef\x1b\x82\xec\xb3\xdb\x6b\x03\xb4\x40\xe3\xc4\x58\xd4\xa2\xa6\x66\xda\x5d\xd4\x23\x5b\x63\x67\x9b\x0c\xe4\xeb\x43\x96\x68\x94\x15\x8c\x48\x66\xb6\xa2\x27\xb0\x93\x33\x0e\x50\xd4\x98\x34\x64\xd6\x4c\x4b\xf3\x92\x1b\xc8\xd6\x6c\x2f\x6f\x95\xff\xc6\x18\x8d\xe9\xd8\x81\x20\x61\x7e\x6a\x8a\xc7\x9a\x6e\x2d\x4b\x37\x24\xa1\x50\x52\x5f\x29\x3e\xb8\x91\x9f\x74\xbb\xcf\x5d\x3b\xdc\xaa\xd7\x8c\x5c\x2b\x37\x80\x8d\xb5\xa6\x36\xeb\x62\xf3\x86\xb7\x2b\x12\x80\x55\x4d\x80\xff\xd3\x4a\x0a\x57\x65\xb3\x29\x61\x3a\xc8\x79\x68\x7d\x6d\xb9\x04\xed\x72\xf1\x7c\x7a\x2b\x21\x81\x30\x21\x05\x7c\x36\xbf\x40\x1f\x10\x3c\xb1\x11\x11\x69\x77\x6a\x5d\xc2\xa0\xd4\x0f\x94\x52\x2d\x54\x24\x87\x97\xca\x56\x81\x90\x14\x3a\x09\x50\x31\x75\x81\xd8\xc5\x7c\x8a\x4d\x16\xd6\x41\xc9\x03\xbd\x1a\x71\x79\x9b\xb4\x6f\xc5\x63\x60\x0d\x45\x30\x86\x0f\xfe\xb5\x62\x18\xa1\xae\x53\x63\x70\xa9\xdb\xa0\x46\x00\xc1\xf2\x8f\x70\xc5\xf4\x62\x46\xe6\x77\xa5\x85\xa5\xb0\xc0\x43\xbe\xa3\xb1\x1f\x32\xa7\xc0\xd8\xc3\x80\xea\x97\xd2\x0f\xf8\x26\x28\x2c\x59\x28\xf6\x50\xc4\x37\x9a\xf1\x62\xc2\xd1\x3c\xda\x02\x61\xf6\x6a\xaa\x4d\x37\x65\x3b\x76\x12\x2e\xe2\x94\xa9\x05\x5a\xa8\xbd\x3b\xd4\x6a\xf1\x3b\x61\x8d\x00\x47\x3b\x09\x06\x20\x7d\x93\xac\x80\xd1\x7f\x39\x6c\xfe\xaf\xa2\x95\x51\x8f\x71\x5b\xa6\xc9\xc3\xe3\x60\x5e\x60\x9e\xb6\x58\x9f\xa9\x69\x39\xfd\x39\x1b\x75\x33\x8b\x42\xd6\xaa\x3f\x05\xbb\x4d\xaf\x65\x3a\x2d\xcb\x13\x7e\xbc\xfd\xba\x88\x95\xb1\x1c\x2d\x21\xdd\xef\xbe\x7c\x04\xfa\x4d\x5a\x8a\xd4\x89\xc4\xa0\xba\x1f\x01\x2e\xb0\x06\xf1\xd3\x17\x47\x83\x83\x59\x36\x3c\xe3\x8f\x92\x5c\xff\x46\xc0\x80\x69\xa2\xd7\x85\x67\xc6\x1b\x1a\x31\x9a\xf1\x04\xd8\x75\xff\xcc\x9e\x6c\xb8\x54\x74\x32\x7b\xc0\xb7\xae\x37\x87\x61\x7d\x2e\x87\x50\x77\x4e\x98\xf4\x7e\xe0\x14\x79\xe7\xca\x89\x89\x87\x37\x27\x14\xee\x34\xc6\x66\x9c\x7a\xde\x69\xe4\x55\xd5\x27\xa1\x2a\x1e\x52\xe7\x3c\xfd\x1a\x2b\xfd\xf3\xe9\xd3\x3b\x8b\x6d\x83\x5a\x79\xad\x77\x77\x77\x9e\x17\x87\xa8\xc4\x5d\xba\x39\x46\x8c\xbb\x8d\x77\xb4\xb1\x39\x3a\xc2\x06\xda\xc6\x99\x96\xac\xb6\xce\xdd\xd4\x56\x8e\xa0\x22\x07\xcd\x11\x6f\xb9\x9b\x2d\xaf\x35\x20\x56\x3d\x18\xe9\x2f\x76\xf3\xe6\x3e\xf3\xba\x2f\x84\x2c\xcb\xba\x2d\x96\x73\x0c\x1b\x16\x2c\xa2\xf5\x72\xf5\x0c\x9a\xb6\xdf\x95\xa1\xf3\x86\x6c\x6d\x11\x34\x7d\x1a\x9d\x05\xef\x2e\xd1\x4b\xdd\xdc\xeb\xd1\xb2\xcb\x0c\xb7\x12\xd3\x84\x02\x9f\x04\x0d\x16\x93\xc6\x22\x1e\x81\x34\x2b\xfb\x3f\xc6\x22\x69\x8a\xa0\x2c\x8f\xf3\xd4\x2c\x75\xa3\xfe\xe7\x43\x12\x1b\x34\xef\x95\x02\x0f\x2b\x2b\x20\xb3\x48\x39\xe5\x50\x23\xc5\x6f\xac\x07\xd0\x03\x15\x42\xd6\x7f\x86\x72\xec\x9d\xb9\x1b\x86\x5b\xab\x29\x14\x80\x68\xa4\x72\xcf\xaf\xef\x52\x1c\x02\x8a\x89\x77\x0e\xff\x2b\xb3\x52\x96\x75\xe7\xf5\x9d\x03\xb6\xd5\xb3\x18\x5e\xb1\xb8\x71\x43\x0c\x55\xc4\xa3\x54\xc3\x0d\x89\xda\x91\xb7\x3b\xad\x45\x93\x5a\x85\xac\x44\x04\xa1\x4c\xb0\x41\xf0\xa2\xa7\x8b\xfc\x10\x50\xf4\xb3\x00\x68\xba\xc3\xf0\xa2\x5e\x2b\x24\x09\x3f\x8d\x3f\xda\xfd\x47\x7b\xc4\x5e\xbd\xc2\xa9\x08\xfa\x51\x0c\x30\xc7\xe0\x9b\xb6\xbd\xaa\xde\xb5\x56\xcd\x99\x40\x08\x2b\xf1\x33\xe9\x50\xad\xe9\xb2\xca\xc0\xed\x72\x5d\x7f\x92\x19\xc3\xd0\xa3\x33\x7b\xba\x17\xba\x7f\xf6\xfd\x50\x7b\xb1\xba\x5c\x95\x4b\x11\x83\x88\xd2\x2d\xdb\x03\xa2\xdd\xe3\x93\x02\x1b\xd5\x2e\x4e\xdb\x3f\x96\xfb\x5a\xb2\xbe\xf3\x51\x9e\xae\x8c\x6c\x11\xe7\xfb\xde\x60\x7e\x36\x4b\x1e\x0f\xf9\xc9\x46\x86\xaa\xb6\xe6\x93\x2b\x1d\x0e\x95\x6c\xce\x4a\x8d\x5b\x07\x4e\x92\x6c\x89\x57\xe8\x68\xd1\x89\xd3\xc1\x68\x31\xd7\xc2\x4e\x7c\xe2\xd2\xc1\x0a\x2e\x1a\xd7\x74\x7a\xe5\xb0\x02\x61\x87\xc3\x97\x36\xd7\xbd\xcb\x0e\x35\x7f\x5c\x71\xbe\xd0\x50\x93\xa5\x2b\x92\x98\x99\xae\xe0\x84\xa6\x1c\x78\x63\x53\x4e\xf5\x42\x9c\x85\xd2\x68\xd9\xf5\x15\xa4\x69\xb2\xa6\x2f\x59\xf8\x68\xcf\x51\xd1\x2c\x35\xe7\xcc\x95\xb6\x0f\x25\xa8\xa6\xa8\x76\x1e\xac\x43\xe6\xf3\x63\xdb\x6f\x97\x53\x46\x15\xd4\xdc\x0c\x42\xc7\xd6\xf6\xdf\x68\xca\xdc\x3a\xb4\x17\x65\x39\x49\x25\x72\x4c\x9e\xf1\xe4\xb1\x34\x53\x9a\x7b\x6d\xd2\xc2\xd0\x1e\x42\x86\xbf\xa8\x66\x8c\xa5\x01\x89\x6a\x5b\xb9\x99\x18\x5f\x2e\x48\xe7\x1a\x18\x6c\x4c\x52\x12\x0b\xd3\xed\x51\x53\x01\xdd\x09\xc9\xaa\x02\x8e\x42\xa5\x73\xee\xcb\x84\xcc\xa8\x9e\xc7\xd3\x4c\xf3\x5e\x0a\x44\xfe\x7e\x4e\x9e\x48\xb3\x2f\xec\x4a\x5c\xfa\xb8\xd4\x83\x55\x18\x71\xd8\x55\xd0\x4c\x88\x77\x82\x6a\xca\xc8\x61\x22\x63\xde\xc3\x05\xd5\x35\x92\x25\x8a\xfc\x78\xc8\x4a\x1b\x56\xa0\x6b\xa8\xd1\x87\x5d\xb8\x19\x73\xcb\x24\x29\x8a\x85\x7e\xb3\xd0\x0d\x51\xbc\x0f\x8e\xfd\xf0\xc8\xb7\x56\x4c\x8f\x91\xb3\xec\xae\x75\x34\x05\xfc\x6d\xc2\xbc\x2a\x83\xeb\xef\xb5\x9c\xb2\x0d\xf6\xe8\xee\x98\x8d\x0c\x83\xae\x78\x30\x8f\x92\x43\x30\x84\xab\x79\x52\xc4\xf4\x85\x5e\x61\xda\xe4\x55\xbb\xa4\x3b\xdc\x42\x81\xc1\x88\x11\xf0\x9a\x0c\x04\x50\x09\x10\x6a\xfa\xe2\xc4\xfd\x7e\x50\x36\xa3\x85\x47\xee\xc7\xa1\x16\x19\xd4\x1d\xa7\x10\x6e\x22\xba\x82\x18\xc7\x2c\xd2\x34\x74\x1b\xcd\x97\xdc\x39\xae\xac\x67\x18\x56\xa4\xb1\x55\xc0\x81\x86\xf3\xaf\xb3\x74\x72\x7d\x93\x66\x75\xb3\x11\x81\x60\x7c\x0b\x6d\x73\x73\xa3\x82\x61\xc4\xd8\x5c\xde\xd5\xa2\x1e\x90\x03\xc4\x43\xf4\xc3\xe0\x91\x5d\x08\x0c\xbd\x4b\xb7\x20\xda\xc8\x19\x3e\x0d\x5c\x05\xcc\x82\x45\x6b\x23\x34\x81\x18\x4d\x52\xb6\xd1\xcd\xda\x92\xfe\xe8\xa8\x53\xa5\x58\x93\x43\x41\x91\x2b\x90\x52\x89\x22\x71\xfe\x40\x3c\x68\xab\x17\x81\xdc\x0f\x42\x5b\xcf\xdf\x59\x92\x3b\x73\x06\xe3\xa0\x60\xdb\x99\x5c\xfd\xb6\x39\x10\x8f\xd1\x23\xad\xb8\xdb\xea\xdc\xdd\x1e\x18\x14\xdd\x28\xd9\x7f\xe9\xae\x0c\x4e\x31\xe0\xae\xc7\x73\xb7\xde\x41\xc8\xdc\x78\xde\x5e\x4d\x23\x74\x86\xe9\x42\xa1\xd0\xdc\xd2\xb8\x68\xa3\x81\x36\x21\x89\xa1\xd0\xbb\xd9\x84\x8f\x00\x6a\xde\x5a\x53\xa5\x4d\x0b\xfa\x0e\x28\x9e\xbe\x8f\x4d\x0c\xd7\x95\x0b\x0f\xed\x50\x3f\x48\xae\x22\xa6\x14\xe4\x20\x46\x86\x5a\xc9\xae\x97\xed\x4f\xd5\x0f\xc7\x0f\x94\x51\xc2\x16\x97\xae\x91\x3d\x23\x04\x90\x22\x3c\x96\x83\x87\x6b\xf4\x04\xb2\x85\x87\xf5\x76\xd3\xf4\xfc\x99\x30\xe7\x95\xe0\xfd\xc5\x33\x73\x7e\xf5\x4f\xe0\x63\xab\xae\x5a\x5f\x53\xfc\x8d\xeb\x23\xa6\x5a\xd5\xae\x7e\x5a\x53\x07\xee\x9e\x42\x4f\xd2\x82\x3b\x44\x67\xd4\x21\x1d\x47\xb6\xdc\x03\xd1\x6a\xd3\x44\x43\xa9\xdf\x7f\xb9\x84\xb9\x0e\xbb\xe2\x95\x90\x0d\x1e\x13\x20\xad\x9e\x68\x48\x1c\xf6\x4e\xc0\x15\xe1\x08\xb2\x8e\x52\x5f\x17\x4a\x8e\xd6\xf4\xb7\x5f\x7d\xd2\x9c\xfd\x3c\x1f\x76\x94\x5f\xd4\x31\xd1\xeb\x59\xe3\xf3\xdd\xc7\x9e\x20\x51\x02\x3e\xd3\x66\x37\x78\xfe\x89\x0a\xfe\x74\xfa\xd7\x1f\xcd\x17\x3e\x1f\xee\x86\xce\x73\x1c\xee\x12\xcb\xc3\x96\xb9\x6c\xf0\x76\xbd\xec\xff\x72\x5e\x50\x7c\x49\xbd\x72\xe1\x17\x61\xa4\x02\x54\x5f\xfa\x95\x32\xf1\xf3\xbf\x65\x8a\xfc\xa4\xf5\x88\xe7\xba\x6f\x3d\x02\xcd\x8f\x88\xe6\x47\x48\xf3\x23\xa1\xf9\xc7\x9b\xe6\x1f\x64\xe5\x5b\x50\xff\xd4\x2e\x05\x7f\x0a\x8d\x59\x03\x4e\xcd\x8c\x77\x30\x4f\xda\x66\x94\x22\x2d\x50\xe6\x69\x53\x25\x6e\xbc\x59\x37\x7f\x33\x7e\x3f\xc9\x38\x35\x98\x28\xb2\x12\x43\x52\x1e\x6e\x30\x6f\xa6\xd4\x48\x16\x1c\x4b\x68\xba\x64\x54\x12\xfd\x76\x63\x68\x6a\xd5\x08\xf2\xe6\xb3\x25\x35\x3b\x6d\xb7\x02\xa5\x3b\x88\x70\x73\x4b\xd8\x8a\xa7\x82\x7e\xf0\x2c\xbf\x60\xc5\xce\x41\xcf\xcf\x9c\x9e\x0a\x7b\xba\x00\x35\xc0\x56\x6c\xdb\x93\xe4\xf0\x63\x6f\x0c\x7c\xcb\x33\x98\x07\x43\xd0\x32\xd5\x30\x2f\x6f\x3a\x3a\xaf\x58\xbf\x88\x3f\x39\x45\x0e\x63\x66\x1e\x3f\xe6\xab\xab\x57\xc0\xfb\x7c\x33\xb2\x23\x04\xf9\xff\x6f\x76\x95\x4c\xcb\x69\xc6\x49\x34\x75\x53\xbb\x14\x86\x29\xe4\xc2\xf4\xa5\xbd\xf4\x87\x95\x0a\x52\x59\x0c\x02\xac\x7c\xc0\x15\x3a\x4a\x59\x23\x65\x19\xd2\xa8\x2d\x06\x2b\x68\x7d\x6c\x08\xc8\x90\xa2\x2f\x71\x48\x39\xbf\x96\x66\x1e\x30\x37\xe7\x82\x78\x40\xa7\x7e\x32\x2b\x4a\x69\x9e\x36\x0f\x75\xff\x70\x1e\x2e\x54\xd8\x9b\x9b\xe6\xcd\xaa\xc5\x46\x45\x4c\x54\x4f\xc1\xdf\x55\xdc\x74\x82\xfa\x5d\x92\xad\x9d\xbd\xbe\xb3\x4a\x7d\x26\x73\xb7\xf5\x17\x1c\x10\x49\x19\xbc\x38\xa8\x8d\xa2\xb8\x4f\xd1\x97\xf7\x22\x93\x0a\xc4\x53\x0a\x53\x9b\x80\x2f\x25\x75\x6f\x0c\xe9\x70\x4a\x51\xf8\x2f\x7e\x18\xad\x31\x49\x32\x29\xe7\xe9\x69\x37\x1e\x87\x9d\x1b\xdb\x6d\x24\x3d\xdb\x18\xbc\x76\x05\xb4\x0a\x46\x37\x5d\xd0\xdd\x5d\x1e\xbb\xa3\x51\x5e\x3e\xc0\xe0\x9c\x52\xa1\xbd\x10\x0f\x84\x9e\x4f\x53\x53\xa4\xf9\x4d\x56\x45\x32\x3f\xc6\x59\xdb\x8e\x3a\x89\x1d\x55\x8d\x87\x75\x95\x40\xd1\x0c\x25\x9a\x55\x9f\x51\xe6\xfa\xcf\xf5\x06\x44\x18\x75\x83\x77\xfc\xd7\x57\x54\x41\xd9\x33\x69\x0f\x3d\xa3\x0e\xde\xed\x68\xa9\xb5\x5f\x31\x43\x82\x63\xb8\xad\xe7\xd8\x31\x67\x99\x6b\x25\xff\x37\x6d\x4c\x4b\x7a\x1d\x6f\x5f\x8c\xde\xf9\x5b\x39\x4d\x8d\x05\xae\x3b\xb6\x22\xc7\xf3\x96\xaf\xfc\xa4\x90\xb7\xdb\xad\xad\xfe\x45\x5c\x8a\x73\xbe\x88\x0d\xbb\x72\x68\x04\x22\xe2\x09\x0d\x29\x78\x5e\xdb\x4b\x72\x5b\x49\x3d\xb2\xdf\x5c\x51\xcc\xe6\x3a\x66\xe2\x2a\xe1\x1c\xd8\xcf\x23\xae\x14\x54\x7b\xb9\xbf\x39\x78\xb9\x0f\x49\x5d\xb1\xbf\x5c\x1b\x64\xbb\xb9\xc8\xd0\x2b\x7b\x56\x2b\x4c\x16\xbd\x75\x1d\xa9\x93\x4f\x6a\x84\x24\x06\xf1\x12\xf8\x33\x2e\xa5\x8b\x52\x46\x69\x04\x8f\xa4\x9d\x3b\xdb\x44\x13\x38\x84\x24\xd2\xb3\xd9\xc1\x3c\xc8\x09\x08\x01\x32\xbc\xb1\x56\xd3\xa9\x28\x19\xe8\x7b\xa8\x56\xb8\xa9\xc7\xdc\x83\xb0\x39\xb4\x76\x5b\x56\x0a\x48\x52\x62\x06\x6d\x30\x5b\x4a\x71\xb6\xf4\x18\x08\x98\x58\x25\x3a\xa4\x38\x06\x72\xea\x49\x8c\x49\x72\xd9\x10\x25\x9c\xf5\x0a\xce\xbb\xdd\x59\x15\x72\xdb\x05\xed\x9e\x45\x93\x23\x9c\x07\x86\x59\x0a\x07\x4d\xfb\xf1\x54\xd2\x62\xa4\x5d\x92\x89\x58\x65\x1b\xe8\x08\xbd\xfd\x04\xe2\x34\xbf\x4d\x8f\x22\x81\x58\x39\xbf\xb9\x9a\x1c\x0c\x85\xa1\xec\x69\x91\xcb\xf8\x00\x86\x57\x02\xa2\x37\xb4\x32\xac\x3e\x98\x4f\x12\x29\x28\x67\x83\x3f\x65\x46\x06\x11\xd3\x72\x02\x29\x9e\xa4\xe5\x14\x70\x89\x74\x87\x13\xc9\x6f\x7e\xc5\x18\x28\x68\xf8\x65\xad\xe0\xd4\xf7\xb6\x5f\x87\xda\xc4\x9b\xda\xdd\x35\xc3\xc4\x2a\x6e\xc7\x26\x97\x61\x24\x6f\xe5\x28\xad\x46\x29\x92\x32\x62\xf3\xfd\x44\x5d\x5f\xdf\x5a\xc7\x91\xfc\x94\x5e\xd8\x94\x17\x6b\x27\x98\x50\x02\x57\x12\x34\x52\xb2\x00\x0f\x7a\xb0\xb0\x66\x72\x02\x9b\xbc\xfb\xfc\x34\x1e\x25\x95\xe4\xdf\xd7\xad\x65\xc7\x66\xd8\xf4\xf3\x97\xf4\xe5\x68\xdf\x6c\x2f\x75\xbd\x0c\x16\x6d\x33\x09\x0a\x9f\xbb\x45\x62\xe3\x69\x67\x1e\x2c\xce\xb8\x28\xe9\x0b\x49\xc2\x78\xb5\xdb\xf2\x97\x1b\xc4\x41\x25\xac\x09\xb4\x14\x30\xf8\xb8\x36\xcc\x95\x2f\xf5\xb4\x71\xc5\x6e\xe5\x98\xc2\x2a\xf8\x86\xe2\x8f\x65\x57\x76\xe6\xee\xd7\xfd\xf0\x63\x3d\x0c\x42\x4c\x7e\x8b\x01\x68\x50\x11\x03\xef\x34\x3f\x7c\xf8\x42\xaf\x4e\xf6\x00\x46\x87\xc5\xc1\x7b\xc8\x6d\x9c\x98\xcb\x6c\xea\xac\x53\x3a\x7f\xc1\xd1\x86\xd3\xc1\x93\x23\xaf\x3b\x45\x17\xa7\xb7\x67\x04\x0f\x65\xb5\xcc\x54\x68\xbd\x0d\x45\x49\x25\xeb\x1a\x42\xc5\x00\xcc\xc0\x5c\xeb\x79\xbd\x32\xef\xad\x23\x10\xad\xdf\xcb\x3b\x13\x1f\x29\xa0\x4f\xaf\xc8\x20\x27\x7a\xc5\x65\xbe\x0a\x1c\xae\xfd\x86\x9b\xdf\xba\x36\x50\x98\xba\x41\xc2\x99\xe7\x78\x75\x57\x40\xda\xc9\x48\x6f\x31\xf4\x07\x22\xd1\x9f\xa6\x40\x30\xea\x91\x4f\x53\x3f\x4f\xfd\x0f\x33\x5f\x73\x46\x18\x18\x31\xab\x81\x88\xef\x5c\x9f\xee\x95\x1e\xe0\x06\x90\xca\xc4\x62\x22\x6c\x3c\xd5\xa1\x13\x7a\x67\x89\x8d\xba\x6e\xc6\x7f\x50\x6d\x0d\x38\xd2\x04\xc0\x13\x39\x81\xcb\x84\xec\x0c\xc9\xa6\x20\x46\x27\xfc\xca\xb6\x1e\x5e\x6c\x7c\x95\x62\x3c\x56\xab\x1f\x70\x75\x89\xbe\x07\xa7\x91\x4d\x0a\x67\x6c\x49\x9a\xd2\x18\xca\x2d\x6e\xbf\x86\xc2\x4c\x1a\x79\x3c\x84\x90\x01\x4c\x01\xf5\x40\x88\x61\x01\xc4\x8f\x6f\x18\x54\x70\xff\xae\x00\x3f\x02\x70\x16\x4c\xa1\x5c\x23\x92\xbc\xd2\x6f\xa8\x50\x69\x3c\x03\x38\x32\x4d\x6f\xb6\xcf\x86\x3c\x81\xa9\x89\xe9\x7e\x9d\xb1\xda\x77\x2e\x2f\x17\x7d\x99\x42\x98\x34\xd8\xd2\xc4\x2d\x9b\x80\x7c\x01\x3a\xd0\xc9\x0a\xc0\x45\x33\xaf\x9e\x7d\x12\xdb\x8b\x97\x7e\xa6\x65\xc6\xb5\x69\x0a\xd2\x5d\x03\x9a\x55\x76\x98\x35\xaf\xc6\xad\x1e\x4c\xf9\xae\xff\x28\xde\xc7\x9a\xd9\x60\x98\xb3\x75\x92\xb7\xff\xcb\xc4\x7e\x60\xb5\x04\xf6\x8d\x45\xdf\x50\x60\x54\x2f\x42\xd7\xf8\xdd\xaa\x49\x19\x66\xc8\x27\xd5\x3f\xd6\xf4\xb2\x76\x8e\x67\x08\xe7\xe4\x70\x0c\x30\xb9\x77\xbc\xc5\x62\x9b\x1b\x54\x69\xf8\xe1\xdb\x4a\x70\x32\x47\x08\x90\xd4\xa0\xc2\x11\x00\xcf\xf8\x7f\x76\x5b\x27\xbd\xa0\xec\xe6\xd1\xe9\x4b\x3b\x48\x50\x91\x55\xe2\xd5\x19\x41\x27\x91\xdb\xb9\xc8\x0a\xb2\x73\xf0\x74\xcb\x87\x9c\xc2\x51\x33\xa8\xfb\x3e\xdf\x2d\xf9\x50\xfb\xa3\x46\xd1\xd6\xe4\x15\x77\xee\x76\xa5\x29\x0e\x57\xef\xae\xb9\x3e\x83\x88\x6c\xf6\xd3\xe7\x4e\xad\x7f\xe7\xd3\x65\x7c\xdd\x56\x82\xdc\x35\xb1\x5f\xea\xb6\xcd\x0e\xc9\x50\x98\xe6\x1c\xee\x08\x37\xaf\xb4\xa1\x9e\xfa\x1f\x75\x19\x80\x5c\xd7\xc1\x1d\x7c\x0c\x9e\xe8\xd6\x22\x85\x66\x5b\x1c\x16\xdb\x50\x99\x50\xfa\xb7\x52\x31\xf2\xf6\xfe\x1e\xad\x52\x27\xd6\xfe\x99\x36\x0b\x56\x98\x38\x69\xe4\xf8\xbb\xf6\xbe\xd7\xec\x42\xfd\x07\xf1\x23\xac\xd8\x49\x76\x1b\x4b\xd5\x5b\x8c\x90\x1c\xa9\x5c\xa9\x3d\xef\xf0\xd5\xa6\x31\x44\xa0\xbc\x74\xf4\x4c\xbb\x7d\x56\x14\xfb\x56\xa7\xf4\x47\x4b\x79\x30\x55\x22\xee\x53\xd0\xc6\x4a\xc8\xf3\x72\xcd\x4d\x42\x56\x28\x96\x12\x1d\x73\x99\x41\xf6\xf0\x17\xce\x77\x65\x27\x0c\x90\xd5\xf0\x7d\x62\x6c\x36\x15\xe6\xe6\xe3\x87\x17\x62\xbc\x97\x68\xe6\x64\x2e\x4f\xdc\x93\xaf\x9d\x37\x4b\x41\x04\x4e\x87\x7e\x16\x7d\xcc\x52\x07\xcc\xb2\x79\xee\x6c\x37\x3f\x76\xa9\xf6\x50\x91\xe0\x76\x1b\xe1\xb6\x0a\x62\xa2\x39\xc7\x63\xf2\xfb\x78\xc8\x26\xc5\xf7\x4a\xc4\x38\x69\xa4\x80\x24\xaf\x22\xdc\x0f\x38\x33\xdc\xa2\xa1\x0f\x38\x12\x18\x78\xca\x1f\x8a\xbe\xad\xb1\xc1\xe4\x69\x34\xee\xbb\x35\xca\x77\x20\x5e\xc0\x8b\x3d\xdc\x54\x4d\x86\x13\x72\x81\x3f\xe2\x63\x95\xd1\x56\xcc\x05\x19\x57\x61\x4a\x70\xfe\xfe\xa3\x25\x84\x25\x7b\xcd\xa2\x91\x04\x57\x52\xec\x7b\x53\x7a\x96\xe8\x9a\xc6\xaa\xae\x3f\x7d\xa6\x62\x7b\xf3\x44\x9b\x62\x11\xe0\x44\xbc\x61\x97\x60\x27\x25\x1c\x73\xb9\x70\xbd\x06\xcc\x94\xb7\x31\xcb\xe3\xc1\x59\xd7\x8b\xf3\x58\x5f\xdc\x11\x1a\x4e\xbf\x49\x3d\x3f\xc4\x4b\x0f\x13\x96\x57\xf5\xba\x41\x9c\xcc\x9b\x2e\xcb\xeb\xce\xa2\x59\xd5\xdf\x84\x37\xb5\xf7\x14\x60\x68\xfd\xf2\xc9\xb9\xcb\xc2\xd3\x45\x0d\x82\x8b\x7a\xe0\x10\xe9\x5b\x87\x4d\x5c\xb8\x92\xe9\x3c\xf5\xf4\xbc\x2a\x3c\xbd\xff\x88\x8b\x2d\x9c\x28\x77\x60\xf0\x04\x1f\x75\x66\xa2\x6f\xb9\x63\xf7\x54\x62\xea\x0b\xa0\xc9\x5c\x1b\x11\x7f\xc3\xb0\x35\xc5\xbd\x5f\x6f\x4d\x7a\x24\x05\x02\xf7\xaf\xdf\x93\x83\xac\xde\x96\xe9\x92\xb0\xc5\xe6\x91\x84\xd7\x93\xfa\xa1\xdb\x9e\xd9\x93\x90\xa1\xdb\xc0\xac\x17\xda\x63\xce\xf8\x4c\xd1\xe9\xbe\x84\xe6\x08\xb6\xc7\xe5\xf3\x26\x3f\xdd\x90\x5a\xef\x70\xb1\x78\xb0\x36\xea\x7b\x17\x7c\xb1\x6c\x76\x44\x6c\xfb\x8b\x87\xac\x37\x2f\x23\x6f\xbe\x78\x82\x7a\x79\x75\xf1\x87\x4a\x3b\xc2\x68\xc2\x44\x98\x48\x2c\x91\x12\x44\x10\x7b\x59\xe0\x46\xfc\x52\x54\x62\x4a\x74\x18\xc8\xa4\xb1\xb2\x5e\x23\xc2\xd4\x97\xd8\x5d\x2f\x9f\x5f\x47\x9e\xa6\x01\xed\x06\x87\xf6\x41\x2f\xff\x1e\xdf\x95\xac\xe3\x3a\x8e\x98\x16\xf3\x7a\xe9\xa3\xe5\x55\xc9\xa1\x63\xec\xc4\xe1\x6f\x94\xa0\xbc\x5d\x7f\xfb\xde\x80\xd1\x0a\xd2\xcf\x2d\x76\x0e\xf3\x73\xd5\x0d\xbc\xab\xf5\x66\xa9\x6d\x76\xf7\xcd\x2a\xda\x8f\x75\xd8\xfc\xdc\x55\x80\xdf\xea\x76\x01\x9a\x91\x6b\x86\x51\xf1\xfa\xa4\x80\xe1\x4c\x08\x33\xd0\xb9\xf0\xac\x0f\xa8\x37\x9b\x0f\x57\x9d\x47\x0b\x84\x0a\x78\x52\xb3\x48\x28\x98\x23\x83\x66\x6b\xf3\xad\x74\x2d\x8c\x2d\x0c\xa5\x89\xfb\xcf\xf0\x26\x9c\x3c\x6e\xd7\xbc\x98\xfa\x9c\xb1\x89\x37\xc9\x95\x3b\x07\x42\xbe\xd9\xd6\x33\x5d\x69\x96\xad\xd4\xb6\x44\x16\x09\x70\x52\xb1\x3a\x32\x8d\xb3\x15\x76\x8a\x51\xc7\xc1\x10\xa2\x49\x22\x39\x48\xbc\xe4\xf6\x31\x8f\x52\x60\xab\x3b\xad\x71\xe0\xe1\x6e\xa1\x48\xe6\xd8\x86\x05\xe8\x7b\xda\x13\x9f\x9f\x9c\x74\x04\xc9\x42\x26\xf2\xab\x93\x61\xeb\x83\xb8\xad\x47\xd2\x35\x5d\x5e\x67\x15\xf0\x5c\xb3\xca\x0e\x6b\x57\x81\xa7\x13\x4c\xeb\x65\xf7\x88\x33\x39\x92\xc9\xac\x7e\x96\x89\x82\xa5\x89\xe2\xd5\x89\xe4\x35\x6c\xc4\xdf\xa1\x6f\xa9\x31\x68\x71\x6e\x9c\x96\x0c\xf9\x89\x23\xc9\x22\xcc\xe2\x7c\xb5\x97\x47\x93\xc5\x39\xcd\x7c\x6d\x3e\xbe\xa0\x7d\xfe\xb5\x8f\x03\x52\xda\x5e\xe9\xae\x98\x2e\x21\xeb\xd0\x19\x5a\x64\xef\xed\xe0\x95\x1b\xb6\x8e\x84\xbb\x79\x35\x3c\x10\x3c\x70\x7c\xe9\xf3\x98\xa1\x49\x31\x74\x90\xa6\xd3\x0f\x25\x0c\x6c\x2a\xa1\xf1\xe0\x69\x66\xe5\x41\x09\x05\x84\xa4\xd2\x7d\x41\xab\xdd\xd5\x30\x72\x30\x64\x60\x2d\x43\x10\x3d\x08\x7f\x26\xb1\x55\xe7\x03\xa2\x8b\xcf\x15\x9f\x67\x85\xb1\x9c\x24\x5f\x9e\x05\x82\xfc\xb5\x82\xd6\xb5\x30\x9a\x06\x71\xb6\xd0\x6b\x3a\xdd\xc4\xbc\x1a\x2d\x60\xf4\x20\x86\xbe\xe1\xdb\xa8\x09\x73\x71\x41\x15\xda\x80\xf5\xaa\x7e\x56\x00\x85\x67\x0a\x15\xe1\xd9\xf9\x81\x6e\xb1\x18\x0c\x77\xd3\x53\x2c\xbd\x8a\x26\x05\xe5\xd4\x17\xa7\x79\xa1\xdb\x3b\x6e\x3b\x6c\x82\xb8\xee\xef\xf4\x6a\xb3\x11\xcc\x56\xd8\x6e\x8c\x88\xdf\x4a\x64\xab\xce\xcd\x70\x3e\x37\x42\xde\xe3\xa8\x40\x4d\x47\x83\xe9\xdc\x2c\x71\xf7\x43\x77\x15\x76\x12\xbb\x4a\x4d\x89\xfb\x05\x04\x15\xef\xcb\x45\x9a\x91\x4e\xd1\xf5\x70\xeb\x43\x2e\x5f\xa6\x37\x84\xb8\x88\xde\x19\x4b\x17\x42\x28\x74\xcd\x6f\x59\xd1\x72\xa1\x2c\x41\xff\xed\x59\xb2\x8c\x83\xb3\x5d\x3a\x41\x01\xa4\x36\x4a\xff\xc4\xfb\xf8\xdb\x5b\xc1\x61\x1c\xa1\x2e\x12\xb7\x3a\x56\x66\x62\x4c\x0c\x4a\x1c\x31\x60\x2b\xec\x73\x12\x92\x63\x2d\x30\x1d\xeb\x86\x99\x22\x8f\x38\x38\x98\xd9\x0a\xae\xe0\x63\xbd\xc4\xf2\xfc\x39\xae\xda\x3c\x15\x23\x95\xcd\xb4\x6b\xa1\x29\xc7\x68\xb6\x02\x43\x04\x2c\x10\x29\x88\x65\xc3\x6b\x2a\x99\xa9\x98\x60\x66\x86\x8d\x92\x8a\x99\xe9\xd8\xe7\x1a\x3c\xcd\x35\x8e\xed\xd6\xa2\x92\xcf\x76\x20\x63\xe6\xf3\x38\x90\x02\xa1\x58\xc1\x17\x40\xc1\xaa\x43\x69\xd2\x46\x1f\x25\xba\x13\x6a\x33\xa0\xf3\x46\xf3\xf6\xb4\x2b\xbb\x89\xeb\x98\xc7\xbd\x52\xda\xdf\xfc\x8a\x11\x7e\x22\x05\x67\x19\xed\x65\x3b\xed\x8d\x44\x55\xdc\x1c\xcf\xc7\x71\x36\x95\xde\x3a\x6b\xf5\xd7\x85\xa2\x42\x41\x0a\xd5\xda\x54\x0f\xcd\xc3\x5e\xee\xbf\xba\xcf\x02\x34\xa3\xf0\x2f\x36\xd8\xe2\xda\x66\xd0\x33\xe9\x2b\xa7\x10\x49\x6e\xdb\xdb\xa7\xfc\xd4\x44\x4e\x4a\x87\x74\xb7\xf2\xac\x0a\x85\xed\x5f\xc6\x9f\x76\x2f\xba\x81\x18\x73\xd7\x41\x04\x0a\x56\x2f\x35\x44\x89\x0a\x5d\xfb\x8e\xff\x74\xb2\xc1\x3a\x66\x84\xb4\xa5\x38\xa5\x85\xec\x2a\x77\x4a\x31\xac\xe2\xfd\x11\x51\x2b\x06\x53\x17\x19\xc7\x62\x31\x54\xf7\xf4\x82\x1b\x51\x5b\xe1\x15\x48\x5b\x99\x5a\x9d\xdc\x4b\xff\x12\x38\x9a\xf1\x36\xd0\x7d\x53\xf4\xcc\x84\x49\x3a\x92\x8b\x02\xd9\xdd\xe2\x76\x44\xb7\xf3\x25\x1c\x54\x22\xcb\xef\x28\xc6\xa0\xaa\xcb\x01\xe5\x1f\x0c\xd6\xcd\xf2\x3c\x45\x8b\x75\x54\xdd\xcc\x9a\x40\xb4\xc1\x24\x6d\x26\xe8\xfa\xec\xd6\xf5\x72\xf2\xdd\x53\x85\x50\x45\xa5\xb5\xa5\x4a\x20\xa5\x82\xa7\xe2\x74\x5b\x38\xce\x9e\x7a\x47\x7f\x06\xc4\x2c\x06\xf8\x3d\xb0\xd9\xe1\x04\x40\xb0\x29\xae\x31\x1e\x43\x4a\x94\xe8\x0a\xfd\xe4\x88\x90\x9c\xef\xf3\x7a\x3b\xf2\x84\x20\x5c\x1c\xc7\x57\x8e\xfe\xa4\xff\x65\xfb\x6d\x21\xba\x2c\x26\x77\x19\x49\xe3\x00\x8d\xab\xf2\x39\x19\xab\x57\x09\xa8\xf5\x74\x01\x32\xc8\xd6\x53\x2f\x3b\x31\x4f\xd6\x81\x27\xfd\xcd\x93\x75\x72\x11\x68\xf7\x9f\x82\x3b\x7b\x77\x06\xa9\xd3\xe1\xc9\x4e\xaa\x0a\xb8\xd6\x39\xfe\xd5\x73\x2f\xf4\xa7\xce\x99\x35\x26\xaf\x93\x72\x7a\x44\x27\xe1\x08\xbe\x79\x4a\x17\x30\x27\x54\x8c\x5a\x4e\x26\xc9\x44\x9c\x80\x61\xa8\x61\xd2\x3f\xe8\xa8\x79\xd0\xd3\x35\x3c\xf0\xa4\xbf\x79\x62\xe4\xf9\xd3\x8c\x90\x90\xdb\xe3\x49\x0c\x23\x78\xae\xb6\x4c\xb8\x84\x3d\x31\x00\x72\x31\x22\x3b\x27\x07\x3e\xae\xbf\x4c\x44\x38\x41\x92\x92\x24\x58\x6b\xd7\x68\x5b\x4b\x9f\xc3\xd9\x88\xa5\xab\xd4\xc1\xab\x31\xed\xaf\x6d\x1d\x3a\x08\x36\xed\xf9\xd8\xf0\x4c\x08\x08\x00\x73\xa7\xfe\x94\xf3\x18\x8a\x8e\xd3\xf6\x43\x5d\x46\x53\xae\x38\xa2\x0b\xc5\xe8\x7e\x58\x6e\xc1\x8a\xd1\x6d\x03\x8d\x05\x4f\xed\xa5\x0b\x34\xd5\xb1\x9b\xf3\xbe\x40\x73\xc2\xfe\x73\x04\xc6\x0b\x2b\xe8\x3d\x76\xf1\x68\xa9\x2b\xb8\x0e\xe9\x6c\x18\x0e\xad\x65\x12\x1a\xfc\x86\x01\xaf\x4e\x84\xd7\xc2\x16\xb0\x63\x1a\xed\x84\xb5\x8b\xd9\x7d\x85\xe1\x42\x56\x92\x09\x65\x11\x7f\x74\x52\x5b\x7a\x0b\x08\xa9\x78\xda\x18\xf9\x93\xa5\xb4\x59\xa1\xa5\x10\xe1\xc9\x51\x0f\x8a\x78\xa6\x45\x10\xfa\x48\x00\x53\x38\x7e\x32\x79\x07\xef\xa1\x87\x3e\xac\x4f\x81\xbc\xde\x1c\xe6\xb0\xa2\x7a\x20\x82\x6d\x71\x18\x84\x04\xd6\xb6\xae\xea\xeb\xd3\xe1\xa6\xd0\x6f\xaf\xbb\x27\x40\x9a\xc2\xa8\x3e\x6c\xf6\x64\xc0\x13\x46\xdd\x4a\x68\xfa\x9c\x2b\x7f\x1a\xd2\x31\x74\xab\xe0\x34\x89\xa4\x68\x54\xa8\x06\xc0\xdb\x3f\x21\xba\xa9\x5c\x83\x6c\x70\xcd\xc9\x67\x27\xf3\x77\xfb\xf3\xc5\x9e\x31\xcf\x49\xeb\xdc\x95\x1f\xe1\x78\x52\xc7\xfd\x20\x49\xb9\xd9\x65\x08\xb7\x92\x75\x24\x7b\x64\x48\x5f\xf0\x54\xc4\xd3\x3d\x11\xf8\xa0\xd3\x69\xe9\x49\x33\xc2\x62\xfd\xee\xc7\x57\x53\x25\xee\x67\xe0\x27\xb5\x71\xdb\x1e\x0f\xa5\x7c\x74\x4c\x15\xbf\xe3\xf4\xb5\x55\x8d\x9c\x4f\xa1\x2a\x97\xee\xc3\x5e\xf5\xbb\xef\xcd\x31\x3a\x2b\xc6\xc0\x4f\xe5\xd2\x51\xc6\xa1\x30\x95\x5c\x70\x11\x24\x21\x6f\xc0\x81\x1a\x38\x1f\xff\x0b\x20\xd6\x7b\x16\x10\x7d\xc9\x0b\x40\xbd\xb2\xe2\xae\x68\x92\x95\x3d\x4d\x12\x02\x44\xd1\xd9\xfd\xa9\x28\x34\xb4\xdc\xe4\x60\xab\x29\xde\xfc\xbf\xab\xc0\xb6\xec\x8e\x31\x60\x9e\x5d\x07\xf9\xc9\xb4\x34\x4b\x44\x55\x18\x94\xf7\xe1\x0a\xf8\xda\x92\xa3\x56\x9a\x38\x9b\x18\xa8\x5c\x44\xe4\xbb\xa8\xe5\x73\x40\x18\xc3\x71\x90\xd5\xc2\xdd\x50\x51\xfd\xf9\xb2\x14\x34\x33\x58\xdf\x98\xb3\xef\xe6\x09\xcd\x18\xfa\x28\x89\xfc\xe8\x6e\x98\x17\xb7\xa3\xed\x77\x2d\xef\x66\xf6\x9b\x4c\xed\x12\xfc\xf0\x0e\x37\xb1\x35\x4c\x98\xc2\x84\x99\xf8\x16\x4d\x94\x39\xf5\xf3\x79\x23\x39\xfa\x05\x0e\x15\xe1\xf8\x57\x1a\x85\xa8\xc2\x4a\xe0\xe0\xfa\xc6\xdb\x38\x71\x44\x41\xa5\xba\x86\x7a\x27\xc3\xba\x2e\x91\xb4\x19\xcd\xe5\xfe\x77\xe7\x0c\x16\x3e\x39\xf5\xb1\x79\xc7\x10\xd0\xff\x5b\x55\x54\xef\x29\x4c\xc3\x87\xe7\x4d\x58\x05\x10\x8a\x76\x11\x16\x99\x58\x8a\x53\xbb\xfd\x78\x62\x0b\x57\xdc\xa7\x7e\xce\x8e\x60\x1b\xab\xee\x08\x5d\xe3\xf3\x75\xcd\x06\x7a\xf8\xf7\xcd\xdb\xbf\x0b\x00\x73\xc7\x32\x70\x2c\xb3\x18\x09\xa5\x2b\x23\xc6\x42\xd2\xd6\xe4\x8c\x0a\xca\xb1\x17\xb2\x72\x10\xc0\x9a\xa6\x4b\x90\x83\x1d\x94\xc6\xf1\xdf\xdf\xb3\xad\xb7\xd4\xce\xe5\x07\x4a\xa6\xfa\x9b\xd0\x0f\x9a\xb1\x93\x0a\x4a\x6e\x74\x89\xee\xcb\xa1\x7c\xed\x7c\xd8\xed\xe6\x33\xb8\x63\xc6\xd8\x3e\x95\xc2\xc9\x98\x47\x8a\x9e\x7d\x60\x8a\x58\x07\x76\xb1\x05\x56\x54\x3e\xe2\x6c\x20\x4f\xaa\x02\x19\x54\x77\x0d\x4e\x26\xea\x52\x5d\xbc\xd0\x89\xdb\x1a\xf9\x12\x5f\x89\x5f\x0f\x98\xfa\x18\x38\x59\xe0\x12\x5b\xf8\x32\x4e\xd6\x10\x8c\x9a\x10\x52\x12\xb2\xcc\x6a\x29\x27\xa5\x08\x5e\x1e\x61\x37\xb2\x2c\x61\xff\xa5\xb4\xc7\xd6\x8a\x6b\x22\xe1\xec\x39\x64\xe6\x2c\x46\xc4\xd3\xeb\xcb\xea\x5d\x9a\x62\x3b\x99\x10\x60\x2f\x74\x76\x4f\x99\x6c\x58\x7a\xc2\x26\x7e\xef\x73\x41\x02\xdf\x53\x51\xb8\x94\x0f\x73\x66\xb9\x65\xd7\x59\x37\xba\x43\x92\xc7\x5b\x85\xc9\xbc\xf0\x1e\xb5\x44\x9e\x62\xf8\xc1\x12\xbe\xed\x5b\xa6\xbd\x4b\xf6\x18\xf6\x62\x98\x3b\xb9\x9a\x76\xd9\x23\xcf\xe0\xf9\xe4\x4b\x85\x02\xfb\xa0\xb0\xcd\xd4\x45\x6b\xc0\x6e\x08\xfa\xa2\xb0\xc0\xe7\x66\xd8\xe1\x85\xf6\x72\xe0\x18\xc7\x83\x4d\x25\xc0\xf1\xb4\x41\x6a\xb9\x6f\x76\x05\xa3\xd1\x82\xde\x6c\xaa\x04\x22\x7f\x5f\x1e\x9b\xa0\x94\x60\xbb\xb2\xa0\xf6\x6e\x57\x77\x54\x3c\xe7\x74\xd7\xf3\x01\xee\x05\xa9\xa1\xec\x7a\x1b\x66\xdd\x25\xf3\x3e\xe2\x4c\x8b\xb0\x3b\xd1\x99\x7e\x7b\x3c\x16\x13\xee\x3c\xed\xc7\xf4\x2a\xc2\xb8\xc7\xa1\xf7\x00\x52\x2f\x2a\x06\xb4\x88\x86\xab\x3d\xd5\x22\x3c\xa1\x1d\xcc\x28\x93\x18\xbd\x38\x75\xc2\x1d\x84\x6f\xbf\xc3\x33\x11\x9a\xc6\x24\xee\xeb\xe0\x7e\x08\x1f\xe4\x66\xff\x9a\xd7\x94\xa3\xb0\xc2\x93\x7b\x8a\x4d\x44\x53\x92\xa5\xe4\xf3\xc4\xd8\xee\x83\xcb\x37\x76\xde\xc8\xd6\x15\xb2\xa7\x4f\x64\xb9\x54\x34\x77\x24\x04\x8a\x73\x33\xf4\x63\x89\x93\x51\xa6\x84\x82\x83\xbb\x49\x82\xd0\xc3\xb7\xea\x82\x69\xef\x82\x57\x22\x09\x82\x31\x7d\x50\xad\xc6\xe5\x15\x91\x8a\x29\x2e\xee\xab\xd0\x2b\xaa\x10\xc0\x16\x45\x44\x58\xd0\x23\xfe\x0a\xd9\x79\x46\xb1\x53\xc6\xf5\xfd\xcb\x7a\x32\x03\x53\xeb\x39\x7e\x3c\x7c\x59\x03\x87\xbe\x04\x05\xcf\x4e\x79\xb6\xf7\x5d\x50\xce\x8e\x97\xf0\x83\xa9\x7d\xb2\x31\x7f\x79\x5d\xc8\x5c\x87\x19\xcc\xd5\xee\xdf\x71\xaf\x79\xc7\x3a\x89\x73\x99\x2c\x5c\xad\x30\xb9\x37\x15\x91\x13\xf7\x80\x95\x8d\x4b\xaa\x59\x1a\x66\xf6\x5e\x2c\x95\x72\xe3\xa9\x06\x89\x9f\x8d\x25\x52\x5c\x95\x28\x75\x9f\x54\xb2\xcd\x34\x9d\x04\x15\x3c\x6c\x9a\x6f\x97\x4b\xab\xa9\xc3\x77\x21\x2f\x5e\xed\xa1\x7f\xb0\x71\xb0\xe1\xd2\x2f\x61\x43\x73\x20\xe1\xb9\x05\x78\x6c\x26\x8f\x96\xd0\x31\x66\xc6\x0b\x5e\x60\x27\x66\xcb\xb3\xc0\x84\x00\x14\x1f\xba\x77\x0a\x59\x62\x4e\x1b\xe8\xaf\xc6\x06\xed\x66\x86\xe7\x4e\x97\xf4\xf4\xcb\x03\x14\x2f\xf8\x27\x67\x69\x45\xbf\xb8\xe4\x81\x62\x22\xfd\x68\x79\x08\x0d\xaf\xc2\xa1\x1e\x72\x67\x66\x52\xa5\x0b\x05\x2f\xf7\x38\xea\xc5\x5e\xa4\xe0\x26\xcd\x00\x74\x69\xf4\x65\x87\x34\x16\xd3\x89\x30\x8b\x27\x5e\xf8\xc6\x09\xa3\x28\x8f\x1e\x25\xf5\x87\xa9\x4b\x48\xff\x51\xb8\x32\x9f\x7c\x8f\xdb\x67\x4c\x58\x53\xcc\xa2\x21\x0d\x10\xc2\xb7\x8c\x09\x69\xfd\xdd\x69\xc2\x67\xa3\x01\xdf\x63\xea\xe9\x2c\xeb\xbd\xa2\x19\x7f\xac\x16\xaf\x40\x11\x1e\x06\x88\x3a\x88\xfb\x4b\xbe\x7a\xd5\xdc\x98\xd9\x83\x79\x6c\xf3\x5c\xf3\x60\x4a\x3c\x10\x53\xbd\x20\xfd\x1b\x87\x32\xfd\x98\xa1\x12\x9e\xe5\x73\xf9\x84\x98\x84\x80\x45\x65\x8d\xbd\xc5\x10\x76\xa7\x26\x53\x29\xc2\x6c\x5e\xa1\xcf\xaf\xea\xbd\x02\xb4\x28\xbb\x56\xe8\x90\x4d\xdf\x9a\xe2\x0b\x66\xb3\xe7\x5d\x75\xb8\x7c\xc6\x43\x37\x06\x16\x05\xa4\x8d\x55\xca\x77\x56\xa9\x14\x79\x2c\x2d\x67\x77\x2f\xc9\xa5\x31\x8a\xd1\xd1\xfe\x56\xf3\x3e\x61\x64\xe7\x84\x66\xe5\x6c\x63\x23\x75\x95\x0c\xd3\x1d\x93\xce\x70\x81\xe7\x67\x2e\x34\xa7\xcb\xff\x47\x3d\x36\x6f\xfa\x42\x78\x63\xd9\x3d\x8e\xae\x5d\xde\x18\x27\x98\x7f\x15\x30\x98\xbd\xe1\x61\x60\x3d\xcd\x0c\xcc\x4b\x2f\xa2\x15\x23\xd1\xa4\x04\x85\x2c\xd9\xe2\x73\x99\xdd\x5e\x73\xcc\xdf\x05\xd1\x93\x24\xb0\x31\x63\x6e\x6a\xfd\xf5\x62\x4f\x23\xf7\x27\xd6\x77\x2b\x9c\x4d\x1a\x99\xac\x39\xfc\xf8\xda\xd2\xb2\xa7\x55\xca\x21\xcd\x0f\x48\x61\xf7\x7b\x94\x68\xd5\xd9\x7b\x9f\xf9\xf2\xc3\x44\xf4\x88\xec\xca\x59\x86\x3b\x6b\x45\x4b\x0c\xc0\xd1\x9d\xcf\x51\xda\x01\x30\x50\xe6\xa6\xb9\x51\xd7\x2d\x69\x78\xcc\x45\x68\xaf\x18\x82\x20\x84\x4d\xc7\x29\xa9\x42\xf8\xd9\x42\xa8\x2f\x3d\x1d\x4b\xb4\xc4\x9d\xd5\x94\x23\xc1\x08\xa7\xbc\x32\xba\x87\x37\x1e\x99\xf7\x36\xcc\xb0\x78\x7c\xe3\x5f\x31\xda\x0c\xe8\xcd\x1e\x03\xa1\x6a\xd6\x6b\x05\xc8\x89\xae\xbd\x18\x3e\x70\xe1\xfc\x19\x07\x49\x6e\x41\x3f\xeb\x02\xce\x6c\xaf\x32\x10\x07\x79\x92\xa5\x6d\x53\x89\x90\x3a\xe6\xd7\x9d\x18\xd1\x0f\x4e\x3c\xf8\x1c\xce\x1e\x9e\xa1\xe0\x9a\x66\xd9\xa3\x7d\x7f\xcc\x3f\x31\xbe\x78\x1a\x35\x60\x6a\x4f\xc1\x5c\xc4\x29\xe9\xf2\x86\x86\xf1\x5e\xfe\x9e\x45\x8f\x20\x22\x27\x4c\x5f\x8a\xca\x03\xea\xed\x06\xc8\x48\x7f\xef\xc2\xb5\x6d\xc7\xa3\xf1\xf1\xf9\x8e\xc7\x72\xf4\xeb\xe7\x3b\x0a\xdf\xf3\x9d\xaf\xef\xcb\x92\x30\x7f\x10\xe3\x55\x6b\x0b\x3d\x04\x43\x6e\xfc\x2c\xfd\x05\x29\x74\x17\x0a\x83\x46\xff\x94\x2d\xb2\x1a\xbf\xc4\x24\xe7\x18\x96\x40\x0b\x0f\x65\x05\xa2\x13\xdd\x1c\x7a\x40\x62\x91\x1f\x46\xa8\x57\xb8\x35\xc3\xab\xf6\xf7\x18\x62\x3d\xa8\xb5\x60\xf3\x7a\xd4\xda\xae\x34\xd2\x8a\xee\xc8\x55\x59\xf1\x9d\x3a\x36\x82\xdc\x50\xf8\xac\xc9\x58\x42\x50\xb2\x54\xac\xf5\x22\x18\x43\x31\x6b\x78\x86\xe3\x60\xea\xa2\xc1\xb0\xc9\x7e\x9f\x1c\x9b\x95\xf0\x32\x25\x60\xbf\x42\x5b\x1f\xd8\x4e\x94\x09\xfb\xd4\xb1\xa1\xfe\x46\xc5\xf5\xad\xdb\xf2\x85\x8b\x62\x49\x6e\xdb\x86\x17\x2f\x33\xb9\x6b\x61\x8b\xd9\x06\x65\x38\xa3\xe2\x20\x2e\x71\x8d\x63\xb5\x92\x25\xd7\xd8\x0a\x01\xe5\x2b\xf0\x33\xc8\x15\x7a\x43\x58\x2f\xaa\xa8\x93\xce\xb9\x99\xe0\x06\x72\x71\x9d\x76\x97\xc6\x87\x07\xaa\xfb\xd7\xfd\x14\x8b\xa0\x74\x15\x03\x29\x18\xc6\x14\x13\xa3\x95\x47\x73\x9a\x98\x15\xc1\xdf\x9e\x1f\x66\xe6\x0a\xfb\xd0\x47\xb7\x0d\x17\x23\xeb\xdb\x44\x40\x0d\xff\x8d\xdf\xdd\x3c\x92\xdb\xd6\x33\xaf\xb5\x1a\xb4\x08\xb0\x22\x08\x9a\xfa\x7e\x43\x0f\x3d\x94\x43\xbc\xc0\xb7\x0b\xab\xb6\x23\xec\xb2\x3e\xb7\xc6\xbf\x43\x3c\x31\x28\xdf\x41\x03\x64\xb6\x6b\x62\x42\x5e\x17\x81\xcb\xb7\xdd\xef\x5f\xc1\xf3\xfc\x01\x13\x1e\xe7\xf7\xca\x66\x32\x8e\x9e\x86\x8b\x24\x01\x61\xc7\x3e\xf9\xfe\x34\x13\x71\xce\x3f\x5f\x6d\xa8\x19\xbe\x72\x81\x3a\x46\x0c\x15\xc2\x8d\xba\x64\x98\x87\xbb\x99\x3e\x74\x25\x7e\xbe\x27\xd8\x09\x73\xf5\xbd\x76\xc5\xaa\x14\xe2\x41\xeb\x50\xc7\x27\x17\x37\x01\x40\xa4\xc8\x70\x34\xcf\x22\xa5\xea\xa9\xb8\xf0\x48\x3c\x5c\x10\x2a\xb6\xc7\x97\xf4\x15\x78\xb8\x73\xdc\x39\x03\xca\xa6\x10\x17\x0b\xf3\x42\x8a\xa3\x58\xcf\xa3\xd2\xda\xcf\xe5\x47\x47\x33\x65\x5c\x44\xf8\xcf\x6b\x11\x6f\x0f\x1f\xd0\x40\xd3\x28\x9a\x0d\xd6\xd8\xa8\x32\xd0\x88\xbb\xed\x44\xe9\xad\xfa\x18\xa4\xd8\x00\x76\x24\x71\x5a\x6b\x75\x51\xea\x89\x77\x49\xb5\x11\x8d\x0b\xa6\xa9\xcb\x3c\x22\x1c\x9a\x8c\x84\x37\x81\xa5\x47\xd4\x26\x51\x05\x3e\xa2\xc3\x87\xb8\xd7\xe3\x55\x09\x3a\x00\x49\xa5\xf4\x7a\xea\xd1\xf9\xa2\xe1\x95\xc9\xd6\xc4\xb2\xce\x7c\x42\x51\x73\x6a\x33\xa4\xf2\xce\x3e\x3c\xa4\xe5\x18\x71\xb4\xbe\x89\x9c\xab\xc9\x0c\xe9\xd1\x33\x74\xd1\xd3\x3f\x27\xc3\x8c\x96\xf5\x9e\xcc\x32\xc2\x85\xba\x1a\x89\x4c\xf1\xe3\x24\xb2\x01\x1d\x19\x83\x11\xf6\x89\xe9\x4e\x05\xd2\x61\x3e\x53\x2f\x8c\x2d\x5b\xb3\x6a\xb1\x82\xbe\xcb\xb7\x9c\x2b\xa9\xcb\x1f\x9c\xf0\xba\xe0\xf2\xa7\x37\x48\xe1\x2f\x05\xd9\x04\x2a\xec\x1f\x37\xc2\xd6\xc1\x67\xe9\x85\x07\x1c\xc7\xe3\xd1\x04\x17\xfd\x97\x6b\xdb\x17\x1f\x25\x5c\x25\xaa\xa1\xef\xa6\x7e\x16\xa0\x09\x3e\x53\x33\xf5\xe1\x3d\x31\x6f\x81\x63\x42\x72\x3e\x40\x79\xd0\x38\x9a\x72\xc1\x33\x6c\xfc\xff\xfa\x9b\xd0\x1e\x79\xed\x8d\x98\x24\xbe\x9e\xf8\xe7\x55\x85\x8c\x82\xe9\xc6\xb8\x25\x31\xed\x0f\x06\x88\x50\x20\xd0\x35\x87\xb2\x47\xa1\x9d\xe0\xbb\x3b\xa1\x0e\x51\x12\x12\x32\x11\xd3\x8d\x83\x8f\xbf\x0a\xdb\x0a\xac\xd6\x00\x0b\x2e\x33\x28\xf1\x61\xef\x86\xa8\xf6\xfd\xdc\xea\xb9\x55\xdc\xbe\x5f\x8f\x0b\xf3\x68\x9a\x1c\xed\xde\x66\x17\xe3\x78\x07\x46\xfb\xbe\xb0\xae\x9c\x34\x51\x2d\xe1\x87\xff\x90\xb5\x3d\x90\x7f\xe9\x3e\x1e\xde\x89\x0a\xd6\x5e\x95\xd8\xeb\x67\x9f\xfb\x9f\xa7\x08\xce\xe0\xe7\xe2\x05\xc0\x4e\x30\x14\x85\x07\xff\xc4\xc0\x1b\x6b\xd8\x95\x4b\xe1\xaf\x36\xf5\x31\xf1\x04\x36\x82\xbc\x37\x50\x32\xd4\x90\x19\xaf\xe5\xa0\x80\xfc\x44\x08\xec\x7f\xf9\x4e\xf8\x8d\x3d\xf4\x05\xa3\xb2\x89\x3e\xe0\xcb\x15\x4f\xa7\x34\x55\x09\xc7\x93\x02\x51\xe2\xe8\x3a\xa3\x28\x03\x87\x54\xfd\x5d\x8c\x35\x8e\x4f\xcc\xc0\x7d\x42\xe2\xb1\x97\x5a\x77\xf6\x14\xc2\x98\xa9\xf0\x82\xc3\x56\x45\xd0\x5d\xb8\x2f\xf1\x98\xfb\xa6\xd1\xf2\x7b\x8f\xf5\x1c\xae\xca\xc2\x55\xc1\x21\x0a\x9d\x04\x5b\x81\xfa\x2c\xde\x6f\xf5\x02\xea\x63\xe1\x25\xc7\x1f\xe8\x4e\xc1\x3a\x25\x82\x71\x9c\x0d\xd0\x35\x7d\x03\xd8\x14\xee\xd3\xcd\x56\x19\xab\x11\x5f\x36\x5a\x1e\x03\x96\x13\x5b\x77\x40\x4b\x94\xe4\x39\xf1\xb1\xb0\x3f\x02\x50\x4f\x18\x05\xda\xdc\x08\xed\xcb\xe6\x38\x86\x54\x56\xad\x12\x5e\xba\x07\x83\xa1\x19\x08\x43\x76\xec\xd6\x53\xd5\x5e\xd3\x95\xba\xb1\x3f\x6e\xe7\x30\xbe\x91\xc4\x30\x7d\x52\xda\x56\x79\xa5\xcd\x84\xb6\x13\x52\x41\xb7\x3c\x53\x18\x59\x22\xec\x7c\xa1\x95\x66\xd2\x89\x6f\xaf\x03\xdc\x7d\xa0\x9f\xfa\x8e\xf7\x59\x52\x82\x29\xd1\xc5\xb3\xbe\xdc\xfb\x6a\xc8\xd5\x9a\xfe\xcc\xfe\x59\xca\xf6\xf9\xb3\xca\x50\x45\xbf\xa0\xdb\xfb\x7b\x61\x56\x1f\x9e\xd6\xe6\xd5\xf2\x8d\x3e\x69\x29\xa8\x4a\x42\xc4\xe2\x42\x44\xf3\x74\xf0\x12\xc9\x1a\x7d\x56\x8d\x35\xc7\x63\x01\x3c\x94\x6b\x4c\x25\x39\x96\xb7\x93\x4c\xb3\x44\x1c\xf9\xc4\x67\x22\xb0\x41\x62\x3a\x18\x60\x77\xf2\x6f\x2e\x4e\xb8\x44\xa6\x64\x23\x98\x7f\x73\x7b\x7f\x4f\x1e\xe0\x25\x6d\x24\xf3\x1b\x6e\x61\x58\x41\x52\xa1\x62\x09\xa9\x35\x3a\x79\x3e\xe5\xbd\x65\x18\xa2\x01\x7f\x15\xdd\x50\x4e\xd3\x12\x8b\x85\x9e\x49\x9e\x04\x27\xa7\xe2\x5e\xd7\x78\xc0\xf3\x56\x1a\x7d\x5d\x6a\xfc\x2a\xf2\xb0\xff\xe7\x10\x19\x20\x34\xcf\x6d\x34\x4d\x8d\x13\x85\xf4\xda\x64\xd1\xa4\xf0\x95\xc9\xd1\xec\xd6\xfb\x6b\xf4\x34\x1b\xd3\xfc\x5d\x94\x5e\x00\xa1\x83\x43\x1c\xfd\xcf\xc9\xd3\x07\x36\xc1\xb3\x58\x4e\x65\x54\x46\xc4\xc2\x7a\x64\x10\xca\xcc\x3f\xdf\xfb\xe2\x56\x27\x34\xf6\x33\xf5\xb3\x1b\xbe\xb7\x30\xa1\xb4\x85\xa5\x0e\x07\x0c\x2a\xd4\x3c\xac\x84\x4a\xfc\x48\xd2\x80\x19\x56\x00\xdc\x6e\x00\xbe\x88\x03\x48\x63\x19\xaf\x29\xc7\x03\xdc\xef\xa8\x0a\xc7\x2b\xd2\x5e\xcd\x0e\x5c\x8d\x3a\x78\x1e\x40\xf8\xac\xba\x8b\x65\x7d\x32\x4f\x75\xdb\x4a\x2e\x29\xaf\x63\x03\x0b\x25\x26\xed\x7c\x5b\xac\x4f\xbb\xbc\x16\x0a\x59\xf7\x5f\xe6\x32\xd3\x88\xd2\x57\x37\xb3\x07\x73\x6c\x2d\xa5\x82\x4d\xd6\x82\xff\x49\xbf\xda\xe2\x1f\xe5\x96\xd9\x63\x59\xc1\xe5\x8f\xa9\x52\xf3\x30\x4f\x2f\x79\x8e\x65\x14\x1c\xff\x4a\xfa\xb2\xb4\x08\xe0\x2d\xeb\xc9\x58\xa6\x84\xb1\x74\xf6\x3f\x88\x5c\x0e\x8e\x13\xb0\x5b\x3d\xa2\x31\xb0\x7e\xa0\xb8\x3a\x4b\xce\x36\x0f\xff\x2e\xac\xdd\xf3\x8c\x7c\x57\x6f\x79\x64\xba\xf3\xf2\xb3\x5b\x49\xf2\xff\xb5\xbc\xae\x70\xb8\x9c\x2a\x4a\xd0\x63\x20\x22\x01\x97\xae\xd7\xb5\x84\x62\xb0\x8b\xdf\x98\xfd\x60\x02\xbb\xc9\x94\x46\xe0\x36\x23\xdc\xa3\xd7\xb2\x09\x42\xf8\x83\x2f\x25\x95\x1f\xf7\x29\xfe\xb5\x71\x7f\x2e\x48\x16\xcc\xd5\x84\x88\x65\xb5\xd5\xfd\x54\x7c\xbf\xe3\x3f\x10\xeb\xe0\xb7\x32\x50\x8f\xf8\xf4\xf2\xce\xed\x6d\x84\x37\x88\x82\xaa\xe2\xc4\x44\x98\xd6\xb0\xb9\x7d\xe5\x9e\xf3\x29\x8f\x34\x8c\x6b\xe0\x9b\xe9\x93\x3c\xbc\x03\xb1\x84\x60\xa5\x06\x1c\x00\x96\xc3\x8a\xdc\xb3\xdb\x2b\x40\x79\x8e\xe0\xbf\x5f\x6d\x89\xbb\xc9\x1f\x2a\x87\x4b\x35\x7a\xd3\x07\x51\xd0\xc1\x21\x15\x90\xc1\x2e\x5a\xe7\x87\x2f\xc1\x5f\x7e\xa8\x56\x24\x00\xd2\x4d\x17\x7d\xf0\x96\x74\x36\x1f\xf5\xf2\xba\x9c\x83\x96\xea\x1f\x9f\x1b\xe9\xcd\x91\x5e\xdb\x42\x3a\xd1\x21\x80\x35\x2f\x93\x02\xa9\x4a\x54\xc6\xe3\x4b\x32\x0a\xc7\xc7\x15\x1c\xd4\x02\xdf\xa2\xe1\xb5\x10\x2f\x79\xb9\xbb\xf6\x1e\x3e\xf9\xe1\x07\x8f\xd4\xc5\xfe\x28\x6d\x96\xea\x77\xee\x34\xb0\x74\xcf\xb0\xe9\xf0\xd8\x1b\x0a\xa1\xb4\x77\x40\xa0\xbe\x49\xdf\x44\x24\xf6\x97\x23\x05\x07\x16\x78\x55\x02\xc5\x94\x75\x6a\x8b\xc9\xbb\x62\x77\xbd\x5e\x7f\x8e\x84\x02\x55\x65\x7e\x04\x7d\x33\x7d\x64\x2f\xd5\x5b\x58\x43\x7e\x1d\x67\x40\x00\xea\xb5\xf9\xd9\x06\x73\x32\x35\xd6\x82\x2f\xe2\x15\x31\xee\x1e\x54\xb0\xa2\x04\x44\xc8\x27\xc2\xde\xe1\xdc\xd1\x14\x18\x7d\xcb\x80\x03\x5c\xaa\x47\x8e\x03\x54\x98\x6c\xe1\x59\x8d\xb5\x7b\x7b\x76\xe7\x64\x0d\xc1\x9e\x75\x87\xec\xcd\xd4\xee\x42\xfd\x3c\x46\x1d\xac\x7b\x95\x98\x01\x35\xd3\x48\xa7\xfc\xf9\x2e\x83\xe7\xf0\xc8\x81\x64\xb9\x1e\xdc\xde\x7d\x7a\xc5\x41\xd4\x79\x30\x45\xb3\xf5\xec\x97\x82\xaf\xaf\x94\xd4\x1d\x8b\x8c\x1c\x8f\x04\xd5\x28\x25\x75\x70\x99\x42\x95\x14\xdf\x9b\xae\xf5\x74\x4f\xc7\x06\x8a\x96\xa6\xb0\xb5\xc5\x3f\xf4\xc7\x44\x11\x0b\x94\x9b\x63\x54\xac\x80\x32\x0a\x2a\x5b\xc6\xbc\xe0\x05\x53\x1d\x06\xcc\x2b\x8a\xa4\xa7\x7c\xfc\x10\xbf\xea\xb5\xc2\x41\xf5\xbf\xd1\x51\x1f\x81\xf9\x19\xae\xea\x23\xcc\x0f\x77\x92\x14\x8a\x06\x3b\x83\x29\x02\x87\x9b\x7f\xca\x51\xa9\xf2\xd4\xb4\x17\x7d\xc8\xff\x6a\xed\xeb\x65\xb0\x27\x9e\xfe\x4a\xb3\xa9\xcb\xb6\x1c\x3f\xc0\x2e\xaf\x59\x65\x72\x34\x0f\x4a\xdd\x3a\xe9\x07\xfd\xed\x53\xce\xeb\x4a\x65\xd7\x44\x42\xb2\x0a\xe7\x50\x0e\xe1\x18\x10\x0e\x79\x24\xb6\x71\xeb\xad\x5f\xb6\x6d\xae\x71\x3b\x70\x4d\x17\x4f\xb5\x59\x72\xba\x92\xeb\x7e\x52\x96\x7a\xe1\x09\x63\xd4\x5b\x89\xbe\xea\x1b\xe6\x96\x24\xbc\x70\x8f\xac\x5e\xc3\x68\x26\x6c\x05\x2c\x50\x40\x0a\x34\xde\xf8\x81\xb6\x5c\x0c\xd9\xf3\x9f\xc3\x6c\x0a\x08\xbd\xec\xe9\x17\x8c\x05\x95\x8d\x41\xa4\x0d\xa6\xe6\x2f\xcf\x69\x40\xac\xdd\xe4\xaf\xa1\xa9\xfa\xb5\x85\xb4\x4a\x3d\x3c\xf6\xbc\x17\x68\x10\xec\x8f\xaa\xa5\x09\x05\x21\x73\xcb\xb7\x2e\xaa\x9c\x54\xd5\x95\x56\x25\x4d\x74\xba\xc2\x27\x65\xbf\xdc\x31\x07\xbe\x3c\xf7\xf1\xe5\xb3\x3e\xe3\x4a\x3a\x5f\x34\x51\x6d\xdd\x52\x37\xd2\xe3\xcf\xfc\xf2\x0c\xbb\x83\xfb\x4e\x14\x0e\xbe\x6a\x5d\xc1\x54\x4f\xbf\xf6\x35\xd9\xa1\x38\xe2\xbe\xb0\x4f\x06\xb8\x91\xf4\x0d\xd0\xa2\xaf\xb4\xfd\x9b\x17\x83\xc9\x8c\x17\x48\x0b\x65\x20\x47\x62\xe0\xd3\x5f\x95\xe0\xe2\x4b\xe4\x88\xcb\xcf\xe1\xdf\x01\xd2\xe4\x50\x69\x32\x6b\x0c\xac\x11\x30\x34\xa9\x8a\xb9\x22\x85\xa8\x0a\x56\xca\x58\x17\x4f\x48\x77\x57\xc9\x6a\x8d\x21\xb0\xa5\x7e\xdf\xb9\x49\x35\x36\xbc\xee\x92\x0a\x75\x18\x52\x05\x2f\xfd\x48\x39\x1e\x5e\x28\xd4\xfd\x5b\xc5\xa5\x0b\xb1\xa0\x4c\x48\x0c\x1f\xd6\x93\x7e\xdf\x70\xf0\x50\xca\x5d\xb1\xe3\x40\x51\x0d\x5f\xe5\xb8\xb2\xcd\x88\x4a\xc1\x3e\x49\x9a\x75\x25\x7d\xfc\xe7\xe8\x42\x55\x9c\x89\x76\xbc\x8b\x4c\x61\x5a\x1f\xc7\x6d\x42\x58\x6c\x49\x36\x3c\xf1\xb4\x5c\x2a\x1a\x72\x6d\x86\x6a\xda\x2c\xe0\xf9\xb3\x25\x58\xcc\xcb\xa5\x9e\xd3\x2e\xee\x63\xdf\x06\x51\x73\x6a\xcb\x8e\xb8\xd7\x43\x9d\xd4\x6c\x4e\x26\x1e\x03\x4b\x21\x11\x84\xfc\x3a\xbb\xd0\xa6\x1f\xac\x01\x66\xf7\x81\xe5\x17\x95\x4f\xc7\x5e\xdf\xe1\x3e\xf6\xe3\x50\xfa\xbe\x1e\x5f\xec\x12\x86\x69\x78\x4b\xde\xd9\xbf\x45\x96\x6c\xbb\xf3\x1c\x1e\x6e\x44\x8c\x2f\xcb\xa6\x1d\x4e\xec\x3e\xe8\xb8\x6d\xdf\xc3\x68\xed\xc1\x59\x2b\x36\x2f\xf0\x7a\x45\xf0\xab\xe6\x50\x13\xf2\xbc\x10\xc4\xb8\xd3\xb2\x11\x10\xff\x47\xcb\x84\x49\xa7\xfb\x07\xdb\xb4\xa7\xa6\x19\xa9\x05\x5b\xcd\xc0\x46\x1a\xac\xe6\xce\x59\x44\x52\x30\xd1\x31\x56\x5e\xc2\x6a\x01\x03\xa7\xcb\xac\x98\xf1\x8b\xbc\xa8\x68\xcf\x3d\x78\xe4\xfe\xf3\x7c\xfb\x6e\x9b\x7a\x76\x8d\x40\xa1\x4a\x74\xde\x04\x40\x7d\x41\x2f\x76\xcc\xa3\xc1\xf0\x69\x71\x81\xdb\x8c\x58\x17\x9e\x9f\x8e\xc7\xeb\xa1\xe1\x52\x6d\xde\xe2\xb2\x67\xcd\x4e\x59\x74\x83\x48\x2b\x87\x77\x00\xa9\xe2\xc3\x59\x67\xe1\x02\xfc\xb6\x4a\xf3\xb2\xac\xcc\x38\x4a\xb1\xbf\xda\xb9\x4c\x8b\xe2\x31\xbb\x45\x84\x28\xb3\x69\x0d\x7e\x90\x12\xf1\x08\x25\x17\xd4\x15\xc7\x97\x6f\x92\x1b\x70\xc4\xb3\x54\x81\x8b\x14\xf7\x28\xe0\xd3\xd2\xe8\x01\x36\x23\xa3\xa9\xfc\x54\xa6\x9e\xa5\x89\x26\x18\x67\x3c\xb6\xa4\x1f\x90\x7a\x3a\x59\x43\x5b\x3a\x8e\x47\xcc\xb5\x19\x31\xfd\x71\x85\x7e\x41\xe3\x6a\x74\x85\x53\xd6\x37\x3e\x99\x79\xc1\x6f\x77\x3b\xe5\x7e\xa7\xc1\xac\x18\x8c\x77\x43\x6c\x8d\x88\x4b\x66\x40\x5c\x39\x97\x44\x96\x9a\x6f\x2c\xce\xa3\x22\x58\x78\x77\x09\x77\x92\x34\xb5\x71\xa5\x5b\xa2\xe9\x57\x8b\x52\xb2\x12\xea\x81\xc5\x5f\x62\x88\x68\xab\xd1\xa2\x80\x82\x7d\x26\x99\x11\x9b\x92\x25\x1c\x2d\x16\x1a\x20\xeb\xd1\x4f\xf1\x13\x8f\xb7\x88\xbe\x28\xee\xbe\x2d\x86\xdb\x91\xef\x6a\xc4\xc2\x62\xf1\x29\xc3\xc4\x3e\x4b\x5d\x4a\xd0\x6e\xa1\x06\x98\xc7\xb2\x6d\x8d\x12\x78\x59\x0b\x33\xa6\x25\xcb\xc2\x2c\xd3\x02\x4c\x36\x07\xe2\x94\x66\x46\x81\x39\x7d\xcb\xd5\x09\xb3\x9e\x23\xbb\x9c\x66\x2d\xe6\xef\x31\x95\xc0\xe7\x5b\x26\x7a\xb9\x66\x78\xec\x93\xef\xf0\x75\xe0\xac\x28\x03\x29\x80\x07\x4f\x2e\xb5\xca\x73\xa8\xdf\xb7\xf4\x39\xa4\xf1\x08\xc5\x3c\xcb\xe4\x77\x51\x83\xc9\xd6\xb4\x5e\x13\x5e\x2f\x71\x43\xc3\x8f\x81\x68\x39\x0b\x12\x2f\x8b\x47\xf9\xbc\xc0\xd4\xd9\x4f\xec\x8b\x4a\xf1\xf0\xa7\x72\x92\x81\xc1\xeb\xdb\x2d\x3e\x70\x33\xde\x9e\xc2\x40\xa8\x0b\x25\x93\x7f\xab\xe6\x7c\x77\xf4\x1a\x88\x5a\x82\x10\x78\x4c\x4b\xa1\x31\x19\x54\xf4\xc2\x97\x6d\x37\xd6\xdf\x13\xe6\x7c\x1e\x8f\xb0\x88\x0d\x7b\x54\x50\x44\xf2\x22\x7e\x89\x24\xf8\xd3\xd9\xeb\xc5\x4c\x04\xfd\xe2\x43\x67\x63\xd9\x0b\x0b\x0a\x8a\x18\x51\x56\x81\x1b\x7a\x1c\xa0\x89\x7c\x34\xc5\xe6\xc2\x03\xd4\x95\xbd\x9a\xc7\xb6\x1c\x14\xaf\xde\x23\x54\x91\xdd\x64\x9d\xfe\x4a\x1f\x4a\xdd\xa3\x2e\x90\xf8\x0e\xed\x63\x63\x79\x6e\xd5\xa3\x84\x8b\x31\x6d\x71\x55\xdf\xb1\xc5\xc3\x59\x21\x58\x2a\x61\xdd\xe1\x48\x36\x49\x55\x39\xc9\x55\xd5\x49\x1c\x34\x82\xaa\x46\xa0\x57\x55\x88\x90\x46\x38\x3d\x4a\x53\x42\xa2\x8c\x11\x8b\x45\xfc\x1c\x10\xf7\x78\x70\x3a\x62\x15\x50\x30\x73\x0c\x4e\xa5\xd0\x61\xdc\x26\x42\x11\x99\xee\x33\xef\xa9\xa0\xba\xd0\x10\x52\xcc\x57\xe9\xdc\xee\x47\xb7\x30\xd4\xb3\xea\x67\x66\xeb\x3f\xae\x51\x28\x4a\x04\x14\x04\x33\x0e\x68\x20\x82\xdb\xa0\xa3\x0b\xbb\x29\x16\x08\x21\xf7\x6d\x8c\x98\x23\x8d\x89\xdd\xe1\x86\x2b\x92\x84\xa1\x72\x1a\x44\xee\x62\xc9\xaf\xe1\xdb\xfd\x8f\xfa\x3e\x5b\x78\x12\x7c\x37\xeb\xba\x92\x4d\xfd\xdb\xb6\xfb\xd5\x6c\x42\x3d\xfb\x14\x2d\xa5\x1d\x60\xbc\xff\xa4\x1a\x36\xea\x9a\xae\xc6\xa9\x3d\x91\x17\xda\x66\x7a\x61\x4e\x4f\xda\x7d\x78\xe1\x6f\xd4\x2c\x57\xce\x35\xdd\x4c\xe2\xdb\x91\xd9\x62\x55\xd0\x89\x18\x45\x3f\x21\xf3\x57\x01\xd8\x1e\xf6\xaa\x09\xf2\x69\xcd\xda\xcd\xae\xe4\x80\xfb\x47\x4b\x14\x4d\xbb\x06\x7d\xb0\xdb\xa4\x4a\x84\xef\x15\x33\x3a\x37\xd7\xfe\x08\x69\xed\x48\x24\x04\xb1\x7c\x92\xcd\xb2\xac\x88\xa7\x7d\x5c\xc7\x6f\x11\x77\x9e\xd8\x12\xde\x4f\x3f\x52\x43\x59\x58\x40\x7d\xb0\x58\x2e\xcf\x14\xf1\xf7\xc9\xa6\x32\xfd\xda\x6c\x3b\xd7\x08\xe2\xc9\xdf\x74\xb8\xef\x16\x0e\x15\xb3\x3c\xe3\x05\xec\x3a\xd3\xaf\x54\xca\x05\x47\xa2\x4c\xec\xcd\x82\x94\x58\x77\x43\x7c\x16\x06\xac\x6a\xdf\x83\xb2\x68\x2a\xc9\xbe\x48\xb6\x92\x5d\xc0\xdd\xcb\x86\x0a\x29\x76\xa6\xf0\x9f\x7d\x40\x93\xdb\x4f\x28\x34\x1a\x38\xf8\xda\x8a\x3a\x8b\xea\x24\x74\x36\x49\xb9\xb5\x17\x15" func bundleJsBrBytes() ([]byte, error) { return bindataRead( @@ -105,7 +105,7 @@ func bundleJsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "bundle.js.br", size: 104870, mode: os.FileMode(420), modTime: time.Unix(1535014676, 0)} + info := bindataFileInfo{name: "bundle.js.br", size: 104932, mode: os.FileMode(436), modTime: time.Unix(1535678866, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -125,7 +125,7 @@ func configDefaultToml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config.default.toml", size: 1572, mode: os.FileMode(420), modTime: time.Unix(1534921910, 0)} + info := bindataFileInfo{name: "config.default.toml", size: 1572, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -145,7 +145,7 @@ func fontMontserratBoldWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Bold.woff", size: 14076, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/Montserrat-Bold.woff", size: 14076, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -165,7 +165,7 @@ func fontMontserratBoldWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Bold.woff2", size: 9636, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/Montserrat-Bold.woff2", size: 9636, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -185,7 +185,7 @@ func fontMontserratRegularWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Regular.woff", size: 14100, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/Montserrat-Regular.woff", size: 14100, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -205,7 +205,7 @@ func fontMontserratRegularWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Regular.woff2", size: 9688, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/Montserrat-Regular.woff2", size: 9688, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -225,7 +225,7 @@ func fontRobotomonoBoldWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Bold.woff", size: 20304, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Bold.woff", size: 20304, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -245,7 +245,7 @@ func fontRobotomonoBoldWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Bold.woff2", size: 16028, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Bold.woff2", size: 16028, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -265,7 +265,7 @@ func fontRobotomonoRegularWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Regular.woff", size: 20316, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Regular.woff", size: 20316, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -285,7 +285,7 @@ func fontRobotomonoRegularWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Regular.woff2", size: 16108, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Regular.woff2", size: 16108, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -305,7 +305,7 @@ func fontFontelloWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/fontello.woff", size: 3660, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/fontello.woff", size: 3660, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -325,7 +325,7 @@ func fontFontelloWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/fontello.woff2", size: 3060, mode: os.FileMode(420), modTime: time.Unix(1532434159, 0)} + info := bindataFileInfo{name: "font/fontello.woff2", size: 3060, mode: os.FileMode(436), modTime: time.Unix(1535677403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/client/package.json b/client/package.json index fb66b265..ea03df8e 100644 --- a/client/package.json +++ b/client/package.json @@ -9,22 +9,22 @@ "not op_mini all" ], "devDependencies": { - "@babel/core": "^7.0.0-rc.2", - "@babel/plugin-proposal-class-properties": "^7.0.0-rc.2", - "@babel/plugin-proposal-export-default-from": "^7.0.0-rc.2", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0-rc.2", - "@babel/plugin-transform-react-constant-elements": "^7.0.0-rc.2", - "@babel/plugin-transform-react-inline-elements": "^7.0.0-rc.2", - "@babel/preset-env": "^7.0.0-rc.2", - "@babel/preset-react": "^7.0.0-rc.2", - "autoprefixer": "^9.1.2", + "@babel/core": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-transform-react-constant-elements": "^7.0.0", + "@babel/plugin-transform-react-inline-elements": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "autoprefixer": "^9.1.3", "babel-core": "^7.0.0-0", - "babel-eslint": "^8.2.6", + "babel-eslint": "^9.0.0", "babel-jest": "^23.4.2", - "babel-loader": "^8.0.0-beta", + "babel-loader": "^8.0.0", "brotli": "^1.3.1", "css-loader": "^1.0.0", - "cssnano": "^4.0.5", + "cssnano": "^4.1.0", "del": "^3.0.0", "eslint": "^5.4.0", "eslint-config-airbnb": "^16.1.0", @@ -44,10 +44,10 @@ "postcss-flexbugs-fixes": "^4.1.0", "postcss-loader": "^3.0.0", "prettier": "1.14.2", - "style-loader": "^0.22.1", + "style-loader": "^0.23.0", "through2": "^2.0.3", - "webpack": "^4.17.0", - "webpack-dev-middleware": "^3.0.1", + "webpack": "^4.17.1", + "webpack-dev-middleware": "^3.2.0", "webpack-hot-middleware": "^2.22.3" }, "dependencies": { @@ -57,14 +57,14 @@ "classnames": "^2.2.6", "es6-promise": "^4.2.4", "fontfaceobserver": "^2.0.9", - "formik": "1.0.3", + "formik": "1.1.1", "history": "4.5.1", "immer": "^1.5.0", "js-cookie": "^2.1.4", "lodash": "^4.17.10", "react": "^16.4.2", "react-dom": "^16.4.2", - "react-hot-loader": "^4.3.4", + "react-hot-loader": "^4.3.5", "react-redux": "^5.0.2", "react-virtualized": "^9.20.1", "redux": "^4.0.0", diff --git a/client/yarn.lock b/client/yarn.lock index 34bf889d..f04165af 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2,29 +2,29 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.44", "@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" dependencies: "@babel/highlight" "7.0.0-beta.44" -"@babel/code-frame@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.2.tgz#12b6daeb408238360744649d16c0e9fa7ab3859e" +"@babel/core@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0.tgz#0cb0c0fd2e78a0a2bec97698f549ae9ce0b99515" dependencies: - "@babel/highlight" "7.0.0-rc.2" - -"@babel/core@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-rc.2.tgz#dcb46b3adb63e35b1e82c35d9130d9c27be58427" - dependencies: - "@babel/code-frame" "7.0.0-rc.2" - "@babel/generator" "7.0.0-rc.2" - "@babel/helpers" "7.0.0-rc.2" - "@babel/parser" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helpers" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" convert-source-map "^1.1.0" debug "^3.1.0" json5 "^0.5.0" @@ -33,196 +33,166 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" +"@babel/generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" dependencies: - "@babel/types" "7.0.0-beta.44" - jsesc "^2.5.1" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/generator@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-rc.2.tgz#7aed8fb4ef1bdcc168225096b5b431744ba76bf8" - dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-rc.2.tgz#490fa0e8cfe11305c3310485221c958817957cc7" +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" -"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-rc.2.tgz#47904c65b4059893be8b9d16bfeac320df601ffa" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz#ba26336beb2abb547d58b6eba5b84d77975a39eb" dependencies: - "@babel/helper-explode-assignable-expression" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-explode-assignable-expression" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-builder-react-jsx@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-rc.2.tgz#ba4018ba4d5ab50e24330c3e98bbbebd7286dbf0" +"@babel/helper-builder-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" esutils "^2.0.0" -"@babel/helper-call-delegate@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-rc.2.tgz#faa254987fc3b5b90a4dc366d9f65f9a1b083174" +"@babel/helper-call-delegate@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz#e036956bb33d76e59c07a04a1fff144e9f62ab78" dependencies: - "@babel/helper-hoist-variables" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-define-map@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-rc.2.tgz#68f19b9f125a0985e7b81841b35cddb1e4ae1c6e" +"@babel/helper-define-map@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz#a5684dd2adf30f0137cf9b0bde436f8c2db17225" dependencies: - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-function-name" "^7.0.0" + "@babel/types" "^7.0.0" lodash "^4.17.10" -"@babel/helper-explode-assignable-expression@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-rc.2.tgz#df9a0094aca800e3b40a317a1b3d434a61ee158f" +"@babel/helper-explode-assignable-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz#fdfa4c88603ae3e954d0fc3244d5ca82fb468497" dependencies: - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-function-name@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" +"@babel/helper-function-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.44" - "@babel/template" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-function-name@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-rc.2.tgz#ad7bb9df383c5f53e4bf38c0fe0c7f93e6a27729" +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" dependencies: - "@babel/helper-get-function-arity" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" -"@babel/helper-get-function-arity@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" dependencies: - "@babel/types" "7.0.0-beta.44" + "@babel/types" "^7.0.0" -"@babel/helper-get-function-arity@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-rc.2.tgz#323cb82e2d805b40c0c36be1dfcb8ffcbd0434f3" +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" -"@babel/helper-hoist-variables@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-rc.2.tgz#4bc902f06545b60d10f2fa1058a99730df6197b4" +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" -"@babel/helper-member-expression-to-functions@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-rc.2.tgz#5a9c585f86a35428860d8c93a315317ba565106c" +"@babel/helper-module-transforms@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz#b01ee7d543e81e8c3fc404b19c9f26acb6e4cf4c" dependencies: - "@babel/types" "7.0.0-rc.2" - -"@babel/helper-module-imports@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-rc.2.tgz#982f30e71431d3ea7e00b1b48da774c60470a21d" - dependencies: - "@babel/types" "7.0.0-rc.2" - -"@babel/helper-module-transforms@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-rc.2.tgz#d9b2697790875a014282973ed74343bb3ad3c7c5" - dependencies: - "@babel/helper-module-imports" "7.0.0-rc.2" - "@babel/helper-simple-access" "7.0.0-rc.2" - "@babel/helper-split-export-declaration" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" lodash "^4.17.10" -"@babel/helper-optimise-call-expression@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-rc.2.tgz#6ddfecaf9470f96de38704223646d9c20dcc2377" +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" -"@babel/helper-plugin-utils@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-rc.2.tgz#95bc3225bf6aeda5a5ebc90af2546b5b9317c0b4" +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" -"@babel/helper-regex@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-rc.2.tgz#445d802c3c50cb146a93458f421c77a7f041b495" +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" dependencies: lodash "^4.17.10" -"@babel/helper-remap-async-to-generator@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-rc.2.tgz#2025ec555eed8275fcbe24532ab1f083ff973707" +"@babel/helper-remap-async-to-generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz#6512273c2feb91587822335cf913fdf680c26901" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.2" - "@babel/helper-wrap-function" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-replace-supers@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-rc.2.tgz#dcf619512a2171e35c0494aeb539a621f6ce7de2" +"@babel/helper-replace-supers@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz#b6f21237280e0be54f591f63a464b66627ced707" dependencies: - "@babel/helper-member-expression-to-functions" "7.0.0-rc.2" - "@babel/helper-optimise-call-expression" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-simple-access@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-rc.2.tgz#34043948cda9e6b883527bb827711bd427fea914" +"@babel/helper-simple-access@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz#ff36a27983ae4c27122da2f7f294dced80ecbd08" dependencies: - "@babel/template" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" dependencies: - "@babel/types" "7.0.0-beta.44" + "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-rc.2.tgz#726b2dec4e46baeab32db67caa6e88b6521464f8" +"@babel/helper-wrap-function@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz#1c8e42a2cfb0808e3140189dfe9490782a6fa740" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/helper-function-name" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-wrap-function@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-rc.2.tgz#788cd70072254eefd33fc1f3936ba24cced28f48" +"@babel/helpers@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0.tgz#7213388341eeb07417f44710fd7e1d00acfa6ac0" dependencies: - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" - -"@babel/helpers@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-rc.2.tgz#e21f54451824f55b4f5022c6e9d6fa7df65e8746" - dependencies: - "@babel/template" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" "@babel/highlight@7.0.0-beta.44": version "7.0.0-beta.44" @@ -232,471 +202,439 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.2.tgz#0af688a69e3709d9cf392e1837cda18c08d34d4f" +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-rc.2.tgz#a98c01af5834e71d48a5108e3aeeee333cdf26c4" +"@babel/parser@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" -"@babel/plugin-proposal-async-generator-functions@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-rc.2.tgz#0f3b63fa74a8ffcd9cf1f4821a4725d2696a8622" +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz#5d1eb6b44fd388b97f964350007ab9da090b1d70" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-remap-async-to-generator" "7.0.0-rc.2" - "@babel/plugin-syntax-async-generators" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" -"@babel/plugin-proposal-class-properties@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-rc.2.tgz#71f4f2297ec9c0848b57c231ef913bc83d49d85a" +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0.tgz#a16b5c076ba6c3d87df64d2480a380e979543731" dependencies: - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/helper-member-expression-to-functions" "7.0.0-rc.2" - "@babel/helper-optimise-call-expression" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-replace-supers" "7.0.0-rc.2" - "@babel/plugin-syntax-class-properties" "7.0.0-rc.2" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" -"@babel/plugin-proposal-export-default-from@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.0.0-rc.2.tgz#6da15f3b1778fa6b5ba578b1b3bfa7cbdae21141" +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.0.0.tgz#a057bbfd4649facfe39f33a537e18554bdd2b5da" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-export-default-from" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" -"@babel/plugin-proposal-export-namespace-from@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-rc.2.tgz#aafdbed675d50155f48bc0f2a9aa2ffebf23ccd2" +"@babel/plugin-proposal-export-namespace-from@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0.tgz#ce847cc62c3626547107a1b835592b8ee494af51" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-export-namespace-from" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-export-namespace-from" "^7.0.0" -"@babel/plugin-proposal-json-strings@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0-rc.2.tgz#ea4fd95eb00877e138e3e9f19969e66d9d47b3eb" +"@babel/plugin-proposal-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-json-strings" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.0.0" -"@babel/plugin-proposal-object-rest-spread@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-rc.2.tgz#5552e7a4c80cde25f28dfcc6d050831d1d88a01f" +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" -"@babel/plugin-proposal-optional-catch-binding@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-rc.2.tgz#61c5968932b6d1e9e5f028b3476f8d55bc317e1f" +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" -"@babel/plugin-proposal-unicode-property-regex@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-rc.2.tgz#6be37bb04dab59745c2a5e9f0472f8d5f6178330" +"@babel/plugin-proposal-unicode-property-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-regex" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" regexpu-core "^4.2.0" -"@babel/plugin-syntax-async-generators@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-rc.2.tgz#2d1726dd0b4d375e1c16fcb983ab4d89c0eeb2b3" +"@babel/plugin-syntax-async-generators@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-class-properties@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-rc.2.tgz#3ecbb8ba2878f07fdc350f7b7bf4bb88d071e846" +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-export-default-from@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.0.0-rc.2.tgz#bb41d9c09397b5fa2abed598bf5fdf9c60964621" +"@babel/plugin-syntax-export-default-from@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.0.0.tgz#084b639bce3d42f3c5bf3f68ccb42220bb2d729d" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-export-namespace-from@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-rc.2.tgz#a70ac4b9db6113eaab8c9bfbc5e4eba963c6b4aa" +"@babel/plugin-syntax-export-namespace-from@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0.tgz#17a7389a1d2571ac4d9b77ea2defa74a930edf5d" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-json-strings@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0-rc.2.tgz#6c16304a379620034190c06b50da3812351967f2" +"@babel/plugin-syntax-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-rc.2.tgz#c070fd6057ad85c43ba4e7819723e28e760824ff" +"@babel/plugin-syntax-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-rc.2.tgz#551e2e0a8916d63b4ddf498afde649c8a7eee1b5" +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-rc.2.tgz#8c752fe1a79490682a32836cefe03c3bd49d2180" +"@babel/plugin-syntax-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-rc.2.tgz#ab00f72ea24535dc47940962c3a96c656f4335c8" +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-rc.2.tgz#44a125e68baf24d617a9e48a4fc518371633ebf3" +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz#feaf18f4bfeaf2236eea4b2d4879da83006cc8f5" dependencies: - "@babel/helper-module-imports" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-remap-async-to-generator" "7.0.0-rc.2" + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.0.0" -"@babel/plugin-transform-block-scoped-functions@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-rc.2.tgz#953fa99802af1045b607b0f1cb2235419ee78482" +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-rc.2.tgz#ce5aaebaabde05af5ee2e0bdaccc7727bb4566a6" +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.10" -"@babel/plugin-transform-classes@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-rc.2.tgz#900550c5fcd76e42a6f72b0e8661e82d6e36ceb5" +"@babel/plugin-transform-classes@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz#9e65ca401747dde99e344baea90ab50dccb4c468" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.2" - "@babel/helper-define-map" "7.0.0-rc.2" - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/helper-optimise-call-expression" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-replace-supers" "7.0.0-rc.2" - "@babel/helper-split-export-declaration" "7.0.0-rc.2" + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.0.0" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-rc.2.tgz#06e61765c350368c61eadbe0cd37c6835c21e665" +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-rc.2.tgz#ef82b75032275e2eaeba5cf4719b12b8263320b4" +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz#68e911e1935dda2f06b6ccbbf184ffb024e9d43a" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-rc.2.tgz#012766ab7dcdf6afea5b3a1366f3e6fff368a37f" +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-regex" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/plugin-transform-duplicate-keys@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-rc.2.tgz#d60eeb2ff7ed31b9e691c880a97dc2e8f7b0dd95" +"@babel/plugin-transform-duplicate-keys@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-exponentiation-operator@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-rc.2.tgz#171a4b44c5bb8ba9a57190f65f87f8da045d1db3" +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz#c51b45e090a01876f64d32b5b46c0799c85ea56c" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-for-of@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-rc.2.tgz#2ef81a326faf68fb7eca37a3ebf45c5426f84bae" +"@babel/plugin-transform-for-of@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-rc.2.tgz#c69c2241fdf3b8430bd6b98d06d7097e91b01bff" +"@babel/plugin-transform-function-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz#eeda18dc22584e13c3581a68f6be4822bb1d1d81" dependencies: - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-rc.2.tgz#a4475d70d91c7dbed6c4ee280b3b1bfcd8221324" +"@babel/plugin-transform-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-rc.2.tgz#f3c37e6de732c8ac07df01ea164cf976409de469" +"@babel/plugin-transform-modules-amd@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz#2430ab73db9960c4ca89966f425b803f5d0d0468" dependencies: - "@babel/helper-module-transforms" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-commonjs@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-rc.2.tgz#f6475129473b635bd68cbbab69448c76eb52718c" +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz#20b906e5ab130dd8e456b694a94d9575da0fd41f" dependencies: - "@babel/helper-module-transforms" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-simple-access" "7.0.0-rc.2" + "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.0.0" -"@babel/plugin-transform-modules-systemjs@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-rc.2.tgz#ced5ac5556f0e6068b1c5d600bff2e68004038ee" +"@babel/plugin-transform-modules-systemjs@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz#8873d876d4fee23209decc4d1feab8f198cf2df4" dependencies: - "@babel/helper-hoist-variables" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-umd@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-rc.2.tgz#0e6eeb1e9138064a2ef28991bf03fa4d14536410" +"@babel/plugin-transform-modules-umd@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz#e7bb4f2a6cd199668964241951a25013450349be" dependencies: - "@babel/helper-module-transforms" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-new-target@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-rc.2.tgz#5b70d3e202a4d677ba6b12762395a85cb1ddc935" +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-rc.2.tgz#2c521240b3f817a4d08915022d1d889ee1ff10ec" +"@babel/plugin-transform-object-super@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz#b8587d511309b3a0e96e9e38169908b3e392041e" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-replace-supers" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.0.0" -"@babel/plugin-transform-parameters@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-rc.2.tgz#5f81577721a3ce6ebc0bdc572209f75e3b723e3d" +"@babel/plugin-transform-parameters@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz#da864efa111816a6df161d492f33de10e74b1949" dependencies: - "@babel/helper-call-delegate" "7.0.0-rc.2" - "@babel/helper-get-function-arity" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-call-delegate" "^7.0.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-constant-elements@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0-rc.2.tgz#02ea4e65c66079e492b9a9fd7817cb2ed2ccfe66" +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0.tgz#ab413e33e9c46a766f5326014bcbf9e2b34ef7a4" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-display-name@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-rc.2.tgz#b8a4ee0e098abefbbbd9386db703deaca54429a7" +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-inline-elements@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.0.0-rc.2.tgz#86533fcc68fe3bf2cd94b995461bf55919ade128" +"@babel/plugin-transform-react-inline-elements@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.0.0.tgz#caec13a7829b34d7eb64dfe9fc310326f74f7b05" dependencies: - "@babel/helper-builder-react-jsx" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-jsx-self@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-rc.2.tgz#12ed61957d968a0f9c694064f720f7f4246ce980" +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-jsx" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" -"@babel/plugin-transform-react-jsx-source@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-rc.2.tgz#b67ab723b83eb58cbb58041897c7081392355430" +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-jsx" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" -"@babel/plugin-transform-react-jsx@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-rc.2.tgz#43f40c43c3c09a4304b1e82b04ff69acf13069c1" +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" dependencies: - "@babel/helper-builder-react-jsx" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-syntax-jsx" "7.0.0-rc.2" + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" -"@babel/plugin-transform-regenerator@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-rc.2.tgz#35c26152b0ddff76d93ca1fcf55417b16111ade8" +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" dependencies: regenerator-transform "^0.13.3" -"@babel/plugin-transform-shorthand-properties@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-rc.2.tgz#b920f4ffdcc4bbe75917cfb2e22f685a6771c231" +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-rc.2.tgz#827e032c206c9f08d01d3d43bb8800e573b3a501" +"@babel/plugin-transform-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-rc.2.tgz#b9febc20c1624455e8d5ca1008fb32315e3a414b" +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-regex" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-rc.2.tgz#89d701611bff91cceb478542921178f83f5a70c6" +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typeof-symbol@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-rc.2.tgz#3c9a0721f54ad8bbc8f469b6720304d843fd1ebe" +"@babel/plugin-transform-typeof-symbol@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-unicode-regex@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-rc.2.tgz#6bc3d9e927151baa3c3715d3c46316ac3d8b4a2e" +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/helper-regex" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/preset-env@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-rc.2.tgz#66f7ed731234b67ee9a6189f1df60203873ac98b" +"@babel/preset-env@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0.tgz#f450f200c14e713f98cb14d113bf0c2cfbb89ca9" dependencies: - "@babel/helper-module-imports" "7.0.0-rc.2" - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-proposal-async-generator-functions" "7.0.0-rc.2" - "@babel/plugin-proposal-json-strings" "7.0.0-rc.2" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-rc.2" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-rc.2" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-rc.2" - "@babel/plugin-syntax-async-generators" "7.0.0-rc.2" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-rc.2" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-rc.2" - "@babel/plugin-transform-arrow-functions" "7.0.0-rc.2" - "@babel/plugin-transform-async-to-generator" "7.0.0-rc.2" - "@babel/plugin-transform-block-scoped-functions" "7.0.0-rc.2" - "@babel/plugin-transform-block-scoping" "7.0.0-rc.2" - "@babel/plugin-transform-classes" "7.0.0-rc.2" - "@babel/plugin-transform-computed-properties" "7.0.0-rc.2" - "@babel/plugin-transform-destructuring" "7.0.0-rc.2" - "@babel/plugin-transform-dotall-regex" "7.0.0-rc.2" - "@babel/plugin-transform-duplicate-keys" "7.0.0-rc.2" - "@babel/plugin-transform-exponentiation-operator" "7.0.0-rc.2" - "@babel/plugin-transform-for-of" "7.0.0-rc.2" - "@babel/plugin-transform-function-name" "7.0.0-rc.2" - "@babel/plugin-transform-literals" "7.0.0-rc.2" - "@babel/plugin-transform-modules-amd" "7.0.0-rc.2" - "@babel/plugin-transform-modules-commonjs" "7.0.0-rc.2" - "@babel/plugin-transform-modules-systemjs" "7.0.0-rc.2" - "@babel/plugin-transform-modules-umd" "7.0.0-rc.2" - "@babel/plugin-transform-new-target" "7.0.0-rc.2" - "@babel/plugin-transform-object-super" "7.0.0-rc.2" - "@babel/plugin-transform-parameters" "7.0.0-rc.2" - "@babel/plugin-transform-regenerator" "7.0.0-rc.2" - "@babel/plugin-transform-shorthand-properties" "7.0.0-rc.2" - "@babel/plugin-transform-spread" "7.0.0-rc.2" - "@babel/plugin-transform-sticky-regex" "7.0.0-rc.2" - "@babel/plugin-transform-template-literals" "7.0.0-rc.2" - "@babel/plugin-transform-typeof-symbol" "7.0.0-rc.2" - "@babel/plugin-transform-unicode-regex" "7.0.0-rc.2" - browserslist "^3.0.0" + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.0.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + browserslist "^4.1.0" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.3.0" -"@babel/preset-react@^7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0-rc.2.tgz#5430f089db83095df4cf134b2e8e8c39619ca60c" +"@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.2" - "@babel/plugin-transform-react-display-name" "7.0.0-rc.2" - "@babel/plugin-transform-react-jsx" "7.0.0-rc.2" - "@babel/plugin-transform-react-jsx-self" "7.0.0-rc.2" - "@babel/plugin-transform-react-jsx-source" "7.0.0-rc.2" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/template@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" +"@babel/template@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - lodash "^4.2.0" + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/template@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-rc.2.tgz#53f6be6c1336ddc7744625c9bdca9d10be5d5d72" +"@babel/traverse@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" dependencies: - "@babel/code-frame" "7.0.0-rc.2" - "@babel/parser" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" - -"@babel/traverse@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/generator" "7.0.0-beta.44" - "@babel/helper-function-name" "7.0.0-beta.44" - "@babel/helper-split-export-declaration" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - debug "^3.1.0" - globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.2.0" - -"@babel/traverse@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-rc.2.tgz#6e54ebe82aa1b3b3cf5ec05594bc14d7c59c9766" - dependencies: - "@babel/code-frame" "7.0.0-rc.2" - "@babel/generator" "7.0.0-rc.2" - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/helper-split-export-declaration" "7.0.0-rc.2" - "@babel/parser" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" debug "^3.1.0" globals "^11.1.0" lodash "^4.17.10" -"@babel/types@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^2.0.0" - -"@babel/types@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-rc.2.tgz#8e025b78764cee8751823e308558a3ca144ebd9d" +"@babel/types@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -943,6 +881,10 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" +ansi-colors@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -1221,12 +1163,12 @@ autolinker@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-1.7.1.tgz#36397dd0c09c369433142677b5247ed4c9d2d705" -autoprefixer@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.1.2.tgz#73672614e3ee43a433b84c1c2a4b1ca392d2f6a1" +autoprefixer@^9.1.3: + version "9.1.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.1.3.tgz#bd5940ccb9d1bfa3508308659915f0a14394c8d5" dependencies: browserslist "^4.0.2" - caniuse-lite "^1.0.30000877" + caniuse-lite "^1.0.30000878" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.2" @@ -1286,14 +1228,14 @@ babel-core@^7.0.0-0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" -babel-eslint@^8.2.6: - version "8.2.6" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" +babel-eslint@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/traverse" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" @@ -1324,9 +1266,9 @@ babel-jest@^23.4.2: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" -babel-loader@^8.0.0-beta: - version "8.0.0-beta.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.6.tgz#e28e51e8bd118b97861e6d14880684116e979f30" +babel-loader@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0.tgz#c42f2bef268d0d8bb4ceec5d02b540a9055d58a0" dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -1415,10 +1357,6 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@7.0.0-beta.44: - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" - babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1640,13 +1578,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.4.tgz#fb9ad70fd09875137ae943a31ab815ed76896031" - dependencies: - caniuse-lite "^1.0.30000821" - electron-to-chromium "^1.3.41" - browserslist@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.0.1.tgz#61c05ce2a5843c7d96166408bc23d58b5416e818" @@ -1663,6 +1594,14 @@ browserslist@^4.0.2: electron-to-chromium "^1.3.57" node-releases "^1.0.0-alpha.11" +browserslist@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.0.tgz#81cbb8e52dfa09918f93c6e051d779cb7360785d" + dependencies: + caniuse-lite "^1.0.30000878" + electron-to-chromium "^1.3.61" + node-releases "^1.0.0-alpha.11" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -1772,14 +1711,14 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000865: version "1.0.30000874" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz#a641b1f1c420d58d9b132920ef6ba87bbdcd2223" -caniuse-lite@^1.0.30000821: - version "1.0.30000833" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000833.tgz#98e84fcdb4399c6fa0b0fd41490d3217ac7802b4" - -caniuse-lite@^1.0.30000876, caniuse-lite@^1.0.30000877: +caniuse-lite@^1.0.30000876: version "1.0.30000878" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz#c644c39588dd42d3498e952234c372e5a40a4123" +caniuse-lite@^1.0.30000878: + version "1.0.30000883" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000883.tgz#597c1eabfb379bd9fbeaa778632762eb574706ac" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2355,9 +2294,9 @@ cssnano-util-same-parent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.0.tgz#d2a3de1039aa98bc4ec25001fa050330c2a16dac" -cssnano@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.0.5.tgz#8789b5fdbe7be05d8a0f7e45c4c789ebe712f5aa" +cssnano@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.0.tgz#682c37b84b9b7df616450a5a8dc9269b9bd10734" dependencies: cosmiconfig "^5.0.0" cssnano-preset-default "^4.0.0" @@ -2666,10 +2605,6 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -electron-to-chromium@^1.3.41: - version "1.3.45" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz#458ac1b1c5c760ce8811a16d2bfbd97ec30bafb8" - electron-to-chromium@^1.3.52: version "1.3.57" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.57.tgz#61b2446f16af26fb8873210007a7637ad644c82d" @@ -2678,6 +2613,10 @@ electron-to-chromium@^1.3.57: version "1.3.59" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.59.tgz#6377db04d8d3991d6286c72ed5c3fde6f4aaf112" +electron-to-chromium@^1.3.61: + version "1.3.62" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.62.tgz#2e8e2dc070c800ec8ce23ff9dfcceb585d6f9ed8" + elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -3435,9 +3374,9 @@ form-data@~2.3.1: combined-stream "1.0.6" mime-types "^2.1.12" -formik@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/formik/-/formik-1.0.3.tgz#73972b8c91d0ee22cb30f00766cdb0019d40177e" +formik@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formik/-/formik-1.1.1.tgz#078e6b7ff09d040ad63a30058e1ce8f1c0ad59cb" dependencies: create-react-context "^0.2.2" deepmerge "^2.1.1" @@ -4116,7 +4055,7 @@ interpret@^1.0.0, interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" -invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.0.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -5185,7 +5124,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -5193,19 +5132,6 @@ lodash@^4.17.10: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - -loglevelnext@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - long@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -5386,7 +5312,7 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^2.1.0: +mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -5762,7 +5688,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0: +object.assign@^4.0.4: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" dependencies: @@ -6638,9 +6564,9 @@ react-fast-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-1.0.0.tgz#813a039155e49b43ceffe99528fe5e9d97a6c938" -react-hot-loader@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.4.tgz#4f9bdd55bb20d77a6ae8931fa1c187e5f0ce6279" +react-hot-loader@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.5.tgz#d8659839d8072d4b78938a776f29f5f1d2a40170" dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -7570,9 +7496,9 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -style-loader@^0.22.1: - version "0.22.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.22.1.tgz#901ea28aac78fcc00c5075585ac07d7ef3f87a52" +style-loader@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" @@ -8067,6 +7993,10 @@ uuid@^3.0.0, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + v8flags@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.0.tgz#246a34a8158c0e1390dcb758e1140e5d004e230b" @@ -8200,17 +8130,17 @@ webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-dev-middleware@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed" +webpack-dev-middleware@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" - mime "^2.1.0" + mime "^2.3.1" path-is-absolute "^1.0.0" range-parser "^1.0.3" url-join "^4.0.0" - webpack-log "^1.0.1" + webpack-log "^2.0.0" webpack-hot-middleware@^2.22.3: version "2.22.3" @@ -8221,14 +8151,12 @@ webpack-hot-middleware@^2.22.3: querystring "^0.2.0" strip-ansi "^3.0.0" -webpack-log@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" + ansi-colors "^3.0.0" + uuid "^3.3.2" webpack-sources@^1.0.1, webpack-sources@^1.1.0: version "1.1.0" @@ -8237,9 +8165,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.17.0: - version "4.17.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.0.tgz#7e8df9529dd5fca65c700b3341a001aeae27c749" +webpack@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.1.tgz#0f026e3d823f3fc604f811ed3ea8f0d9b267fb1e" dependencies: "@webassemblyjs/ast" "1.5.13" "@webassemblyjs/helper-module-context" "1.5.13" diff --git a/go.mod b/go.mod index f27bc742..43c6cf11 100644 --- a/go.mod +++ b/go.mod @@ -1,48 +1,71 @@ module github.com/khlieng/dispatch require ( - github.com/RoaringBitmap/roaring v0.0.0-20180423145726-e4aafc3cbc16 // indirect + github.com/BurntSushi/toml v0.3.0 // indirect + github.com/RoaringBitmap/roaring v0.4.16 // indirect github.com/blevesearch/bleve v0.0.0-20180525174403-1d6d47ed3ad9 + github.com/blevesearch/blevex v0.0.0-20180227211930-4b158bb555a3 // indirect github.com/blevesearch/go-porterstemmer v0.0.0-20141230013033-23a2c8e5cf1f // indirect github.com/blevesearch/segment v0.0.0-20160915185041-762005e7a34f // indirect github.com/boltdb/bolt v0.0.0-20180302180052-fd01fc79c553 - github.com/couchbase/vellum v0.0.0-20180427141700-eb6ae3743b3f // indirect - github.com/davecgh/go-spew v1.1.0 // indirect - github.com/dsnet/compress v0.0.0-20160704023633-b9aab3c6a04e + github.com/couchbase/vellum v0.0.0-20180822133609-0ceea4a37442 // indirect + github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07 // indirect + github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369 // indirect + github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186 // indirect + github.com/dsnet/compress v0.0.0-20171208185109-cc9eb1d7ad76 github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 // indirect + github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 // indirect + github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect + github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect github.com/fsnotify/fsnotify v1.4.7 github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd // indirect - github.com/golang/protobuf v1.1.0 // indirect - github.com/golang/snappy v0.0.0-20170215233205-553a64147049 // indirect - github.com/gorilla/websocket v0.0.0-20180420171612-21ab95fa12b9 - github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce // indirect + github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493 // indirect + github.com/golang/protobuf v1.2.0 // indirect + github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect + github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c // indirect + github.com/gorilla/websocket v1.3.0 + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hpcloud/tail v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/jpillora/backoff v0.0.0-20170222002228-06c7a16c845d - github.com/kjk/betterguid v0.0.0-20150214055115-c70aca50d858 - github.com/magiconair/properties v0.0.0-20180217134545-2c9e95027885 // indirect - github.com/mailru/easyjson v0.0.0-20180323154445-8b799c424f57 - github.com/miekg/dns v0.0.0-20180406150955-01d59357d468 // indirect - github.com/mitchellh/go-homedir v0.0.0-20161203194507-b8bc1bf76747 - github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238 // indirect + github.com/jmhodges/levigo v0.0.0-20161115193449-c42d9e0ca023 // indirect + github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d + github.com/jtolds/gls v4.2.1+incompatible // indirect + github.com/kjk/betterguid v0.0.0-20170621091430-c442874ba63a + github.com/kr/pretty v0.1.0 // indirect + github.com/magiconair/properties v1.8.0 // indirect + github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 + github.com/miekg/dns v1.0.8 // indirect + github.com/mitchellh/go-homedir v1.0.0 + github.com/mitchellh/mapstructure v1.0.0 // indirect github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect - github.com/pelletier/go-toml v0.0.0-20180323185243-66540cf1fcd2 // indirect + github.com/onsi/ginkgo v1.6.0 // indirect + github.com/onsi/gomega v1.4.1 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect github.com/philhofer/fwd v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/spf13/afero v1.1.0 // indirect + github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf // indirect + github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a // indirect + github.com/spf13/afero v1.1.1 // indirect github.com/spf13/cast v1.2.0 github.com/spf13/cobra v0.0.3 - github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec // indirect - github.com/spf13/pflag v1.0.1 // indirect - github.com/spf13/viper v0.0.0-20180404183325-8dc2790b029d + github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834 // indirect + github.com/spf13/pflag v1.0.2 // indirect + github.com/spf13/viper v1.1.0 github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 // indirect - github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1 + github.com/stretchr/testify v1.2.2 + github.com/syndtr/goleveldb v0.0.0-20180815032940-ae2bd5eed72d // indirect + github.com/tecbot/gorocksdb v0.0.0-20180730101644-8b1d981498e1 // indirect github.com/tinylib/msgp v0.0.0-20180215042507-3b5c87ab5fb0 // indirect github.com/willf/bitset v1.1.9 // indirect - github.com/xenolf/lego v0.0.0-20180425151241-8e9c5ac3e6bf - golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307 // indirect - golang.org/x/net v0.0.0-20180420171651-5f9ae10d9af5 - golang.org/x/sys v0.0.0-20180501092740-78d5f264b493 // indirect + github.com/xenolf/lego v1.0.1 + golang.org/x/crypto v0.0.0-20180830192347-182538f80094 // indirect + golang.org/x/net v0.0.0-20180826012351-8a410e7b638d + golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f // indirect + golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 // indirect golang.org/x/text v0.0.0-20180410181320-7922cc490dd5 // indirect - gopkg.in/square/go-jose.v1 v1.1.0 // indirect + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + gopkg.in/fsnotify.v1 v1.4.7 // indirect + gopkg.in/square/go-jose.v2 v2.1.8 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.2.1 // indirect ) diff --git a/go.sum b/go.sum index 550dd119..a3520398 100644 --- a/go.sum +++ b/go.sum @@ -1,89 +1,141 @@ -github.com/RoaringBitmap/roaring v0.0.0-20180423145726-e4aafc3cbc16 h1:MThrqRbdw6sk/f9gxw+FWpFCK6iSWDWHiAb/0TvlYRs= -github.com/RoaringBitmap/roaring v0.0.0-20180423145726-e4aafc3cbc16/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= +github.com/BurntSushi/toml v0.3.0 h1:e1/Ivsx3Z0FVTV0NSOv/aVgbUWyQuzj7DDnFblkRvsY= +github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/RoaringBitmap/roaring v0.4.16 h1:NholfewybRLOwACgfqfzn/N5xa6keKNs4fP00t0cwLo= +github.com/RoaringBitmap/roaring v0.4.16/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= github.com/blevesearch/bleve v0.0.0-20180525174403-1d6d47ed3ad9 h1:q25+axgzH1KX+j63v3yrkY1VHc6PkyTfpnzOmtAH154= github.com/blevesearch/bleve v0.0.0-20180525174403-1d6d47ed3ad9/go.mod h1:Y2lmIkzV6mcNfAnAdOd+ZxHkHchhBfU/xroGIp61wfw= +github.com/blevesearch/blevex v0.0.0-20180227211930-4b158bb555a3 h1:U6vnxZrTfItfiUiYx0lf/LgHjRSfaKK5QHSom3lEbnA= +github.com/blevesearch/blevex v0.0.0-20180227211930-4b158bb555a3/go.mod h1:WH+MU2F4T0VmSdaPX+Wu5GYoZBrYWdOZWSjzvYcDmqQ= github.com/blevesearch/go-porterstemmer v0.0.0-20141230013033-23a2c8e5cf1f h1:J9ZVHbB2X6JNxbKw/f3Y4E9Xq+Ro+zPiivzgmi3RTvg= github.com/blevesearch/go-porterstemmer v0.0.0-20141230013033-23a2c8e5cf1f/go.mod h1:haWQqFT3RdOGz7PJuM3or/pWNJS1pKkoZJWCkWu0DVA= github.com/blevesearch/segment v0.0.0-20160915185041-762005e7a34f h1:kqbi9lqXLLs+zfWlgo1PIiRQ86n33K1JKotjj4rSYOg= github.com/blevesearch/segment v0.0.0-20160915185041-762005e7a34f/go.mod h1:IInt5XRvpiGE09KOk9mmCMLjHhydIhNPKPPFLFBB7L8= github.com/boltdb/bolt v0.0.0-20180302180052-fd01fc79c553 h1:yvSJ8qbaWLeS7COhu2KJ0epn4mmc+aGeBP7Dpg7xQTY= github.com/boltdb/bolt v0.0.0-20180302180052-fd01fc79c553/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/couchbase/vellum v0.0.0-20180427141700-eb6ae3743b3f h1:Jjz4kKvBsSuO5uHrFU3cP3QV9Q9rY+8gjax+pQhVrck= -github.com/couchbase/vellum v0.0.0-20180427141700-eb6ae3743b3f/go.mod h1:prYTC8EgTu3gwbqJihkud9zRXISvyulAplQ6exdCo1g= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dsnet/compress v0.0.0-20160704023633-b9aab3c6a04e h1:lvxyV8HsE4ye/qPwX+yHMypdTbwA7lpbrZ8s+n+W/MY= -github.com/dsnet/compress v0.0.0-20160704023633-b9aab3c6a04e/go.mod h1:KjxHHirfLaw19iGT70HvVjHQsL1vq1SRQB4yOsAfy2s= +github.com/couchbase/vellum v0.0.0-20180822133609-0ceea4a37442 h1:gCXKsqWDJ/vxUXbtowgP0PfXm3etTapmDP19yu0lHSg= +github.com/couchbase/vellum v0.0.0-20180822133609-0ceea4a37442/go.mod h1:prYTC8EgTu3gwbqJihkud9zRXISvyulAplQ6exdCo1g= +github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07 h1:UHFGPvSxX4C4YBApSPvmUfL8tTvWLj2ryqvT9K4Jcuk= +github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= +github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369 h1:XNT/Zf5l++1Pyg08/HV04ppB0gKxAqtZQBRYiYrUuYk= +github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= +github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186 h1:0rkFMAbn5KBKNpJyHQ6Prb95vIKanmAe62KxsrN+sqA= +github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dsnet/compress v0.0.0-20171208185109-cc9eb1d7ad76 h1:eX+pdPPlD279OWgdx7f6KqIRSONuK7egk+jDx7OM3Ac= +github.com/dsnet/compress v0.0.0-20171208185109-cc9eb1d7ad76/go.mod h1:KjxHHirfLaw19iGT70HvVjHQsL1vq1SRQB4yOsAfy2s= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 h1:aaQcKT9WumO6JEJcRyTqFVq4XUZiUcKR2/GI31TOcz8= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= +github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= +github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd h1:r04MMPyLHj/QwZuMJ5+7tJcBr1AQjpiAK/rZWRrQT7o= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/snappy v0.0.0-20170215233205-553a64147049 h1:K9KHZbXKpGydfDN0aZrsoHpLJlZsBrGMFWbgLDGnPZk= -github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gorilla/websocket v0.0.0-20180420171612-21ab95fa12b9 h1:XM0qkx9Su0WV9s1e5A7xr9ZX0NUYxp7L0cbmJGjKZio= -github.com/gorilla/websocket v0.0.0-20180420171612-21ab95fa12b9/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce h1:xdsDDbiBDQTKASoGEZ+pEmF1OnWuu8AQ9I8iNbHNeno= -github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493 h1:OTanQnFt0bi5iLFSdbEVA/idR6Q2WhCm+deb7ir2CcM= +github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c h1:16eHWuMGvCjSfgRJKqIzapE78onvvTbdi1rMkU00lZw= +github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.3.0 h1:r/LXc0VJIMd0rCMsc6DxgczaQtoCwCLatnfXmSYcXx8= +github.com/gorilla/websocket v1.3.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jpillora/backoff v0.0.0-20170222002228-06c7a16c845d h1:ETeT81zgLgSNc4BWdDO2Fg9ekVItYErbNtE8mKD2pJA= -github.com/jpillora/backoff v0.0.0-20170222002228-06c7a16c845d/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= -github.com/kjk/betterguid v0.0.0-20150214055115-c70aca50d858 h1:E7Jdj4zTHbmE4UpJ6oW1zjkDsFN15Ga+aa1K46lO54A= -github.com/kjk/betterguid v0.0.0-20150214055115-c70aca50d858/go.mod h1:uxRAhHE1nl34DpWgfe0CYbNYbCnYplaB6rZH9ReWtUk= -github.com/magiconair/properties v0.0.0-20180217134545-2c9e95027885 h1:HWxJJvF+QceKcql4r9PC93NtMEgEBfBxlQrZPvbcQvs= -github.com/magiconair/properties v0.0.0-20180217134545-2c9e95027885/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20180323154445-8b799c424f57 h1:qhv1ir3dIyOFmFU+5KqG4dF3zSQTA4nn1DFhu2NQC44= -github.com/mailru/easyjson v0.0.0-20180323154445-8b799c424f57/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/miekg/dns v0.0.0-20180406150955-01d59357d468 h1:XExh3YL9jT+Iv7Kn5SxUBimacGRPt7TEaJ78ibq/3Ng= -github.com/miekg/dns v0.0.0-20180406150955-01d59357d468/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/go-homedir v0.0.0-20161203194507-b8bc1bf76747 h1:eQox4Rh4ewJF+mqYPxCkmBAirRnPaHEB26UkNuPyjlk= -github.com/mitchellh/go-homedir v0.0.0-20161203194507-b8bc1bf76747/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238 h1:+MZW2uvHgN8kYvksEN3f7eFL2wpzk0GxmlFsMybWc7E= -github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/jmhodges/levigo v0.0.0-20161115193449-c42d9e0ca023 h1:y5P5G9cANJZt3MXlMrgELo5mNLZPXH8aGFFFG7IzPU0= +github.com/jmhodges/levigo v0.0.0-20161115193449-c42d9e0ca023/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d h1:ix3WmphUvN0GDd0DO9MH0v6/5xTv+Xm1bPN+1UJn58k= +github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= +github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kjk/betterguid v0.0.0-20170621091430-c442874ba63a h1:b+Gt8sQs//Sl5Dcem5zP9Qc2FgEUAygREa2AAa2Vmcw= +github.com/kjk/betterguid v0.0.0-20170621091430-c442874ba63a/go.mod h1:uxRAhHE1nl34DpWgfe0CYbNYbCnYplaB6rZH9ReWtUk= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 h1:2gxZ0XQIU/5z3Z3bUBu+FXuk2pFbkN6tcwi/pjyaDic= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/miekg/dns v1.0.8 h1:Zi8HNpze3NeRWH1PQV6O71YcvJRQ6j0lORO6DAEmAAI= +github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.0.0 h1:vVpGvMXJPqSDh2VYHF7gsfQj8Ncx+Xw5Y1KHeTRY+7I= +github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae h1:VeRdUYdCw49yizlSbMEn2SZ+gT+3IUKx8BqxyQdz+BY= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= -github.com/pelletier/go-toml v0.0.0-20180323185243-66540cf1fcd2 h1:BR4UJUSGxC9crpVRG7k28Mq2HRB7lO2A3/ghfWl0R+M= -github.com/pelletier/go-toml v0.0.0-20180323185243-66540cf1fcd2/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.1 h1:PZSj/UFNaVp3KxrzHOcS7oyuWA7LoOY/77yCTEFu21U= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/spf13/afero v1.1.0 h1:bopulORc2JeYaxfHLvJa5NzxviA9PoWhpiiJkru7Ji4= -github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf h1:6V1qxN6Usn4jy8unvggSJz/NC790tefw8Zdy6OZS5co= +github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a h1:JSvGDIbmil4Ui/dDdFBExb7/cmkNjyX5F97oglmvCDo= +github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/spf13/afero v1.1.1 h1:Lt3ihYMlE+lreX1GS4Qw4ZsNpYQLxIXKBTEOXm3nt6I= +github.com/spf13/afero v1.1.1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.2.0 h1:HHl1DSRbEQN2i8tJmtS6ViPyHx35+p51amrdsiTCrkg= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec h1:2ZXvIUGghLpdTVHR1UfvfrzoVlZaE/yOWC5LueIHZig= -github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v0.0.0-20180404183325-8dc2790b029d h1:L8nQzf8HvZkwRTWjJb7O5Fww1fk6WtNaDr07G6tyJ/E= -github.com/spf13/viper v0.0.0-20180404183325-8dc2790b029d/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834 h1:kJI9pPzfsULT/72wy7mxkRQZPtKWgFdCA2RTGZ4v8/E= +github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.2 h1:Fy0orTDgHdbnzHcsOgfCN4LtHf0ec3wwtiwJqwvf3Gc= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.1.0 h1:V7OZpY8i3C1x/pDmU0zNNlfVoDz112fSYvtWMjjS3f4= +github.com/spf13/viper v1.1.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 h1:JNEGSiWg6D3lcBCMCBqN3ELniXujt+0QNHLhNnO0w3s= github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2/go.mod h1:mjqs7N0Q6m5HpR7QfXVBZXZWSqTjQLeTujjA/xUp2uw= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1 h1:Zx8Rp9ozC4FPFxfEKRSUu8+Ay3sZxEUZ7JrCWMbGgvE= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/syndtr/goleveldb v0.0.0-20180815032940-ae2bd5eed72d h1:4J9HCZVpvDmj2tiKGSTUnb3Ok/9CEQb9oqu9LHKQQpc= +github.com/syndtr/goleveldb v0.0.0-20180815032940-ae2bd5eed72d/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/tecbot/gorocksdb v0.0.0-20180730101644-8b1d981498e1 h1:RHZn+N/7zUNd1vhTmoy4OUcizIHrhskE7kR3v2HEMTg= +github.com/tecbot/gorocksdb v0.0.0-20180730101644-8b1d981498e1/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tinylib/msgp v0.0.0-20180215042507-3b5c87ab5fb0 h1:uAwzi+JwkDdOtQZVqPYljFvJr7i43ZgUYXKypk9Eibk= github.com/tinylib/msgp v0.0.0-20180215042507-3b5c87ab5fb0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/willf/bitset v1.1.9 h1:GBtFynGY9ZWZmEC9sWuu41/7VBXPFCOAbCbqTflOg9c= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/xenolf/lego v0.0.0-20180425151241-8e9c5ac3e6bf h1:SVIcFbJClninU2W9ktlKgSKtowYzxQcPIo5UhRZ7zy0= -github.com/xenolf/lego v0.0.0-20180425151241-8e9c5ac3e6bf/go.mod h1:fwiGnfsIjG7OHPfOvgK7Y/Qo6+2Ox0iozjNTkZICKbY= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307 h1:O5C+XK++apFo5B+Vq4ujc/LkLwHxg9fDdgjgoIikBdA= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/net v0.0.0-20180420171651-5f9ae10d9af5 h1:ylIG3jIeS45kB0W95N19kS62fwermjMYLIyybf8xh9M= -golang.org/x/net v0.0.0-20180420171651-5f9ae10d9af5/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/sys v0.0.0-20180501092740-78d5f264b493 h1:IdoM71H+6PmWKfe808vA3uKntXqEtc9yMa7A8TxcVVg= -golang.org/x/sys v0.0.0-20180501092740-78d5f264b493/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +github.com/xenolf/lego v1.0.1 h1:Rr9iqO8MoNxY6OvqdIZTnNZ8bwt0RNz00nGXfoTq4Bc= +github.com/xenolf/lego v1.0.1/go.mod h1:fwiGnfsIjG7OHPfOvgK7Y/Qo6+2Ox0iozjNTkZICKbY= +golang.org/x/crypto v0.0.0-20180830192347-182538f80094 h1:rVTAlhYa4+lCfNxmAIEOGQRoD23UqP72M3+rSWVGDTg= +golang.org/x/crypto v0.0.0-20180830192347-182538f80094/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.0.0-20180410181320-7922cc490dd5 h1:JuX0hiV/F4xp4w8qqbN49Nsatovt4Kckp6J/5EbNi9Y= golang.org/x/text v0.0.0-20180410181320-7922cc490dd5/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/square/go-jose.v1 v1.1.0 h1:T/KcERvxOFKL2QzwvOsP0l5xRvvhTlwcTxw5qad61pQ= -gopkg.in/square/go-jose.v1 v1.1.0/go.mod h1:QpYS+a4WhS+DTlyQIi6Ka7MS3SuR9a055rgXNEe6EiA= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/square/go-jose.v2 v2.1.8 h1:yECBkTX7ypNaRFILw4trAAYXRLvcGxTeHCBKj/fc8gU= +gopkg.in/square/go-jose.v2 v2.1.8/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/pkg/letsencrypt/letsencrypt.go b/pkg/letsencrypt/letsencrypt.go index ff8ae262..80b47f2f 100644 --- a/pkg/letsencrypt/letsencrypt.go +++ b/pkg/letsencrypt/letsencrypt.go @@ -11,7 +11,7 @@ import ( "github.com/xenolf/lego/acme" ) -const URL = "https://acme-v01.api.letsencrypt.org/directory" +const URL = "https://acme-v02.api.letsencrypt.org/directory" const KeySize = 2048 var directory Directory @@ -28,16 +28,10 @@ func Run(dir, domain, email, port string) (*state, error) { if err != nil { return nil, err } - client.ExcludeChallenges([]acme.Challenge{acme.TLSSNI01}) client.SetHTTPAddress(port) if user.Registration == nil { - user.Registration, err = client.Register() - if err != nil { - return nil, err - } - - err = client.AgreeToTOS() + user.Registration, err = client.Register(true) if err != nil { return nil, err } @@ -97,7 +91,7 @@ func (s *state) getCertPEM() []byte { return certPEM } -func (s *state) setCert(meta acme.CertificateResource) { +func (s *state) setCert(meta *acme.CertificateResource) { cert, err := tls.X509KeyPair(meta.Certificate, meta.PrivateKey) if err == nil { s.lock.Lock() @@ -126,23 +120,15 @@ func (s *state) setOCSP(ocsp []byte) { } func (s *state) obtain() error { - cert, errors := s.client.ObtainCertificate([]string{s.domain}, true, nil, false) - if err := errors[s.domain]; err != nil { - if _, ok := err.(acme.TOSError); ok { - err := s.client.AgreeToTOS() - if err != nil { - return err - } - return s.obtain() - } - + cert, err := s.client.ObtainCertificate([]string{s.domain}, true, nil, false) + if err != nil { return err } s.setCert(cert) s.refreshOCSP() - err := saveCert(cert) + err = saveCert(cert) if err != nil { return err } @@ -182,16 +168,8 @@ func (s *state) renew() bool { meta.Certificate = cert meta.PrivateKey = key - Renew: newMeta, err := s.client.RenewCertificate(meta, true, false) if err != nil { - if _, ok := err.(acme.TOSError); ok { - err := s.client.AgreeToTOS() - if err != nil { - return false - } - goto Renew - } return false } @@ -240,7 +218,7 @@ func (s *state) loadCert() error { return err } - s.setCert(acme.CertificateResource{ + s.setCert(&acme.CertificateResource{ Certificate: cert, PrivateKey: key, }) @@ -258,7 +236,7 @@ func certExists(domain string) bool { return true } -func saveCert(cert acme.CertificateResource) error { +func saveCert(cert *acme.CertificateResource) error { err := os.MkdirAll(directory.Domain(cert.Domain), 0700) if err != nil { return err diff --git a/vendor/github.com/RoaringBitmap/roaring/.travis.yml b/vendor/github.com/RoaringBitmap/roaring/.travis.yml index 1fdcf3e0..5dec9637 100644 --- a/vendor/github.com/RoaringBitmap/roaring/.travis.yml +++ b/vendor/github.com/RoaringBitmap/roaring/.travis.yml @@ -8,10 +8,10 @@ install: notifications: email: false go: -- 1.7.x -- 1.8.x -- 1.9.x -- 1.10.x +- "1.7.x" +- "1.8.x" +- "1.9.x" +- "1.10.x" - tip # whitelist diff --git a/vendor/github.com/RoaringBitmap/roaring/AUTHORS b/vendor/github.com/RoaringBitmap/roaring/AUTHORS index 08c07404..26ec99de 100644 --- a/vendor/github.com/RoaringBitmap/roaring/AUTHORS +++ b/vendor/github.com/RoaringBitmap/roaring/AUTHORS @@ -7,4 +7,5 @@ Bob Potter (@bpot), Tyson Maly (@tvmaly), Will Glynn (@willglynn), Brent Pedersen (@brentp) -Maciej Biłas (@maciej) +Maciej Biłas (@maciej), +Joe Nall (@joenall) diff --git a/vendor/github.com/RoaringBitmap/roaring/CONTRIBUTORS b/vendor/github.com/RoaringBitmap/roaring/CONTRIBUTORS index 70b4735d..e7fc04fb 100644 --- a/vendor/github.com/RoaringBitmap/roaring/CONTRIBUTORS +++ b/vendor/github.com/RoaringBitmap/roaring/CONTRIBUTORS @@ -9,4 +9,6 @@ Will Glynn (@willglynn), Brent Pedersen (@brentp), Jason E. Aten (@glycerine), Vali Malinoiu (@0x4139), -Forud Ghafouri (@fzerorubigd) \ No newline at end of file +Forud Ghafouri (@fzerorubigd), +Joe Nall (@joenall), +(@fredim) diff --git a/vendor/github.com/RoaringBitmap/roaring/Makefile b/vendor/github.com/RoaringBitmap/roaring/Makefile index d5259b4c..c489376a 100644 --- a/vendor/github.com/RoaringBitmap/roaring/Makefile +++ b/vendor/github.com/RoaringBitmap/roaring/Makefile @@ -1,4 +1,4 @@ -.PHONY: help all test format fmtcheck vet lint qa deps clean nuke rle backrle ser fetch-real-roaring-datasets +.PHONY: help all test format fmtcheck vet lint qa deps clean nuke ser fetch-real-roaring-datasets @@ -97,18 +97,8 @@ nuke: rm -rf ./target GOPATH=$(GOPATH) go clean -i ./... -rle: - cp rle.go rle16.go - perl -pi -e 's/32/16/g' rle16.go - cp rle_test.go rle16_test.go - perl -pi -e 's/32/16/g' rle16_test.go -backrle: - cp rle16.go rle.go - perl -pi -e 's/16/32/g' rle.go - perl -pi -e 's/2032/2016/g' rle.go - -ser: rle +ser: go generate cover: diff --git a/vendor/github.com/RoaringBitmap/roaring/README.md b/vendor/github.com/RoaringBitmap/roaring/README.md index 2c096ce8..a3e766d4 100644 --- a/vendor/github.com/RoaringBitmap/roaring/README.md +++ b/vendor/github.com/RoaringBitmap/roaring/README.md @@ -133,6 +133,7 @@ func main() { if rb1.Equals(newrb) { fmt.Println("I wrote the content to a byte stream and read it back.") } + // you can iterate over bitmaps using ReverseIterator(), Iterator, ManyIterator() } ``` diff --git a/vendor/github.com/RoaringBitmap/roaring/arraycontainer.go b/vendor/github.com/RoaringBitmap/roaring/arraycontainer.go index c3958682..8b1a6c89 100644 --- a/vendor/github.com/RoaringBitmap/roaring/arraycontainer.go +++ b/vendor/github.com/RoaringBitmap/roaring/arraycontainer.go @@ -28,6 +28,10 @@ func (ac *arrayContainer) getShortIterator() shortIterable { return &shortIterator{ac.content, 0} } +func (ac *arrayContainer) getReverseIterator() shortIterable { + return &reverseIterator{ac.content, len(ac.content) - 1} +} + func (ac *arrayContainer) getManyIterator() manyIterable { return &manyIterator{ac.content, 0} } @@ -115,7 +119,6 @@ func (ac *arrayContainer) iremoveRange(firstOfRange, endx int) container { // flip the values in the range [firstOfRange,endx) func (ac *arrayContainer) not(firstOfRange, endx int) container { if firstOfRange >= endx { - //p("arrayContainer.not(): exiting early with ac.clone()") return ac.clone() } return ac.notClose(firstOfRange, endx-1) // remove everything in [firstOfRange,endx-1] @@ -124,18 +127,15 @@ func (ac *arrayContainer) not(firstOfRange, endx int) container { // flip the values in the range [firstOfRange,lastOfRange] func (ac *arrayContainer) notClose(firstOfRange, lastOfRange int) container { if firstOfRange > lastOfRange { // unlike add and remove, not uses an inclusive range [firstOfRange,lastOfRange] - //p("arrayContainer.notClose(): exiting early with ac.clone()") return ac.clone() } // determine the span of array indices to be affected^M startIndex := binarySearch(ac.content, uint16(firstOfRange)) - //p("startIndex=%v", startIndex) if startIndex < 0 { startIndex = -startIndex - 1 } lastIndex := binarySearch(ac.content, uint16(lastOfRange)) - //p("lastIndex=%v", lastIndex) if lastIndex < 0 { lastIndex = -lastIndex - 2 } @@ -144,9 +144,7 @@ func (ac *arrayContainer) notClose(firstOfRange, lastOfRange int) container { newValuesInRange := spanToBeFlipped - currentValuesInRange cardinalityChange := newValuesInRange - currentValuesInRange newCardinality := len(ac.content) + cardinalityChange - //p("new card is %v", newCardinality) if newCardinality > arrayDefaultMaxSize { - //p("new card over arrayDefaultMaxSize, so returning bitmap") return ac.toBitmapContainer().not(firstOfRange, lastOfRange+1) } answer := newArrayContainer() @@ -503,7 +501,6 @@ func (ac *arrayContainer) lazyorArray(value2 *arrayContainer) container { } func (ac *arrayContainer) and(a container) container { - //p("ac.and() called") switch x := a.(type) { case *arrayContainer: return ac.andArray(x) @@ -550,7 +547,7 @@ func (ac *arrayContainer) iand(a container) container { return ac.iandBitmap(x) case *runContainer16: if x.isFull() { - return ac.clone() + return ac } return x.andArray(ac) } @@ -722,7 +719,6 @@ func (ac *arrayContainer) inot(firstOfRange, endx int) container { // flip the values in the range [firstOfRange,lastOfRange] func (ac *arrayContainer) inotClose(firstOfRange, lastOfRange int) container { - //p("ac.inotClose() starting") if firstOfRange > lastOfRange { // unlike add and remove, not uses an inclusive range [firstOfRange,lastOfRange] return ac } @@ -745,7 +741,6 @@ func (ac *arrayContainer) inotClose(firstOfRange, lastOfRange int) container { if cardinalityChange > 0 { if newCardinality > len(ac.content) { if newCardinality > arrayDefaultMaxSize { - //p("ac.inotClose() converting to bitmap and doing inot there") bcRet := ac.toBitmapContainer() bcRet.inot(firstOfRange, lastOfRange+1) *ac = *bcRet.toArrayContainer() @@ -766,7 +761,6 @@ func (ac *arrayContainer) inotClose(firstOfRange, lastOfRange int) container { } } ac.content = ac.content[:newCardinality] - //p("bottom of ac.inotClose(): returning ac") return ac } @@ -958,3 +952,17 @@ func (ac *arrayContainer) toEfficientContainer() container { func (ac *arrayContainer) containerType() contype { return arrayContype } + +func (ac *arrayContainer) addOffset(x uint16) []container { + low := &arrayContainer{} + high := &arrayContainer{} + for _, val := range ac.content { + y := uint32(val) + uint32(x) + if highbits(y) > 0 { + high.content = append(high.content, lowbits(y)) + } else { + low.content = append(low.content, lowbits(y)) + } + } + return []container{low, high} +} diff --git a/vendor/github.com/RoaringBitmap/roaring/arraycontainer_gen.go b/vendor/github.com/RoaringBitmap/roaring/arraycontainer_gen.go index cba6e53e..6ee670ee 100644 --- a/vendor/github.com/RoaringBitmap/roaring/arraycontainer_gen.go +++ b/vendor/github.com/RoaringBitmap/roaring/arraycontainer_gen.go @@ -6,7 +6,7 @@ package roaring import "github.com/tinylib/msgp/msgp" -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *arrayContainer) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -49,7 +49,7 @@ func (z *arrayContainer) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *arrayContainer) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 1 // write "content" @@ -70,7 +70,7 @@ func (z *arrayContainer) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *arrayContainer) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 1 @@ -83,7 +83,7 @@ func (z *arrayContainer) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *arrayContainer) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -127,7 +127,7 @@ func (z *arrayContainer) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *arrayContainer) Msgsize() (s int) { s = 1 + 8 + msgp.ArrayHeaderSize + (len(z.content) * (msgp.Uint16Size)) return diff --git a/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer.go b/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer.go index c4eeae18..74b7a17c 100644 --- a/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer.go +++ b/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer.go @@ -118,6 +118,36 @@ func (bc *bitmapContainer) getShortIterator() shortIterable { return newBitmapContainerShortIterator(bc) } +type reverseBitmapContainerShortIterator struct { + ptr *bitmapContainer + i int +} + +func (bcsi *reverseBitmapContainerShortIterator) next() uint16 { + if bcsi.i == -1 { + panic("reverseBitmapContainerShortIterator.next() going beyond what is available") + } + + j := bcsi.i + bcsi.i = bcsi.ptr.PrevSetBit(bcsi.i - 1) + return uint16(j) +} + +func (bcsi *reverseBitmapContainerShortIterator) hasNext() bool { + return bcsi.i >= 0 +} + +func newReverseBitmapContainerShortIterator(a *bitmapContainer) *reverseBitmapContainerShortIterator { + if a.cardinality == 0 { + return &reverseBitmapContainerShortIterator{a, -1} + } + return &reverseBitmapContainerShortIterator{a, int(a.maximum())} +} + +func (bc *bitmapContainer) getReverseIterator() shortIterable { + return newReverseBitmapContainerShortIterator(bc) +} + type bitmapContainerManyIterator struct { ptr *bitmapContainer base int @@ -131,7 +161,7 @@ func (bcmi *bitmapContainerManyIterator) nextMany(hs uint32, buf []uint32) int { for n < len(buf) { if bitset == 0 { - base += 1 + base++ if base >= len(bcmi.ptr.bitmap) { bcmi.base = base bcmi.bitset = bitset @@ -177,16 +207,13 @@ func bitmapContainerSizeInBytes() int { func bitmapEquals(a, b []uint64) bool { if len(a) != len(b) { - //p("bitmaps differ on length. len(a)=%v; len(b)=%v", len(a), len(b)) return false } for i, v := range a { if v != b[i] { - //p("bitmaps differ on element i=%v", i) return false } } - //p("bitmapEquals returning true") return true } @@ -209,9 +236,7 @@ func (bc *bitmapContainer) fillLeastSignificant16bits(x []uint32, i int, mask ui func (bc *bitmapContainer) equals(o container) bool { srb, ok := o.(*bitmapContainer) if ok { - //p("bitmapContainers.equals: both are bitmapContainers") if srb.cardinality != bc.cardinality { - //p("bitmapContainers.equals: card differs: %v vs %v", srb.cardinality, bc.cardinality) return false } return bitmapEquals(bc.bitmap, srb.bitmap) @@ -261,12 +286,6 @@ func (bc *bitmapContainer) iremoveReturnMinimized(i uint16) container { // iremove returns true if i was found. func (bc *bitmapContainer) iremove(i uint16) bool { - /* branchless code - w := bc.bitmap[i>>6] - mask := uint64(1) << (i % 64) - neww := w &^ mask - bc.cardinality -= int((w ^ neww) >> (i % 64)) - bc.bitmap[i>>6] = neww */ if bc.contains(i) { bc.cardinality-- bc.bitmap[i/64] &^= (uint64(1) << (i % 64)) @@ -306,14 +325,10 @@ func (bc *bitmapContainer) iremoveRange(firstOfRange, lastOfRange int) container // flip all values in range [firstOfRange,endx) func (bc *bitmapContainer) inot(firstOfRange, endx int) container { - p("bc.inot() called with [%v, %v)", firstOfRange, endx) if endx-firstOfRange == maxCapacity { - //p("endx-firstOfRange == maxCapacity") flipBitmapRange(bc.bitmap, firstOfRange, endx) bc.cardinality = maxCapacity - bc.cardinality - //p("bc.cardinality is now %v", bc.cardinality) } else if endx-firstOfRange > maxCapacity/2 { - //p("endx-firstOfRange > maxCapacity/2") flipBitmapRange(bc.bitmap, firstOfRange, endx) bc.computeCardinality() } else { @@ -712,11 +727,11 @@ func (bc *bitmapContainer) getCardinalityInRange(start, end uint) int { endword := (end - 1) / 64 const allones = ^uint64(0) if firstword == endword { - return int(popcount(bc.bitmap[firstword] & ((allones << (start % 64)) & (allones >> (64 - (end % 64)))))) + return int(popcount(bc.bitmap[firstword] & ((allones << (start % 64)) & (allones >> ((64 - end) & 63))))) } answer := popcount(bc.bitmap[firstword] & (allones << (start % 64))) answer += popcntSlice(bc.bitmap[firstword+1 : endword]) - answer += popcount(bc.bitmap[endword] & (allones >> (64 - (end % 64)))) + answer += popcount(bc.bitmap[endword] & (allones >> ((64 - end) & 63))) return int(answer) } @@ -789,8 +804,6 @@ func (bc *bitmapContainer) andNotRun16(rc *runContainer16) container { } func (bc *bitmapContainer) iandNot(a container) container { - //p("bitmapContainer.iandNot() starting") - switch x := a.(type) { case *arrayContainer: return bc.iandNotArray(x) @@ -844,12 +857,15 @@ func (bc *bitmapContainer) andNotBitmap(value2 *bitmapContainer) container { return ac } -func (bc *bitmapContainer) iandNotBitmapSurely(value2 *bitmapContainer) *bitmapContainer { +func (bc *bitmapContainer) iandNotBitmapSurely(value2 *bitmapContainer) container { newCardinality := int(popcntMaskSlice(bc.bitmap, value2.bitmap)) for k := 0; k < len(bc.bitmap); k++ { bc.bitmap[k] = bc.bitmap[k] &^ value2.bitmap[k] } bc.cardinality = newCardinality + if bc.getCardinality() <= arrayDefaultMaxSize { + return bc.toArrayContainer() + } return bc } @@ -917,6 +933,32 @@ func (bc *bitmapContainer) NextSetBit(i int) int { return -1 } +func (bc *bitmapContainer) PrevSetBit(i int) int { + if i < 0 { + return -1 + } + x := i / 64 + if x >= len(bc.bitmap) { + return -1 + } + + w := bc.bitmap[x] + + b := i % 64 + + w = w << uint(63-b) + if w != 0 { + return b - countLeadingZeros(w) + } + x-- + for ; x >= 0; x-- { + if bc.bitmap[x] != 0 { + return (x * 64) + 63 - countLeadingZeros(bc.bitmap[x]) + } + } + return -1 +} + // reference the java implementation // https://github.com/RoaringBitmap/RoaringBitmap/blob/master/src/main/java/org/roaringbitmap/BitmapContainer.java#L875-L892 // @@ -980,3 +1022,35 @@ func newBitmapContainerFromRun(rc *runContainer16) *bitmapContainer { func (bc *bitmapContainer) containerType() contype { return bitmapContype } + +func (bc *bitmapContainer) addOffset(x uint16) []container { + low := newBitmapContainer() + high := newBitmapContainer() + b := uint32(x) >> 6 + i := uint32(x) % 64 + end := uint32(1024) - b + if i == 0 { + copy(low.bitmap[b:], bc.bitmap[:end]) + copy(high.bitmap[:b], bc.bitmap[end:]) + } else { + low.bitmap[b] = bc.bitmap[0] << i + for k := uint32(1); k < end; k++ { + newval := bc.bitmap[k] << i + if newval == 0 { + newval = bc.bitmap[k-1] >> (64 - i) + } + low.bitmap[b+k] = newval + } + for k := end; k < 1024; k++ { + newval := bc.bitmap[k] << i + if newval == 0 { + newval = bc.bitmap[k-1] >> (64 - i) + } + high.bitmap[k-end] = newval + } + high.bitmap[b] = bc.bitmap[1023] >> (64 - i) + } + low.computeCardinality() + high.computeCardinality() + return []container{low, high} +} diff --git a/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer_gen.go b/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer_gen.go index f6c053e6..9b5a465f 100644 --- a/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer_gen.go +++ b/vendor/github.com/RoaringBitmap/roaring/bitmapcontainer_gen.go @@ -6,7 +6,7 @@ package roaring import "github.com/tinylib/msgp/msgp" -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *bitmapContainer) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -54,7 +54,7 @@ func (z *bitmapContainer) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *bitmapContainer) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 2 // write "cardinality" @@ -84,7 +84,7 @@ func (z *bitmapContainer) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *bitmapContainer) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 2 @@ -100,7 +100,7 @@ func (z *bitmapContainer) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *bitmapContainer) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -149,13 +149,13 @@ func (z *bitmapContainer) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *bitmapContainer) Msgsize() (s int) { s = 1 + 12 + msgp.IntSize + 7 + msgp.ArrayHeaderSize + (len(z.bitmap) * (msgp.Uint64Size)) return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *bitmapContainerShortIterator) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -239,7 +239,7 @@ func (z *bitmapContainerShortIterator) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *bitmapContainerShortIterator) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 2 // write "ptr" @@ -291,7 +291,7 @@ func (z *bitmapContainerShortIterator) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *bitmapContainerShortIterator) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 2 @@ -317,7 +317,7 @@ func (z *bitmapContainerShortIterator) MarshalMsg(b []byte) (o []byte, err error return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *bitmapContainerShortIterator) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -402,7 +402,7 @@ func (z *bitmapContainerShortIterator) UnmarshalMsg(bts []byte) (o []byte, err e return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *bitmapContainerShortIterator) Msgsize() (s int) { s = 1 + 4 if z.ptr == nil { diff --git a/vendor/github.com/RoaringBitmap/roaring/clz.go b/vendor/github.com/RoaringBitmap/roaring/clz.go new file mode 100644 index 00000000..bcd80d32 --- /dev/null +++ b/vendor/github.com/RoaringBitmap/roaring/clz.go @@ -0,0 +1,11 @@ +// +build go1.9 +// "go1.9", from Go version 1.9 onward +// See https://golang.org/pkg/go/build/#hdr-Build_Constraints + +package roaring + +import "math/bits" + +func countLeadingZeros(x uint64) int { + return bits.LeadingZeros64(x) +} diff --git a/vendor/github.com/RoaringBitmap/roaring/clz_compat.go b/vendor/github.com/RoaringBitmap/roaring/clz_compat.go new file mode 100644 index 00000000..eeef4de3 --- /dev/null +++ b/vendor/github.com/RoaringBitmap/roaring/clz_compat.go @@ -0,0 +1,36 @@ +// +build !go1.9 + +package roaring + +// LeadingZeroBits returns the number of consecutive most significant zero +// bits of x. +func countLeadingZeros(i uint64) int { + if i == 0 { + return 64 + } + n := 1 + x := uint32(i >> 32) + if x == 0 { + n += 32 + x = uint32(i) + } + if (x >> 16) == 0 { + n += 16 + x <<= 16 + } + if (x >> 24) == 0 { + n += 8 + x <<= 8 + } + if x>>28 == 0 { + n += 4 + x <<= 4 + } + if x>>30 == 0 { + n += 2 + x <<= 2 + + } + n -= int(x >> 31) + return n +} diff --git a/vendor/github.com/RoaringBitmap/roaring/parallel.go b/vendor/github.com/RoaringBitmap/roaring/parallel.go index 09f94fe8..2af1aed4 100644 --- a/vendor/github.com/RoaringBitmap/roaring/parallel.go +++ b/vendor/github.com/RoaringBitmap/roaring/parallel.go @@ -143,8 +143,8 @@ func toBitmapContainer(c container) container { func appenderRoutine(bitmapChan chan<- *Bitmap, resultChan <-chan keyedContainer, expectedKeysChan <-chan int) { expectedKeys := -1 appendedKeys := 0 - keys := make([]uint16, 0) - containers := make([]container, 0) + var keys []uint16 + var containers []container for appendedKeys != expectedKeys { select { case item := <-resultChan: @@ -337,7 +337,7 @@ func ParAnd(parallelism int, bitmaps ...*Bitmap) *Bitmap { // (if it is set to 0, a default number of workers is chosen) func ParOr(parallelism int, bitmaps ...*Bitmap) *Bitmap { var lKey uint16 = MaxUint16 - var hKey uint16 = 0 + var hKey uint16 bitmapsFiltered := bitmaps[:0] for _, b := range bitmaps { diff --git a/vendor/github.com/RoaringBitmap/roaring/rle.go b/vendor/github.com/RoaringBitmap/roaring/rle.go deleted file mode 100644 index 8f3d4edd..00000000 --- a/vendor/github.com/RoaringBitmap/roaring/rle.go +++ /dev/null @@ -1,1667 +0,0 @@ -package roaring - -// -// Copyright (c) 2016 by the roaring authors. -// Licensed under the Apache License, Version 2.0. -// -// We derive a few lines of code from the sort.Search -// function in the golang standard library. That function -// is Copyright 2009 The Go Authors, and licensed -// under the following BSD-style license. -/* -Copyright (c) 2009 The Go Authors. All rights reserved. - -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 Google Inc. 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. -*/ - -import ( - "fmt" - "sort" - "unsafe" -) - -//go:generate msgp -unexported - -// runContainer32 does run-length encoding of sets of -// uint32 integers. -type runContainer32 struct { - iv []interval32 - card int64 - - // avoid allocation during search - myOpts searchOptions `msg:"-"` -} - -// interval32 is the internal to runContainer32 -// structure that maintains the individual [Start, last] -// closed intervals. -type interval32 struct { - start uint32 - last uint32 -} - -// runlen returns the count of integers in the interval. -func (iv interval32) runlen() int64 { - return 1 + int64(iv.last) - int64(iv.start) -} - -// String produces a human viewable string of the contents. -func (iv interval32) String() string { - return fmt.Sprintf("[%d, %d]", iv.start, iv.last) -} - -func ivalString32(iv []interval32) string { - var s string - var j int - var p interval32 - for j, p = range iv { - s += fmt.Sprintf("%v:[%d, %d], ", j, p.start, p.last) - } - return s -} - -// String produces a human viewable string of the contents. -func (rc *runContainer32) String() string { - if len(rc.iv) == 0 { - return "runContainer32{}" - } - is := ivalString32(rc.iv) - return `runContainer32{` + is + `}` -} - -// uint32Slice is a sort.Sort convenience method -type uint32Slice []uint32 - -// Len returns the length of p. -func (p uint32Slice) Len() int { return len(p) } - -// Less returns p[i] < p[j] -func (p uint32Slice) Less(i, j int) bool { return p[i] < p[j] } - -// Swap swaps elements i and j. -func (p uint32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -//msgp:ignore addHelper - -// addHelper helps build a runContainer32. -type addHelper32 struct { - runstart uint32 - runlen uint32 - actuallyAdded uint32 - m []interval32 - rc *runContainer32 -} - -func (ah *addHelper32) storeIval(runstart, runlen uint32) { - mi := interval32{start: runstart, last: runstart + runlen} - ah.m = append(ah.m, mi) -} - -func (ah *addHelper32) add(cur, prev uint32, i int) { - if cur == prev+1 { - ah.runlen++ - ah.actuallyAdded++ - } else { - if cur < prev { - panic(fmt.Sprintf("newRunContainer32FromVals sees "+ - "unsorted vals; vals[%v]=cur=%v < prev=%v. Sort your vals"+ - " before calling us with alreadySorted == true.", i, cur, prev)) - } - if cur == prev { - // ignore duplicates - } else { - ah.actuallyAdded++ - ah.storeIval(ah.runstart, ah.runlen) - ah.runstart = cur - ah.runlen = 0 - } - } -} - -// newRunContainerRange makes a new container made of just the specified closed interval [rangestart,rangelast] -func newRunContainer32Range(rangestart uint32, rangelast uint32) *runContainer32 { - rc := &runContainer32{} - rc.iv = append(rc.iv, interval32{start: rangestart, last: rangelast}) - return rc -} - -// newRunContainer32FromVals makes a new container from vals. -// -// For efficiency, vals should be sorted in ascending order. -// Ideally vals should not contain duplicates, but we detect and -// ignore them. If vals is already sorted in ascending order, then -// pass alreadySorted = true. Otherwise, for !alreadySorted, -// we will sort vals before creating a runContainer32 of them. -// We sort the original vals, so this will change what the -// caller sees in vals as a side effect. -func newRunContainer32FromVals(alreadySorted bool, vals ...uint32) *runContainer32 { - // keep this in sync with newRunContainer32FromArray below - - rc := &runContainer32{} - ah := addHelper32{rc: rc} - - if !alreadySorted { - sort.Sort(uint32Slice(vals)) - } - n := len(vals) - var cur, prev uint32 - switch { - case n == 0: - // nothing more - case n == 1: - ah.m = append(ah.m, interval32{start: vals[0], last: vals[0]}) - ah.actuallyAdded++ - default: - ah.runstart = vals[0] - ah.actuallyAdded++ - for i := 1; i < n; i++ { - prev = vals[i-1] - cur = vals[i] - ah.add(cur, prev, i) - } - ah.storeIval(ah.runstart, ah.runlen) - } - rc.iv = ah.m - rc.card = int64(ah.actuallyAdded) - return rc -} - -// newRunContainer32FromBitmapContainer makes a new run container from bc, -// somewhat efficiently. For reference, see the Java -// https://github.com/RoaringBitmap/RoaringBitmap/blob/master/src/main/java/org/roaringbitmap/RunContainer.java#L145-L192 -func newRunContainer32FromBitmapContainer(bc *bitmapContainer) *runContainer32 { - - rc := &runContainer32{} - nbrRuns := bc.numberOfRuns() - if nbrRuns == 0 { - return rc - } - rc.iv = make([]interval32, nbrRuns) - - longCtr := 0 // index of current long in bitmap - curWord := bc.bitmap[0] // its value - runCount := 0 - for { - // potentially multiword advance to first 1 bit - for curWord == 0 && longCtr < len(bc.bitmap)-1 { - longCtr++ - curWord = bc.bitmap[longCtr] - } - - if curWord == 0 { - // wrap up, no more runs - return rc - } - localRunStart := countTrailingZeros(curWord) - runStart := localRunStart + 64*longCtr - // stuff 1s into number's LSBs - curWordWith1s := curWord | (curWord - 1) - - // find the next 0, potentially in a later word - runEnd := 0 - for curWordWith1s == maxWord && longCtr < len(bc.bitmap)-1 { - longCtr++ - curWordWith1s = bc.bitmap[longCtr] - } - - if curWordWith1s == maxWord { - // a final unterminated run of 1s - runEnd = wordSizeInBits + longCtr*64 - rc.iv[runCount].start = uint32(runStart) - rc.iv[runCount].last = uint32(runEnd) - 1 - return rc - } - localRunEnd := countTrailingZeros(^curWordWith1s) - runEnd = localRunEnd + longCtr*64 - rc.iv[runCount].start = uint32(runStart) - rc.iv[runCount].last = uint32(runEnd) - 1 - runCount++ - // now, zero out everything right of runEnd. - curWord = curWordWith1s & (curWordWith1s + 1) - // We've lathered and rinsed, so repeat... - } - -} - -// -// newRunContainer32FromArray populates a new -// runContainer32 from the contents of arr. -// -func newRunContainer32FromArray(arr *arrayContainer) *runContainer32 { - // keep this in sync with newRunContainer32FromVals above - - rc := &runContainer32{} - ah := addHelper32{rc: rc} - - n := arr.getCardinality() - var cur, prev uint32 - switch { - case n == 0: - // nothing more - case n == 1: - ah.m = append(ah.m, interval32{start: uint32(arr.content[0]), last: uint32(arr.content[0])}) - ah.actuallyAdded++ - default: - ah.runstart = uint32(arr.content[0]) - ah.actuallyAdded++ - for i := 1; i < n; i++ { - prev = uint32(arr.content[i-1]) - cur = uint32(arr.content[i]) - ah.add(cur, prev, i) - } - ah.storeIval(ah.runstart, ah.runlen) - } - rc.iv = ah.m - rc.card = int64(ah.actuallyAdded) - return rc -} - -// set adds the integers in vals to the set. Vals -// must be sorted in increasing order; if not, you should set -// alreadySorted to false, and we will sort them in place for you. -// (Be aware of this side effect -- it will affect the callers -// view of vals). -// -// If you have a small number of additions to an already -// big runContainer32, calling Add() may be faster. -func (rc *runContainer32) set(alreadySorted bool, vals ...uint32) { - - rc2 := newRunContainer32FromVals(alreadySorted, vals...) - un := rc.union(rc2) - rc.iv = un.iv - rc.card = 0 -} - -// canMerge returns true if the intervals -// a and b either overlap or they are -// contiguous and so can be merged into -// a single interval. -func canMerge32(a, b interval32) bool { - if int64(a.last)+1 < int64(b.start) { - return false - } - return int64(b.last)+1 >= int64(a.start) -} - -// haveOverlap differs from canMerge in that -// it tells you if the intersection of a -// and b would contain an element (otherwise -// it would be the empty set, and we return -// false). -func haveOverlap32(a, b interval32) bool { - if int64(a.last)+1 <= int64(b.start) { - return false - } - return int64(b.last)+1 > int64(a.start) -} - -// mergeInterval32s joins a and b into a -// new interval, and panics if it cannot. -func mergeInterval32s(a, b interval32) (res interval32) { - if !canMerge32(a, b) { - panic(fmt.Sprintf("cannot merge %#v and %#v", a, b)) - } - if b.start < a.start { - res.start = b.start - } else { - res.start = a.start - } - if b.last > a.last { - res.last = b.last - } else { - res.last = a.last - } - return -} - -// intersectInterval32s returns the intersection -// of a and b. The isEmpty flag will be true if -// a and b were disjoint. -func intersectInterval32s(a, b interval32) (res interval32, isEmpty bool) { - if !haveOverlap32(a, b) { - isEmpty = true - return - } - if b.start > a.start { - res.start = b.start - } else { - res.start = a.start - } - if b.last < a.last { - res.last = b.last - } else { - res.last = a.last - } - return -} - -// union merges two runContainer32s, producing -// a new runContainer32 with the union of rc and b. -func (rc *runContainer32) union(b *runContainer32) *runContainer32 { - - // rc is also known as 'a' here, but golint insisted we - // call it rc for consistency with the rest of the methods. - - var m []interval32 - - alim := int64(len(rc.iv)) - blim := int64(len(b.iv)) - - var na int64 // next from a - var nb int64 // next from b - - // merged holds the current merge output, which might - // get additional merges before being appended to m. - var merged interval32 - var mergedUsed bool // is merged being used at the moment? - - var cura interval32 // currently considering this interval32 from a - var curb interval32 // currently considering this interval32 from b - - pass := 0 - for na < alim && nb < blim { - pass++ - cura = rc.iv[na] - curb = b.iv[nb] - - if mergedUsed { - mergedUpdated := false - if canMerge32(cura, merged) { - merged = mergeInterval32s(cura, merged) - na = rc.indexOfIntervalAtOrAfter(int64(merged.last)+1, na+1) - mergedUpdated = true - } - if canMerge32(curb, merged) { - merged = mergeInterval32s(curb, merged) - nb = b.indexOfIntervalAtOrAfter(int64(merged.last)+1, nb+1) - mergedUpdated = true - } - if !mergedUpdated { - // we know that merged is disjoint from cura and curb - m = append(m, merged) - mergedUsed = false - } - continue - - } else { - // !mergedUsed - if !canMerge32(cura, curb) { - if cura.start < curb.start { - m = append(m, cura) - na++ - } else { - m = append(m, curb) - nb++ - } - } else { - merged = mergeInterval32s(cura, curb) - mergedUsed = true - na = rc.indexOfIntervalAtOrAfter(int64(merged.last)+1, na+1) - nb = b.indexOfIntervalAtOrAfter(int64(merged.last)+1, nb+1) - } - } - } - var aDone, bDone bool - if na >= alim { - aDone = true - } - if nb >= blim { - bDone = true - } - // finish by merging anything remaining into merged we can: - if mergedUsed { - if !aDone { - aAdds: - for na < alim { - cura = rc.iv[na] - if canMerge32(cura, merged) { - merged = mergeInterval32s(cura, merged) - na = rc.indexOfIntervalAtOrAfter(int64(merged.last)+1, na+1) - } else { - break aAdds - } - } - - } - - if !bDone { - bAdds: - for nb < blim { - curb = b.iv[nb] - if canMerge32(curb, merged) { - merged = mergeInterval32s(curb, merged) - nb = b.indexOfIntervalAtOrAfter(int64(merged.last)+1, nb+1) - } else { - break bAdds - } - } - - } - - m = append(m, merged) - } - if na < alim { - m = append(m, rc.iv[na:]...) - } - if nb < blim { - m = append(m, b.iv[nb:]...) - } - - res := &runContainer32{iv: m} - return res -} - -// unionCardinality returns the cardinality of the merger of two runContainer32s, the union of rc and b. -func (rc *runContainer32) unionCardinality(b *runContainer32) uint64 { - - // rc is also known as 'a' here, but golint insisted we - // call it rc for consistency with the rest of the methods. - answer := uint64(0) - - alim := int64(len(rc.iv)) - blim := int64(len(b.iv)) - - var na int64 // next from a - var nb int64 // next from b - - // merged holds the current merge output, which might - // get additional merges before being appended to m. - var merged interval32 - var mergedUsed bool // is merged being used at the moment? - - var cura interval32 // currently considering this interval32 from a - var curb interval32 // currently considering this interval32 from b - - pass := 0 - for na < alim && nb < blim { - pass++ - cura = rc.iv[na] - curb = b.iv[nb] - - if mergedUsed { - mergedUpdated := false - if canMerge32(cura, merged) { - merged = mergeInterval32s(cura, merged) - na = rc.indexOfIntervalAtOrAfter(int64(merged.last)+1, na+1) - mergedUpdated = true - } - if canMerge32(curb, merged) { - merged = mergeInterval32s(curb, merged) - nb = b.indexOfIntervalAtOrAfter(int64(merged.last)+1, nb+1) - mergedUpdated = true - } - if !mergedUpdated { - // we know that merged is disjoint from cura and curb - //m = append(m, merged) - answer += uint64(merged.last) - uint64(merged.start) + 1 - mergedUsed = false - } - continue - - } else { - // !mergedUsed - if !canMerge32(cura, curb) { - if cura.start < curb.start { - answer += uint64(cura.last) - uint64(cura.start) + 1 - //m = append(m, cura) - na++ - } else { - answer += uint64(curb.last) - uint64(curb.start) + 1 - //m = append(m, curb) - nb++ - } - } else { - merged = mergeInterval32s(cura, curb) - mergedUsed = true - na = rc.indexOfIntervalAtOrAfter(int64(merged.last)+1, na+1) - nb = b.indexOfIntervalAtOrAfter(int64(merged.last)+1, nb+1) - } - } - } - var aDone, bDone bool - if na >= alim { - aDone = true - } - if nb >= blim { - bDone = true - } - // finish by merging anything remaining into merged we can: - if mergedUsed { - if !aDone { - aAdds: - for na < alim { - cura = rc.iv[na] - if canMerge32(cura, merged) { - merged = mergeInterval32s(cura, merged) - na = rc.indexOfIntervalAtOrAfter(int64(merged.last)+1, na+1) - } else { - break aAdds - } - } - - } - - if !bDone { - bAdds: - for nb < blim { - curb = b.iv[nb] - if canMerge32(curb, merged) { - merged = mergeInterval32s(curb, merged) - nb = b.indexOfIntervalAtOrAfter(int64(merged.last)+1, nb+1) - } else { - break bAdds - } - } - - } - - //m = append(m, merged) - answer += uint64(merged.last) - uint64(merged.start) + 1 - } - for _, r := range rc.iv[na:] { - answer += uint64(r.last) - uint64(r.start) + 1 - } - for _, r := range b.iv[nb:] { - answer += uint64(r.last) - uint64(r.start) + 1 - } - return answer -} - -// indexOfIntervalAtOrAfter is a helper for union. -func (rc *runContainer32) indexOfIntervalAtOrAfter(key int64, startIndex int64) int64 { - rc.myOpts.startIndex = startIndex - rc.myOpts.endxIndex = 0 - - w, already, _ := rc.search(key, &rc.myOpts) - if already { - return w - } - return w + 1 -} - -// intersect returns a new runContainer32 holding the -// intersection of rc (also known as 'a') and b. -func (rc *runContainer32) intersect(b *runContainer32) *runContainer32 { - - a := rc - numa := int64(len(a.iv)) - numb := int64(len(b.iv)) - res := &runContainer32{} - if numa == 0 || numb == 0 { - return res - } - - if numa == 1 && numb == 1 { - if !haveOverlap32(a.iv[0], b.iv[0]) { - return res - } - } - - var output []interval32 - - var acuri int64 - var bcuri int64 - - astart := int64(a.iv[acuri].start) - bstart := int64(b.iv[bcuri].start) - - var intersection interval32 - var leftoverstart int64 - var isOverlap, isLeftoverA, isLeftoverB bool - var done bool - pass := 0 -toploop: - for acuri < numa && bcuri < numb { - pass++ - - isOverlap, isLeftoverA, isLeftoverB, leftoverstart, intersection = intersectWithLeftover32(astart, int64(a.iv[acuri].last), bstart, int64(b.iv[bcuri].last)) - - if !isOverlap { - switch { - case astart < bstart: - acuri, done = a.findNextIntervalThatIntersectsStartingFrom(acuri+1, bstart) - if done { - break toploop - } - astart = int64(a.iv[acuri].start) - - case astart > bstart: - bcuri, done = b.findNextIntervalThatIntersectsStartingFrom(bcuri+1, astart) - if done { - break toploop - } - bstart = int64(b.iv[bcuri].start) - - //default: - // panic("impossible that astart == bstart, since !isOverlap") - } - - } else { - // isOverlap - output = append(output, intersection) - switch { - case isLeftoverA: - // note that we change astart without advancing acuri, - // since we need to capture any 2ndary intersections with a.iv[acuri] - astart = leftoverstart - bcuri++ - if bcuri >= numb { - break toploop - } - bstart = int64(b.iv[bcuri].start) - case isLeftoverB: - // note that we change bstart without advancing bcuri, - // since we need to capture any 2ndary intersections with b.iv[bcuri] - bstart = leftoverstart - acuri++ - if acuri >= numa { - break toploop - } - astart = int64(a.iv[acuri].start) - default: - // neither had leftover, both completely consumed - // optionally, assert for sanity: - //if a.iv[acuri].endx != b.iv[bcuri].endx { - // panic("huh? should only be possible that endx agree now!") - //} - - // advance to next a interval - acuri++ - if acuri >= numa { - break toploop - } - astart = int64(a.iv[acuri].start) - - // advance to next b interval - bcuri++ - if bcuri >= numb { - break toploop - } - bstart = int64(b.iv[bcuri].start) - } - } - } // end for toploop - - if len(output) == 0 { - return res - } - - res.iv = output - return res -} - -// intersectCardinality returns the cardinality of the -// intersection of rc (also known as 'a') and b. -func (rc *runContainer32) intersectCardinality(b *runContainer32) int64 { - answer := int64(0) - - a := rc - numa := int64(len(a.iv)) - numb := int64(len(b.iv)) - if numa == 0 || numb == 0 { - return 0 - } - - if numa == 1 && numb == 1 { - if !haveOverlap32(a.iv[0], b.iv[0]) { - return 0 - } - } - - var acuri int64 - var bcuri int64 - - astart := int64(a.iv[acuri].start) - bstart := int64(b.iv[bcuri].start) - - var intersection interval32 - var leftoverstart int64 - var isOverlap, isLeftoverA, isLeftoverB bool - var done bool - pass := 0 -toploop: - for acuri < numa && bcuri < numb { - pass++ - - isOverlap, isLeftoverA, isLeftoverB, leftoverstart, intersection = intersectWithLeftover32(astart, int64(a.iv[acuri].last), bstart, int64(b.iv[bcuri].last)) - - if !isOverlap { - switch { - case astart < bstart: - acuri, done = a.findNextIntervalThatIntersectsStartingFrom(acuri+1, bstart) - if done { - break toploop - } - astart = int64(a.iv[acuri].start) - - case astart > bstart: - bcuri, done = b.findNextIntervalThatIntersectsStartingFrom(bcuri+1, astart) - if done { - break toploop - } - bstart = int64(b.iv[bcuri].start) - - //default: - // panic("impossible that astart == bstart, since !isOverlap") - } - - } else { - // isOverlap - answer += int64(intersection.last) - int64(intersection.start) + 1 - switch { - case isLeftoverA: - // note that we change astart without advancing acuri, - // since we need to capture any 2ndary intersections with a.iv[acuri] - astart = leftoverstart - bcuri++ - if bcuri >= numb { - break toploop - } - bstart = int64(b.iv[bcuri].start) - case isLeftoverB: - // note that we change bstart without advancing bcuri, - // since we need to capture any 2ndary intersections with b.iv[bcuri] - bstart = leftoverstart - acuri++ - if acuri >= numa { - break toploop - } - astart = int64(a.iv[acuri].start) - default: - // neither had leftover, both completely consumed - // optionally, assert for sanity: - //if a.iv[acuri].endx != b.iv[bcuri].endx { - // panic("huh? should only be possible that endx agree now!") - //} - - // advance to next a interval - acuri++ - if acuri >= numa { - break toploop - } - astart = int64(a.iv[acuri].start) - - // advance to next b interval - bcuri++ - if bcuri >= numb { - break toploop - } - bstart = int64(b.iv[bcuri].start) - } - } - } // end for toploop - - return answer -} - -// get returns true if key is in the container. -func (rc *runContainer32) contains(key uint32) bool { - _, in, _ := rc.search(int64(key), nil) - return in -} - -// numIntervals returns the count of intervals in the container. -func (rc *runContainer32) numIntervals() int { - return len(rc.iv) -} - -// search returns alreadyPresent to indicate if the -// key is already in one of our interval32s. -// -// If key is alreadyPresent, then whichInterval32 tells -// you where. -// -// If key is not already present, then whichInterval32 is -// set as follows: -// -// a) whichInterval32 == len(rc.iv)-1 if key is beyond our -// last interval32 in rc.iv; -// -// b) whichInterval32 == -1 if key is before our first -// interval32 in rc.iv; -// -// c) whichInterval32 is set to the minimum index of rc.iv -// which comes strictly before the key; -// so rc.iv[whichInterval32].last < key, -// and if whichInterval32+1 exists, then key < rc.iv[whichInterval32+1].start -// (Note that whichInterval32+1 won't exist when -// whichInterval32 is the last interval.) -// -// runContainer32.search always returns whichInterval32 < len(rc.iv). -// -// If not nil, opts can be used to further restrict -// the search space. -// -func (rc *runContainer32) search(key int64, opts *searchOptions) (whichInterval32 int64, alreadyPresent bool, numCompares int) { - n := int64(len(rc.iv)) - if n == 0 { - return -1, false, 0 - } - - startIndex := int64(0) - endxIndex := n - if opts != nil { - startIndex = opts.startIndex - - // let endxIndex == 0 mean no effect - if opts.endxIndex > 0 { - endxIndex = opts.endxIndex - } - } - - // sort.Search returns the smallest index i - // in [0, n) at which f(i) is true, assuming that on the range [0, n), - // f(i) == true implies f(i+1) == true. - // If there is no such index, Search returns n. - - // For correctness, this began as verbatim snippet from - // sort.Search in the Go standard lib. - // We inline our comparison function for speed, and - // annotate with numCompares - // to observe and test that extra bounds are utilized. - i, j := startIndex, endxIndex - for i < j { - h := i + (j-i)/2 // avoid overflow when computing h as the bisector - // i <= h < j - numCompares++ - if !(key < int64(rc.iv[h].start)) { - i = h + 1 - } else { - j = h - } - } - below := i - // end std lib snippet. - - // The above is a simple in-lining and annotation of: - /* below := sort.Search(n, - func(i int) bool { - return key < rc.iv[i].start - }) - */ - whichInterval32 = below - 1 - - if below == n { - // all falses => key is >= start of all interval32s - // ... so does it belong to the last interval32? - if key < int64(rc.iv[n-1].last)+1 { - // yes, it belongs to the last interval32 - alreadyPresent = true - return - } - // no, it is beyond the last interval32. - // leave alreadyPreset = false - return - } - - // INVAR: key is below rc.iv[below] - if below == 0 { - // key is before the first first interval32. - // leave alreadyPresent = false - return - } - - // INVAR: key is >= rc.iv[below-1].start and - // key is < rc.iv[below].start - - // is key in below-1 interval32? - if key >= int64(rc.iv[below-1].start) && key < int64(rc.iv[below-1].last)+1 { - // yes, it is. key is in below-1 interval32. - alreadyPresent = true - return - } - - // INVAR: key >= rc.iv[below-1].endx && key < rc.iv[below].start - // leave alreadyPresent = false - return -} - -// cardinality returns the count of the integers stored in the -// runContainer32. -func (rc *runContainer32) cardinality() int64 { - if len(rc.iv) == 0 { - rc.card = 0 - return 0 - } - if rc.card > 0 { - return rc.card // already cached - } - // have to compute it - var n int64 - for _, p := range rc.iv { - n += p.runlen() - } - rc.card = n // cache it - return n -} - -// AsSlice decompresses the contents into a []uint32 slice. -func (rc *runContainer32) AsSlice() []uint32 { - s := make([]uint32, rc.cardinality()) - j := 0 - for _, p := range rc.iv { - for i := p.start; i <= p.last; i++ { - s[j] = i - j++ - } - } - return s -} - -// newRunContainer32 creates an empty run container. -func newRunContainer32() *runContainer32 { - return &runContainer32{} -} - -// newRunContainer32CopyIv creates a run container, initializing -// with a copy of the supplied iv slice. -// -func newRunContainer32CopyIv(iv []interval32) *runContainer32 { - rc := &runContainer32{ - iv: make([]interval32, len(iv)), - } - copy(rc.iv, iv) - return rc -} - -func (rc *runContainer32) Clone() *runContainer32 { - rc2 := newRunContainer32CopyIv(rc.iv) - return rc2 -} - -// newRunContainer32TakeOwnership returns a new runContainer32 -// backed by the provided iv slice, which we will -// assume exclusive control over from now on. -// -func newRunContainer32TakeOwnership(iv []interval32) *runContainer32 { - rc := &runContainer32{ - iv: iv, - } - return rc -} - -const baseRc32Size = int(unsafe.Sizeof(runContainer32{})) -const perIntervalRc32Size = int(unsafe.Sizeof(interval32{})) - -const baseDiskRc32Size = int(unsafe.Sizeof(uint32(0))) - -// see also runContainer32SerializedSizeInBytes(numRuns int) int - -// getSizeInBytes returns the number of bytes of memory -// required by this runContainer32. -func (rc *runContainer32) getSizeInBytes() int { - return perIntervalRc32Size*len(rc.iv) + baseRc32Size -} - -// runContainer32SerializedSizeInBytes returns the number of bytes of disk -// required to hold numRuns in a runContainer32. -func runContainer32SerializedSizeInBytes(numRuns int) int { - return perIntervalRc32Size*numRuns + baseDiskRc32Size -} - -// Add adds a single value k to the set. -func (rc *runContainer32) Add(k uint32) (wasNew bool) { - // TODO comment from runContainer32.java: - // it might be better and simpler to do return - // toBitmapOrArrayContainer(getCardinality()).add(k) - // but note that some unit tests use this method to build up test - // runcontainers without calling runOptimize - - k64 := int64(k) - - index, present, _ := rc.search(k64, nil) - if present { - return // already there - } - wasNew = true - - // increment card if it is cached already - if rc.card > 0 { - rc.card++ - } - n := int64(len(rc.iv)) - if index == -1 { - // we may need to extend the first run - if n > 0 { - if rc.iv[0].start == k+1 { - rc.iv[0].start = k - return - } - } - // nope, k stands alone, starting the new first interval32. - rc.iv = append([]interval32{{start: k, last: k}}, rc.iv...) - return - } - - // are we off the end? handle both index == n and index == n-1: - if index >= n-1 { - if int64(rc.iv[n-1].last)+1 == k64 { - rc.iv[n-1].last++ - return - } - rc.iv = append(rc.iv, interval32{start: k, last: k}) - return - } - - // INVAR: index and index+1 both exist, and k goes between them. - // - // Now: add k into the middle, - // possibly fusing with index or index+1 interval32 - // and possibly resulting in fusing of two interval32s - // that had a one integer gap. - - left := index - right := index + 1 - - // are we fusing left and right by adding k? - if int64(rc.iv[left].last)+1 == k64 && int64(rc.iv[right].start) == k64+1 { - // fuse into left - rc.iv[left].last = rc.iv[right].last - // remove redundant right - rc.iv = append(rc.iv[:left+1], rc.iv[right+1:]...) - return - } - - // are we an addition to left? - if int64(rc.iv[left].last)+1 == k64 { - // yes - rc.iv[left].last++ - return - } - - // are we an addition to right? - if int64(rc.iv[right].start) == k64+1 { - // yes - rc.iv[right].start = k - return - } - - // k makes a standalone new interval32, inserted in the middle - tail := append([]interval32{{start: k, last: k}}, rc.iv[right:]...) - rc.iv = append(rc.iv[:left+1], tail...) - return -} - -//msgp:ignore runIterator - -// runIterator32 advice: you must call Next() at least once -// before calling Cur(); and you should call HasNext() -// before calling Next() to insure there are contents. -type runIterator32 struct { - rc *runContainer32 - curIndex int64 - curPosInIndex uint32 - curSeq int64 -} - -// newRunIterator32 returns a new empty run container. -func (rc *runContainer32) newRunIterator32() *runIterator32 { - return &runIterator32{rc: rc, curIndex: -1} -} - -// HasNext returns false if calling Next will panic. It -// returns true when there is at least one more value -// available in the iteration sequence. -func (ri *runIterator32) hasNext() bool { - if len(ri.rc.iv) == 0 { - return false - } - if ri.curIndex == -1 { - return true - } - return ri.curSeq+1 < ri.rc.cardinality() -} - -// cur returns the current value pointed to by the iterator. -func (ri *runIterator32) cur() uint32 { - return ri.rc.iv[ri.curIndex].start + ri.curPosInIndex -} - -// Next returns the next value in the iteration sequence. -func (ri *runIterator32) next() uint32 { - if !ri.hasNext() { - panic("no Next available") - } - if ri.curIndex >= int64(len(ri.rc.iv)) { - panic("runIterator.Next() going beyond what is available") - } - if ri.curIndex == -1 { - // first time is special - ri.curIndex = 0 - } else { - ri.curPosInIndex++ - if int64(ri.rc.iv[ri.curIndex].start)+int64(ri.curPosInIndex) == int64(ri.rc.iv[ri.curIndex].last)+1 { - ri.curPosInIndex = 0 - ri.curIndex++ - } - ri.curSeq++ - } - return ri.cur() -} - -// remove removes the element that the iterator -// is on from the run container. You can use -// Cur if you want to double check what is about -// to be deleted. -func (ri *runIterator32) remove() uint32 { - n := ri.rc.cardinality() - if n == 0 { - panic("runIterator.Remove called on empty runContainer32") - } - cur := ri.cur() - - ri.rc.deleteAt(&ri.curIndex, &ri.curPosInIndex, &ri.curSeq) - return cur -} - -// remove removes key from the container. -func (rc *runContainer32) removeKey(key uint32) (wasPresent bool) { - - var index int64 - var curSeq int64 - index, wasPresent, _ = rc.search(int64(key), nil) - if !wasPresent { - return // already removed, nothing to do. - } - pos := key - rc.iv[index].start - rc.deleteAt(&index, &pos, &curSeq) - return -} - -// internal helper functions - -func (rc *runContainer32) deleteAt(curIndex *int64, curPosInIndex *uint32, curSeq *int64) { - rc.card-- - (*curSeq)-- - ci := *curIndex - pos := *curPosInIndex - - // are we first, last, or in the middle of our interval32? - switch { - case pos == 0: - if int64(rc.iv[ci].start) == int64(rc.iv[ci].last) { - // our interval disappears - rc.iv = append(rc.iv[:ci], rc.iv[ci+1:]...) - // curIndex stays the same, since the delete did - // the advance for us. - *curPosInIndex = 0 - } else { - rc.iv[ci].start++ // no longer overflowable - } - case int64(pos) == rc.iv[ci].runlen()-1: - // last - rc.iv[ci].last-- - // our interval32 cannot disappear, else we would have been pos == 0, case first above. - (*curPosInIndex)-- - // if we leave *curIndex alone, then Next() will work properly even after the delete. - default: - //middle - // split into two, adding an interval32 - new0 := interval32{ - start: rc.iv[ci].start, - last: rc.iv[ci].start + *curPosInIndex - 1} - - new1start := int64(rc.iv[ci].start) + int64(*curPosInIndex) + 1 - if new1start > int64(MaxUint32) { - panic("overflow?!?!") - } - new1 := interval32{ - start: uint32(new1start), - last: rc.iv[ci].last} - tail := append([]interval32{new0, new1}, rc.iv[ci+1:]...) - rc.iv = append(rc.iv[:ci], tail...) - // update curIndex and curPosInIndex - (*curIndex)++ - *curPosInIndex = 0 - } - -} - -func have4Overlap32(astart, alast, bstart, blast int64) bool { - if alast+1 <= bstart { - return false - } - return blast+1 > astart -} - -func intersectWithLeftover32(astart, alast, bstart, blast int64) (isOverlap, isLeftoverA, isLeftoverB bool, leftoverstart int64, intersection interval32) { - if !have4Overlap32(astart, alast, bstart, blast) { - return - } - isOverlap = true - - // do the intersection: - if bstart > astart { - intersection.start = uint32(bstart) - } else { - intersection.start = uint32(astart) - } - switch { - case blast < alast: - isLeftoverA = true - leftoverstart = blast + 1 - intersection.last = uint32(blast) - case alast < blast: - isLeftoverB = true - leftoverstart = alast + 1 - intersection.last = uint32(alast) - default: - // alast == blast - intersection.last = uint32(alast) - } - - return -} - -func (rc *runContainer32) findNextIntervalThatIntersectsStartingFrom(startIndex int64, key int64) (index int64, done bool) { - - rc.myOpts.startIndex = startIndex - rc.myOpts.endxIndex = 0 - - w, _, _ := rc.search(key, &rc.myOpts) - // rc.search always returns w < len(rc.iv) - if w < startIndex { - // not found and comes before lower bound startIndex, - // so just use the lower bound. - if startIndex == int64(len(rc.iv)) { - // also this bump up means that we are done - return startIndex, true - } - return startIndex, false - } - - return w, false -} - -func sliceToString32(m []interval32) string { - s := "" - for i := range m { - s += fmt.Sprintf("%v: %s, ", i, m[i]) - } - return s -} - -// selectInt32 returns the j-th value in the container. -// We panic of j is out of bounds. -func (rc *runContainer32) selectInt32(j uint32) int { - n := rc.cardinality() - if int64(j) > n { - panic(fmt.Sprintf("Cannot select %v since Cardinality is %v", j, n)) - } - - var offset int64 - for k := range rc.iv { - nextOffset := offset + rc.iv[k].runlen() + 1 - if nextOffset > int64(j) { - return int(int64(rc.iv[k].start) + (int64(j) - offset)) - } - offset = nextOffset - } - panic(fmt.Sprintf("Cannot select %v since Cardinality is %v", j, n)) -} - -// helper for invert -func (rc *runContainer32) invertlastInterval(origin uint32, lastIdx int) []interval32 { - cur := rc.iv[lastIdx] - if cur.last == MaxUint32 { - if cur.start == origin { - return nil // empty container - } - return []interval32{{start: origin, last: cur.start - 1}} - } - if cur.start == origin { - return []interval32{{start: cur.last + 1, last: MaxUint32}} - } - // invert splits - return []interval32{ - {start: origin, last: cur.start - 1}, - {start: cur.last + 1, last: MaxUint32}, - } -} - -// invert returns a new container (not inplace), that is -// the inversion of rc. For each bit b in rc, the -// returned value has !b -func (rc *runContainer32) invert() *runContainer32 { - ni := len(rc.iv) - var m []interval32 - switch ni { - case 0: - return &runContainer32{iv: []interval32{{0, MaxUint32}}} - case 1: - return &runContainer32{iv: rc.invertlastInterval(0, 0)} - } - var invstart int64 - ult := ni - 1 - for i, cur := range rc.iv { - if i == ult { - // invertlastInteval will add both intervals (b) and (c) in - // diagram below. - m = append(m, rc.invertlastInterval(uint32(invstart), i)...) - break - } - // INVAR: i and cur are not the last interval, there is a next at i+1 - // - // ........[cur.start, cur.last] ...... [next.start, next.last].... - // ^ ^ ^ - // (a) (b) (c) - // - // Now: we add interval (a); but if (a) is empty, for cur.start==0, we skip it. - if cur.start > 0 { - m = append(m, interval32{start: uint32(invstart), last: cur.start - 1}) - } - invstart = int64(cur.last + 1) - } - return &runContainer32{iv: m} -} - -func (iv interval32) equal(b interval32) bool { - if iv.start == b.start { - return iv.last == b.last - } - return false -} - -func (iv interval32) isSuperSetOf(b interval32) bool { - return iv.start <= b.start && b.last <= iv.last -} - -func (iv interval32) subtractInterval(del interval32) (left []interval32, delcount int64) { - isect, isEmpty := intersectInterval32s(iv, del) - - if isEmpty { - return nil, 0 - } - if del.isSuperSetOf(iv) { - return nil, iv.runlen() - } - - switch { - case isect.start > iv.start && isect.last < iv.last: - new0 := interval32{start: iv.start, last: isect.start - 1} - new1 := interval32{start: isect.last + 1, last: iv.last} - return []interval32{new0, new1}, isect.runlen() - case isect.start == iv.start: - return []interval32{{start: isect.last + 1, last: iv.last}}, isect.runlen() - default: - return []interval32{{start: iv.start, last: isect.start - 1}}, isect.runlen() - } -} - -func (rc *runContainer32) isubtract(del interval32) { - origiv := make([]interval32, len(rc.iv)) - copy(origiv, rc.iv) - n := int64(len(rc.iv)) - if n == 0 { - return // already done. - } - - _, isEmpty := intersectInterval32s( - interval32{ - start: rc.iv[0].start, - last: rc.iv[n-1].last, - }, del) - if isEmpty { - return // done - } - // INVAR there is some intersection between rc and del - istart, startAlready, _ := rc.search(int64(del.start), nil) - ilast, lastAlready, _ := rc.search(int64(del.last), nil) - rc.card = -1 - if istart == -1 { - if ilast == n-1 && !lastAlready { - rc.iv = nil - return - } - } - // some intervals will remain - switch { - case startAlready && lastAlready: - res0, _ := rc.iv[istart].subtractInterval(del) - - // would overwrite values in iv b/c res0 can have len 2. so - // write to origiv instead. - lost := 1 + ilast - istart - changeSize := int64(len(res0)) - lost - newSize := int64(len(rc.iv)) + changeSize - - // rc.iv = append(pre, caboose...) - // return - - if ilast != istart { - res1, _ := rc.iv[ilast].subtractInterval(del) - res0 = append(res0, res1...) - changeSize = int64(len(res0)) - lost - newSize = int64(len(rc.iv)) + changeSize - } - switch { - case changeSize < 0: - // shrink - copy(rc.iv[istart+int64(len(res0)):], rc.iv[ilast+1:]) - copy(rc.iv[istart:istart+int64(len(res0))], res0) - rc.iv = rc.iv[:newSize] - return - case changeSize == 0: - // stay the same - copy(rc.iv[istart:istart+int64(len(res0))], res0) - return - default: - // changeSize > 0 is only possible when ilast == istart. - // Hence we now know: changeSize == 1 and len(res0) == 2 - rc.iv = append(rc.iv, interval32{}) - // len(rc.iv) is correct now, no need to rc.iv = rc.iv[:newSize] - - // copy the tail into place - copy(rc.iv[ilast+2:], rc.iv[ilast+1:]) - // copy the new item(s) into place - copy(rc.iv[istart:istart+2], res0) - return - } - - case !startAlready && !lastAlready: - // we get to discard whole intervals - - // from the search() definition: - - // if del.start is not present, then istart is - // set as follows: - // - // a) istart == n-1 if del.start is beyond our - // last interval32 in rc.iv; - // - // b) istart == -1 if del.start is before our first - // interval32 in rc.iv; - // - // c) istart is set to the minimum index of rc.iv - // which comes strictly before the del.start; - // so del.start > rc.iv[istart].last, - // and if istart+1 exists, then del.start < rc.iv[istart+1].startx - - // if del.last is not present, then ilast is - // set as follows: - // - // a) ilast == n-1 if del.last is beyond our - // last interval32 in rc.iv; - // - // b) ilast == -1 if del.last is before our first - // interval32 in rc.iv; - // - // c) ilast is set to the minimum index of rc.iv - // which comes strictly before the del.last; - // so del.last > rc.iv[ilast].last, - // and if ilast+1 exists, then del.last < rc.iv[ilast+1].start - - // INVAR: istart >= 0 - pre := rc.iv[:istart+1] - if ilast == n-1 { - rc.iv = pre - return - } - // INVAR: ilast < n-1 - lost := ilast - istart - changeSize := -lost - newSize := int64(len(rc.iv)) + changeSize - if changeSize != 0 { - copy(rc.iv[ilast+1+changeSize:], rc.iv[ilast+1:]) - } - rc.iv = rc.iv[:newSize] - return - - case startAlready && !lastAlready: - // we can only shrink or stay the same size - // i.e. we either eliminate the whole interval, - // or just cut off the right side. - res0, _ := rc.iv[istart].subtractInterval(del) - if len(res0) > 0 { - // len(res) must be 1 - rc.iv[istart] = res0[0] - } - lost := 1 + (ilast - istart) - changeSize := int64(len(res0)) - lost - newSize := int64(len(rc.iv)) + changeSize - if changeSize != 0 { - copy(rc.iv[ilast+1+changeSize:], rc.iv[ilast+1:]) - } - rc.iv = rc.iv[:newSize] - return - - case !startAlready && lastAlready: - // we can only shrink or stay the same size - res1, _ := rc.iv[ilast].subtractInterval(del) - lost := ilast - istart - changeSize := int64(len(res1)) - lost - newSize := int64(len(rc.iv)) + changeSize - if changeSize != 0 { - // move the tail first to make room for res1 - copy(rc.iv[ilast+1+changeSize:], rc.iv[ilast+1:]) - } - copy(rc.iv[istart+1:], res1) - rc.iv = rc.iv[:newSize] - return - } -} - -// compute rc minus b, and return the result as a new value (not inplace). -// port of run_container_andnot from CRoaring... -// https://github.com/RoaringBitmap/CRoaring/blob/master/src/containers/run.c#L435-L496 -func (rc *runContainer32) AndNotRunContainer32(b *runContainer32) *runContainer32 { - - if len(b.iv) == 0 || len(rc.iv) == 0 { - return rc - } - - dst := newRunContainer32() - apos := 0 - bpos := 0 - - a := rc - - astart := a.iv[apos].start - alast := a.iv[apos].last - bstart := b.iv[bpos].start - blast := b.iv[bpos].last - - alen := len(a.iv) - blen := len(b.iv) - - for apos < alen && bpos < blen { - switch { - case alast < bstart: - // output the first run - dst.iv = append(dst.iv, interval32{start: astart, last: alast}) - apos++ - if apos < alen { - astart = a.iv[apos].start - alast = a.iv[apos].last - } - case blast < astart: - // exit the second run - bpos++ - if bpos < blen { - bstart = b.iv[bpos].start - blast = b.iv[bpos].last - } - default: - // a: [ ] - // b: [ ] - // alast >= bstart - // blast >= astart - if astart < bstart { - dst.iv = append(dst.iv, interval32{start: astart, last: bstart - 1}) - } - if alast > blast { - astart = blast + 1 - } else { - apos++ - if apos < alen { - astart = a.iv[apos].start - alast = a.iv[apos].last - } - } - } - } - if apos < alen { - dst.iv = append(dst.iv, interval32{start: astart, last: alast}) - apos++ - if apos < alen { - dst.iv = append(dst.iv, a.iv[apos:]...) - } - } - - return dst -} - -func (rc *runContainer32) numberOfRuns() (nr int) { - return len(rc.iv) -} - -func (rc *runContainer32) containerType() contype { - return run32Contype -} - -func (rc *runContainer32) equals32(srb *runContainer32) bool { - //p("both rc32") - // Check if the containers are the same object. - if rc == srb { - //p("same object") - return true - } - - if len(srb.iv) != len(rc.iv) { - //p("iv len differ") - return false - } - - for i, v := range rc.iv { - if v != srb.iv[i] { - //p("differ at iv i=%v, srb.iv[i]=%v, rc.iv[i]=%v", i, srb.iv[i], rc.iv[i]) - return false - } - } - //p("all intervals same, returning true") - return true -} diff --git a/vendor/github.com/RoaringBitmap/roaring/rle_gen.go b/vendor/github.com/RoaringBitmap/roaring/rle_gen.go deleted file mode 100644 index bc9da75f..00000000 --- a/vendor/github.com/RoaringBitmap/roaring/rle_gen.go +++ /dev/null @@ -1,1118 +0,0 @@ -package roaring - -// NOTE: THIS FILE WAS PRODUCED BY THE -// MSGP CODE GENERATION TOOL (github.com/tinylib/msgp) -// DO NOT EDIT - -import "github.com/tinylib/msgp/msgp" - -// DecodeMsg implements msgp.Decodable -func (z *addHelper32) DecodeMsg(dc *msgp.Reader) (err error) { - var field []byte - _ = field - var zbai uint32 - zbai, err = dc.ReadMapHeader() - if err != nil { - return - } - for zbai > 0 { - zbai-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "runstart": - z.runstart, err = dc.ReadUint32() - if err != nil { - return - } - case "runlen": - z.runlen, err = dc.ReadUint32() - if err != nil { - return - } - case "actuallyAdded": - z.actuallyAdded, err = dc.ReadUint32() - if err != nil { - return - } - case "m": - var zcmr uint32 - zcmr, err = dc.ReadArrayHeader() - if err != nil { - return - } - if cap(z.m) >= int(zcmr) { - z.m = (z.m)[:zcmr] - } else { - z.m = make([]interval32, zcmr) - } - for zxvk := range z.m { - var zajw uint32 - zajw, err = dc.ReadMapHeader() - if err != nil { - return - } - for zajw > 0 { - zajw-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.m[zxvk].start, err = dc.ReadUint32() - if err != nil { - return - } - case "last": - z.m[zxvk].last, err = dc.ReadUint32() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - } - case "rc": - if dc.IsNil() { - err = dc.ReadNil() - if err != nil { - return - } - z.rc = nil - } else { - if z.rc == nil { - z.rc = new(runContainer32) - } - var zwht uint32 - zwht, err = dc.ReadMapHeader() - if err != nil { - return - } - for zwht > 0 { - zwht-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "iv": - var zhct uint32 - zhct, err = dc.ReadArrayHeader() - if err != nil { - return - } - if cap(z.rc.iv) >= int(zhct) { - z.rc.iv = (z.rc.iv)[:zhct] - } else { - z.rc.iv = make([]interval32, zhct) - } - for zbzg := range z.rc.iv { - var zcua uint32 - zcua, err = dc.ReadMapHeader() - if err != nil { - return - } - for zcua > 0 { - zcua-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.rc.iv[zbzg].start, err = dc.ReadUint32() - if err != nil { - return - } - case "last": - z.rc.iv[zbzg].last, err = dc.ReadUint32() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - } - case "card": - z.rc.card, err = dc.ReadInt64() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - return -} - -// EncodeMsg implements msgp.Encodable -func (z *addHelper32) EncodeMsg(en *msgp.Writer) (err error) { - // map header, size 5 - // write "runstart" - err = en.Append(0x85, 0xa8, 0x72, 0x75, 0x6e, 0x73, 0x74, 0x61, 0x72, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.runstart) - if err != nil { - return - } - // write "runlen" - err = en.Append(0xa6, 0x72, 0x75, 0x6e, 0x6c, 0x65, 0x6e) - if err != nil { - return err - } - err = en.WriteUint32(z.runlen) - if err != nil { - return - } - // write "actuallyAdded" - err = en.Append(0xad, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64) - if err != nil { - return err - } - err = en.WriteUint32(z.actuallyAdded) - if err != nil { - return - } - // write "m" - err = en.Append(0xa1, 0x6d) - if err != nil { - return err - } - err = en.WriteArrayHeader(uint32(len(z.m))) - if err != nil { - return - } - for zxvk := range z.m { - // map header, size 2 - // write "start" - err = en.Append(0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.m[zxvk].start) - if err != nil { - return - } - // write "last" - err = en.Append(0xa4, 0x6c, 0x61, 0x73, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.m[zxvk].last) - if err != nil { - return - } - } - // write "rc" - err = en.Append(0xa2, 0x72, 0x63) - if err != nil { - return err - } - if z.rc == nil { - err = en.WriteNil() - if err != nil { - return - } - } else { - // map header, size 2 - // write "iv" - err = en.Append(0x82, 0xa2, 0x69, 0x76) - if err != nil { - return err - } - err = en.WriteArrayHeader(uint32(len(z.rc.iv))) - if err != nil { - return - } - for zbzg := range z.rc.iv { - // map header, size 2 - // write "start" - err = en.Append(0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.rc.iv[zbzg].start) - if err != nil { - return - } - // write "last" - err = en.Append(0xa4, 0x6c, 0x61, 0x73, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.rc.iv[zbzg].last) - if err != nil { - return - } - } - // write "card" - err = en.Append(0xa4, 0x63, 0x61, 0x72, 0x64) - if err != nil { - return err - } - err = en.WriteInt64(z.rc.card) - if err != nil { - return - } - } - return -} - -// MarshalMsg implements msgp.Marshaler -func (z *addHelper32) MarshalMsg(b []byte) (o []byte, err error) { - o = msgp.Require(b, z.Msgsize()) - // map header, size 5 - // string "runstart" - o = append(o, 0x85, 0xa8, 0x72, 0x75, 0x6e, 0x73, 0x74, 0x61, 0x72, 0x74) - o = msgp.AppendUint32(o, z.runstart) - // string "runlen" - o = append(o, 0xa6, 0x72, 0x75, 0x6e, 0x6c, 0x65, 0x6e) - o = msgp.AppendUint32(o, z.runlen) - // string "actuallyAdded" - o = append(o, 0xad, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64) - o = msgp.AppendUint32(o, z.actuallyAdded) - // string "m" - o = append(o, 0xa1, 0x6d) - o = msgp.AppendArrayHeader(o, uint32(len(z.m))) - for zxvk := range z.m { - // map header, size 2 - // string "start" - o = append(o, 0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - o = msgp.AppendUint32(o, z.m[zxvk].start) - // string "last" - o = append(o, 0xa4, 0x6c, 0x61, 0x73, 0x74) - o = msgp.AppendUint32(o, z.m[zxvk].last) - } - // string "rc" - o = append(o, 0xa2, 0x72, 0x63) - if z.rc == nil { - o = msgp.AppendNil(o) - } else { - // map header, size 2 - // string "iv" - o = append(o, 0x82, 0xa2, 0x69, 0x76) - o = msgp.AppendArrayHeader(o, uint32(len(z.rc.iv))) - for zbzg := range z.rc.iv { - // map header, size 2 - // string "start" - o = append(o, 0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - o = msgp.AppendUint32(o, z.rc.iv[zbzg].start) - // string "last" - o = append(o, 0xa4, 0x6c, 0x61, 0x73, 0x74) - o = msgp.AppendUint32(o, z.rc.iv[zbzg].last) - } - // string "card" - o = append(o, 0xa4, 0x63, 0x61, 0x72, 0x64) - o = msgp.AppendInt64(o, z.rc.card) - } - return -} - -// UnmarshalMsg implements msgp.Unmarshaler -func (z *addHelper32) UnmarshalMsg(bts []byte) (o []byte, err error) { - var field []byte - _ = field - var zxhx uint32 - zxhx, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zxhx > 0 { - zxhx-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "runstart": - z.runstart, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "runlen": - z.runlen, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "actuallyAdded": - z.actuallyAdded, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "m": - var zlqf uint32 - zlqf, bts, err = msgp.ReadArrayHeaderBytes(bts) - if err != nil { - return - } - if cap(z.m) >= int(zlqf) { - z.m = (z.m)[:zlqf] - } else { - z.m = make([]interval32, zlqf) - } - for zxvk := range z.m { - var zdaf uint32 - zdaf, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zdaf > 0 { - zdaf-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.m[zxvk].start, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "last": - z.m[zxvk].last, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - } - case "rc": - if msgp.IsNil(bts) { - bts, err = msgp.ReadNilBytes(bts) - if err != nil { - return - } - z.rc = nil - } else { - if z.rc == nil { - z.rc = new(runContainer32) - } - var zpks uint32 - zpks, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zpks > 0 { - zpks-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "iv": - var zjfb uint32 - zjfb, bts, err = msgp.ReadArrayHeaderBytes(bts) - if err != nil { - return - } - if cap(z.rc.iv) >= int(zjfb) { - z.rc.iv = (z.rc.iv)[:zjfb] - } else { - z.rc.iv = make([]interval32, zjfb) - } - for zbzg := range z.rc.iv { - var zcxo uint32 - zcxo, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zcxo > 0 { - zcxo-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.rc.iv[zbzg].start, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "last": - z.rc.iv[zbzg].last, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - } - case "card": - z.rc.card, bts, err = msgp.ReadInt64Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - o = bts - return -} - -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message -func (z *addHelper32) Msgsize() (s int) { - s = 1 + 9 + msgp.Uint32Size + 7 + msgp.Uint32Size + 14 + msgp.Uint32Size + 2 + msgp.ArrayHeaderSize + (len(z.m) * (12 + msgp.Uint32Size + msgp.Uint32Size)) + 3 - if z.rc == nil { - s += msgp.NilSize - } else { - s += 1 + 3 + msgp.ArrayHeaderSize + (len(z.rc.iv) * (12 + msgp.Uint32Size + msgp.Uint32Size)) + 5 + msgp.Int64Size - } - return -} - -// DecodeMsg implements msgp.Decodable -func (z *interval32) DecodeMsg(dc *msgp.Reader) (err error) { - var field []byte - _ = field - var zeff uint32 - zeff, err = dc.ReadMapHeader() - if err != nil { - return - } - for zeff > 0 { - zeff-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.start, err = dc.ReadUint32() - if err != nil { - return - } - case "last": - z.last, err = dc.ReadUint32() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - return -} - -// EncodeMsg implements msgp.Encodable -func (z interval32) EncodeMsg(en *msgp.Writer) (err error) { - // map header, size 2 - // write "start" - err = en.Append(0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.start) - if err != nil { - return - } - // write "last" - err = en.Append(0xa4, 0x6c, 0x61, 0x73, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.last) - if err != nil { - return - } - return -} - -// MarshalMsg implements msgp.Marshaler -func (z interval32) MarshalMsg(b []byte) (o []byte, err error) { - o = msgp.Require(b, z.Msgsize()) - // map header, size 2 - // string "start" - o = append(o, 0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - o = msgp.AppendUint32(o, z.start) - // string "last" - o = append(o, 0xa4, 0x6c, 0x61, 0x73, 0x74) - o = msgp.AppendUint32(o, z.last) - return -} - -// UnmarshalMsg implements msgp.Unmarshaler -func (z *interval32) UnmarshalMsg(bts []byte) (o []byte, err error) { - var field []byte - _ = field - var zrsw uint32 - zrsw, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zrsw > 0 { - zrsw-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.start, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "last": - z.last, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - o = bts - return -} - -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message -func (z interval32) Msgsize() (s int) { - s = 1 + 6 + msgp.Uint32Size + 5 + msgp.Uint32Size - return -} - -// DecodeMsg implements msgp.Decodable -func (z *runContainer32) DecodeMsg(dc *msgp.Reader) (err error) { - var field []byte - _ = field - var zdnj uint32 - zdnj, err = dc.ReadMapHeader() - if err != nil { - return - } - for zdnj > 0 { - zdnj-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "iv": - var zobc uint32 - zobc, err = dc.ReadArrayHeader() - if err != nil { - return - } - if cap(z.iv) >= int(zobc) { - z.iv = (z.iv)[:zobc] - } else { - z.iv = make([]interval32, zobc) - } - for zxpk := range z.iv { - var zsnv uint32 - zsnv, err = dc.ReadMapHeader() - if err != nil { - return - } - for zsnv > 0 { - zsnv-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.iv[zxpk].start, err = dc.ReadUint32() - if err != nil { - return - } - case "last": - z.iv[zxpk].last, err = dc.ReadUint32() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - } - case "card": - z.card, err = dc.ReadInt64() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - return -} - -// EncodeMsg implements msgp.Encodable -func (z *runContainer32) EncodeMsg(en *msgp.Writer) (err error) { - // map header, size 2 - // write "iv" - err = en.Append(0x82, 0xa2, 0x69, 0x76) - if err != nil { - return err - } - err = en.WriteArrayHeader(uint32(len(z.iv))) - if err != nil { - return - } - for zxpk := range z.iv { - // map header, size 2 - // write "start" - err = en.Append(0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.iv[zxpk].start) - if err != nil { - return - } - // write "last" - err = en.Append(0xa4, 0x6c, 0x61, 0x73, 0x74) - if err != nil { - return err - } - err = en.WriteUint32(z.iv[zxpk].last) - if err != nil { - return - } - } - // write "card" - err = en.Append(0xa4, 0x63, 0x61, 0x72, 0x64) - if err != nil { - return err - } - err = en.WriteInt64(z.card) - if err != nil { - return - } - return -} - -// MarshalMsg implements msgp.Marshaler -func (z *runContainer32) MarshalMsg(b []byte) (o []byte, err error) { - o = msgp.Require(b, z.Msgsize()) - // map header, size 2 - // string "iv" - o = append(o, 0x82, 0xa2, 0x69, 0x76) - o = msgp.AppendArrayHeader(o, uint32(len(z.iv))) - for zxpk := range z.iv { - // map header, size 2 - // string "start" - o = append(o, 0x82, 0xa5, 0x73, 0x74, 0x61, 0x72, 0x74) - o = msgp.AppendUint32(o, z.iv[zxpk].start) - // string "last" - o = append(o, 0xa4, 0x6c, 0x61, 0x73, 0x74) - o = msgp.AppendUint32(o, z.iv[zxpk].last) - } - // string "card" - o = append(o, 0xa4, 0x63, 0x61, 0x72, 0x64) - o = msgp.AppendInt64(o, z.card) - return -} - -// UnmarshalMsg implements msgp.Unmarshaler -func (z *runContainer32) UnmarshalMsg(bts []byte) (o []byte, err error) { - var field []byte - _ = field - var zkgt uint32 - zkgt, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zkgt > 0 { - zkgt-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "iv": - var zema uint32 - zema, bts, err = msgp.ReadArrayHeaderBytes(bts) - if err != nil { - return - } - if cap(z.iv) >= int(zema) { - z.iv = (z.iv)[:zema] - } else { - z.iv = make([]interval32, zema) - } - for zxpk := range z.iv { - var zpez uint32 - zpez, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zpez > 0 { - zpez-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "start": - z.iv[zxpk].start, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "last": - z.iv[zxpk].last, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - } - case "card": - z.card, bts, err = msgp.ReadInt64Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - o = bts - return -} - -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message -func (z *runContainer32) Msgsize() (s int) { - s = 1 + 3 + msgp.ArrayHeaderSize + (len(z.iv) * (12 + msgp.Uint32Size + msgp.Uint32Size)) + 5 + msgp.Int64Size - return -} - -// DecodeMsg implements msgp.Decodable -func (z *runIterator32) DecodeMsg(dc *msgp.Reader) (err error) { - var field []byte - _ = field - var zqke uint32 - zqke, err = dc.ReadMapHeader() - if err != nil { - return - } - for zqke > 0 { - zqke-- - field, err = dc.ReadMapKeyPtr() - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "rc": - if dc.IsNil() { - err = dc.ReadNil() - if err != nil { - return - } - z.rc = nil - } else { - if z.rc == nil { - z.rc = new(runContainer32) - } - err = z.rc.DecodeMsg(dc) - if err != nil { - return - } - } - case "curIndex": - z.curIndex, err = dc.ReadInt64() - if err != nil { - return - } - case "curPosInIndex": - z.curPosInIndex, err = dc.ReadUint32() - if err != nil { - return - } - case "curSeq": - z.curSeq, err = dc.ReadInt64() - if err != nil { - return - } - default: - err = dc.Skip() - if err != nil { - return - } - } - } - return -} - -// EncodeMsg implements msgp.Encodable -func (z *runIterator32) EncodeMsg(en *msgp.Writer) (err error) { - // map header, size 4 - // write "rc" - err = en.Append(0x84, 0xa2, 0x72, 0x63) - if err != nil { - return err - } - if z.rc == nil { - err = en.WriteNil() - if err != nil { - return - } - } else { - err = z.rc.EncodeMsg(en) - if err != nil { - return - } - } - // write "curIndex" - err = en.Append(0xa8, 0x63, 0x75, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78) - if err != nil { - return err - } - err = en.WriteInt64(z.curIndex) - if err != nil { - return - } - // write "curPosInIndex" - err = en.Append(0xad, 0x63, 0x75, 0x72, 0x50, 0x6f, 0x73, 0x49, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78) - if err != nil { - return err - } - err = en.WriteUint32(z.curPosInIndex) - if err != nil { - return - } - // write "curSeq" - err = en.Append(0xa6, 0x63, 0x75, 0x72, 0x53, 0x65, 0x71) - if err != nil { - return err - } - err = en.WriteInt64(z.curSeq) - if err != nil { - return - } - return -} - -// MarshalMsg implements msgp.Marshaler -func (z *runIterator32) MarshalMsg(b []byte) (o []byte, err error) { - o = msgp.Require(b, z.Msgsize()) - // map header, size 4 - // string "rc" - o = append(o, 0x84, 0xa2, 0x72, 0x63) - if z.rc == nil { - o = msgp.AppendNil(o) - } else { - o, err = z.rc.MarshalMsg(o) - if err != nil { - return - } - } - // string "curIndex" - o = append(o, 0xa8, 0x63, 0x75, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78) - o = msgp.AppendInt64(o, z.curIndex) - // string "curPosInIndex" - o = append(o, 0xad, 0x63, 0x75, 0x72, 0x50, 0x6f, 0x73, 0x49, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78) - o = msgp.AppendUint32(o, z.curPosInIndex) - // string "curSeq" - o = append(o, 0xa6, 0x63, 0x75, 0x72, 0x53, 0x65, 0x71) - o = msgp.AppendInt64(o, z.curSeq) - return -} - -// UnmarshalMsg implements msgp.Unmarshaler -func (z *runIterator32) UnmarshalMsg(bts []byte) (o []byte, err error) { - var field []byte - _ = field - var zqyh uint32 - zqyh, bts, err = msgp.ReadMapHeaderBytes(bts) - if err != nil { - return - } - for zqyh > 0 { - zqyh-- - field, bts, err = msgp.ReadMapKeyZC(bts) - if err != nil { - return - } - switch msgp.UnsafeString(field) { - case "rc": - if msgp.IsNil(bts) { - bts, err = msgp.ReadNilBytes(bts) - if err != nil { - return - } - z.rc = nil - } else { - if z.rc == nil { - z.rc = new(runContainer32) - } - bts, err = z.rc.UnmarshalMsg(bts) - if err != nil { - return - } - } - case "curIndex": - z.curIndex, bts, err = msgp.ReadInt64Bytes(bts) - if err != nil { - return - } - case "curPosInIndex": - z.curPosInIndex, bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - case "curSeq": - z.curSeq, bts, err = msgp.ReadInt64Bytes(bts) - if err != nil { - return - } - default: - bts, err = msgp.Skip(bts) - if err != nil { - return - } - } - } - o = bts - return -} - -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message -func (z *runIterator32) Msgsize() (s int) { - s = 1 + 3 - if z.rc == nil { - s += msgp.NilSize - } else { - s += z.rc.Msgsize() - } - s += 9 + msgp.Int64Size + 14 + msgp.Uint32Size + 7 + msgp.Int64Size - return -} - -// DecodeMsg implements msgp.Decodable -func (z *uint32Slice) DecodeMsg(dc *msgp.Reader) (err error) { - var zjpj uint32 - zjpj, err = dc.ReadArrayHeader() - if err != nil { - return - } - if cap((*z)) >= int(zjpj) { - (*z) = (*z)[:zjpj] - } else { - (*z) = make(uint32Slice, zjpj) - } - for zywj := range *z { - (*z)[zywj], err = dc.ReadUint32() - if err != nil { - return - } - } - return -} - -// EncodeMsg implements msgp.Encodable -func (z uint32Slice) EncodeMsg(en *msgp.Writer) (err error) { - err = en.WriteArrayHeader(uint32(len(z))) - if err != nil { - return - } - for zzpf := range z { - err = en.WriteUint32(z[zzpf]) - if err != nil { - return - } - } - return -} - -// MarshalMsg implements msgp.Marshaler -func (z uint32Slice) MarshalMsg(b []byte) (o []byte, err error) { - o = msgp.Require(b, z.Msgsize()) - o = msgp.AppendArrayHeader(o, uint32(len(z))) - for zzpf := range z { - o = msgp.AppendUint32(o, z[zzpf]) - } - return -} - -// UnmarshalMsg implements msgp.Unmarshaler -func (z *uint32Slice) UnmarshalMsg(bts []byte) (o []byte, err error) { - var zgmo uint32 - zgmo, bts, err = msgp.ReadArrayHeaderBytes(bts) - if err != nil { - return - } - if cap((*z)) >= int(zgmo) { - (*z) = (*z)[:zgmo] - } else { - (*z) = make(uint32Slice, zgmo) - } - for zrfe := range *z { - (*z)[zrfe], bts, err = msgp.ReadUint32Bytes(bts) - if err != nil { - return - } - } - o = bts - return -} - -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message -func (z uint32Slice) Msgsize() (s int) { - s = msgp.ArrayHeaderSize + (len(z) * (msgp.Uint32Size)) - return -} diff --git a/vendor/github.com/RoaringBitmap/roaring/rlecommon.go b/vendor/github.com/RoaringBitmap/roaring/rlecommon.go deleted file mode 100644 index 13363678..00000000 --- a/vendor/github.com/RoaringBitmap/roaring/rlecommon.go +++ /dev/null @@ -1,163 +0,0 @@ -package roaring - -import ( - "fmt" -) - -// common to rle32.go and rle16.go - -// rleVerbose controls whether p() prints show up. -// The testing package sets this based on -// testing.Verbose(). -var rleVerbose bool - -// p is a shorthand for fmt.Printf with beginning and -// trailing newlines. p() makes it easy -// to add diagnostic print statements. -func p(format string, args ...interface{}) { - if rleVerbose { - fmt.Printf("\n"+format+"\n", args...) - } -} - -// MaxUint32 is the largest uint32 value. -const MaxUint32 = 4294967295 - -// MaxUint16 is the largest 16 bit unsigned int. -// This is the largest value an interval16 can store. -const MaxUint16 = 65535 - -// searchOptions allows us to accelerate runContainer32.search with -// prior knowledge of (mostly lower) bounds. This is used by Union -// and Intersect. -type searchOptions struct { - // start here instead of at 0 - startIndex int64 - - // upper bound instead of len(rc.iv); - // endxIndex == 0 means ignore the bound and use - // endxIndex == n ==len(rc.iv) which is also - // naturally the default for search() - // when opt = nil. - endxIndex int64 -} - -// And finds the intersection of rc and b. -func (rc *runContainer32) And(b *Bitmap) *Bitmap { - out := NewBitmap() - for _, p := range rc.iv { - for i := p.start; i <= p.last; i++ { - if b.Contains(i) { - out.Add(i) - } - } - } - return out -} - -// Xor returns the exclusive-or of rc and b. -func (rc *runContainer32) Xor(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - for v := p.start; v <= p.last; v++ { - if out.Contains(v) { - out.RemoveRange(uint64(v), uint64(v+1)) - } else { - out.Add(v) - } - } - } - return out -} - -// Or returns the union of rc and b. -func (rc *runContainer32) Or(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - for v := p.start; v <= p.last; v++ { - out.Add(v) - } - } - return out -} - -// trial is used in the randomized testing of runContainers -type trial struct { - n int - percentFill float64 - ntrial int - - // only in the union test - // only subtract test - percentDelete float64 - - // only in 067 randomized operations - // we do this + 1 passes - numRandomOpsPass int - - // allow sampling range control - // only recent tests respect this. - srang *interval16 -} - -// And finds the intersection of rc and b. -func (rc *runContainer16) And(b *Bitmap) *Bitmap { - out := NewBitmap() - for _, p := range rc.iv { - plast := p.last() - for i := p.start; i <= plast; i++ { - if b.Contains(uint32(i)) { - out.Add(uint32(i)) - } - } - } - return out -} - -// Xor returns the exclusive-or of rc and b. -func (rc *runContainer16) Xor(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - plast := p.last() - for v := p.start; v <= plast; v++ { - w := uint32(v) - if out.Contains(w) { - out.RemoveRange(uint64(w), uint64(w+1)) - } else { - out.Add(w) - } - } - } - return out -} - -// Or returns the union of rc and b. -func (rc *runContainer16) Or(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - plast := p.last() - for v := p.start; v <= plast; v++ { - out.Add(uint32(v)) - } - } - return out -} - -//func (rc *runContainer32) and(container) container { -// panic("TODO. not yet implemented") -//} - -// serializedSizeInBytes returns the number of bytes of memory -// required by this runContainer16. This is for the -// Roaring format, as specified https://github.com/RoaringBitmap/RoaringFormatSpec/ -func (rc *runContainer16) serializedSizeInBytes() int { - // number of runs in one uint16, then each run - // needs two more uint16 - return 2 + len(rc.iv)*4 -} - -// serializedSizeInBytes returns the number of bytes of memory -// required by this runContainer32. -func (rc *runContainer32) serializedSizeInBytes() int { - return 4 + len(rc.iv)*8 -} diff --git a/vendor/github.com/RoaringBitmap/roaring/rlei.go b/vendor/github.com/RoaringBitmap/roaring/rlei.go deleted file mode 100644 index a15a017e..00000000 --- a/vendor/github.com/RoaringBitmap/roaring/rlei.go +++ /dev/null @@ -1,695 +0,0 @@ -package roaring - -/////////////////////////////////////////////////// -// -// container interface methods for runContainer16 -// -/////////////////////////////////////////////////// - -import ( - "fmt" -) - -// compile time verify we meet interface requirements -var _ container = &runContainer16{} - -func (rc *runContainer16) clone() container { - return newRunContainer16CopyIv(rc.iv) -} - -func (rc *runContainer16) minimum() uint16 { - return rc.iv[0].start // assume not empty -} - -func (rc *runContainer16) maximum() uint16 { - return rc.iv[len(rc.iv)-1].last() // assume not empty -} - -func (rc *runContainer16) isFull() bool { - return (len(rc.iv) == 1) && ((rc.iv[0].start == 0) && (rc.iv[0].last() == MaxUint16)) -} - -func (rc *runContainer16) and(a container) container { - if rc.isFull() { - return a.clone() - } - switch c := a.(type) { - case *runContainer16: - return rc.intersect(c) - case *arrayContainer: - return rc.andArray(c) - case *bitmapContainer: - return rc.andBitmapContainer(c) - } - panic("unsupported container type") -} - -func (rc *runContainer16) andCardinality(a container) int { - switch c := a.(type) { - case *runContainer16: - return int(rc.intersectCardinality(c)) - case *arrayContainer: - return rc.andArrayCardinality(c) - case *bitmapContainer: - return rc.andBitmapContainerCardinality(c) - } - panic("unsupported container type") -} - -// andBitmapContainer finds the intersection of rc and b. -func (rc *runContainer16) andBitmapContainer(bc *bitmapContainer) container { - bc2 := newBitmapContainerFromRun(rc) - return bc2.andBitmap(bc) -} - -func (rc *runContainer16) andArrayCardinality(ac *arrayContainer) int { - pos := 0 - answer := 0 - maxpos := ac.getCardinality() - if maxpos == 0 { - return 0 // won't happen in actual code - } - v := ac.content[pos] -mainloop: - for _, p := range rc.iv { - for v < p.start { - pos++ - if pos == maxpos { - break mainloop - } - v = ac.content[pos] - } - for v <= p.last() { - answer++ - pos++ - if pos == maxpos { - break mainloop - } - v = ac.content[pos] - } - } - return answer -} - -func (rc *runContainer16) iand(a container) container { - if rc.isFull() { - return a.clone() - } - switch c := a.(type) { - case *runContainer16: - return rc.inplaceIntersect(c) - case *arrayContainer: - return rc.andArray(c) - case *bitmapContainer: - return rc.iandBitmapContainer(c) - } - panic("unsupported container type") -} - -func (rc *runContainer16) inplaceIntersect(rc2 *runContainer16) container { - // TODO: optimize by doing less allocation, possibly? - - // sect will be new - sect := rc.intersect(rc2) - *rc = *sect - return rc -} - -func (rc *runContainer16) iandBitmapContainer(bc *bitmapContainer) container { - isect := rc.andBitmapContainer(bc) - *rc = *newRunContainer16FromContainer(isect) - return rc -} - -func (rc *runContainer16) andArray(ac *arrayContainer) container { - if len(rc.iv) == 0 { - return newArrayContainer() - } - - acCardinality := ac.getCardinality() - c := newArrayContainerCapacity(acCardinality) - - for rlePos, arrayPos := 0, 0; arrayPos < acCardinality; { - iv := rc.iv[rlePos] - arrayVal := ac.content[arrayPos] - - for iv.last() < arrayVal { - rlePos++ - if rlePos == len(rc.iv) { - return c - } - iv = rc.iv[rlePos] - } - - if iv.start > arrayVal { - arrayPos = advanceUntil(ac.content, arrayPos, len(ac.content), iv.start) - } else { - c.content = append(c.content, arrayVal) - arrayPos++ - } - } - return c -} - -func (rc *runContainer16) andNot(a container) container { - switch c := a.(type) { - case *arrayContainer: - return rc.andNotArray(c) - case *bitmapContainer: - return rc.andNotBitmap(c) - case *runContainer16: - return rc.andNotRunContainer16(c) - } - panic("unsupported container type") -} - -func (rc *runContainer16) fillLeastSignificant16bits(x []uint32, i int, mask uint32) { - k := 0 - var val int64 - for _, p := range rc.iv { - n := p.runlen() - for j := int64(0); j < n; j++ { - val = int64(p.start) + j - x[k+i] = uint32(val) | mask - k++ - } - } -} - -func (rc *runContainer16) getShortIterator() shortIterable { - return rc.newRunIterator16() -} - -func (rc *runContainer16) getManyIterator() manyIterable { - return rc.newManyRunIterator16() -} - -// add the values in the range [firstOfRange, endx). endx -// is still abe to express 2^16 because it is an int not an uint16. -func (rc *runContainer16) iaddRange(firstOfRange, endx int) container { - - if firstOfRange >= endx { - panic(fmt.Sprintf("invalid %v = endx >= firstOfRange", endx)) - } - addme := newRunContainer16TakeOwnership([]interval16{ - { - start: uint16(firstOfRange), - length: uint16(endx - 1 - firstOfRange), - }, - }) - *rc = *rc.union(addme) - return rc -} - -// remove the values in the range [firstOfRange,endx) -func (rc *runContainer16) iremoveRange(firstOfRange, endx int) container { - if firstOfRange >= endx { - panic(fmt.Sprintf("request to iremove empty set [%v, %v),"+ - " nothing to do.", firstOfRange, endx)) - //return rc - } - x := newInterval16Range(uint16(firstOfRange), uint16(endx-1)) - rc.isubtract(x) - return rc -} - -// not flip the values in the range [firstOfRange,endx) -func (rc *runContainer16) not(firstOfRange, endx int) container { - if firstOfRange >= endx { - panic(fmt.Sprintf("invalid %v = endx >= firstOfRange = %v", endx, firstOfRange)) - } - - return rc.Not(firstOfRange, endx) -} - -// Not flips the values in the range [firstOfRange,endx). -// This is not inplace. Only the returned value has the flipped bits. -// -// Currently implemented as (!A intersect B) union (A minus B), -// where A is rc, and B is the supplied [firstOfRange, endx) interval. -// -// TODO(time optimization): convert this to a single pass -// algorithm by copying AndNotRunContainer16() and modifying it. -// Current routine is correct but -// makes 2 more passes through the arrays than should be -// strictly necessary. Measure both ways though--this may not matter. -// -func (rc *runContainer16) Not(firstOfRange, endx int) *runContainer16 { - - if firstOfRange >= endx { - panic(fmt.Sprintf("invalid %v = endx >= firstOfRange == %v", endx, firstOfRange)) - } - - if firstOfRange >= endx { - return rc.Clone() - } - - a := rc - // algo: - // (!A intersect B) union (A minus B) - - nota := a.invert() - - bs := []interval16{newInterval16Range(uint16(firstOfRange), uint16(endx-1))} - b := newRunContainer16TakeOwnership(bs) - - notAintersectB := nota.intersect(b) - - aMinusB := a.AndNotRunContainer16(b) - - rc2 := notAintersectB.union(aMinusB) - return rc2 -} - -// equals is now logical equals; it does not require the -// same underlying container type. -func (rc *runContainer16) equals(o container) bool { - srb, ok := o.(*runContainer16) - - if !ok { - // maybe value instead of pointer - val, valok := o.(*runContainer16) - if valok { - srb = val - ok = true - } - } - if ok { - // Check if the containers are the same object. - if rc == srb { - return true - } - - if len(srb.iv) != len(rc.iv) { - return false - } - - for i, v := range rc.iv { - if v != srb.iv[i] { - return false - } - } - return true - } - - // use generic comparison - if o.getCardinality() != rc.getCardinality() { - return false - } - rit := rc.getShortIterator() - bit := o.getShortIterator() - - //k := 0 - for rit.hasNext() { - if bit.next() != rit.next() { - return false - } - //k++ - } - return true -} - -func (rc *runContainer16) iaddReturnMinimized(x uint16) container { - rc.Add(x) - return rc -} - -func (rc *runContainer16) iadd(x uint16) (wasNew bool) { - return rc.Add(x) -} - -func (rc *runContainer16) iremoveReturnMinimized(x uint16) container { - rc.removeKey(x) - return rc -} - -func (rc *runContainer16) iremove(x uint16) bool { - return rc.removeKey(x) -} - -func (rc *runContainer16) or(a container) container { - if rc.isFull() { - return rc.clone() - } - switch c := a.(type) { - case *runContainer16: - return rc.union(c) - case *arrayContainer: - return rc.orArray(c) - case *bitmapContainer: - return rc.orBitmapContainer(c) - } - panic("unsupported container type") -} - -func (rc *runContainer16) orCardinality(a container) int { - switch c := a.(type) { - case *runContainer16: - return int(rc.unionCardinality(c)) - case *arrayContainer: - return rc.orArrayCardinality(c) - case *bitmapContainer: - return rc.orBitmapContainerCardinality(c) - } - panic("unsupported container type") -} - -// orBitmapContainer finds the union of rc and bc. -func (rc *runContainer16) orBitmapContainer(bc *bitmapContainer) container { - bc2 := newBitmapContainerFromRun(rc) - return bc2.iorBitmap(bc) -} - -func (rc *runContainer16) andBitmapContainerCardinality(bc *bitmapContainer) int { - answer := 0 - for i := range rc.iv { - answer += bc.getCardinalityInRange(uint(rc.iv[i].start), uint(rc.iv[i].last())+1) - } - //bc.computeCardinality() - return answer -} - -func (rc *runContainer16) orBitmapContainerCardinality(bc *bitmapContainer) int { - return rc.getCardinality() + bc.getCardinality() - rc.andBitmapContainerCardinality(bc) -} - -// orArray finds the union of rc and ac. -func (rc *runContainer16) orArray(ac *arrayContainer) container { - bc1 := newBitmapContainerFromRun(rc) - bc2 := ac.toBitmapContainer() - return bc1.orBitmap(bc2) -} - -// orArray finds the union of rc and ac. -func (rc *runContainer16) orArrayCardinality(ac *arrayContainer) int { - return ac.getCardinality() + rc.getCardinality() - rc.andArrayCardinality(ac) -} - -func (rc *runContainer16) ior(a container) container { - if rc.isFull() { - return rc - } - switch c := a.(type) { - case *runContainer16: - return rc.inplaceUnion(c) - case *arrayContainer: - return rc.iorArray(c) - case *bitmapContainer: - return rc.iorBitmapContainer(c) - } - panic("unsupported container type") -} - -func (rc *runContainer16) inplaceUnion(rc2 *runContainer16) container { - p("rc.inplaceUnion with len(rc2.iv)=%v", len(rc2.iv)) - for _, p := range rc2.iv { - last := int64(p.last()) - for i := int64(p.start); i <= last; i++ { - rc.Add(uint16(i)) - } - } - return rc -} - -func (rc *runContainer16) iorBitmapContainer(bc *bitmapContainer) container { - - it := bc.getShortIterator() - for it.hasNext() { - rc.Add(it.next()) - } - return rc -} - -func (rc *runContainer16) iorArray(ac *arrayContainer) container { - it := ac.getShortIterator() - for it.hasNext() { - rc.Add(it.next()) - } - return rc -} - -// lazyIOR is described (not yet implemented) in -// this nice note from @lemire on -// https://github.com/RoaringBitmap/roaring/pull/70#issuecomment-263613737 -// -// Description of lazyOR and lazyIOR from @lemire: -// -// Lazy functions are optional and can be simply -// wrapper around non-lazy functions. -// -// The idea of "laziness" is as follows. It is -// inspired by the concept of lazy evaluation -// you might be familiar with (functional programming -// and all that). So a roaring bitmap is -// such that all its containers are, in some -// sense, chosen to use as little memory as -// possible. This is nice. Also, all bitsets -// are "cardinality aware" so that you can do -// fast rank/select queries, or query the -// cardinality of the whole bitmap... very fast, -// without latency. -// -// However, imagine that you are aggregating 100 -// bitmaps together. So you OR the first two, then OR -// that with the third one and so forth. Clearly, -// intermediate bitmaps don't need to be as -// compressed as possible, right? They can be -// in a "dirty state". You only need the end -// result to be in a nice state... which you -// can achieve by calling repairAfterLazy at the end. -// -// The Java/C code does something special for -// the in-place lazy OR runs. The idea is that -// instead of taking two run containers and -// generating a new one, we actually try to -// do the computation in-place through a -// technique invented by @gssiyankai (pinging him!). -// What you do is you check whether the host -// run container has lots of extra capacity. -// If it does, you move its data at the end of -// the backing array, and then you write -// the answer at the beginning. What this -// trick does is minimize memory allocations. -// -func (rc *runContainer16) lazyIOR(a container) container { - // not lazy at the moment - // TODO: make it lazy - return rc.ior(a) - - /* - switch c := a.(type) { - case *arrayContainer: - return rc.lazyIorArray(c) - case *bitmapContainer: - return rc.lazyIorBitmap(c) - case *runContainer16: - return rc.lazyIorRun16(c) - } - panic("unsupported container type") - */ -} - -// lazyOR is described above in lazyIOR. -func (rc *runContainer16) lazyOR(a container) container { - - // not lazy at the moment - // TODO: make it lazy - return rc.or(a) - - /* - switch c := a.(type) { - case *arrayContainer: - return rc.lazyOrArray(c) - case *bitmapContainer: - return rc.lazyOrBitmap(c) - case *runContainer16: - return rc.lazyOrRunContainer16(c) - } - panic("unsupported container type") - */ -} - -func (rc *runContainer16) intersects(a container) bool { - // TODO: optimize by doing inplace/less allocation, possibly? - isect := rc.and(a) - return isect.getCardinality() > 0 -} - -func (rc *runContainer16) xor(a container) container { - switch c := a.(type) { - case *arrayContainer: - return rc.xorArray(c) - case *bitmapContainer: - return rc.xorBitmap(c) - case *runContainer16: - return rc.xorRunContainer16(c) - } - panic("unsupported container type") -} - -func (rc *runContainer16) iandNot(a container) container { - switch c := a.(type) { - case *arrayContainer: - return rc.iandNotArray(c) - case *bitmapContainer: - return rc.iandNotBitmap(c) - case *runContainer16: - return rc.iandNotRunContainer16(c) - } - panic("unsupported container type") -} - -// flip the values in the range [firstOfRange,endx) -func (rc *runContainer16) inot(firstOfRange, endx int) container { - if firstOfRange >= endx { - panic(fmt.Sprintf("invalid %v = endx >= firstOfRange = %v", endx, firstOfRange)) - } - // TODO: minimize copies, do it all inplace; not() makes a copy. - rc = rc.Not(firstOfRange, endx) - return rc -} - -func (rc *runContainer16) getCardinality() int { - return int(rc.cardinality()) -} - -func (rc *runContainer16) rank(x uint16) int { - n := int64(len(rc.iv)) - xx := int64(x) - w, already, _ := rc.search(xx, nil) - if w < 0 { - return 0 - } - if !already && w == n-1 { - return rc.getCardinality() - } - var rnk int64 - if !already { - for i := int64(0); i <= w; i++ { - rnk += rc.iv[i].runlen() - } - return int(rnk) - } - for i := int64(0); i < w; i++ { - rnk += rc.iv[i].runlen() - } - rnk += int64(x-rc.iv[w].start) + 1 - return int(rnk) -} - -func (rc *runContainer16) selectInt(x uint16) int { - return rc.selectInt16(x) -} - -func (rc *runContainer16) andNotRunContainer16(b *runContainer16) container { - return rc.AndNotRunContainer16(b) -} - -func (rc *runContainer16) andNotArray(ac *arrayContainer) container { - rcb := rc.toBitmapContainer() - acb := ac.toBitmapContainer() - return rcb.andNotBitmap(acb) -} - -func (rc *runContainer16) andNotBitmap(bc *bitmapContainer) container { - rcb := rc.toBitmapContainer() - return rcb.andNotBitmap(bc) -} - -func (rc *runContainer16) toBitmapContainer() *bitmapContainer { - p("run16 toBitmap starting; rc has %v ranges", len(rc.iv)) - bc := newBitmapContainer() - for i := range rc.iv { - bc.iaddRange(int(rc.iv[i].start), int(rc.iv[i].last())+1) - } - bc.computeCardinality() - return bc -} - -func (rc *runContainer16) iandNotRunContainer16(x2 *runContainer16) container { - rcb := rc.toBitmapContainer() - x2b := x2.toBitmapContainer() - rcb.iandNotBitmapSurely(x2b) - // TODO: check size and optimize the return value - // TODO: is inplace modification really required? If not, elide the copy. - rc2 := newRunContainer16FromBitmapContainer(rcb) - *rc = *rc2 - return rc -} - -func (rc *runContainer16) iandNotArray(ac *arrayContainer) container { - rcb := rc.toBitmapContainer() - acb := ac.toBitmapContainer() - rcb.iandNotBitmapSurely(acb) - // TODO: check size and optimize the return value - // TODO: is inplace modification really required? If not, elide the copy. - rc2 := newRunContainer16FromBitmapContainer(rcb) - *rc = *rc2 - return rc -} - -func (rc *runContainer16) iandNotBitmap(bc *bitmapContainer) container { - rcb := rc.toBitmapContainer() - rcb.iandNotBitmapSurely(bc) - // TODO: check size and optimize the return value - // TODO: is inplace modification really required? If not, elide the copy. - rc2 := newRunContainer16FromBitmapContainer(rcb) - *rc = *rc2 - return rc -} - -func (rc *runContainer16) xorRunContainer16(x2 *runContainer16) container { - rcb := rc.toBitmapContainer() - x2b := x2.toBitmapContainer() - return rcb.xorBitmap(x2b) -} - -func (rc *runContainer16) xorArray(ac *arrayContainer) container { - rcb := rc.toBitmapContainer() - acb := ac.toBitmapContainer() - return rcb.xorBitmap(acb) -} - -func (rc *runContainer16) xorBitmap(bc *bitmapContainer) container { - rcb := rc.toBitmapContainer() - return rcb.xorBitmap(bc) -} - -// convert to bitmap or array *if needed* -func (rc *runContainer16) toEfficientContainer() container { - - // runContainer16SerializedSizeInBytes(numRuns) - sizeAsRunContainer := rc.getSizeInBytes() - sizeAsBitmapContainer := bitmapContainerSizeInBytes() - card := int(rc.cardinality()) - sizeAsArrayContainer := arrayContainerSizeInBytes(card) - if sizeAsRunContainer <= minOfInt(sizeAsBitmapContainer, sizeAsArrayContainer) { - return rc - } - if card <= arrayDefaultMaxSize { - return rc.toArrayContainer() - } - bc := newBitmapContainerFromRun(rc) - return bc -} - -func (rc *runContainer16) toArrayContainer() *arrayContainer { - ac := newArrayContainer() - for i := range rc.iv { - ac.iaddRange(int(rc.iv[i].start), int(rc.iv[i].last())+1) - } - return ac -} - -func newRunContainer16FromContainer(c container) *runContainer16 { - - switch x := c.(type) { - case *runContainer16: - return x.Clone() - case *arrayContainer: - return newRunContainer16FromArray(x) - case *bitmapContainer: - return newRunContainer16FromBitmapContainer(x) - } - panic("unsupported container type") -} diff --git a/vendor/github.com/RoaringBitmap/roaring/roaring.go b/vendor/github.com/RoaringBitmap/roaring/roaring.go index 5045a419..69c34c8e 100644 --- a/vendor/github.com/RoaringBitmap/roaring/roaring.go +++ b/vendor/github.com/RoaringBitmap/roaring/roaring.go @@ -52,7 +52,7 @@ func (rb *Bitmap) ToBytes() ([]byte, error) { return rb.highlowcontainer.toBytes() } -// WriteToMsgpack writes a msgpack2/snappy-streaming compressed serialized +// Deprecated: WriteToMsgpack writes a msgpack2/snappy-streaming compressed serialized // version of this bitmap to stream. The format is not // compatible with the WriteTo() format, and is // experimental: it may produce smaller on disk @@ -101,7 +101,7 @@ func (rb *Bitmap) HasRunCompression() bool { return rb.highlowcontainer.hasRunCompression() } -// ReadFromMsgpack reads a msgpack2/snappy-streaming serialized +// Deprecated: ReadFromMsgpack reads a msgpack2/snappy-streaming serialized // version of this bitmap from stream. The format is // expected is that written by the WriteToMsgpack() // call; see additional notes there. @@ -252,6 +252,45 @@ func newIntIterator(a *Bitmap) *intIterator { return p } +type intReverseIterator struct { + pos int + hs uint32 + iter shortIterable + highlowcontainer *roaringArray +} + +// HasNext returns true if there are more integers to iterate over +func (ii *intReverseIterator) HasNext() bool { + return ii.pos >= 0 +} + +func (ii *intReverseIterator) init() { + if ii.pos >= 0 { + ii.iter = ii.highlowcontainer.getContainerAtIndex(ii.pos).getReverseIterator() + ii.hs = uint32(ii.highlowcontainer.getKeyAtIndex(ii.pos)) << 16 + } else { + ii.iter = nil + } +} + +// Next returns the next integer +func (ii *intReverseIterator) Next() uint32 { + x := uint32(ii.iter.next()) | ii.hs + if !ii.iter.hasNext() { + ii.pos = ii.pos - 1 + ii.init() + } + return x +} + +func newIntReverseIterator(a *Bitmap) *intReverseIterator { + p := new(intReverseIterator) + p.highlowcontainer = &a.highlowcontainer + p.pos = a.highlowcontainer.size() - 1 + p.init() + return p +} + // ManyIntIterable allows you to iterate over the values in a Bitmap type ManyIntIterable interface { // pass in a buffer to fill up with values, returns how many values were returned @@ -330,7 +369,12 @@ func (rb *Bitmap) Iterator() IntIterable { return newIntIterator(rb) } -// Iterator creates a new ManyIntIterable to iterate over the integers contained in the bitmap, in sorted order +// ReverseIterator creates a new IntIterable to iterate over the integers contained in the bitmap, in sorted order +func (rb *Bitmap) ReverseIterator() IntIterable { + return newIntReverseIterator(rb) +} + +// ManyIterator creates a new ManyIntIterable to iterate over the integers contained in the bitmap, in sorted order func (rb *Bitmap) ManyIterator() ManyIntIterable { return newManyIntIterator(rb) } @@ -374,6 +418,45 @@ func (rb *Bitmap) Equals(o interface{}) bool { return false } +func AddOffset(x *Bitmap, offset uint32) (answer *Bitmap) { + containerOffset := highbits(offset) + inOffset := lowbits(offset) + if inOffset == 0 { + answer = x.Clone() + for pos := 0; pos < answer.highlowcontainer.size(); pos++ { + key := answer.highlowcontainer.getKeyAtIndex(pos) + key += containerOffset + answer.highlowcontainer.keys[pos] = key + } + } else { + answer = New() + for pos := 0; pos < x.highlowcontainer.size(); pos++ { + key := x.highlowcontainer.getKeyAtIndex(pos) + key += containerOffset + c := x.highlowcontainer.getContainerAtIndex(pos) + offsetted := c.addOffset(inOffset) + if offsetted[0].getCardinality() > 0 { + curSize := answer.highlowcontainer.size() + lastkey := uint16(0) + if curSize > 0 { + lastkey = answer.highlowcontainer.getKeyAtIndex(curSize - 1) + } + if curSize > 0 && lastkey == key { + prev := answer.highlowcontainer.getContainerAtIndex(curSize - 1) + orrseult := prev.ior(offsetted[0]) + answer.highlowcontainer.setContainerAtIndex(curSize-1, orrseult) + } else { + answer.highlowcontainer.appendContainer(key, offsetted[0], false) + } + } + if offsetted[1].getCardinality() > 0 { + answer.highlowcontainer.appendContainer(key+1, offsetted[1], false) + } + } + } + return answer +} + // Add the integer x to the bitmap func (rb *Bitmap) Add(x uint32) { hb := highbits(x) @@ -794,11 +877,6 @@ main: } } -/*func (rb *Bitmap) Or(x2 *Bitmap) { - results := Or(rb, x2) // Todo: could be computed in-place for reduced memory usage - rb.highlowcontainer = results.highlowcontainer -}*/ - // AndNot computes the difference between two bitmaps and stores the result in the current bitmap func (rb *Bitmap) AndNot(x2 *Bitmap) { pos1 := 0 @@ -1086,10 +1164,10 @@ func (rb *Bitmap) Flip(rangeStart, rangeEnd uint64) { return } - hbStart := highbits(uint32(rangeStart)) - lbStart := lowbits(uint32(rangeStart)) - hbLast := highbits(uint32(rangeEnd - 1)) - lbLast := lowbits(uint32(rangeEnd - 1)) + hbStart := uint32(highbits(uint32(rangeStart))) + lbStart := uint32(lowbits(uint32(rangeStart))) + hbLast := uint32(highbits(uint32(rangeEnd - 1))) + lbLast := uint32(lowbits(uint32(rangeEnd - 1))) var max uint32 = maxLowBit for hb := hbStart; hb <= hbLast; hb++ { @@ -1102,7 +1180,7 @@ func (rb *Bitmap) Flip(rangeStart, rangeEnd uint64) { containerLast = uint32(lbLast) } - i := rb.highlowcontainer.getIndex(hb) + i := rb.highlowcontainer.getIndex(uint16(hb)) if i >= 0 { c := rb.highlowcontainer.getWritableContainerAtIndex(i).inot(int(containerStart), int(containerLast)+1) @@ -1113,7 +1191,7 @@ func (rb *Bitmap) Flip(rangeStart, rangeEnd uint64) { } } else { // *think* the range of ones must never be // empty. - rb.highlowcontainer.insertNewKeyValueAt(-i-1, hb, rangeOfOnes(int(containerStart), int(containerLast))) + rb.highlowcontainer.insertNewKeyValueAt(-i-1, uint16(hb), rangeOfOnes(int(containerStart), int(containerLast))) } } } @@ -1139,24 +1217,24 @@ func (rb *Bitmap) AddRange(rangeStart, rangeEnd uint64) { lbLast := uint32(lowbits(uint32(rangeEnd - 1))) var max uint32 = maxLowBit - for hb := uint16(hbStart); hb <= uint16(hbLast); hb++ { + for hb := hbStart; hb <= hbLast; hb++ { containerStart := uint32(0) - if hb == uint16(hbStart) { + if hb == hbStart { containerStart = lbStart } containerLast := max - if hb == uint16(hbLast) { + if hb == hbLast { containerLast = lbLast } - i := rb.highlowcontainer.getIndex(hb) + i := rb.highlowcontainer.getIndex(uint16(hb)) if i >= 0 { c := rb.highlowcontainer.getWritableContainerAtIndex(i).iaddRange(int(containerStart), int(containerLast)+1) rb.highlowcontainer.setContainerAtIndex(i, c) } else { // *think* the range of ones must never be // empty. - rb.highlowcontainer.insertNewKeyValueAt(-i-1, hb, rangeOfOnes(int(containerStart), int(containerLast))) + rb.highlowcontainer.insertNewKeyValueAt(-i-1, uint16(hb), rangeOfOnes(int(containerStart), int(containerLast))) } } } @@ -1243,13 +1321,13 @@ func Flip(bm *Bitmap, rangeStart, rangeEnd uint64) *Bitmap { } answer := NewBitmap() - hbStart := highbits(uint32(rangeStart)) - lbStart := lowbits(uint32(rangeStart)) - hbLast := highbits(uint32(rangeEnd - 1)) - lbLast := lowbits(uint32(rangeEnd - 1)) + hbStart := uint32(highbits(uint32(rangeStart))) + lbStart := uint32(lowbits(uint32(rangeStart))) + hbLast := uint32(highbits(uint32(rangeEnd - 1))) + lbLast := uint32(lowbits(uint32(rangeEnd - 1))) // copy the containers before the active area - answer.highlowcontainer.appendCopiesUntil(bm.highlowcontainer, hbStart) + answer.highlowcontainer.appendCopiesUntil(bm.highlowcontainer, uint16(hbStart)) var max uint32 = maxLowBit for hb := hbStart; hb <= hbLast; hb++ { @@ -1262,23 +1340,23 @@ func Flip(bm *Bitmap, rangeStart, rangeEnd uint64) *Bitmap { containerLast = uint32(lbLast) } - i := bm.highlowcontainer.getIndex(hb) - j := answer.highlowcontainer.getIndex(hb) + i := bm.highlowcontainer.getIndex(uint16(hb)) + j := answer.highlowcontainer.getIndex(uint16(hb)) if i >= 0 { c := bm.highlowcontainer.getContainerAtIndex(i).not(int(containerStart), int(containerLast)+1) if c.getCardinality() > 0 { - answer.highlowcontainer.insertNewKeyValueAt(-j-1, hb, c) + answer.highlowcontainer.insertNewKeyValueAt(-j-1, uint16(hb), c) } } else { // *think* the range of ones must never be // empty. - answer.highlowcontainer.insertNewKeyValueAt(-j-1, hb, + answer.highlowcontainer.insertNewKeyValueAt(-j-1, uint16(hb), rangeOfOnes(int(containerStart), int(containerLast))) } } // copy the containers after the active area. - answer.highlowcontainer.appendCopiesAfter(bm.highlowcontainer, hbLast) + answer.highlowcontainer.appendCopiesAfter(bm.highlowcontainer, uint16(hbLast)) return answer } diff --git a/vendor/github.com/RoaringBitmap/roaring/roaringarray.go b/vendor/github.com/RoaringBitmap/roaring/roaringarray.go index d9659159..3f777591 100644 --- a/vendor/github.com/RoaringBitmap/roaring/roaringarray.go +++ b/vendor/github.com/RoaringBitmap/roaring/roaringarray.go @@ -14,6 +14,8 @@ import ( //go:generate msgp -unexported type container interface { + addOffset(uint16) []container + clone() container and(container) container andCardinality(container) int @@ -38,6 +40,7 @@ type container interface { inot(firstOfRange, endx int) container // i stands for inplace, range is [firstOfRange,endx) xor(r container) container getShortIterator() shortIterable + getReverseIterator() shortIterable getManyIterator() manyIterable contains(i uint16) bool maximum() uint16 @@ -456,8 +459,7 @@ func (ra *roaringArray) serializedSizeInBytes() uint64 { // // spec: https://github.com/RoaringBitmap/RoaringFormatSpec // -func (ra *roaringArray) toBytes() ([]byte, error) { - stream := &bytes.Buffer{} +func (ra *roaringArray) writeTo(w io.Writer) (n int64, err error) { hasRun := ra.hasRunCompression() isRunSizeInBytes := 0 cookieSize := 8 @@ -522,33 +524,29 @@ func (ra *roaringArray) toBytes() ([]byte, error) { } } - _, err := stream.Write(buf[:nw]) + written, err := w.Write(buf[:nw]) if err != nil { - return nil, err + return n, err } - for i, c := range ra.containers { - _ = i - _, err := c.writeTo(stream) + n += int64(written) + + for _, c := range ra.containers { + written, err := c.writeTo(w) if err != nil { - return nil, err + return n, err } + n += int64(written) } - return stream.Bytes(), nil + return n, nil } // // spec: https://github.com/RoaringBitmap/RoaringFormatSpec // -func (ra *roaringArray) writeTo(out io.Writer) (int64, error) { - by, err := ra.toBytes() - if err != nil { - return 0, err - } - n, err := out.Write(by) - if err == nil && n < len(by) { - err = io.ErrShortWrite - } - return int64(n), err +func (ra *roaringArray) toBytes() ([]byte, error) { + var buf bytes.Buffer + _, err := ra.writeTo(&buf) + return buf.Bytes(), err } func (ra *roaringArray) fromBuffer(buf []byte) (int64, error) { diff --git a/vendor/github.com/RoaringBitmap/roaring/roaringarray_gen.go b/vendor/github.com/RoaringBitmap/roaring/roaringarray_gen.go index 99fb0f69..dcd71875 100644 --- a/vendor/github.com/RoaringBitmap/roaring/roaringarray_gen.go +++ b/vendor/github.com/RoaringBitmap/roaring/roaringarray_gen.go @@ -8,7 +8,7 @@ import ( "github.com/tinylib/msgp/msgp" ) -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *containerSerz) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -48,7 +48,7 @@ func (z *containerSerz) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *containerSerz) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 2 // write "t" @@ -72,7 +72,7 @@ func (z *containerSerz) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *containerSerz) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 2 @@ -88,7 +88,7 @@ func (z *containerSerz) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *containerSerz) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -129,13 +129,13 @@ func (z *containerSerz) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *containerSerz) Msgsize() (s int) { s = 1 + 2 + msgp.Uint8Size + 2 + z.r.Msgsize() return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *contype) DecodeMsg(dc *msgp.Reader) (err error) { { var zajw uint8 @@ -148,7 +148,7 @@ func (z *contype) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z contype) EncodeMsg(en *msgp.Writer) (err error) { err = en.WriteUint8(uint8(z)) if err != nil { @@ -157,14 +157,14 @@ func (z contype) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z contype) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) o = msgp.AppendUint8(o, uint8(z)) return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *contype) UnmarshalMsg(bts []byte) (o []byte, err error) { { var zwht uint8 @@ -178,13 +178,13 @@ func (z *contype) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z contype) Msgsize() (s int) { s = msgp.Uint8Size return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *roaringArray) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -295,7 +295,7 @@ func (z *roaringArray) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *roaringArray) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 4 // write "keys" @@ -370,7 +370,7 @@ func (z *roaringArray) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *roaringArray) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 4 @@ -407,7 +407,7 @@ func (z *roaringArray) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *roaringArray) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -519,7 +519,7 @@ func (z *roaringArray) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *roaringArray) Msgsize() (s int) { s = 1 + 5 + msgp.ArrayHeaderSize + (len(z.keys) * (msgp.Uint16Size)) + 16 + msgp.ArrayHeaderSize + (len(z.needCopyOnWrite) * (msgp.BoolSize)) + 12 + msgp.BoolSize + 8 + msgp.ArrayHeaderSize for zxhx := range z.conserz { diff --git a/vendor/github.com/RoaringBitmap/roaring/rle16.go b/vendor/github.com/RoaringBitmap/roaring/runcontainer.go similarity index 68% rename from vendor/github.com/RoaringBitmap/roaring/rle16.go rename to vendor/github.com/RoaringBitmap/roaring/runcontainer.go index 951af65f..eed894b4 100644 --- a/vendor/github.com/RoaringBitmap/roaring/rle16.go +++ b/vendor/github.com/RoaringBitmap/roaring/runcontainer.go @@ -853,6 +853,21 @@ func (rc *runContainer16) numIntervals() int { return len(rc.iv) } +// searchOptions allows us to accelerate search with +// prior knowledge of (mostly lower) bounds. This is used by Union +// and Intersect. +type searchOptions struct { + // start here instead of at 0 + startIndex int64 + + // upper bound instead of len(rc.iv); + // endxIndex == 0 means ignore the bound and use + // endxIndex == n ==len(rc.iv) which is also + // naturally the default for search() + // when opt = nil. + endxIndex int64 +} + // search returns alreadyPresent to indicate if the // key is already in one of our interval16s. // @@ -1204,6 +1219,78 @@ func (ri *runIterator16) remove() uint16 { return cur } +// runReverseIterator16 advice: you must call next() at least once +// before calling cur(); and you should call hasNext() +// before calling next() to insure there are contents. +type runReverseIterator16 struct { + rc *runContainer16 + curIndex int64 // index into rc.iv + curPosInIndex uint16 // offset in rc.iv[curIndex] + curSeq int64 // 0->cardinality, performance optimization in hasNext() +} + +// newRunReverseIterator16 returns a new empty run iterator. +func (rc *runContainer16) newRunReverseIterator16() *runReverseIterator16 { + return &runReverseIterator16{rc: rc, curIndex: -2} +} + +// hasNext returns false if calling next will panic. It +// returns true when there is at least one more value +// available in the iteration sequence. +func (ri *runReverseIterator16) hasNext() bool { + if len(ri.rc.iv) == 0 { + return false + } + if ri.curIndex == -2 { + return true + } + return ri.rc.cardinality()-ri.curSeq > 1 +} + +// cur returns the current value pointed to by the iterator. +func (ri *runReverseIterator16) cur() uint16 { + return ri.rc.iv[ri.curIndex].start + ri.curPosInIndex +} + +// next returns the next value in the iteration sequence. +func (ri *runReverseIterator16) next() uint16 { + if !ri.hasNext() { + panic("no next available") + } + if ri.curIndex == -1 { + panic("runReverseIterator.next() going beyond what is available") + } + if ri.curIndex == -2 { + // first time is special + ri.curIndex = int64(len(ri.rc.iv)) - 1 + ri.curPosInIndex = ri.rc.iv[ri.curIndex].length + } else { + if ri.curPosInIndex > 0 { + ri.curPosInIndex-- + } else { + ri.curIndex-- + ri.curPosInIndex = ri.rc.iv[ri.curIndex].length + } + ri.curSeq++ + } + return ri.cur() +} + +// remove removes the element that the iterator +// is on from the run container. You can use +// cur if you want to double check what is about +// to be deleted. +func (ri *runReverseIterator16) remove() uint16 { + n := ri.rc.cardinality() + if n == 0 { + panic("runReverseIterator.Remove called on empty runContainer16") + } + cur := ri.cur() + + ri.rc.deleteAt(&ri.curIndex, &ri.curPosInIndex, &ri.curSeq) + return cur +} + type manyRunIterator16 struct { rc *runContainer16 curIndex int64 @@ -1241,9 +1328,9 @@ func (ri *manyRunIterator16) nextMany(hs uint32, buf []uint32) int { } buf[n] = uint32(ri.rc.iv[ri.curIndex].start) | hs if ri.curIndex != 0 { - ri.curSeq += 1 + ri.curSeq++ } - n += 1 + n++ // not strictly necessarily due to len(buf)-n min check, but saves some work continue } @@ -1724,24 +1811,750 @@ func (rc *runContainer16) containerType() contype { } func (rc *runContainer16) equals16(srb *runContainer16) bool { - //p("both rc16") // Check if the containers are the same object. if rc == srb { - //p("same object") return true } if len(srb.iv) != len(rc.iv) { - //p("iv len differ") return false } for i, v := range rc.iv { if v != srb.iv[i] { - //p("differ at iv i=%v, srb.iv[i]=%v, rc.iv[i]=%v", i, srb.iv[i], rc.iv[i]) return false } } - //p("all intervals same, returning true") return true } + +// compile time verify we meet interface requirements +var _ container = &runContainer16{} + +func (rc *runContainer16) clone() container { + return newRunContainer16CopyIv(rc.iv) +} + +func (rc *runContainer16) minimum() uint16 { + return rc.iv[0].start // assume not empty +} + +func (rc *runContainer16) maximum() uint16 { + return rc.iv[len(rc.iv)-1].last() // assume not empty +} + +func (rc *runContainer16) isFull() bool { + return (len(rc.iv) == 1) && ((rc.iv[0].start == 0) && (rc.iv[0].last() == MaxUint16)) +} + +func (rc *runContainer16) and(a container) container { + if rc.isFull() { + return a.clone() + } + switch c := a.(type) { + case *runContainer16: + return rc.intersect(c) + case *arrayContainer: + return rc.andArray(c) + case *bitmapContainer: + return rc.andBitmapContainer(c) + } + panic("unsupported container type") +} + +func (rc *runContainer16) andCardinality(a container) int { + switch c := a.(type) { + case *runContainer16: + return int(rc.intersectCardinality(c)) + case *arrayContainer: + return rc.andArrayCardinality(c) + case *bitmapContainer: + return rc.andBitmapContainerCardinality(c) + } + panic("unsupported container type") +} + +// andBitmapContainer finds the intersection of rc and b. +func (rc *runContainer16) andBitmapContainer(bc *bitmapContainer) container { + bc2 := newBitmapContainerFromRun(rc) + return bc2.andBitmap(bc) +} + +func (rc *runContainer16) andArrayCardinality(ac *arrayContainer) int { + pos := 0 + answer := 0 + maxpos := ac.getCardinality() + if maxpos == 0 { + return 0 // won't happen in actual code + } + v := ac.content[pos] +mainloop: + for _, p := range rc.iv { + for v < p.start { + pos++ + if pos == maxpos { + break mainloop + } + v = ac.content[pos] + } + for v <= p.last() { + answer++ + pos++ + if pos == maxpos { + break mainloop + } + v = ac.content[pos] + } + } + return answer +} + +func (rc *runContainer16) iand(a container) container { + if rc.isFull() { + return a.clone() + } + switch c := a.(type) { + case *runContainer16: + return rc.inplaceIntersect(c) + case *arrayContainer: + return rc.andArray(c) + case *bitmapContainer: + return rc.iandBitmapContainer(c) + } + panic("unsupported container type") +} + +func (rc *runContainer16) inplaceIntersect(rc2 *runContainer16) container { + // TODO: optimize by doing less allocation, possibly? + // sect will be new + sect := rc.intersect(rc2) + *rc = *sect + return rc +} + +func (rc *runContainer16) iandBitmapContainer(bc *bitmapContainer) container { + isect := rc.andBitmapContainer(bc) + *rc = *newRunContainer16FromContainer(isect) + return rc +} + +func (rc *runContainer16) andArray(ac *arrayContainer) container { + if len(rc.iv) == 0 { + return newArrayContainer() + } + + acCardinality := ac.getCardinality() + c := newArrayContainerCapacity(acCardinality) + + for rlePos, arrayPos := 0, 0; arrayPos < acCardinality; { + iv := rc.iv[rlePos] + arrayVal := ac.content[arrayPos] + + for iv.last() < arrayVal { + rlePos++ + if rlePos == len(rc.iv) { + return c + } + iv = rc.iv[rlePos] + } + + if iv.start > arrayVal { + arrayPos = advanceUntil(ac.content, arrayPos, len(ac.content), iv.start) + } else { + c.content = append(c.content, arrayVal) + arrayPos++ + } + } + return c +} + +func (rc *runContainer16) andNot(a container) container { + switch c := a.(type) { + case *arrayContainer: + return rc.andNotArray(c) + case *bitmapContainer: + return rc.andNotBitmap(c) + case *runContainer16: + return rc.andNotRunContainer16(c) + } + panic("unsupported container type") +} + +func (rc *runContainer16) fillLeastSignificant16bits(x []uint32, i int, mask uint32) { + k := 0 + var val int64 + for _, p := range rc.iv { + n := p.runlen() + for j := int64(0); j < n; j++ { + val = int64(p.start) + j + x[k+i] = uint32(val) | mask + k++ + } + } +} + +func (rc *runContainer16) getShortIterator() shortIterable { + return rc.newRunIterator16() +} + +func (rc *runContainer16) getReverseIterator() shortIterable { + return rc.newRunReverseIterator16() +} + +func (rc *runContainer16) getManyIterator() manyIterable { + return rc.newManyRunIterator16() +} + +// add the values in the range [firstOfRange, endx). endx +// is still abe to express 2^16 because it is an int not an uint16. +func (rc *runContainer16) iaddRange(firstOfRange, endx int) container { + + if firstOfRange >= endx { + panic(fmt.Sprintf("invalid %v = endx >= firstOfRange", endx)) + } + addme := newRunContainer16TakeOwnership([]interval16{ + { + start: uint16(firstOfRange), + length: uint16(endx - 1 - firstOfRange), + }, + }) + *rc = *rc.union(addme) + return rc +} + +// remove the values in the range [firstOfRange,endx) +func (rc *runContainer16) iremoveRange(firstOfRange, endx int) container { + if firstOfRange >= endx { + panic(fmt.Sprintf("request to iremove empty set [%v, %v),"+ + " nothing to do.", firstOfRange, endx)) + //return rc + } + x := newInterval16Range(uint16(firstOfRange), uint16(endx-1)) + rc.isubtract(x) + return rc +} + +// not flip the values in the range [firstOfRange,endx) +func (rc *runContainer16) not(firstOfRange, endx int) container { + if firstOfRange >= endx { + panic(fmt.Sprintf("invalid %v = endx >= firstOfRange = %v", endx, firstOfRange)) + } + + return rc.Not(firstOfRange, endx) +} + +// Not flips the values in the range [firstOfRange,endx). +// This is not inplace. Only the returned value has the flipped bits. +// +// Currently implemented as (!A intersect B) union (A minus B), +// where A is rc, and B is the supplied [firstOfRange, endx) interval. +// +// TODO(time optimization): convert this to a single pass +// algorithm by copying AndNotRunContainer16() and modifying it. +// Current routine is correct but +// makes 2 more passes through the arrays than should be +// strictly necessary. Measure both ways though--this may not matter. +// +func (rc *runContainer16) Not(firstOfRange, endx int) *runContainer16 { + + if firstOfRange >= endx { + panic(fmt.Sprintf("invalid %v = endx >= firstOfRange == %v", endx, firstOfRange)) + } + + if firstOfRange >= endx { + return rc.Clone() + } + + a := rc + // algo: + // (!A intersect B) union (A minus B) + + nota := a.invert() + + bs := []interval16{newInterval16Range(uint16(firstOfRange), uint16(endx-1))} + b := newRunContainer16TakeOwnership(bs) + + notAintersectB := nota.intersect(b) + + aMinusB := a.AndNotRunContainer16(b) + + rc2 := notAintersectB.union(aMinusB) + return rc2 +} + +// equals is now logical equals; it does not require the +// same underlying container type. +func (rc *runContainer16) equals(o container) bool { + srb, ok := o.(*runContainer16) + + if !ok { + // maybe value instead of pointer + val, valok := o.(*runContainer16) + if valok { + srb = val + ok = true + } + } + if ok { + // Check if the containers are the same object. + if rc == srb { + return true + } + + if len(srb.iv) != len(rc.iv) { + return false + } + + for i, v := range rc.iv { + if v != srb.iv[i] { + return false + } + } + return true + } + + // use generic comparison + if o.getCardinality() != rc.getCardinality() { + return false + } + rit := rc.getShortIterator() + bit := o.getShortIterator() + + //k := 0 + for rit.hasNext() { + if bit.next() != rit.next() { + return false + } + //k++ + } + return true +} + +func (rc *runContainer16) iaddReturnMinimized(x uint16) container { + rc.Add(x) + return rc +} + +func (rc *runContainer16) iadd(x uint16) (wasNew bool) { + return rc.Add(x) +} + +func (rc *runContainer16) iremoveReturnMinimized(x uint16) container { + rc.removeKey(x) + return rc +} + +func (rc *runContainer16) iremove(x uint16) bool { + return rc.removeKey(x) +} + +func (rc *runContainer16) or(a container) container { + if rc.isFull() { + return rc.clone() + } + switch c := a.(type) { + case *runContainer16: + return rc.union(c) + case *arrayContainer: + return rc.orArray(c) + case *bitmapContainer: + return rc.orBitmapContainer(c) + } + panic("unsupported container type") +} + +func (rc *runContainer16) orCardinality(a container) int { + switch c := a.(type) { + case *runContainer16: + return int(rc.unionCardinality(c)) + case *arrayContainer: + return rc.orArrayCardinality(c) + case *bitmapContainer: + return rc.orBitmapContainerCardinality(c) + } + panic("unsupported container type") +} + +// orBitmapContainer finds the union of rc and bc. +func (rc *runContainer16) orBitmapContainer(bc *bitmapContainer) container { + bc2 := newBitmapContainerFromRun(rc) + return bc2.iorBitmap(bc) +} + +func (rc *runContainer16) andBitmapContainerCardinality(bc *bitmapContainer) int { + answer := 0 + for i := range rc.iv { + answer += bc.getCardinalityInRange(uint(rc.iv[i].start), uint(rc.iv[i].last())+1) + } + //bc.computeCardinality() + return answer +} + +func (rc *runContainer16) orBitmapContainerCardinality(bc *bitmapContainer) int { + return rc.getCardinality() + bc.getCardinality() - rc.andBitmapContainerCardinality(bc) +} + +// orArray finds the union of rc and ac. +func (rc *runContainer16) orArray(ac *arrayContainer) container { + bc1 := newBitmapContainerFromRun(rc) + bc2 := ac.toBitmapContainer() + return bc1.orBitmap(bc2) +} + +// orArray finds the union of rc and ac. +func (rc *runContainer16) orArrayCardinality(ac *arrayContainer) int { + return ac.getCardinality() + rc.getCardinality() - rc.andArrayCardinality(ac) +} + +func (rc *runContainer16) ior(a container) container { + if rc.isFull() { + return rc + } + switch c := a.(type) { + case *runContainer16: + return rc.inplaceUnion(c) + case *arrayContainer: + return rc.iorArray(c) + case *bitmapContainer: + return rc.iorBitmapContainer(c) + } + panic("unsupported container type") +} + +func (rc *runContainer16) inplaceUnion(rc2 *runContainer16) container { + for _, p := range rc2.iv { + last := int64(p.last()) + for i := int64(p.start); i <= last; i++ { + rc.Add(uint16(i)) + } + } + return rc +} + +func (rc *runContainer16) iorBitmapContainer(bc *bitmapContainer) container { + + it := bc.getShortIterator() + for it.hasNext() { + rc.Add(it.next()) + } + return rc +} + +func (rc *runContainer16) iorArray(ac *arrayContainer) container { + it := ac.getShortIterator() + for it.hasNext() { + rc.Add(it.next()) + } + return rc +} + +// lazyIOR is described (not yet implemented) in +// this nice note from @lemire on +// https://github.com/RoaringBitmap/roaring/pull/70#issuecomment-263613737 +// +// Description of lazyOR and lazyIOR from @lemire: +// +// Lazy functions are optional and can be simply +// wrapper around non-lazy functions. +// +// The idea of "laziness" is as follows. It is +// inspired by the concept of lazy evaluation +// you might be familiar with (functional programming +// and all that). So a roaring bitmap is +// such that all its containers are, in some +// sense, chosen to use as little memory as +// possible. This is nice. Also, all bitsets +// are "cardinality aware" so that you can do +// fast rank/select queries, or query the +// cardinality of the whole bitmap... very fast, +// without latency. +// +// However, imagine that you are aggregating 100 +// bitmaps together. So you OR the first two, then OR +// that with the third one and so forth. Clearly, +// intermediate bitmaps don't need to be as +// compressed as possible, right? They can be +// in a "dirty state". You only need the end +// result to be in a nice state... which you +// can achieve by calling repairAfterLazy at the end. +// +// The Java/C code does something special for +// the in-place lazy OR runs. The idea is that +// instead of taking two run containers and +// generating a new one, we actually try to +// do the computation in-place through a +// technique invented by @gssiyankai (pinging him!). +// What you do is you check whether the host +// run container has lots of extra capacity. +// If it does, you move its data at the end of +// the backing array, and then you write +// the answer at the beginning. What this +// trick does is minimize memory allocations. +// +func (rc *runContainer16) lazyIOR(a container) container { + // not lazy at the moment + return rc.ior(a) +} + +// lazyOR is described above in lazyIOR. +func (rc *runContainer16) lazyOR(a container) container { + // not lazy at the moment + return rc.or(a) +} + +func (rc *runContainer16) intersects(a container) bool { + // TODO: optimize by doing inplace/less allocation, possibly? + isect := rc.and(a) + return isect.getCardinality() > 0 +} + +func (rc *runContainer16) xor(a container) container { + switch c := a.(type) { + case *arrayContainer: + return rc.xorArray(c) + case *bitmapContainer: + return rc.xorBitmap(c) + case *runContainer16: + return rc.xorRunContainer16(c) + } + panic("unsupported container type") +} + +func (rc *runContainer16) iandNot(a container) container { + switch c := a.(type) { + case *arrayContainer: + return rc.iandNotArray(c) + case *bitmapContainer: + return rc.iandNotBitmap(c) + case *runContainer16: + return rc.iandNotRunContainer16(c) + } + panic("unsupported container type") +} + +// flip the values in the range [firstOfRange,endx) +func (rc *runContainer16) inot(firstOfRange, endx int) container { + if firstOfRange >= endx { + panic(fmt.Sprintf("invalid %v = endx >= firstOfRange = %v", endx, firstOfRange)) + } + // TODO: minimize copies, do it all inplace; not() makes a copy. + rc = rc.Not(firstOfRange, endx) + return rc +} + +func (rc *runContainer16) getCardinality() int { + return int(rc.cardinality()) +} + +func (rc *runContainer16) rank(x uint16) int { + n := int64(len(rc.iv)) + xx := int64(x) + w, already, _ := rc.search(xx, nil) + if w < 0 { + return 0 + } + if !already && w == n-1 { + return rc.getCardinality() + } + var rnk int64 + if !already { + for i := int64(0); i <= w; i++ { + rnk += rc.iv[i].runlen() + } + return int(rnk) + } + for i := int64(0); i < w; i++ { + rnk += rc.iv[i].runlen() + } + rnk += int64(x-rc.iv[w].start) + 1 + return int(rnk) +} + +func (rc *runContainer16) selectInt(x uint16) int { + return rc.selectInt16(x) +} + +func (rc *runContainer16) andNotRunContainer16(b *runContainer16) container { + return rc.AndNotRunContainer16(b) +} + +func (rc *runContainer16) andNotArray(ac *arrayContainer) container { + rcb := rc.toBitmapContainer() + acb := ac.toBitmapContainer() + return rcb.andNotBitmap(acb) +} + +func (rc *runContainer16) andNotBitmap(bc *bitmapContainer) container { + rcb := rc.toBitmapContainer() + return rcb.andNotBitmap(bc) +} + +func (rc *runContainer16) toBitmapContainer() *bitmapContainer { + bc := newBitmapContainer() + for i := range rc.iv { + bc.iaddRange(int(rc.iv[i].start), int(rc.iv[i].last())+1) + } + bc.computeCardinality() + return bc +} + +func (rc *runContainer16) iandNotRunContainer16(x2 *runContainer16) container { + rcb := rc.toBitmapContainer() + x2b := x2.toBitmapContainer() + rcb.iandNotBitmapSurely(x2b) + // TODO: check size and optimize the return value + // TODO: is inplace modification really required? If not, elide the copy. + rc2 := newRunContainer16FromBitmapContainer(rcb) + *rc = *rc2 + return rc +} + +func (rc *runContainer16) iandNotArray(ac *arrayContainer) container { + rcb := rc.toBitmapContainer() + acb := ac.toBitmapContainer() + rcb.iandNotBitmapSurely(acb) + // TODO: check size and optimize the return value + // TODO: is inplace modification really required? If not, elide the copy. + rc2 := newRunContainer16FromBitmapContainer(rcb) + *rc = *rc2 + return rc +} + +func (rc *runContainer16) iandNotBitmap(bc *bitmapContainer) container { + rcb := rc.toBitmapContainer() + rcb.iandNotBitmapSurely(bc) + // TODO: check size and optimize the return value + // TODO: is inplace modification really required? If not, elide the copy. + rc2 := newRunContainer16FromBitmapContainer(rcb) + *rc = *rc2 + return rc +} + +func (rc *runContainer16) xorRunContainer16(x2 *runContainer16) container { + rcb := rc.toBitmapContainer() + x2b := x2.toBitmapContainer() + return rcb.xorBitmap(x2b) +} + +func (rc *runContainer16) xorArray(ac *arrayContainer) container { + rcb := rc.toBitmapContainer() + acb := ac.toBitmapContainer() + return rcb.xorBitmap(acb) +} + +func (rc *runContainer16) xorBitmap(bc *bitmapContainer) container { + rcb := rc.toBitmapContainer() + return rcb.xorBitmap(bc) +} + +// convert to bitmap or array *if needed* +func (rc *runContainer16) toEfficientContainer() container { + + // runContainer16SerializedSizeInBytes(numRuns) + sizeAsRunContainer := rc.getSizeInBytes() + sizeAsBitmapContainer := bitmapContainerSizeInBytes() + card := int(rc.cardinality()) + sizeAsArrayContainer := arrayContainerSizeInBytes(card) + if sizeAsRunContainer <= minOfInt(sizeAsBitmapContainer, sizeAsArrayContainer) { + return rc + } + if card <= arrayDefaultMaxSize { + return rc.toArrayContainer() + } + bc := newBitmapContainerFromRun(rc) + return bc +} + +func (rc *runContainer16) toArrayContainer() *arrayContainer { + ac := newArrayContainer() + for i := range rc.iv { + ac.iaddRange(int(rc.iv[i].start), int(rc.iv[i].last())+1) + } + return ac +} + +func newRunContainer16FromContainer(c container) *runContainer16 { + + switch x := c.(type) { + case *runContainer16: + return x.Clone() + case *arrayContainer: + return newRunContainer16FromArray(x) + case *bitmapContainer: + return newRunContainer16FromBitmapContainer(x) + } + panic("unsupported container type") +} + +// And finds the intersection of rc and b. +func (rc *runContainer16) And(b *Bitmap) *Bitmap { + out := NewBitmap() + for _, p := range rc.iv { + plast := p.last() + for i := p.start; i <= plast; i++ { + if b.Contains(uint32(i)) { + out.Add(uint32(i)) + } + } + } + return out +} + +// Xor returns the exclusive-or of rc and b. +func (rc *runContainer16) Xor(b *Bitmap) *Bitmap { + out := b.Clone() + for _, p := range rc.iv { + plast := p.last() + for v := p.start; v <= plast; v++ { + w := uint32(v) + if out.Contains(w) { + out.RemoveRange(uint64(w), uint64(w+1)) + } else { + out.Add(w) + } + } + } + return out +} + +// Or returns the union of rc and b. +func (rc *runContainer16) Or(b *Bitmap) *Bitmap { + out := b.Clone() + for _, p := range rc.iv { + plast := p.last() + for v := p.start; v <= plast; v++ { + out.Add(uint32(v)) + } + } + return out +} + +// serializedSizeInBytes returns the number of bytes of memory +// required by this runContainer16. This is for the +// Roaring format, as specified https://github.com/RoaringBitmap/RoaringFormatSpec/ +func (rc *runContainer16) serializedSizeInBytes() int { + // number of runs in one uint16, then each run + // needs two more uint16 + return 2 + len(rc.iv)*4 +} + +func (rc *runContainer16) addOffset(x uint16) []container { + low := newRunContainer16() + high := newRunContainer16() + + for _, iv := range rc.iv { + val := int(iv.start) + int(x) + finalVal := int(val) + int(iv.length) + if val <= 0xffff { + if finalVal <= 0xffff { + low.iv = append(low.iv, interval16{uint16(val), iv.length}) + } else { + low.iv = append(low.iv, interval16{uint16(val), uint16(0xffff - val)}) + high.iv = append(high.iv, interval16{uint16(0), uint16(finalVal & 0xffff)}) + } + } else { + high.iv = append(high.iv, interval16{uint16(val & 0xffff), iv.length}) + } + } + return []container{low, high} +} diff --git a/vendor/github.com/RoaringBitmap/roaring/rle16_gen.go b/vendor/github.com/RoaringBitmap/roaring/runcontainer_gen.go similarity index 93% rename from vendor/github.com/RoaringBitmap/roaring/rle16_gen.go rename to vendor/github.com/RoaringBitmap/roaring/runcontainer_gen.go index 05bf4463..cb910525 100644 --- a/vendor/github.com/RoaringBitmap/roaring/rle16_gen.go +++ b/vendor/github.com/RoaringBitmap/roaring/runcontainer_gen.go @@ -6,7 +6,7 @@ package roaring import "github.com/tinylib/msgp/msgp" -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *addHelper16) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -169,7 +169,7 @@ func (z *addHelper16) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *addHelper16) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 5 // write "runstart" @@ -284,7 +284,7 @@ func (z *addHelper16) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *addHelper16) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 5 @@ -334,7 +334,7 @@ func (z *addHelper16) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *addHelper16) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -498,7 +498,7 @@ func (z *addHelper16) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *addHelper16) Msgsize() (s int) { s = 1 + 9 + msgp.Uint16Size + 7 + msgp.Uint16Size + 14 + msgp.Uint16Size + 2 + msgp.ArrayHeaderSize + (len(z.m) * (12 + msgp.Uint16Size + msgp.Uint16Size)) + 3 if z.rc == nil { @@ -509,7 +509,7 @@ func (z *addHelper16) Msgsize() (s int) { return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *interval16) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -546,7 +546,7 @@ func (z *interval16) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z interval16) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 2 // write "start" @@ -570,7 +570,7 @@ func (z interval16) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z interval16) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 2 @@ -583,7 +583,7 @@ func (z interval16) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *interval16) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -621,13 +621,13 @@ func (z *interval16) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z interval16) Msgsize() (s int) { s = 1 + 6 + msgp.Uint16Size + 5 + msgp.Uint16Size return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *runContainer16) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -701,7 +701,7 @@ func (z *runContainer16) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *runContainer16) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 2 // write "iv" @@ -746,7 +746,7 @@ func (z *runContainer16) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *runContainer16) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 2 @@ -768,7 +768,7 @@ func (z *runContainer16) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *runContainer16) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -843,13 +843,13 @@ func (z *runContainer16) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *runContainer16) Msgsize() (s int) { s = 1 + 3 + msgp.ArrayHeaderSize + (len(z.iv) * (12 + msgp.Uint16Size + msgp.Uint16Size)) + 5 + msgp.Int64Size return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *runIterator16) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte _ = field @@ -906,7 +906,7 @@ func (z *runIterator16) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z *runIterator16) EncodeMsg(en *msgp.Writer) (err error) { // map header, size 4 // write "rc" @@ -955,7 +955,7 @@ func (z *runIterator16) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z *runIterator16) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) // map header, size 4 @@ -981,7 +981,7 @@ func (z *runIterator16) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *runIterator16) UnmarshalMsg(bts []byte) (o []byte, err error) { var field []byte _ = field @@ -1039,7 +1039,7 @@ func (z *runIterator16) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *runIterator16) Msgsize() (s int) { s = 1 + 3 if z.rc == nil { @@ -1051,7 +1051,7 @@ func (z *runIterator16) Msgsize() (s int) { return } -// DecodeMsg implements msgp.Decodable +// Deprecated: DecodeMsg implements msgp.Decodable func (z *uint16Slice) DecodeMsg(dc *msgp.Reader) (err error) { var zjpj uint32 zjpj, err = dc.ReadArrayHeader() @@ -1072,7 +1072,7 @@ func (z *uint16Slice) DecodeMsg(dc *msgp.Reader) (err error) { return } -// EncodeMsg implements msgp.Encodable +// Deprecated: EncodeMsg implements msgp.Encodable func (z uint16Slice) EncodeMsg(en *msgp.Writer) (err error) { err = en.WriteArrayHeader(uint32(len(z))) if err != nil { @@ -1087,7 +1087,7 @@ func (z uint16Slice) EncodeMsg(en *msgp.Writer) (err error) { return } -// MarshalMsg implements msgp.Marshaler +// Deprecated: MarshalMsg implements msgp.Marshaler func (z uint16Slice) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) o = msgp.AppendArrayHeader(o, uint32(len(z))) @@ -1097,7 +1097,7 @@ func (z uint16Slice) MarshalMsg(b []byte) (o []byte, err error) { return } -// UnmarshalMsg implements msgp.Unmarshaler +// Deprecated: UnmarshalMsg implements msgp.Unmarshaler func (z *uint16Slice) UnmarshalMsg(bts []byte) (o []byte, err error) { var zgmo uint32 zgmo, bts, err = msgp.ReadArrayHeaderBytes(bts) @@ -1119,7 +1119,7 @@ func (z *uint16Slice) UnmarshalMsg(bts []byte) (o []byte, err error) { return } -// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +// Deprecated: Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z uint16Slice) Msgsize() (s int) { s = msgp.ArrayHeaderSize + (len(z) * (msgp.Uint16Size)) return diff --git a/vendor/github.com/RoaringBitmap/roaring/serialization.go b/vendor/github.com/RoaringBitmap/roaring/serialization.go index 59c39a66..98fef3c7 100644 --- a/vendor/github.com/RoaringBitmap/roaring/serialization.go +++ b/vendor/github.com/RoaringBitmap/roaring/serialization.go @@ -22,14 +22,6 @@ func (b *runContainer16) writeTo(stream io.Writer) (int, error) { return stream.Write(buf) } -func (b *runContainer32) writeToMsgpack(stream io.Writer) (int, error) { - bts, err := b.MarshalMsg(nil) - if err != nil { - return 0, err - } - return stream.Write(bts) -} - func (b *runContainer16) writeToMsgpack(stream io.Writer) (int, error) { bts, err := b.MarshalMsg(nil) if err != nil { @@ -38,11 +30,6 @@ func (b *runContainer16) writeToMsgpack(stream io.Writer) (int, error) { return stream.Write(bts) } -func (b *runContainer32) readFromMsgpack(stream io.Reader) (int, error) { - err := msgp.Decode(stream, b) - return 0, err -} - func (b *runContainer16) readFromMsgpack(stream io.Reader) (int, error) { err := msgp.Decode(stream, b) return 0, err diff --git a/vendor/github.com/RoaringBitmap/roaring/serialization_generic.go b/vendor/github.com/RoaringBitmap/roaring/serialization_generic.go index 7fcef769..f4805ca3 100644 --- a/vendor/github.com/RoaringBitmap/roaring/serialization_generic.go +++ b/vendor/github.com/RoaringBitmap/roaring/serialization_generic.go @@ -4,6 +4,7 @@ package roaring import ( "encoding/binary" + "errors" "io" ) @@ -26,6 +27,10 @@ func (b *arrayContainer) readFrom(stream io.Reader) (int, error) { } func (b *bitmapContainer) writeTo(stream io.Writer) (int, error) { + if b.cardinality <= arrayDefaultMaxSize { + return 0, errors.New("refusing to write bitmap container with cardinality of array container") + } + // Write set buf := make([]byte, 8*len(b.bitmap)) for i, v := range b.bitmap { diff --git a/vendor/github.com/RoaringBitmap/roaring/serialization_littleendian.go b/vendor/github.com/RoaringBitmap/roaring/serialization_littleendian.go index c1d3ad30..ba5b7539 100644 --- a/vendor/github.com/RoaringBitmap/roaring/serialization_littleendian.go +++ b/vendor/github.com/RoaringBitmap/roaring/serialization_littleendian.go @@ -3,6 +3,7 @@ package roaring import ( + "errors" "io" "reflect" "unsafe" @@ -14,6 +15,9 @@ func (ac *arrayContainer) writeTo(stream io.Writer) (int, error) { } func (bc *bitmapContainer) writeTo(stream io.Writer) (int, error) { + if bc.cardinality <= arrayDefaultMaxSize { + return 0, errors.New("refusing to write bitmap container with cardinality of array container") + } buf := uint64SliceAsByteSlice(bc.bitmap) return stream.Write(buf) } diff --git a/vendor/github.com/RoaringBitmap/roaring/shortiterator.go b/vendor/github.com/RoaringBitmap/roaring/shortiterator.go index ef0acbd1..8415c31f 100644 --- a/vendor/github.com/RoaringBitmap/roaring/shortiterator.go +++ b/vendor/github.com/RoaringBitmap/roaring/shortiterator.go @@ -19,3 +19,18 @@ func (si *shortIterator) next() uint16 { si.loc++ return a } + +type reverseIterator struct { + slice []uint16 + loc int +} + +func (si *reverseIterator) hasNext() bool { + return si.loc >= 0 +} + +func (si *reverseIterator) next() uint16 { + a := si.slice[si.loc] + si.loc-- + return a +} diff --git a/vendor/github.com/RoaringBitmap/roaring/util.go b/vendor/github.com/RoaringBitmap/roaring/util.go index d212660d..b219c175 100644 --- a/vendor/github.com/RoaringBitmap/roaring/util.go +++ b/vendor/github.com/RoaringBitmap/roaring/util.go @@ -14,6 +14,17 @@ const ( serialCookie = 12347 // runs, arrays, and bitmaps noOffsetThreshold = 4 + // MaxUint32 is the largest uint32 value. + MaxUint32 = 4294967295 + + // MaxRange is One more than the maximum allowed bitmap bit index. For use as an upper + // bound for ranges. + MaxRange uint64 = MaxUint32 + 1 + + // MaxUint16 is the largest 16 bit unsigned int. + // This is the largest value an interval16 can store. + MaxUint16 = 65535 + // Compute wordSizeInBytes, the size of a word in bytes. _m = ^uint64(0) _logS = _m>>8&1 + _m>>16&1 + _m>>32&1 @@ -114,7 +125,6 @@ func flipBitmapRange(bitmap []uint64, start int, end int) { endword := (end - 1) / 64 bitmap[firstword] ^= ^(^uint64(0) << uint(start%64)) for i := firstword; i < endword; i++ { - //p("flipBitmapRange on i=%v", i) bitmap[i] = ^bitmap[i] } bitmap[endword] ^= ^uint64(0) >> (uint(-end) % 64) diff --git a/vendor/github.com/couchbase/vellum/README.md b/vendor/github.com/couchbase/vellum/README.md index 0c0759a9..907b8b3a 100644 --- a/vendor/github.com/couchbase/vellum/README.md +++ b/vendor/github.com/couchbase/vellum/README.md @@ -119,7 +119,7 @@ First we insert "are" with the value 4. ![step1](docs/demo1.png) -Next, we insert "ate" with the value 2. +Next, we insert "ate" with the value 2. ![step2](docs/demo2.png) @@ -157,6 +157,21 @@ Yes, however this implementation is only aware of the byte representation you ch In my work on the [Bleve](https://github.com/blevesearch/bleve) project I became aware of the power of the FST for many search-related tasks. The obvious starting point for such a thing in Go was the [mafsa](https://github.com/smartystreets/mafsa) project. While working with mafsa I encountered some issues. First, it did not stream data to disk while building. Second, it chose to use a rune as the fundamental unit of transition in the FST, but I felt using a byte would be more powerful in the end. My hope is that higher-level encoding-aware traversals will be possible when necessary. Finally, as I reported bugs and submitted PRs I learned that the mafsa project was mainly a research project and no longer being maintained. I wanted to build something that could be used in production. As the project advanced more and more techniques from the [BurntSushi/fst](https://github.com/BurntSushi/fst) were adapted to our implementation. +### Are there tools to work with vellum files? + +Under the cmd/vellum subdirectory, there's a command-line tool which +features subcommands that can allow you to create, inspect and query +vellum files. + +### How can I generate a state transition diagram from a vellum file? + +The vellum command-line tool has a "dot" subcommand that can emit +graphviz dot output data from an input vellum file. The dot file can +in turn be converted into an image using graphviz tools. Example... + + $ vellum dot myFile.vellum > output.dot + $ dot -Tpng output.dot -o output.png + ## Related Work Much credit goes to two existing projects: diff --git a/vendor/github.com/couchbase/vellum/automaton.go b/vendor/github.com/couchbase/vellum/automaton.go index 47526595..70398f2d 100644 --- a/vendor/github.com/couchbase/vellum/automaton.go +++ b/vendor/github.com/couchbase/vellum/automaton.go @@ -81,5 +81,5 @@ func (m *AlwaysMatch) Accept(int, byte) int { return 0 } -// creating an alwaysMatchAutomaton to avoid unnecesary repeated allocations. +// creating an alwaysMatchAutomaton to avoid unnecessary repeated allocations. var alwaysMatchAutomaton = &AlwaysMatch{} diff --git a/vendor/github.com/couchbase/vellum/decoder_v1.go b/vendor/github.com/couchbase/vellum/decoder_v1.go index 5a0ea688..5d99c242 100644 --- a/vendor/github.com/couchbase/vellum/decoder_v1.go +++ b/vendor/github.com/couchbase/vellum/decoder_v1.go @@ -219,7 +219,7 @@ func (f *fstStateV1) Final() bool { } func (f *fstStateV1) FinalOutput() uint64 { - if f.numTrans > 0 && f.final && f.outSize > 0 { + if f.final && f.outSize > 0 { return readPackedUint(f.data[f.outFinal : f.outFinal+f.outSize]) } return 0 diff --git a/vendor/github.com/couchbase/vellum/fst.go b/vendor/github.com/couchbase/vellum/fst.go index ecc52839..f09b96e8 100644 --- a/vendor/github.com/couchbase/vellum/fst.go +++ b/vendor/github.com/couchbase/vellum/fst.go @@ -74,8 +74,8 @@ func (f *FST) get(input []byte, prealloc fstState) (uint64, bool, error) { if err != nil { return 0, false, err } - for i := range input { - _, curr, output := state.TransitionFor(input[i]) + for _, c := range input { + _, curr, output := state.TransitionFor(c) if curr == noneAddr { return 0, false, nil } diff --git a/vendor/github.com/couchbase/vellum/fst_iterator.go b/vendor/github.com/couchbase/vellum/fst_iterator.go index 389ac64a..eb731395 100644 --- a/vendor/github.com/couchbase/vellum/fst_iterator.go +++ b/vendor/github.com/couchbase/vellum/fst_iterator.go @@ -76,7 +76,8 @@ func newIterator(f *FST, startKeyInclusive, endKeyExclusive []byte, // Reset resets the Iterator' internal state to allow for iterator // reuse (e.g. pooling). -func (i *FSTIterator) Reset(f *FST, startKeyInclusive, endKeyExclusive []byte, aut Automaton) error { +func (i *FSTIterator) Reset(f *FST, + startKeyInclusive, endKeyExclusive []byte, aut Automaton) error { if aut == nil { aut = alwaysMatchAutomaton } @@ -91,14 +92,14 @@ func (i *FSTIterator) Reset(f *FST, startKeyInclusive, endKeyExclusive []byte, a // pointTo attempts to point us to the specified location func (i *FSTIterator) pointTo(key []byte) error { - // tried to seek before start if bytes.Compare(key, i.startKeyInclusive) < 0 { key = i.startKeyInclusive } - // trid to see past end - if i.endKeyExclusive != nil && bytes.Compare(key, i.endKeyExclusive) > 0 { + // tried to see past end + if i.endKeyExclusive != nil && + bytes.Compare(key, i.endKeyExclusive) > 0 { key = i.endKeyExclusive } @@ -121,21 +122,23 @@ func (i *FSTIterator) pointTo(key []byte) error { i.statesStack = append(i.statesStack, root) i.autStatesStack = append(i.autStatesStack, autStart) for j := 0; j < len(key); j++ { + keyJ := key[j] curr := i.statesStack[len(i.statesStack)-1] autCurr := i.autStatesStack[len(i.autStatesStack)-1] - pos, nextAddr, nextVal := curr.TransitionFor(key[j]) + pos, nextAddr, nextVal := curr.TransitionFor(keyJ) if nextAddr == noneAddr { // needed transition doesn't exist // find last trans before the one we needed - for q := 0; q < curr.NumTransitions(); q++ { - if curr.TransitionAt(q) < key[j] { + for q := curr.NumTransitions() - 1; q >= 0; q-- { + if curr.TransitionAt(q) < keyJ { maxQ = q + break } } break } - autNext := i.aut.Accept(autCurr, key[j]) + autNext := i.aut.Accept(autCurr, keyJ) next, err := i.f.decoder.stateAt(nextAddr, nil) if err != nil { @@ -143,14 +146,16 @@ func (i *FSTIterator) pointTo(key []byte) error { } i.statesStack = append(i.statesStack, next) - i.keysStack = append(i.keysStack, key[j]) + i.keysStack = append(i.keysStack, keyJ) i.keysPosStack = append(i.keysPosStack, pos) i.valsStack = append(i.valsStack, nextVal) i.autStatesStack = append(i.autStatesStack, autNext) continue } - if !i.statesStack[len(i.statesStack)-1].Final() || !i.aut.IsMatch(i.autStatesStack[len(i.autStatesStack)-1]) || bytes.Compare(i.keysStack, key) < 0 { + if !i.statesStack[len(i.statesStack)-1].Final() || + !i.aut.IsMatch(i.autStatesStack[len(i.autStatesStack)-1]) || + bytes.Compare(i.keysStack, key) < 0 { return i.next(maxQ) } @@ -181,15 +186,12 @@ func (i *FSTIterator) Next() error { } func (i *FSTIterator) next(lastOffset int) error { - // remember where we started - if cap(i.nextStart) < len(i.keysStack) { - i.nextStart = make([]byte, len(i.keysStack)) - } else { - i.nextStart = i.nextStart[0:len(i.keysStack)] - } - copy(i.nextStart, i.keysStack) + i.nextStart = append(i.nextStart[:0], i.keysStack...) + nextOffset := lastOffset + 1 + +OUTER: for true { curr := i.statesStack[len(i.statesStack)-1] autCurr := i.autStatesStack[len(i.autStatesStack)-1] @@ -200,58 +202,62 @@ func (i *FSTIterator) next(lastOffset int) error { return nil } - nextOffset := lastOffset + 1 - if nextOffset < curr.NumTransitions() { + numTrans := curr.NumTransitions() + + INNER: + for nextOffset < numTrans { t := curr.TransitionAt(nextOffset) autNext := i.aut.Accept(autCurr, t) - if i.aut.CanMatch(autNext) { - pos, nextAddr, v := curr.TransitionFor(t) - - // the next slot in the statesStack might have an - // fstState instance that we can reuse - var nextPrealloc fstState - if len(i.statesStack) < cap(i.statesStack) { - nextPrealloc = i.statesStack[0:cap(i.statesStack)][len(i.statesStack)] - } - - // push onto stack - next, err := i.f.decoder.stateAt(nextAddr, nextPrealloc) - if err != nil { - return err - } - i.statesStack = append(i.statesStack, next) - i.keysStack = append(i.keysStack, t) - i.keysPosStack = append(i.keysPosStack, pos) - i.valsStack = append(i.valsStack, v) - i.autStatesStack = append(i.autStatesStack, autNext) - lastOffset = -1 - - // check to see if new keystack might have gone too far - if i.endKeyExclusive != nil && bytes.Compare(i.keysStack, i.endKeyExclusive) >= 0 { - return ErrIteratorDone - } - } else { - lastOffset = nextOffset + if !i.aut.CanMatch(autNext) { + nextOffset += 1 + continue INNER } - continue + pos, nextAddr, v := curr.TransitionFor(t) + + // the next slot in the statesStack might have an + // fstState instance that we can reuse + var nextPrealloc fstState + if len(i.statesStack) < cap(i.statesStack) { + nextPrealloc = i.statesStack[0:cap(i.statesStack)][len(i.statesStack)] + } + + // push onto stack + next, err := i.f.decoder.stateAt(nextAddr, nextPrealloc) + if err != nil { + return err + } + + i.statesStack = append(i.statesStack, next) + i.keysStack = append(i.keysStack, t) + i.keysPosStack = append(i.keysPosStack, pos) + i.valsStack = append(i.valsStack, v) + i.autStatesStack = append(i.autStatesStack, autNext) + + // check to see if new keystack might have gone too far + if i.endKeyExclusive != nil && + bytes.Compare(i.keysStack, i.endKeyExclusive) >= 0 { + return ErrIteratorDone + } + + nextOffset = 0 + continue OUTER } - if len(i.statesStack) > 1 { - // no transitions, and still room to pop - i.statesStack = i.statesStack[:len(i.statesStack)-1] - i.keysStack = i.keysStack[:len(i.keysStack)-1] - lastOffset = i.keysPosStack[len(i.keysPosStack)-1] - - i.keysPosStack = i.keysPosStack[:len(i.keysPosStack)-1] - i.valsStack = i.valsStack[:len(i.valsStack)-1] - i.autStatesStack = i.autStatesStack[:len(i.autStatesStack)-1] - continue - } else { + if len(i.statesStack) <= 1 { // stack len is 1 (root), can't go back further, we're done break } + // no transitions, and still room to pop + i.statesStack = i.statesStack[:len(i.statesStack)-1] + i.keysStack = i.keysStack[:len(i.keysStack)-1] + + nextOffset = i.keysPosStack[len(i.keysPosStack)-1] + 1 + + i.keysPosStack = i.keysPosStack[:len(i.keysPosStack)-1] + i.valsStack = i.valsStack[:len(i.valsStack)-1] + i.autStatesStack = i.autStatesStack[:len(i.autStatesStack)-1] } return ErrIteratorDone @@ -262,15 +268,12 @@ func (i *FSTIterator) next(lastOffset int) error { // seek operation would go past the last key, or outside the configured // startKeyInclusive/endKeyExclusive then ErrIteratorDone is returned. func (i *FSTIterator) Seek(key []byte) error { - err := i.pointTo(key) - if err != nil { - return err - } - return nil + return i.pointTo(key) } // Close will free any resources held by this iterator. func (i *FSTIterator) Close() error { - // at the moment we don't do anything, but wanted this for API completeness + // at the moment we don't do anything, + // but wanted this for API completeness return nil } diff --git a/vendor/github.com/couchbase/vellum/levenshtein/dfa.go b/vendor/github.com/couchbase/vellum/levenshtein/dfa.go index 5f94a19d..d69575d4 100644 --- a/vendor/github.com/couchbase/vellum/levenshtein/dfa.go +++ b/vendor/github.com/couchbase/vellum/levenshtein/dfa.go @@ -19,9 +19,17 @@ import ( "fmt" "unicode" + unicode_utf8 "unicode/utf8" + "github.com/couchbase/vellum/utf8" ) +var sequences0ToMaxRune utf8.Sequences + +func init() { + sequences0ToMaxRune, _ = utf8.NewSequences(0, unicode.MaxRune) +} + type dfa struct { states statesStack } @@ -58,17 +66,25 @@ type dfaBuilder struct { lev *dynamicLevenshtein cache map[string]int keyBuf []byte + + sequences utf8.Sequences + rangeStack utf8.RangeStack + startBytes []byte + endBytes []byte + nexts []int } func newDfaBuilder(lev *dynamicLevenshtein) *dfaBuilder { dfab := &dfaBuilder{ dfa: &dfa{ - states: make([]*state, 0, 16), + states: make([]state, 0, 16), }, - lev: lev, - cache: make(map[string]int, 1024), + lev: lev, + cache: make(map[string]int, 1024), + startBytes: make([]byte, unicode_utf8.UTFMax), + endBytes: make([]byte, unicode_utf8.UTFMax), } - dfab.newState(false) // create state 0, invalid + _, dfab.nexts = dfab.newState(false, nil) // create state 0, invalid return dfab } @@ -101,7 +117,7 @@ func (b *dfaBuilder) build() (*dfa, error) { levNext := b.lev.accept(levState, &r) nextSi := b.cachedState(levNext) if nextSi != 0 { - err = b.addUtf8Sequences(true, dfaSi, nextSi, r, r) + err = b.addUtf8RuneRange(true, dfaSi, nextSi, r, r) if err != nil { return nil, err } @@ -150,7 +166,7 @@ func (b *dfaBuilder) cached(levState []int) (int, bool) { return v, true } match := b.lev.isMatch(levState) - b.dfa.states = b.dfa.states.Push(&state{ + b.dfa.states = append(b.dfa.states, state{ next: make([]int, 256), match: match, }) @@ -165,42 +181,64 @@ func (b *dfaBuilder) addMismatchUtf8States(fromSi int, levState []int) (int, []i if toSi == 0 { return 0, nil, nil } - err := b.addUtf8Sequences(false, fromSi, toSi, 0, unicode.MaxRune) - if err != nil { - return 0, nil, err - } + b.addUtf8Sequences(false, fromSi, toSi, sequences0ToMaxRune) return toSi, mmState, nil } -func (b *dfaBuilder) addUtf8Sequences(overwrite bool, fromSi, toSi int, fromChar, toChar rune) error { - sequences, err := utf8.NewSequences(fromChar, toChar) +func (b *dfaBuilder) addUtf8RuneRange(overwrite bool, fromSi, toSi int, + fromChar, toChar rune) ( + err error) { + b.sequences, b.rangeStack, err = utf8.NewSequencesPrealloc(fromChar, toChar, + b.sequences, b.rangeStack, b.startBytes, b.endBytes) if err != nil { return err } + + b.addUtf8Sequences(overwrite, fromSi, toSi, b.sequences) + + return nil +} + +func (b *dfaBuilder) addUtf8Sequences(overwrite bool, fromSi, toSi int, + sequences utf8.Sequences) { for _, seq := range sequences { fsi := fromSi for _, utf8r := range seq[:len(seq)-1] { - tsi := b.newState(false) + var tsi int + tsi, b.nexts = b.newState(false, b.nexts) b.addUtf8Range(overwrite, fsi, tsi, utf8r) fsi = tsi } b.addUtf8Range(overwrite, fsi, toSi, seq[len(seq)-1]) } - return nil } -func (b *dfaBuilder) addUtf8Range(overwrite bool, from, to int, rang *utf8.Range) { - for by := rang.Start; by <= rang.End; by++ { - if overwrite || b.dfa.states[from].next[by] == 0 { - b.dfa.states[from].next[by] = to +func (b *dfaBuilder) addUtf8Range(overwrite bool, from, to int, rang utf8.Range) { + fromNext := b.dfa.states[from].next + if overwrite { + for by := rang.Start; by <= rang.End; by++ { + fromNext[by] = to + } + } else { + for by := rang.Start; by <= rang.End; by++ { + if fromNext[by] == 0 { + fromNext[by] = to + } } } } -func (b *dfaBuilder) newState(match bool) int { - b.dfa.states = append(b.dfa.states, &state{ - next: make([]int, 256), +func (b *dfaBuilder) newState(match bool, prealloc []int) (int, []int) { + if len(prealloc) < 256 { + prealloc = make([]int, 16384) + } + next := prealloc[0:256] + prealloc = prealloc[256:] + + b.dfa.states = append(b.dfa.states, state{ + next: next, match: match, }) - return len(b.dfa.states) - 1 + + return len(b.dfa.states) - 1, prealloc } diff --git a/vendor/github.com/couchbase/vellum/levenshtein/levenshtein.go b/vendor/github.com/couchbase/vellum/levenshtein/levenshtein.go index 5d1f65d1..a2d3ea7f 100644 --- a/vendor/github.com/couchbase/vellum/levenshtein/levenshtein.go +++ b/vendor/github.com/couchbase/vellum/levenshtein/levenshtein.go @@ -22,7 +22,7 @@ import ( const StateLimit = 10000 // ErrTooManyStates is returned if you attempt to build a Levenshtein -// automaton which requries too many states. +// automaton which requires too many states. var ErrTooManyStates = fmt.Errorf("dfa contains more than %d states", StateLimit) // Levenshtein implements the vellum.Automaton interface for matching diff --git a/vendor/github.com/couchbase/vellum/levenshtein/rune.go b/vendor/github.com/couchbase/vellum/levenshtein/rune.go index 0fefa776..ec266988 100644 --- a/vendor/github.com/couchbase/vellum/levenshtein/rune.go +++ b/vendor/github.com/couchbase/vellum/levenshtein/rune.go @@ -41,14 +41,9 @@ func (d *dynamicLevenshtein) isMatch(state []int) bool { } func (d *dynamicLevenshtein) canMatch(state []int) bool { - if len(state) > 0 { - min := state[0] - for i := 1; i < len(state); i++ { - if state[i] < min { - min = state[i] - } - } - if uint(min) <= d.distance { + distance := int(d.distance) + for _, v := range state { + if v <= distance { return true } } @@ -56,7 +51,8 @@ func (d *dynamicLevenshtein) canMatch(state []int) bool { } func (d *dynamicLevenshtein) accept(state []int, r *rune) []int { - next := []int{state[0] + 1} + next := make([]int, 0, len(d.query)+1) + next = append(next, state[0]+1) i := 0 for _, c := range d.query { var cost int diff --git a/vendor/github.com/couchbase/vellum/levenshtein/stack.go b/vendor/github.com/couchbase/vellum/levenshtein/stack.go index d42f6018..a99cae6a 100644 --- a/vendor/github.com/couchbase/vellum/levenshtein/stack.go +++ b/vendor/github.com/couchbase/vellum/levenshtein/stack.go @@ -16,7 +16,7 @@ package levenshtein import "fmt" -type statesStack []*state +type statesStack []state func (s statesStack) String() string { rv := "" @@ -30,10 +30,6 @@ func (s statesStack) String() string { return rv } -func (s statesStack) Push(v *state) statesStack { - return append(s, v) -} - type intsStack [][]int func (s intsStack) Push(v []int) intsStack { diff --git a/vendor/github.com/couchbase/vellum/regexp/compile.go b/vendor/github.com/couchbase/vellum/regexp/compile.go index 6922b749..55280164 100644 --- a/vendor/github.com/couchbase/vellum/regexp/compile.go +++ b/vendor/github.com/couchbase/vellum/regexp/compile.go @@ -18,17 +18,27 @@ import ( "regexp/syntax" "unicode" + unicode_utf8 "unicode/utf8" + "github.com/couchbase/vellum/utf8" ) type compiler struct { sizeLimit uint insts prog + instsPool []inst + + sequences utf8.Sequences + rangeStack utf8.RangeStack + startBytes []byte + endBytes []byte } func newCompiler(sizeLimit uint) *compiler { return &compiler{ - sizeLimit: sizeLimit, + sizeLimit: sizeLimit, + startBytes: make([]byte, unicode_utf8.UTFMax), + endBytes: make([]byte, unicode_utf8.UTFMax), } } @@ -37,13 +47,13 @@ func (c *compiler) compile(ast *syntax.Regexp) (prog, error) { if err != nil { return nil, err } - c.insts = append(c.insts, &inst{ - op: OpMatch, - }) + inst := c.allocInst() + inst.op = OpMatch + c.insts = append(c.insts, inst) return c.insts, nil } -func (c *compiler) c(ast *syntax.Regexp) error { +func (c *compiler) c(ast *syntax.Regexp) (err error) { if ast.Flags&syntax.NonGreedy > 1 { return ErrNoLazy } @@ -67,11 +77,12 @@ func (c *compiler) c(ast *syntax.Regexp) error { next.Rune = next.Rune0[0:2] return c.c(&next) } - seqs, err := utf8.NewSequences(r, r) + c.sequences, c.rangeStack, err = utf8.NewSequencesPrealloc( + r, r, c.sequences, c.rangeStack, c.startBytes, c.endBytes) if err != nil { return err } - for _, seq := range seqs { + for _, seq := range c.sequences { c.compileUtf8Ranges(seq) } } @@ -106,8 +117,7 @@ func (c *compiler) c(ast *syntax.Regexp) error { if len(ast.Sub) == 0 { return nil } - jmpsToEnd := []uint{} - + jmpsToEnd := make([]uint, 0, len(ast.Sub)-1) // does not handle last entry for i := 0; i < len(ast.Sub)-1; i++ { sub := ast.Sub[i] @@ -188,7 +198,8 @@ func (c *compiler) c(ast *syntax.Regexp) error { return err } } - var splits, starts []uint + splits := make([]uint, 0, ast.Max-ast.Min) + starts := make([]uint, 0, ast.Max-ast.Min) for i := ast.Min; i < ast.Max; i++ { splits = append(splits, c.emptySplit()) starts = append(starts, uint(len(c.insts))) @@ -218,8 +229,7 @@ func (c *compiler) compileClass(ast *syntax.Regexp) error { if len(ast.Rune) == 0 { return nil } - var jmps []uint - + jmps := make([]uint, 0, len(ast.Rune)-2) // does not do last pair for i := 0; i < len(ast.Rune)-2; i += 2 { rstart := ast.Rune[i] @@ -249,16 +259,16 @@ func (c *compiler) compileClass(ast *syntax.Regexp) error { return nil } -func (c *compiler) compileClassRange(startR, endR rune) error { - seqs, err := utf8.NewSequences(startR, endR) +func (c *compiler) compileClassRange(startR, endR rune) (err error) { + c.sequences, c.rangeStack, err = utf8.NewSequencesPrealloc( + startR, endR, c.sequences, c.rangeStack, c.startBytes, c.endBytes) if err != nil { return err } - var jmps []uint - + jmps := make([]uint, 0, len(c.sequences)-1) // does not do last entry - for i := 0; i < len(seqs)-1; i++ { - seq := seqs[i] + for i := 0; i < len(c.sequences)-1; i++ { + seq := c.sequences[i] split := c.emptySplit() j1 := c.top() c.compileUtf8Ranges(seq) @@ -267,7 +277,7 @@ func (c *compiler) compileClassRange(startR, endR rune) error { c.setSplit(split, j1, j2) } // handle last entry - c.compileUtf8Ranges(seqs[len(seqs)-1]) + c.compileUtf8Ranges(c.sequences[len(c.sequences)-1]) end := c.top() for _, jmp := range jmps { c.setJump(jmp, end) @@ -278,25 +288,25 @@ func (c *compiler) compileClassRange(startR, endR rune) error { func (c *compiler) compileUtf8Ranges(seq utf8.Sequence) { for _, r := range seq { - c.insts = append(c.insts, &inst{ - op: OpRange, - rangeStart: r.Start, - rangeEnd: r.End, - }) + inst := c.allocInst() + inst.op = OpRange + inst.rangeStart = r.Start + inst.rangeEnd = r.End + c.insts = append(c.insts, inst) } } func (c *compiler) emptySplit() uint { - c.insts = append(c.insts, &inst{ - op: OpSplit, - }) + inst := c.allocInst() + inst.op = OpSplit + c.insts = append(c.insts, inst) return c.top() - 1 } func (c *compiler) emptyJump() uint { - c.insts = append(c.insts, &inst{ - op: OpJmp, - }) + inst := c.allocInst() + inst.op = OpJmp + c.insts = append(c.insts, inst) return c.top() - 1 } @@ -314,3 +324,12 @@ func (c *compiler) setJump(i, pc uint) { func (c *compiler) top() uint { return uint(len(c.insts)) } + +func (c *compiler) allocInst() *inst { + if len(c.instsPool) <= 0 { + c.instsPool = make([]inst, 16) + } + inst := &c.instsPool[0] + c.instsPool = c.instsPool[1:] + return inst +} diff --git a/vendor/github.com/couchbase/vellum/regexp/dfa.go b/vendor/github.com/couchbase/vellum/regexp/dfa.go index 9864606b..7e6fb29d 100644 --- a/vendor/github.com/couchbase/vellum/regexp/dfa.go +++ b/vendor/github.com/couchbase/vellum/regexp/dfa.go @@ -23,7 +23,7 @@ import ( const StateLimit = 10000 // ErrTooManyStates is returned if you attempt to build a Levenshtein -// automaton which requries too many states. +// automaton which requires too many states. var ErrTooManyStates = fmt.Errorf("dfa contains more than %d states", StateLimit) @@ -37,12 +37,12 @@ func newDfaBuilder(insts prog) *dfaBuilder { d := &dfaBuilder{ dfa: &dfa{ insts: insts, - states: make([]*state, 0, 16), + states: make([]state, 0, 16), }, cache: make(map[string]int, 1024), } // add 0 state that is invalid - d.dfa.states = append(d.dfa.states, &state{ + d.dfa.states = append(d.dfa.states, state{ next: make([]int, 256), match: false, }) @@ -54,13 +54,15 @@ func (d *dfaBuilder) build() (*dfa, error) { next := newSparseSet(uint(len(d.dfa.insts))) d.dfa.add(cur, 0) - states := intStack{d.cachedState(cur)} + ns, instsReuse := d.cachedState(cur, nil) + states := intStack{ns} seen := make(map[int]struct{}) var s int states, s = states.Pop() for s != 0 { for b := 0; b < 256; b++ { - ns := d.runState(cur, next, s, byte(b)) + var ns int + ns, instsReuse = d.runState(cur, next, s, byte(b), instsReuse) if ns != 0 { if _, ok := seen[ns]; !ok { seen[ns] = struct{}{} @@ -76,15 +78,17 @@ func (d *dfaBuilder) build() (*dfa, error) { return d.dfa, nil } -func (d *dfaBuilder) runState(cur, next *sparseSet, state int, b byte) int { +func (d *dfaBuilder) runState(cur, next *sparseSet, state int, b byte, instsReuse []uint) ( + int, []uint) { cur.Clear() for _, ip := range d.dfa.states[state].insts { cur.Add(ip) } d.dfa.run(cur, next, b) - nextState := d.cachedState(next) + var nextState int + nextState, instsReuse = d.cachedState(next, instsReuse) d.dfa.states[state].next[b] = nextState - return nextState + return nextState, instsReuse } func instsKey(insts []uint, buf []byte) []byte { @@ -99,8 +103,12 @@ func instsKey(insts []uint, buf []byte) []byte { return buf } -func (d *dfaBuilder) cachedState(set *sparseSet) int { - var insts []uint +func (d *dfaBuilder) cachedState(set *sparseSet, + instsReuse []uint) (int, []uint) { + insts := instsReuse[:0] + if cap(insts) == 0 { + insts = make([]uint, 0, set.Len()) + } var isMatch bool for i := uint(0); i < uint(set.Len()); i++ { ip := set.Get(i) @@ -113,26 +121,26 @@ func (d *dfaBuilder) cachedState(set *sparseSet) int { } } if len(insts) == 0 { - return 0 + return 0, insts } d.keyBuf = instsKey(insts, d.keyBuf) v, ok := d.cache[string(d.keyBuf)] if ok { - return v + return v, insts } - d.dfa.states = append(d.dfa.states, &state{ + d.dfa.states = append(d.dfa.states, state{ insts: insts, next: make([]int, 256), match: isMatch, }) newV := len(d.dfa.states) - 1 d.cache[string(d.keyBuf)] = newV - return newV + return newV, nil } type dfa struct { insts prog - states []*state + states []state } func (d *dfa) add(set *sparseSet, ip uint) { diff --git a/vendor/github.com/couchbase/vellum/regexp/inst.go b/vendor/github.com/couchbase/vellum/regexp/inst.go index 61cbf2f3..36f2e602 100644 --- a/vendor/github.com/couchbase/vellum/regexp/inst.go +++ b/vendor/github.com/couchbase/vellum/regexp/inst.go @@ -27,7 +27,7 @@ const ( OpRange ) -// instSize is the approxmiate size of the an inst struct in bytes +// instSize is the approximate size of the an inst struct in bytes const instSize = 40 type inst struct { diff --git a/vendor/github.com/couchbase/vellum/regexp/regexp.go b/vendor/github.com/couchbase/vellum/regexp/regexp.go index ed0e7823..920ddc37 100644 --- a/vendor/github.com/couchbase/vellum/regexp/regexp.go +++ b/vendor/github.com/couchbase/vellum/regexp/regexp.go @@ -35,6 +35,8 @@ var ErrNoLazy = fmt.Errorf("lazy quantifiers are not allowed") // too many instructions var ErrCompiledTooBig = fmt.Errorf("too many instructions") +var DefaultLimit = uint(10 * (1 << 20)) + // Regexp implements the vellum.Automaton interface for matcing a user // specified regular expression. type Regexp struct { @@ -47,7 +49,7 @@ type Regexp struct { // compiled finite state automaton. If this size is exceeded, // ErrCompiledTooBig will be returned. func New(expr string) (*Regexp, error) { - return NewWithLimit(expr, 10*(1<<20)) + return NewWithLimit(expr, DefaultLimit) } // NewRegexpWithLimit creates a new Regular Expression automaton with @@ -59,6 +61,10 @@ func NewWithLimit(expr string, size uint) (*Regexp, error) { if err != nil { return nil, err } + return NewParsedWithLimit(expr, parsed, size) +} + +func NewParsedWithLimit(expr string, parsed *syntax.Regexp, size uint) (*Regexp, error) { compiler := newCompiler(size) insts, err := compiler.compile(parsed) if err != nil { @@ -103,7 +109,7 @@ func (r *Regexp) WillAlwaysMatch(int) bool { return false } -// Accept returns the new state, resulting from the transite byte b +// Accept returns the new state, resulting from the transition byte b // when currently in the state s. func (r *Regexp) Accept(s int, b byte) int { if s < len(r.dfa.states) { diff --git a/vendor/github.com/couchbase/vellum/utf8/utf8.go b/vendor/github.com/couchbase/vellum/utf8/utf8.go index 47dbe9d1..54e23b93 100644 --- a/vendor/github.com/couchbase/vellum/utf8/utf8.go +++ b/vendor/github.com/couchbase/vellum/utf8/utf8.go @@ -25,19 +25,39 @@ type Sequences []Sequence // NewSequences constructs a collection of Sequence which describe the // byte ranges covered between the start and end runes. func NewSequences(start, end rune) (Sequences, error) { - var rv Sequences + rv, _, err := NewSequencesPrealloc(start, end, nil, nil, nil, nil) + return rv, err +} - var rangeStack rangeStack - rangeStack = rangeStack.Push(&scalarRange{start, end}) +func NewSequencesPrealloc(start, end rune, + preallocSequences Sequences, + preallocRangeStack RangeStack, + preallocStartBytes, preallocEndBytes []byte) (Sequences, RangeStack, error) { + rv := preallocSequences[:0] + + startBytes := preallocStartBytes + if cap(startBytes) < utf8.UTFMax { + startBytes = make([]byte, utf8.UTFMax) + } + startBytes = startBytes[:utf8.UTFMax] + + endBytes := preallocEndBytes + if cap(endBytes) < utf8.UTFMax { + endBytes = make([]byte, utf8.UTFMax) + } + endBytes = endBytes[:utf8.UTFMax] + + rangeStack := preallocRangeStack[:0] + rangeStack = rangeStack.Push(scalarRange{start, end}) rangeStack, r := rangeStack.Pop() TOP: - for r != nil { + for r != nilScalarRange { INNER: for { r1, r2 := r.split() - if r1 != nil { - rangeStack = rangeStack.Push(&scalarRange{r2.start, r2.end}) + if r1 != nilScalarRange { + rangeStack = rangeStack.Push(scalarRange{r2.start, r2.end}) r.start = r1.start r.end = r1.end continue INNER @@ -49,13 +69,13 @@ TOP: for i := 1; i < utf8.UTFMax; i++ { max := maxScalarValue(i) if r.start <= max && max < r.end { - rangeStack = rangeStack.Push(&scalarRange{max + 1, r.end}) + rangeStack = rangeStack.Push(scalarRange{max + 1, r.end}) r.end = max continue INNER } } asciiRange := r.ascii() - if asciiRange != nil { + if asciiRange != nilRange { rv = append(rv, Sequence{ asciiRange, }) @@ -66,23 +86,21 @@ TOP: m := rune((1 << (6 * i)) - 1) if (r.start & ^m) != (r.end & ^m) { if (r.start & m) != 0 { - rangeStack = rangeStack.Push(&scalarRange{(r.start | m) + 1, r.end}) + rangeStack = rangeStack.Push(scalarRange{(r.start | m) + 1, r.end}) r.end = r.start | m continue INNER } if (r.end & m) != m { - rangeStack = rangeStack.Push(&scalarRange{r.end & ^m, r.end}) + rangeStack = rangeStack.Push(scalarRange{r.end & ^m, r.end}) r.end = (r.end & ^m) - 1 continue INNER } } } - start := make([]byte, utf8.UTFMax) - end := make([]byte, utf8.UTFMax) - n, m := r.encode(start, end) - seq, err := SequenceFromEncodedRange(start[0:n], end[0:m]) + n, m := r.encode(startBytes, endBytes) + seq, err := SequenceFromEncodedRange(startBytes[0:n], endBytes[0:m]) if err != nil { - return nil, err + return nil, nil, err } rv = append(rv, seq) rangeStack, r = rangeStack.Pop() @@ -90,11 +108,11 @@ TOP: } } - return rv, nil + return rv, rangeStack, nil } -// Sequence is a collection of *Range -type Sequence []*Range +// Sequence is a collection of Range +type Sequence []Range // SequenceFromEncodedRange creates sequence from the encoded bytes func SequenceFromEncodedRange(start, end []byte) (Sequence, error) { @@ -104,21 +122,21 @@ func SequenceFromEncodedRange(start, end []byte) (Sequence, error) { switch len(start) { case 2: return Sequence{ - &Range{start[0], end[0]}, - &Range{start[1], end[1]}, + Range{start[0], end[0]}, + Range{start[1], end[1]}, }, nil case 3: return Sequence{ - &Range{start[0], end[0]}, - &Range{start[1], end[1]}, - &Range{start[2], end[2]}, + Range{start[0], end[0]}, + Range{start[1], end[1]}, + Range{start[2], end[2]}, }, nil case 4: return Sequence{ - &Range{start[0], end[0]}, - &Range{start[1], end[1]}, - &Range{start[2], end[2]}, - &Range{start[3], end[3]}, + Range{start[0], end[0]}, + Range{start[1], end[1]}, + Range{start[2], end[2]}, + Range{start[3], end[3]}, }, nil } @@ -159,6 +177,8 @@ type Range struct { End byte } +var nilRange = Range{0xff, 0} + func (u Range) matches(b byte) bool { if u.Start <= b && b <= u.End { return true @@ -178,37 +198,39 @@ type scalarRange struct { end rune } +var nilScalarRange = scalarRange{0xffff, 0} + func (s *scalarRange) String() string { return fmt.Sprintf("ScalarRange(%d,%d)", s.start, s.end) } // split this scalar range if it overlaps with a surrogate codepoint -func (s *scalarRange) split() (*scalarRange, *scalarRange) { +func (s *scalarRange) split() (scalarRange, scalarRange) { if s.start < 0xe000 && s.end > 0xd7ff { - return &scalarRange{ + return scalarRange{ start: s.start, end: 0xd7ff, }, - &scalarRange{ + scalarRange{ start: 0xe000, end: s.end, } } - return nil, nil + return nilScalarRange, nilScalarRange } func (s *scalarRange) valid() bool { return s.start <= s.end } -func (s *scalarRange) ascii() *Range { +func (s *scalarRange) ascii() Range { if s.valid() && s.end <= 0x7f { - return &Range{ + return Range{ Start: byte(s.start), End: byte(s.end), } } - return nil + return nilRange } // start and end MUST have capacity for utf8.UTFMax bytes @@ -218,16 +240,16 @@ func (s *scalarRange) encode(start, end []byte) (int, int) { return n, m } -type rangeStack []*scalarRange +type RangeStack []scalarRange -func (s rangeStack) Push(v *scalarRange) rangeStack { +func (s RangeStack) Push(v scalarRange) RangeStack { return append(s, v) } -func (s rangeStack) Pop() (rangeStack, *scalarRange) { +func (s RangeStack) Pop() (RangeStack, scalarRange) { l := len(s) if l < 1 { - return s, nil + return s, nilScalarRange } return s[:l-1], s[l-1] } diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE index c8364161..bc52e96f 100644 --- a/vendor/github.com/davecgh/go-spew/LICENSE +++ b/vendor/github.com/davecgh/go-spew/LICENSE @@ -2,7 +2,7 @@ ISC License Copyright (c) 2012-2016 Dave Collins -Permission to use, copy, modify, and distribute this software for any +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go index 8a4a6589..79299478 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypass.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypass.go @@ -16,7 +16,9 @@ // when the code is not running on Google App Engine, compiled by GopherJS, and // "-tags safe" is not added to the go build command line. The "disableunsafe" // tag is deprecated and thus should not be used. -// +build !js,!appengine,!safe,!disableunsafe +// Go versions prior to 1.4 are disabled because they use a different layout +// for interfaces which make the implementation of unsafeReflectValue more complex. +// +build !js,!appengine,!safe,!disableunsafe,go1.4 package spew @@ -34,80 +36,49 @@ const ( ptrSize = unsafe.Sizeof((*byte)(nil)) ) -var ( - // offsetPtr, offsetScalar, and offsetFlag are the offsets for the - // internal reflect.Value fields. These values are valid before golang - // commit ecccf07e7f9d which changed the format. The are also valid - // after commit 82f48826c6c7 which changed the format again to mirror - // the original format. Code in the init function updates these offsets - // as necessary. - offsetPtr = uintptr(ptrSize) - offsetScalar = uintptr(0) - offsetFlag = uintptr(ptrSize * 2) +type flag uintptr - // flagKindWidth and flagKindShift indicate various bits that the - // reflect package uses internally to track kind information. - // - // flagRO indicates whether or not the value field of a reflect.Value is - // read-only. - // - // flagIndir indicates whether the value field of a reflect.Value is - // the actual data or a pointer to the data. - // - // These values are valid before golang commit 90a7c3c86944 which - // changed their positions. Code in the init function updates these - // flags as necessary. - flagKindWidth = uintptr(5) - flagKindShift = uintptr(flagKindWidth - 1) - flagRO = uintptr(1 << 0) - flagIndir = uintptr(1 << 1) +var ( + // flagRO indicates whether the value field of a reflect.Value + // is read-only. + flagRO flag + + // flagAddr indicates whether the address of the reflect.Value's + // value may be taken. + flagAddr flag ) -func init() { - // Older versions of reflect.Value stored small integers directly in the - // ptr field (which is named val in the older versions). Versions - // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named - // scalar for this purpose which unfortunately came before the flag - // field, so the offset of the flag field is different for those - // versions. - // - // This code constructs a new reflect.Value from a known small integer - // and checks if the size of the reflect.Value struct indicates it has - // the scalar field. When it does, the offsets are updated accordingly. - vv := reflect.ValueOf(0xf00) - if unsafe.Sizeof(vv) == (ptrSize * 4) { - offsetScalar = ptrSize * 2 - offsetFlag = ptrSize * 3 - } +// flagKindMask holds the bits that make up the kind +// part of the flags field. In all the supported versions, +// it is in the lower 5 bits. +const flagKindMask = flag(0x1f) - // Commit 90a7c3c86944 changed the flag positions such that the low - // order bits are the kind. This code extracts the kind from the flags - // field and ensures it's the correct type. When it's not, the flag - // order has been changed to the newer format, so the flags are updated - // accordingly. - upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag) - upfv := *(*uintptr)(upf) - flagKindMask := uintptr((1<>flagKindShift != uintptr(reflect.Int) { - flagKindShift = 0 - flagRO = 1 << 5 - flagIndir = 1 << 6 +// Different versions of Go have used different +// bit layouts for the flags type. This table +// records the known combinations. +var okFlags = []struct { + ro, addr flag +}{{ + // From Go 1.4 to 1.5 + ro: 1 << 5, + addr: 1 << 7, +}, { + // Up to Go tip. + ro: 1<<5 | 1<<6, + addr: 1 << 8, +}} - // Commit adf9b30e5594 modified the flags to separate the - // flagRO flag into two bits which specifies whether or not the - // field is embedded. This causes flagIndir to move over a bit - // and means that flagRO is the combination of either of the - // original flagRO bit and the new bit. - // - // This code detects the change by extracting what used to be - // the indirect bit to ensure it's set. When it's not, the flag - // order has been changed to the newer format, so the flags are - // updated accordingly. - if upfv&flagIndir == 0 { - flagRO = 3 << 5 - flagIndir = 1 << 7 - } +var flagValOffset = func() uintptr { + field, ok := reflect.TypeOf(reflect.Value{}).FieldByName("flag") + if !ok { + panic("reflect.Value has no flag field") } + return field.Offset +}() + +// flagField returns a pointer to the flag field of a reflect.Value. +func flagField(v *reflect.Value) *flag { + return (*flag)(unsafe.Pointer(uintptr(unsafe.Pointer(v)) + flagValOffset)) } // unsafeReflectValue converts the passed reflect.Value into a one that bypasses @@ -119,34 +90,56 @@ func init() { // This allows us to check for implementations of the Stringer and error // interfaces to be used for pretty printing ordinarily unaddressable and // inaccessible values such as unexported struct fields. -func unsafeReflectValue(v reflect.Value) (rv reflect.Value) { - indirects := 1 - vt := v.Type() - upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr) - rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag)) - if rvf&flagIndir != 0 { - vt = reflect.PtrTo(v.Type()) - indirects++ - } else if offsetScalar != 0 { - // The value is in the scalar field when it's not one of the - // reference types. - switch vt.Kind() { - case reflect.Uintptr: - case reflect.Chan: - case reflect.Func: - case reflect.Map: - case reflect.Ptr: - case reflect.UnsafePointer: - default: - upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + - offsetScalar) +func unsafeReflectValue(v reflect.Value) reflect.Value { + if !v.IsValid() || (v.CanInterface() && v.CanAddr()) { + return v + } + flagFieldPtr := flagField(&v) + *flagFieldPtr &^= flagRO + *flagFieldPtr |= flagAddr + return v +} + +// Sanity checks against future reflect package changes +// to the type or semantics of the Value.flag field. +func init() { + field, ok := reflect.TypeOf(reflect.Value{}).FieldByName("flag") + if !ok { + panic("reflect.Value has no flag field") + } + if field.Type.Kind() != reflect.TypeOf(flag(0)).Kind() { + panic("reflect.Value flag field has changed kind") + } + type t0 int + var t struct { + A t0 + // t0 will have flagEmbedRO set. + t0 + // a will have flagStickyRO set + a t0 + } + vA := reflect.ValueOf(t).FieldByName("A") + va := reflect.ValueOf(t).FieldByName("a") + vt0 := reflect.ValueOf(t).FieldByName("t0") + + // Infer flagRO from the difference between the flags + // for the (otherwise identical) fields in t. + flagPublic := *flagField(&vA) + flagWithRO := *flagField(&va) | *flagField(&vt0) + flagRO = flagPublic ^ flagWithRO + + // Infer flagAddr from the difference between a value + // taken from a pointer and not. + vPtrA := reflect.ValueOf(&t).Elem().FieldByName("A") + flagNoPtr := *flagField(&vA) + flagPtr := *flagField(&vPtrA) + flagAddr = flagNoPtr ^ flagPtr + + // Check that the inferred flags tally with one of the known versions. + for _, f := range okFlags { + if flagRO == f.ro && flagAddr == f.addr { + return } } - - pv := reflect.NewAt(vt, upv) - rv = pv - for i := 0; i < indirects; i++ { - rv = rv.Elem() - } - return rv + panic("reflect.Value read-only flag has changed semantics") } diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go index 1fe3cf3d..205c28d6 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go @@ -16,7 +16,7 @@ // when the code is running on Google App Engine, compiled by GopherJS, or // "-tags safe" is added to the go build command line. The "disableunsafe" // tag is deprecated and thus should not be used. -// +build js appengine safe disableunsafe +// +build js appengine safe disableunsafe !go1.4 package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go index 7c519ff4..1be8ce94 100644 --- a/vendor/github.com/davecgh/go-spew/spew/common.go +++ b/vendor/github.com/davecgh/go-spew/spew/common.go @@ -180,7 +180,7 @@ func printComplex(w io.Writer, c complex128, floatPrecision int) { w.Write(closeParenBytes) } -// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' +// printHexPtr outputs a uintptr formatted as hexadecimal with a leading '0x' // prefix to Writer w. func printHexPtr(w io.Writer, p uintptr) { // Null pointer. diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go index df1d582a..f78d89fc 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dump.go +++ b/vendor/github.com/davecgh/go-spew/spew/dump.go @@ -35,16 +35,16 @@ var ( // cCharRE is a regular expression that matches a cgo char. // It is used to detect character arrays to hexdump them. - cCharRE = regexp.MustCompile("^.*\\._Ctype_char$") + cCharRE = regexp.MustCompile(`^.*\._Ctype_char$`) // cUnsignedCharRE is a regular expression that matches a cgo unsigned // char. It is used to detect unsigned character arrays to hexdump // them. - cUnsignedCharRE = regexp.MustCompile("^.*\\._Ctype_unsignedchar$") + cUnsignedCharRE = regexp.MustCompile(`^.*\._Ctype_unsignedchar$`) // cUint8tCharRE is a regular expression that matches a cgo uint8_t. // It is used to detect uint8_t arrays to hexdump them. - cUint8tCharRE = regexp.MustCompile("^.*\\._Ctype_uint8_t$") + cUint8tCharRE = regexp.MustCompile(`^.*\._Ctype_uint8_t$`) ) // dumpState contains information about the state of a dump operation. @@ -143,10 +143,10 @@ func (d *dumpState) dumpPtr(v reflect.Value) { // Display dereferenced value. d.w.Write(openParenBytes) switch { - case nilFound == true: + case nilFound: d.w.Write(nilAngleBytes) - case cycleFound == true: + case cycleFound: d.w.Write(circularBytes) default: diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go index c49875ba..b04edb7d 100644 --- a/vendor/github.com/davecgh/go-spew/spew/format.go +++ b/vendor/github.com/davecgh/go-spew/spew/format.go @@ -182,10 +182,10 @@ func (f *formatState) formatPtr(v reflect.Value) { // Display dereferenced value. switch { - case nilFound == true: + case nilFound: f.fs.Write(nilAngleBytes) - case cycleFound == true: + case cycleFound: f.fs.Write(circularShortBytes) default: diff --git a/vendor/github.com/dsnet/compress/LICENSE.md b/vendor/github.com/dsnet/compress/LICENSE.md index 2bd6ed1f..945b396c 100644 --- a/vendor/github.com/dsnet/compress/LICENSE.md +++ b/vendor/github.com/dsnet/compress/LICENSE.md @@ -3,13 +3,13 @@ Copyright © 2015, Joe Tsai and The Go Authors. All rights reserved. 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 +* 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 +* 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 copyright holder nor the names of its contributors may be used to -endorse or promote products derived from this software without specific prior +* Neither the copyright holder 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 diff --git a/vendor/github.com/dsnet/compress/brotli/bit_reader.go b/vendor/github.com/dsnet/compress/brotli/bit_reader.go index ad28dedf..6146febb 100644 --- a/vendor/github.com/dsnet/compress/brotli/bit_reader.go +++ b/vendor/github.com/dsnet/compress/brotli/bit_reader.go @@ -4,8 +4,12 @@ package brotli -import "io" -import "bufio" +import ( + "bufio" + "io" + + "github.com/dsnet/compress/internal/errors" +) // The bitReader preserves the property that it will never read more bytes than // is necessary. However, this feature dramatically hurts performance because @@ -101,7 +105,7 @@ func (br *bitReader) FeedBits(nb uint) { if err == io.EOF { err = io.ErrUnexpectedEOF } - panic(err) + errors.Panic(err) } } cnt := int(64-br.numBits) / 8 @@ -125,7 +129,7 @@ func (br *bitReader) FeedBits(nb uint) { if err == io.EOF { err = io.ErrUnexpectedEOF } - panic(err) + errors.Panic(err) } br.bufBits |= uint64(c) << br.numBits br.numBits += 8 @@ -137,7 +141,7 @@ func (br *bitReader) FeedBits(nb uint) { // Read reads up to len(buf) bytes into buf. func (br *bitReader) Read(buf []byte) (cnt int, err error) { if br.numBits%8 != 0 { - return 0, Error("non-aligned bit buffer") + return 0, errorf(errors.Invalid, "non-aligned bit buffer") } if br.numBits > 0 { for cnt = 0; len(buf) > cnt && br.numBits > 0; cnt++ { @@ -206,7 +210,7 @@ func (br *bitReader) TryReadSymbol(pd *prefixDecoder) (uint, bool) { // ReadSymbol reads the next prefix symbol using the provided prefixDecoder. func (br *bitReader) ReadSymbol(pd *prefixDecoder) uint { if len(pd.chunks) == 0 { - panic(ErrCorrupt) // Decode with empty tree + errors.Panic(errInvalid) // Decode with empty tree } nb := uint(pd.minBits) @@ -256,12 +260,12 @@ func (br *bitReader) readSimplePrefixCode(pd *prefixDecoder, maxSyms uint) { codes[i].sym = uint32(br.ReadBits(clen)) } - var copyLens = func(lens []uint) { + copyLens := func(lens []uint) { for i := 0; i < nsym; i++ { codes[i].len = uint32(lens[i]) } } - var compareSwap = func(i, j int) { + compareSwap := func(i, j int) { if codes[i].sym > codes[j].sym { codes[i], codes[j] = codes[j], codes[i] } @@ -291,7 +295,7 @@ func (br *bitReader) readSimplePrefixCode(pd *prefixDecoder, maxSyms uint) { compareSwap(1, 2) } if uint(codes[nsym-1].sym) >= maxSyms { - panic(ErrCorrupt) // Symbol goes beyond range of alphabet + errors.Panic(errCorrupted) // Symbol goes beyond range of alphabet } pd.Init(codes[:nsym], true) // Must have 1..4 symbols } @@ -317,7 +321,7 @@ func (br *bitReader) readComplexPrefixCode(pd *prefixDecoder, maxSyms, hskip uin } } if len(codeCLens) < 1 { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } br.prefix.Init(codeCLens, true) // Must have 1..len(complexLens) symbols @@ -367,7 +371,7 @@ func (br *bitReader) readComplexPrefixCode(pd *prefixDecoder, maxSyms, hskip uin } } if len(codes) < 2 || sym > maxSyms { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } pd.Init(codes, true) // Must have 2..maxSyms symbols } diff --git a/vendor/github.com/dsnet/compress/brotli/common.go b/vendor/github.com/dsnet/compress/brotli/common.go index e1ca5d07..3242cd74 100644 --- a/vendor/github.com/dsnet/compress/brotli/common.go +++ b/vendor/github.com/dsnet/compress/brotli/common.go @@ -2,41 +2,49 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// Package brotli implements the Brotli compressed data format. +// Package brotli implements the Brotli compressed data format, +// described in RFC 7932. package brotli -import "runtime" +import ( + "fmt" -// Error is the wrapper type for errors specific to this library. -type Error string - -func (e Error) Error() string { return "brotli: " + string(e) } - -var ( - ErrCorrupt error = Error("stream is corrupted") + "github.com/dsnet/compress/internal/errors" ) -func errRecover(err *error) { - switch ex := recover().(type) { - case nil: - // Do nothing. - case runtime.Error: - panic(ex) - case error: - *err = ex - default: - panic(ex) +func errorf(c int, f string, a ...interface{}) error { + return errors.Error{Code: c, Pkg: "brotli", Msg: fmt.Sprintf(f, a...)} +} + +// errWrap converts a lower-level errors.Error to be one from this package. +// The replaceCode passed in will be used to replace the code for any errors +// with the errors.Invalid code. +// +// For the Reader, set this to errors.Corrupted. +// For the Writer, set this to errors.Internal. +func errWrap(err error, replaceCode int) error { + if cerr, ok := err.(errors.Error); ok { + if errors.IsInvalid(cerr) { + cerr.Code = replaceCode + } + err = errorf(cerr.Code, "%s", cerr.Msg) } + return err } +var ( + errClosed = errorf(errors.Closed, "") + errCorrupted = errorf(errors.Corrupted, "") + errInvalid = errorf(errors.Invalid, "") + errUnaligned = errorf(errors.Invalid, "non-aligned bit buffer") +) + var ( reverseLUT [256]uint8 - mtfLUT [256]uint8 ) func init() { initLUTs() - printLUTs() // Only occurs in debug mode } func initLUTs() { @@ -47,9 +55,6 @@ func initLUTs() { } func initCommonLUTs() { - for i := range mtfLUT { - mtfLUT[i] = uint8(i) - } for i := range reverseLUT { b := uint8(i) b = (b&0xaa)>>1 | (b&0x55)<<1 @@ -61,7 +66,7 @@ func initCommonLUTs() { // neededBits computes the minimum number of bits needed to encode n elements. func neededBits(n uint32) (nb uint) { - for n -= 1; n > 0; n >>= 1 { + for n--; n > 0; n >>= 1 { nb++ } return @@ -81,55 +86,6 @@ func reverseBits(v uint32, n uint) uint32 { return reverseUint32(v << (32 - n)) } -// moveToFront is a data structure that allows for more efficient move-to-front -// transformations (described in RFC section 7.3). Since most transformations -// only involve a fairly low number of symbols, it can be quite expensive -// filling out the dict with values 0..255 for every call. Instead, we remember -// what part of the dict was altered and make sure we reset it at the beginning -// of every encode and decode operation. -type moveToFront struct { - dict [256]uint8 // Mapping from indexes to values - tail int // Number of tail bytes that are already ordered -} - -func (m *moveToFront) Encode(vals []uint8) { - // Reset dict to be identical to mtfLUT. - copy(m.dict[:], mtfLUT[:256-m.tail]) - - var max int - for i, val := range vals { - var idx uint8 // Reverse lookup idx in dict - for di, dv := range m.dict { - if dv == val { - idx = uint8(di) - break - } - } - vals[i] = idx - - max |= int(idx) - copy(m.dict[1:], m.dict[:idx]) - m.dict[0] = val - } - m.tail = 256 - max - 1 -} - -func (m *moveToFront) Decode(idxs []uint8) { - // Reset dict to be identical to mtfLUT. - copy(m.dict[:], mtfLUT[:256-m.tail]) - - var max int - for i, idx := range idxs { - val := m.dict[idx] // Forward lookup val in dict - idxs[i] = val - - max |= int(idx) - copy(m.dict[1:], m.dict[:idx]) - m.dict[0] = val - } - m.tail = 256 - max - 1 -} - func allocUint8s(s []uint8, n int) []uint8 { if cap(s) >= n { return s[:n] diff --git a/vendor/github.com/dsnet/compress/brotli/debug.go b/vendor/github.com/dsnet/compress/brotli/debug.go deleted file mode 100644 index a06daf5d..00000000 --- a/vendor/github.com/dsnet/compress/brotli/debug.go +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2015, Joe Tsai. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. - -// +build debug - -package brotli - -import "os" -import "fmt" -import "strings" - -const debug = true - -func printLUTs() { - var output = os.Stderr - - printVar := func(name string, obj interface{}) { - var body string - if bs, ok := obj.([]uint8); ok && len(bs) >= 256 { - // Special case handling for large []uint8 to form 16x16 blocks. - var ss []string - ss = append(ss, "{") - var s string - for i, b := range bs { - s += fmt.Sprintf("%02x ", b) - if i%16 == 15 || i+1 == len(bs) { - ss = append(ss, "\t"+s+"") - s = "" - } - if i%256 == 255 && (i+1 != len(bs)) { - ss = append(ss, "") - } - } - ss = append(ss, "}") - body = strings.Join(ss, "\n") - } else { - body = fmt.Sprintf("%v", obj) - } - fmt.Fprintf(output, "var %s %T = %v\n", name, obj, body) - } - - // Common LUTs. - printVar("reverseLUT", reverseLUT[:]) - printVar("mtfLUT", mtfLUT[:]) - fmt.Fprintln(output) - - // Context LUTs. - printVar("contextP1LUT", contextP1LUT[:]) - printVar("contextP2LUT", contextP2LUT[:]) - fmt.Fprintln(output) - - // Static dictionary LUTs. - printVar("dictBitSizes", dictBitSizes) - printVar("dictSizes", dictSizes) - printVar("dictOffsets", dictOffsets) - fmt.Fprintln(output) - - // Prefix LUTs. - printVar("simpleLens1", simpleLens1) - printVar("simpleLens2", simpleLens2) - printVar("simpleLens3", simpleLens3) - printVar("simpleLens4a", simpleLens4a) - printVar("simpleLens4b", simpleLens4b) - printVar("complexLens", complexLens) - fmt.Fprintln(output) - - printVar("insLenRanges", rangeCodes(insLenRanges)) - printVar("cpyLenRanges", rangeCodes(cpyLenRanges)) - printVar("blkLenRanges", rangeCodes(blkLenRanges)) - printVar("maxRLERanges", rangeCodes(maxRLERanges)) - fmt.Fprintln(output) - - printVar("codeCLens", prefixCodes(codeCLens)) - printVar("decCLens", decCLens) - printVar("encCLens", encCLens) - fmt.Fprintln(output) - - printVar("codeMaxRLE", prefixCodes(codeMaxRLE)) - printVar("decMaxRLE", decMaxRLE) - printVar("encMaxRLE", encMaxRLE) - fmt.Fprintln(output) - - printVar("codeWinBits", prefixCodes(codeWinBits)) - printVar("decWinBits", decWinBits) - printVar("encWinBits", encWinBits) - fmt.Fprintln(output) - - printVar("codeCounts", prefixCodes(codeCounts)) - printVar("decCounts", decCounts) - printVar("encCounts", encCounts) - fmt.Fprintln(output) - - printVar("iacLUT", typeIaCLUT(iacLUT)) - printVar("distShortLUT", typeDistShortLUT(distShortLUT)) - printVar("distLongLUT", typeDistLongLUT(distLongLUT)) - fmt.Fprintln(output) -} - -func tabs(s string, n int) string { - tabs := strings.Repeat("\t", n) - return strings.Join(strings.Split(s, "\n"), "\n"+tabs) -} - -type rangeCodes []rangeCode - -func (rc rangeCodes) String() (s string) { - var maxBits, maxBase int - for _, c := range rc { - if maxBits < int(c.bits) { - maxBits = int(c.bits) - } - if maxBase < int(c.base) { - maxBase = int(c.base) - } - } - - var ss []string - ss = append(ss, "{") - maxSymDig := len(fmt.Sprintf("%d", len(rc)-1)) - maxBitsDig := len(fmt.Sprintf("%d", maxBits)) - maxBaseDig := len(fmt.Sprintf("%d", maxBase)) - for i, c := range rc { - base := fmt.Sprintf(fmt.Sprintf("%%%dd", maxBaseDig), c.base) - if c.bits > 0 { - base += fmt.Sprintf("-%d", c.base+1< 0 { - ss = append(ss, "\tchunks: {") - for i, c := range pd.chunks { - l := "sym" - if uint(c&prefixCountMask) > uint(pd.chunkBits) { - l = "idx" - } - ss = append(ss, fmt.Sprintf( - fmt.Sprintf("\t\t%%0%db: {%%s: %%3d, len: %%2d},", pd.chunkBits), - i, l, c>>prefixCountBits, c&prefixCountMask, - )) - } - ss = append(ss, "\t},") - - for j, links := range pd.links { - ss = append(ss, fmt.Sprintf("\tlinks[%d]: {", j)) - linkBits := len(fmt.Sprintf("%b", pd.linkMask)) - for i, c := range links { - ss = append(ss, fmt.Sprintf( - fmt.Sprintf("\t\t%%0%db: {sym: %%3d, len: %%2d},", linkBits), - i, c>>prefixCountBits, c&prefixCountMask, - )) - } - ss = append(ss, "\t},") - } - ss = append(ss, fmt.Sprintf("\tchunkMask: %b,", pd.chunkMask)) - ss = append(ss, fmt.Sprintf("\tlinkMask: %b,", pd.linkMask)) - ss = append(ss, fmt.Sprintf("\tchunkBits: %d,", pd.chunkBits)) - ss = append(ss, fmt.Sprintf("\tminBits: %d,", pd.minBits)) - ss = append(ss, fmt.Sprintf("\tnumSyms: %d,", pd.numSyms)) - } - ss = append(ss, "}") - return strings.Join(ss, "\n") -} - -type typeIaCLUT [numIaCSyms]struct{ ins, cpy rangeCode } - -func (t typeIaCLUT) String() string { - var ss []string - var ins, cpy rangeCodes - for _, rec := range t { - ins = append(ins, rec.ins) - cpy = append(cpy, rec.cpy) - } - ss = append(ss, "{") - ss = append(ss, "\tins: "+tabs(ins.String(), 1)+",") - ss = append(ss, "\tcpy: "+tabs(cpy.String(), 1)+",") - ss = append(ss, "}") - return strings.Join(ss, "\n") -} - -type typeDistShortLUT [16]struct{ index, delta int } - -func (t typeDistShortLUT) String() string { - var ss []string - ss = append(ss, "{") - for i, rec := range t { - ss = append(ss, fmt.Sprintf("\t%2d: {index: %d, delta: %+2d},", i, rec.index, rec.delta)) - } - ss = append(ss, "}") - return strings.Join(ss, "\n") -} - -type typeDistLongLUT [4][]rangeCode - -func (t typeDistLongLUT) String() string { - var ss []string - ss = append(ss, "{") - for i, rc := range t { - ss = append(ss, fmt.Sprintf("\t%d: %s,", i, tabs(rangeCodes(rc).String(), 1))) - } - ss = append(ss, "}") - return strings.Join(ss, "\n") -} diff --git a/vendor/github.com/dsnet/compress/brotli/prefix.go b/vendor/github.com/dsnet/compress/brotli/prefix.go index 7560a66f..ec3dc4c7 100644 --- a/vendor/github.com/dsnet/compress/brotli/prefix.go +++ b/vendor/github.com/dsnet/compress/brotli/prefix.go @@ -132,7 +132,7 @@ func initPrefixLUTs() { } func initPrefixRangeLUTs() { - var makeRanges = func(base uint, bits []uint) (rc []rangeCode) { + makeRanges := func(base uint, bits []uint) (rc []rangeCode) { for _, nb := range bits { rc = append(rc, rangeCode{base: uint32(base), bits: uint32(nb)}) base += 1 << nb @@ -158,7 +158,7 @@ func initPrefixCodeLUTs() { // Prefix code for reading code lengths in RFC section 3.5. codeCLens = nil for sym, clen := range []uint{2, 4, 3, 2, 2, 4} { - var code = prefixCode{sym: uint32(sym), len: uint32(clen)} + code := prefixCode{sym: uint32(sym), len: uint32(clen)} codeCLens = append(codeCLens, code) } decCLens.Init(codeCLens, true) @@ -167,7 +167,7 @@ func initPrefixCodeLUTs() { // Prefix code for reading RLEMAX in RFC section 7.3. codeMaxRLE = []prefixCode{{sym: 0, val: 0, len: 1}} for i := uint32(0); i < 16; i++ { - var code = prefixCode{sym: i + 1, val: i<<1 | 1, len: 5} + code := prefixCode{sym: i + 1, val: i<<1 | 1, len: 5} codeMaxRLE = append(codeMaxRLE, code) } decMaxRLE.Init(codeMaxRLE, false) @@ -196,12 +196,12 @@ func initPrefixCodeLUTs() { // Prefix code for reading counts in RFC section 9.2. // This is used for: NBLTYPESL, NBLTYPESI, NBLTYPESD, NTREESL, and NTREESD. codeCounts = []prefixCode{{sym: 1, val: 0, len: 1}} - var code = codeCounts[len(codeCounts)-1] + code := codeCounts[len(codeCounts)-1] for i := uint32(0); i < 8; i++ { for j := uint32(0); j < 1< c.len { minBits = c.len @@ -92,10 +96,10 @@ func (pd *prefixDecoder) Init(codes []prefixCode, assignCodes bool) { symLast = int(c.sym) // Keep track of last symbol } if maxBits >= 1<= 1< 0 { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } - panic(io.EOF) + errors.Panic(io.EOF) } // Read ISLAST and ISLASTEMPTY. @@ -159,40 +164,39 @@ func (br *Reader) readBlockHeader() { // Read MLEN and MNIBBLES and process meta data. var blkLen int // 1..1<<24 - if nibbles := br.rd.ReadBits(2) + 4; nibbles == 7 { + nibbles := br.rd.ReadBits(2) + 4 + if nibbles == 7 { if reserved := br.rd.ReadBits(1) == 1; reserved { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } var skipLen int // 0..1<<24 if skipBytes := br.rd.ReadBits(2); skipBytes > 0 { skipLen = int(br.rd.ReadBits(skipBytes * 8)) if skipBytes > 1 && skipLen>>((skipBytes-1)*8) == 0 { - panic(ErrCorrupt) // Shortest representation not used + errors.Panic(errCorrupted) // Shortest representation not used } skipLen++ } if br.rd.ReadPads() > 0 { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } - br.blkLen = skipLen // Use blkLen to track meta data number of bytes + br.blkLen = skipLen // Use blkLen to track metadata number of bytes br.readMetaData() return - } else { - blkLen = int(br.rd.ReadBits(nibbles * 4)) - if nibbles > 4 && blkLen>>((nibbles-1)*4) == 0 { - panic(ErrCorrupt) // Shortest representation not used - } - blkLen++ } - br.blkLen = blkLen + blkLen = int(br.rd.ReadBits(nibbles * 4)) + if nibbles > 4 && blkLen>>((nibbles-1)*4) == 0 { + errors.Panic(errCorrupted) // Shortest representation not used + } + br.blkLen = blkLen + 1 // Read ISUNCOMPRESSED and process uncompressed data. if !br.last { if uncompressed := br.rd.ReadBits(1) == 1; uncompressed { if br.rd.ReadPads() > 0 { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } br.readRawData() return @@ -209,9 +213,9 @@ func (br *Reader) readMetaData() { br.metaBuf = make([]byte, 4096) // Lazy allocate } if cnt, err := io.CopyBuffer(br.metaWr, &br.metaRd, br.metaBuf); err != nil { - panic(err) // Will never panic with io.EOF + errors.Panic(err) // Will never panic with io.EOF } else if cnt < int64(br.blkLen) { - panic(io.ErrUnexpectedEOF) + errors.Panic(io.ErrUnexpectedEOF) } br.step = (*Reader).readBlockHeader } @@ -230,7 +234,7 @@ func (br *Reader) readRawData() { if err == io.EOF { err = io.ErrUnexpectedEOF } - panic(err) + errors.Panic(err) } if br.blkLen > 0 { @@ -402,9 +406,8 @@ startCommand: br.distZero = iacSym < 128 if br.insLen > 0 { goto readLiterals - } else { - goto readDistance } + goto readDistance } readLiterals: @@ -443,11 +446,11 @@ readLiterals: br.step = (*Reader).readCommands br.stepState = stateLiterals // Need to continue work here return - } else if br.blkLen > 0 { - goto readDistance - } else { - goto finishCommand } + if br.blkLen > 0 { + goto readDistance + } + goto finishCommand } readDistance: @@ -484,7 +487,7 @@ readDistance: } br.distZero = bool(distSym == 0) if br.dist <= 0 { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } } @@ -496,9 +499,8 @@ readDistance: br.dists[0] = br.dist } goto copyDynamicDict - } else { - goto copyStaticDict } + goto copyStaticDict } copyDynamicDict: @@ -513,9 +515,8 @@ copyDynamicDict: br.step = (*Reader).readCommands br.stepState = stateDynamicDict // Need to continue work here return - } else { - goto finishCommand } + goto finishCommand } copyStaticDict: @@ -523,7 +524,7 @@ copyStaticDict: { if len(br.word) == 0 { if br.cpyLen < minDictLen || br.cpyLen > maxDictLen { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } wordIdx := br.dist - (br.dict.HistSize() + 1) index := wordIdx % dictSizes[br.cpyLen] @@ -531,7 +532,7 @@ copyStaticDict: baseWord := dictLUT[offset : offset+br.cpyLen] transformIdx := wordIdx >> uint(dictBitSizes[br.cpyLen]) if transformIdx >= len(transformLUT) { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } cnt := transformWord(br.wordBuf[:], baseWord, transformIdx) br.word = br.wordBuf[:cnt] @@ -548,16 +549,16 @@ copyStaticDict: br.step = (*Reader).readCommands br.stepState = stateStaticDict // Need to continue work here return - } else { - goto finishCommand } + goto finishCommand } finishCommand: // Finish off this command and check if we need to loop again. if br.blkLen < 0 { - panic(ErrCorrupt) - } else if br.blkLen > 0 { + errors.Panic(errCorrupted) + } + if br.blkLen > 0 { goto startCommand // More commands in this block } @@ -565,7 +566,6 @@ finishCommand: br.toRead = br.dict.ReadFlush() br.step = (*Reader).readBlockHeader br.stepState = stateInit // Next call to readCommands must start here - return } // readContextMap reads the context map according to RFC section 7.3. @@ -590,7 +590,7 @@ func (br *Reader) readContextMap(cm []uint8, numTrees uint) { // Repeated zeros. n := int(br.rd.ReadOffset(sym-1, maxRLERanges)) if i+n > len(cm) { - panic(ErrCorrupt) + errors.Panic(errCorrupted) } for j := i + n; i < j; i++ { cm[i] = 0 diff --git a/vendor/github.com/dsnet/compress/brotli/writer.go b/vendor/github.com/dsnet/compress/brotli/writer.go index 214160c2..0929c34e 100644 --- a/vendor/github.com/dsnet/compress/brotli/writer.go +++ b/vendor/github.com/dsnet/compress/brotli/writer.go @@ -30,6 +30,6 @@ func (bw *writer) Close() error { return nil } -func (bw *writer) Reset(w io.Writer) { - return +func (bw *writer) Reset(w io.Writer) error { + return nil } diff --git a/vendor/github.com/dsnet/compress/internal/common.go b/vendor/github.com/dsnet/compress/internal/common.go new file mode 100644 index 00000000..da4e7034 --- /dev/null +++ b/vendor/github.com/dsnet/compress/internal/common.go @@ -0,0 +1,107 @@ +// Copyright 2015, Joe Tsai. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// Package internal is a collection of common compression algorithms. +// +// For performance reasons, these packages lack strong error checking and +// require that the caller to ensure that strict invariants are kept. +package internal + +var ( + // IdentityLUT returns the input key itself. + IdentityLUT = func() (lut [256]byte) { + for i := range lut { + lut[i] = uint8(i) + } + return lut + }() + + // ReverseLUT returns the input key with its bits reversed. + ReverseLUT = func() (lut [256]byte) { + for i := range lut { + b := uint8(i) + b = (b&0xaa)>>1 | (b&0x55)<<1 + b = (b&0xcc)>>2 | (b&0x33)<<2 + b = (b&0xf0)>>4 | (b&0x0f)<<4 + lut[i] = b + } + return lut + }() +) + +// ReverseUint32 reverses all bits of v. +func ReverseUint32(v uint32) (x uint32) { + x |= uint32(ReverseLUT[byte(v>>0)]) << 24 + x |= uint32(ReverseLUT[byte(v>>8)]) << 16 + x |= uint32(ReverseLUT[byte(v>>16)]) << 8 + x |= uint32(ReverseLUT[byte(v>>24)]) << 0 + return x +} + +// ReverseUint32N reverses the lower n bits of v. +func ReverseUint32N(v uint32, n uint) (x uint32) { + return ReverseUint32(v << (32 - n)) +} + +// ReverseUint64 reverses all bits of v. +func ReverseUint64(v uint64) (x uint64) { + x |= uint64(ReverseLUT[byte(v>>0)]) << 56 + x |= uint64(ReverseLUT[byte(v>>8)]) << 48 + x |= uint64(ReverseLUT[byte(v>>16)]) << 40 + x |= uint64(ReverseLUT[byte(v>>24)]) << 32 + x |= uint64(ReverseLUT[byte(v>>32)]) << 24 + x |= uint64(ReverseLUT[byte(v>>40)]) << 16 + x |= uint64(ReverseLUT[byte(v>>48)]) << 8 + x |= uint64(ReverseLUT[byte(v>>56)]) << 0 + return x +} + +// ReverseUint64N reverses the lower n bits of v. +func ReverseUint64N(v uint64, n uint) (x uint64) { + return ReverseUint64(v << (64 - n)) +} + +// MoveToFront is a data structure that allows for more efficient move-to-front +// transformations. This specific implementation assumes that the alphabet is +// densely packed within 0..255. +type MoveToFront struct { + dict [256]uint8 // Mapping from indexes to values + tail int // Number of tail bytes that are already ordered +} + +func (m *MoveToFront) Encode(vals []uint8) { + copy(m.dict[:], IdentityLUT[:256-m.tail]) // Reset dict to be identity + + var max int + for i, val := range vals { + var idx uint8 // Reverse lookup idx in dict + for di, dv := range m.dict { + if dv == val { + idx = uint8(di) + break + } + } + vals[i] = idx + + max |= int(idx) + copy(m.dict[1:], m.dict[:idx]) + m.dict[0] = val + } + m.tail = 256 - max - 1 +} + +func (m *MoveToFront) Decode(idxs []uint8) { + copy(m.dict[:], IdentityLUT[:256-m.tail]) // Reset dict to be identity + + var max int + for i, idx := range idxs { + val := m.dict[idx] // Forward lookup val in dict + idxs[i] = val + + max |= int(idx) + copy(m.dict[1:], m.dict[:idx]) + m.dict[0] = val + } + m.tail = 256 - max - 1 +} diff --git a/vendor/github.com/dsnet/compress/brotli/release.go b/vendor/github.com/dsnet/compress/internal/debug.go similarity index 66% rename from vendor/github.com/dsnet/compress/brotli/release.go rename to vendor/github.com/dsnet/compress/internal/debug.go index 1eb08790..01df1f89 100644 --- a/vendor/github.com/dsnet/compress/brotli/release.go +++ b/vendor/github.com/dsnet/compress/internal/debug.go @@ -2,10 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// +build !debug +// +build debug,!gofuzz -package brotli +package internal -const debug = false - -func printLUTs() {} +const ( + Debug = true + GoFuzz = false +) diff --git a/vendor/github.com/dsnet/compress/internal/errors/errors.go b/vendor/github.com/dsnet/compress/internal/errors/errors.go new file mode 100644 index 00000000..c631afbd --- /dev/null +++ b/vendor/github.com/dsnet/compress/internal/errors/errors.go @@ -0,0 +1,120 @@ +// Copyright 2016, Joe Tsai. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// Package errors implements functions to manipulate compression errors. +// +// In idiomatic Go, it is an anti-pattern to use panics as a form of error +// reporting in the API. Instead, the expected way to transmit errors is by +// returning an error value. Unfortunately, the checking of "err != nil" in +// tight loops commonly found in compression causes non-negligible performance +// degradation. While this may not be idiomatic, the internal packages of this +// repository rely on panics as a normal means to convey errors. In order to +// ensure that these panics do not leak across the public API, the public +// packages must recover from these panics and present an error value. +// +// The Panic and Recover functions in this package provide a safe way to +// recover from errors only generated from within this repository. +// +// Example usage: +// func Foo() (err error) { +// defer errors.Recover(&err) +// +// if rand.Intn(2) == 0 { +// // Unexpected panics will not be caught by Recover. +// io.Closer(nil).Close() +// } else { +// // Errors thrown by Panic will be caught by Recover. +// errors.Panic(errors.New("whoopsie")) +// } +// } +// +package errors + +import "strings" + +const ( + // Unknown indicates that there is no classification for this error. + Unknown = iota + + // Internal indicates that this error is due to an internal bug. + // Users should file a issue report if this type of error is encountered. + Internal + + // Invalid indicates that this error is due to the user misusing the API + // and is indicative of a bug on the user's part. + Invalid + + // Deprecated indicates the use of a deprecated and unsupported feature. + Deprecated + + // Corrupted indicates that the input stream is corrupted. + Corrupted + + // Closed indicates that the handlers are closed. + Closed +) + +var codeMap = map[int]string{ + Unknown: "unknown error", + Internal: "internal error", + Invalid: "invalid argument", + Deprecated: "deprecated format", + Corrupted: "corrupted input", + Closed: "closed handler", +} + +type Error struct { + Code int // The error type + Pkg string // Name of the package where the error originated + Msg string // Descriptive message about the error (optional) +} + +func (e Error) Error() string { + var ss []string + for _, s := range []string{e.Pkg, codeMap[e.Code], e.Msg} { + if s != "" { + ss = append(ss, s) + } + } + return strings.Join(ss, ": ") +} + +func (e Error) CompressError() {} +func (e Error) IsInternal() bool { return e.Code == Internal } +func (e Error) IsInvalid() bool { return e.Code == Invalid } +func (e Error) IsDeprecated() bool { return e.Code == Deprecated } +func (e Error) IsCorrupted() bool { return e.Code == Corrupted } +func (e Error) IsClosed() bool { return e.Code == Closed } + +func IsInternal(err error) bool { return isCode(err, Internal) } +func IsInvalid(err error) bool { return isCode(err, Invalid) } +func IsDeprecated(err error) bool { return isCode(err, Deprecated) } +func IsCorrupted(err error) bool { return isCode(err, Corrupted) } +func IsClosed(err error) bool { return isCode(err, Closed) } + +func isCode(err error, code int) bool { + if cerr, ok := err.(Error); ok && cerr.Code == code { + return true + } + return false +} + +// errWrap is used by Panic and Recover to ensure that only errors raised by +// Panic are recovered by Recover. +type errWrap struct{ e *error } + +func Recover(err *error) { + switch ex := recover().(type) { + case nil: + // Do nothing. + case errWrap: + *err = *ex.e + default: + panic(ex) + } +} + +func Panic(err error) { + panic(errWrap{&err}) +} diff --git a/vendor/github.com/dsnet/compress/internal/gofuzz.go b/vendor/github.com/dsnet/compress/internal/gofuzz.go new file mode 100644 index 00000000..5035c9d6 --- /dev/null +++ b/vendor/github.com/dsnet/compress/internal/gofuzz.go @@ -0,0 +1,12 @@ +// Copyright 2016, Joe Tsai. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build gofuzz + +package internal + +const ( + Debug = true + GoFuzz = true +) diff --git a/vendor/github.com/dsnet/compress/internal/release.go b/vendor/github.com/dsnet/compress/internal/release.go new file mode 100644 index 00000000..0990be1c --- /dev/null +++ b/vendor/github.com/dsnet/compress/internal/release.go @@ -0,0 +1,21 @@ +// Copyright 2015, Joe Tsai. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !debug,!gofuzz + +package internal + +// Debug indicates whether the debug build tag was set. +// +// If set, programs may choose to print with more human-readable +// debug information and also perform sanity checks that would otherwise be too +// expensive to run in a release build. +const Debug = false + +// GoFuzz indicates whether the gofuzz build tag was set. +// +// If set, programs may choose to disable certain checks (like checksums) that +// would be nearly impossible for gofuzz to properly get right. +// If GoFuzz is set, it implies that Debug is set as well. +const GoFuzz = false diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE index 1b1b1921..0f646931 100644 --- a/vendor/github.com/golang/protobuf/LICENSE +++ b/vendor/github.com/golang/protobuf/LICENSE @@ -1,7 +1,4 @@ -Go support for Protocol Buffers - Google's data interchange format - Copyright 2010 The Go Authors. All rights reserved. -https://github.com/golang/protobuf Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go index c27d35f8..3abfed2c 100644 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ b/vendor/github.com/golang/protobuf/proto/encode.go @@ -37,27 +37,9 @@ package proto import ( "errors" - "fmt" "reflect" ) -// RequiredNotSetError is the error returned if Marshal is called with -// a protocol buffer struct whose required fields have not -// all been initialized. It is also the error returned if Unmarshal is -// called with an encoded protocol buffer that does not include all the -// required fields. -// -// When printed, RequiredNotSetError reports the first unset required field in a -// message. If the field cannot be precisely determined, it is reported as -// "{Unknown}". -type RequiredNotSetError struct { - field string -} - -func (e *RequiredNotSetError) Error() string { - return fmt.Sprintf("proto: required field %q not set", e.field) -} - var ( // errRepeatedHasNil is the error returned if Marshal is called with // a struct with a repeated field containing a nil element. diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index 0e2191b8..75565cc6 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -265,7 +265,6 @@ package proto import ( "encoding/json" - "errors" "fmt" "log" "reflect" @@ -274,7 +273,66 @@ import ( "sync" ) -var errInvalidUTF8 = errors.New("proto: invalid UTF-8 string") +// RequiredNotSetError is an error type returned by either Marshal or Unmarshal. +// Marshal reports this when a required field is not initialized. +// Unmarshal reports this when a required field is missing from the wire data. +type RequiredNotSetError struct{ field string } + +func (e *RequiredNotSetError) Error() string { + if e.field == "" { + return fmt.Sprintf("proto: required field not set") + } + return fmt.Sprintf("proto: required field %q not set", e.field) +} +func (e *RequiredNotSetError) RequiredNotSet() bool { + return true +} + +type invalidUTF8Error struct{ field string } + +func (e *invalidUTF8Error) Error() string { + if e.field == "" { + return "proto: invalid UTF-8 detected" + } + return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field) +} +func (e *invalidUTF8Error) InvalidUTF8() bool { + return true +} + +// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8. +// This error should not be exposed to the external API as such errors should +// be recreated with the field information. +var errInvalidUTF8 = &invalidUTF8Error{} + +// isNonFatal reports whether the error is either a RequiredNotSet error +// or a InvalidUTF8 error. +func isNonFatal(err error) bool { + if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() { + return true + } + if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() { + return true + } + return false +} + +type nonFatal struct{ E error } + +// Merge merges err into nf and reports whether it was successful. +// Otherwise it returns false for any fatal non-nil errors. +func (nf *nonFatal) Merge(err error) (ok bool) { + if err == nil { + return true // not an error + } + if !isNonFatal(err) { + return false // fatal error + } + if nf.E == nil { + nf.E = err // store first instance of non-fatal error + } + return true +} // Message is implemented by generated protocol buffer messages. type Message interface { diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go index f710adab..50b99b83 100644 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ b/vendor/github.com/golang/protobuf/proto/properties.go @@ -139,7 +139,7 @@ type Properties struct { Repeated bool Packed bool // relevant for repeated primitives only Enum string // set for enum types only - proto3 bool // whether this is known to be a proto3 field; set for []byte only + proto3 bool // whether this is known to be a proto3 field oneof bool // whether this is a oneof field Default string // default value @@ -148,9 +148,9 @@ type Properties struct { stype reflect.Type // set for struct types only sprop *StructProperties // set for struct types only - mtype reflect.Type // set for map types only - mkeyprop *Properties // set for map types only - mvalprop *Properties // set for map types only + mtype reflect.Type // set for map types only + MapKeyProp *Properties // set for map types only + MapValProp *Properties // set for map types only } // String formats the properties in the protobuf struct field tag style. @@ -275,16 +275,16 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc case reflect.Map: p.mtype = t1 - p.mkeyprop = &Properties{} - p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) - p.mvalprop = &Properties{} + p.MapKeyProp = &Properties{} + p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) + p.MapValProp = &Properties{} vtype := p.mtype.Elem() if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { // The value type is not a message (*T) or bytes ([]byte), // so we need encoders for the pointer to this type. vtype = reflect.PtrTo(vtype) } - p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) + p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) } if p.stype != nil { diff --git a/vendor/github.com/golang/protobuf/proto/table_marshal.go b/vendor/github.com/golang/protobuf/proto/table_marshal.go index 0f212b30..b1679449 100644 --- a/vendor/github.com/golang/protobuf/proto/table_marshal.go +++ b/vendor/github.com/golang/protobuf/proto/table_marshal.go @@ -231,7 +231,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte return b, err } - var err, errreq error + var err, errLater error // The old marshaler encodes extensions at beginning. if u.extensions.IsValid() { e := ptr.offset(u.extensions).toExtensions() @@ -252,11 +252,13 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte } } for _, f := range u.fields { - if f.required && errreq == nil { + if f.required { if ptr.offset(f.field).getPointer().isNil() { // Required field is not set. // We record the error but keep going, to give a complete marshaling. - errreq = &RequiredNotSetError{f.name} + if errLater == nil { + errLater = &RequiredNotSetError{f.name} + } continue } } @@ -269,14 +271,21 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte if err1, ok := err.(*RequiredNotSetError); ok { // Required field in submessage is not set. // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = &RequiredNotSetError{f.name + "." + err1.field} + if errLater == nil { + errLater = &RequiredNotSetError{f.name + "." + err1.field} } continue } if err == errRepeatedHasNil { err = errors.New("proto: repeated field " + f.name + " has nil element") } + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return b, err } } @@ -284,7 +293,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte s := *ptr.offset(u.unrecognized).toBytes() b = append(b, s...) } - return b, errreq + return b, errLater } // computeMarshalInfo initializes the marshal info. @@ -530,6 +539,7 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma packed := false proto3 := false + validateUTF8 := true for i := 2; i < len(tags); i++ { if tags[i] == "packed" { packed = true @@ -538,6 +548,7 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma proto3 = true } } + validateUTF8 = validateUTF8 && proto3 switch t.Kind() { case reflect.Bool: @@ -735,6 +746,18 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma } return sizeFloat64Value, appendFloat64Value case reflect.String: + if validateUTF8 { + if pointer { + return sizeStringPtr, appendUTF8StringPtr + } + if slice { + return sizeStringSlice, appendUTF8StringSlice + } + if nozero { + return sizeStringValueNoZero, appendUTF8StringValueNoZero + } + return sizeStringValue, appendUTF8StringValue + } if pointer { return sizeStringPtr, appendStringPtr } @@ -1984,9 +2007,6 @@ func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byt } func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { v := *ptr.toString() - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) @@ -1997,9 +2017,6 @@ func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]b if v == "" { return b, nil } - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) @@ -2011,24 +2028,83 @@ func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, err return b, nil } v := *p - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) return b, nil } func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + s := *ptr.toStringSlice() + for _, v := range s { + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + } + return b, nil +} +func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool + v := *ptr.toString() + if !utf8.ValidString(v) { + invalidUTF8 = true + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } + return b, nil +} +func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool + v := *ptr.toString() + if v == "" { + return b, nil + } + if !utf8.ValidString(v) { + invalidUTF8 = true + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } + return b, nil +} +func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool + p := *ptr.toStringPtr() + if p == nil { + return b, nil + } + v := *p + if !utf8.ValidString(v) { + invalidUTF8 = true + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } + return b, nil +} +func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool s := *ptr.toStringSlice() for _, v := range s { if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) } + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { @@ -2107,7 +2183,8 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2115,22 +2192,14 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, wiretag) // start group b, err = u.marshal(b, v, deterministic) b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2174,7 +2243,8 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2184,22 +2254,14 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, uint64(siz)) b, err = u.marshal(b, v, deterministic) - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2223,6 +2285,25 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { // value. // Key cannot be pointer-typed. valIsPtr := valType.Kind() == reflect.Ptr + + // If value is a message with nested maps, calling + // valSizer in marshal may be quadratic. We should use + // cached version in marshal (but not in size). + // If value is not message type, we don't have size cache, + // but it cannot be nested either. Just use valSizer. + valCachedSizer := valSizer + if valIsPtr && valType.Elem().Kind() == reflect.Struct { + u := getMarshalInfo(valType.Elem()) + valCachedSizer = func(ptr pointer, tagsize int) int { + // Same as message sizer, but use cache. + p := ptr.getPointer() + if p.isNil() { + return 0 + } + siz := u.cachedsize(p) + return siz + SizeVarint(uint64(siz)) + tagsize + } + } return func(ptr pointer, tagsize int) int { m := ptr.asPointerTo(t).Elem() // the map n := 0 @@ -2243,24 +2324,26 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { if len(keys) > 1 && deterministic { sort.Sort(mapKeys(keys)) } + + var nerr nonFatal for _, k := range keys { ki := k.Interface() vi := m.MapIndex(k).Interface() kaddr := toAddrPointer(&ki, false) // pointer to key vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value b = appendVarint(b, tag) - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) + siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) b = appendVarint(b, uint64(siz)) b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b, err = valMarshaler(b, vaddr, valWireTag, deterministic) - if err != nil && err != ErrNil { // allow nil value in map + if err != ErrNil && !nerr.Merge(err) { // allow nil value in map return b, err } } - return b, nil + return b, nerr.E } } @@ -2333,6 +2416,7 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2352,11 +2436,11 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2383,11 +2467,11 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // message set format is: @@ -2444,6 +2528,7 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2470,12 +2555,12 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b = append(b, 1<<3|WireEndGroup) } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2509,11 +2594,11 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) b = append(b, 1<<3|WireEndGroup) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // sizeV1Extensions computes the size of encoded data for a V1-API extension field. @@ -2556,6 +2641,7 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ sort.Ints(keys) var err error + var nerr nonFatal for _, k := range keys { e := m[int32(k)] if e.value == nil || e.desc == nil { @@ -2572,11 +2658,11 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // newMarshaler is the interface representing objects that can marshal themselves. diff --git a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go index 55f0340a..ebf1caa5 100644 --- a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go +++ b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go @@ -97,6 +97,8 @@ type unmarshalFieldInfo struct { // if a required field, contains a single set bit at this field's index in the required field list. reqMask uint64 + + name string // name of the field, for error reporting } var ( @@ -136,8 +138,8 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { if u.isMessageSet { return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) } - var reqMask uint64 // bitmask of required fields we've seen. - var rnse *RequiredNotSetError // an instance of a RequiredNotSetError returned by a submessage. + var reqMask uint64 // bitmask of required fields we've seen. + var errLater error for len(b) > 0 { // Read tag and wire type. // Special case 1 and 2 byte varints. @@ -176,11 +178,20 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { if r, ok := err.(*RequiredNotSetError); ok { // Remember this error, but keep parsing. We need to produce // a full parse even if a required field is missing. - rnse = r + if errLater == nil { + errLater = r + } reqMask |= f.reqMask continue } if err != errInternalBadWireType { + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return err } // Fragments with bad wire type are treated as unknown fields. @@ -239,20 +250,16 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { emap[int32(tag)] = e } } - if rnse != nil { - // A required field of a submessage/group is missing. Return that error. - return rnse - } - if reqMask != u.reqMask { + if reqMask != u.reqMask && errLater == nil { // A required field of this message is missing. for _, n := range u.reqFields { if reqMask&1 == 0 { - return &RequiredNotSetError{n} + errLater = &RequiredNotSetError{n} } reqMask >>= 1 } } - return nil + return errLater } // computeUnmarshalInfo fills in u with information for use @@ -351,7 +358,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { } // Store the info in the correct slot in the message. - u.setTag(tag, toField(&f), unmarshal, reqMask) + u.setTag(tag, toField(&f), unmarshal, reqMask, name) } // Find any types associated with oneof fields. @@ -366,10 +373,17 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { f := typ.Field(0) // oneof implementers have one field baseUnmarshal := fieldUnmarshaler(&f) - tagstr := strings.Split(f.Tag.Get("protobuf"), ",")[1] - tag, err := strconv.Atoi(tagstr) + tags := strings.Split(f.Tag.Get("protobuf"), ",") + fieldNum, err := strconv.Atoi(tags[1]) if err != nil { - panic("protobuf tag field not an integer: " + tagstr) + panic("protobuf tag field not an integer: " + tags[1]) + } + var name string + for _, tag := range tags { + if strings.HasPrefix(tag, "name=") { + name = strings.TrimPrefix(tag, "name=") + break + } } // Find the oneof field that this struct implements. @@ -380,7 +394,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // That lets us know where this struct should be stored // when we encounter it during unmarshaling. unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) - u.setTag(tag, of.field, unmarshal, 0) + u.setTag(fieldNum, of.field, unmarshal, 0, name) } } } @@ -401,7 +415,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // [0 0] is [tag=0/wiretype=varint varint-encoded-0]. u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) { return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w) - }, 0) + }, 0, "") // Set mask for required field check. u.reqMask = uint64(1)<= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here? for len(u.dense) <= tag { @@ -442,11 +457,17 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { tagArray := strings.Split(tags, ",") encoding := tagArray[0] name := "unknown" + proto3 := false + validateUTF8 := true for _, tag := range tagArray[3:] { if strings.HasPrefix(tag, "name=") { name = tag[5:] } + if tag == "proto3" { + proto3 = true + } } + validateUTF8 = validateUTF8 && proto3 // Figure out packaging (pointer, slice, or both) slice := false @@ -594,6 +615,15 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { } return unmarshalBytesValue case reflect.String: + if validateUTF8 { + if pointer { + return unmarshalUTF8StringPtr + } + if slice { + return unmarshalUTF8StringSlice + } + return unmarshalUTF8StringValue + } if pointer { return unmarshalStringPtr } @@ -1448,9 +1478,6 @@ func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toString() = v return b[x:], nil } @@ -1468,9 +1495,6 @@ func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toStringPtr() = &v return b[x:], nil } @@ -1488,14 +1512,72 @@ func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } s := f.toStringSlice() *s = append(*s, v) return b[x:], nil } +func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toString() = v + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toStringPtr() = &v + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + s := f.toStringSlice() + *s = append(*s, v) + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + var emptyBuf [0]byte func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) { @@ -1674,6 +1756,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Maps will be somewhat slow. Oh well. // Read key and value from data. + var nerr nonFatal k := reflect.New(kt) v := reflect.New(vt) for len(b) > 0 { @@ -1694,7 +1777,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { err = errInternalBadWireType // skip unknown tag } - if err == nil { + if nerr.Merge(err) { continue } if err != errInternalBadWireType { @@ -1717,7 +1800,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Insert into map. m.SetMapIndex(k.Elem(), v.Elem()) - return r, nil + return r, nerr.E } } @@ -1743,15 +1826,16 @@ func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshal // Unmarshal data into holder. // We unmarshal into the first field of the holder object. var err error + var nerr nonFatal b, err = unmarshal(b, valToPointer(v).offset(field0), w) - if err != nil { + if !nerr.Merge(err) { return nil, err } // Write pointer to holder into target field. f.asPointerTo(ityp).Elem().Set(v) - return b, nil + return b, nerr.E } } diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go index 2205fdaa..1aaee725 100644 --- a/vendor/github.com/golang/protobuf/proto/text.go +++ b/vendor/github.com/golang/protobuf/proto/text.go @@ -353,7 +353,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, key, props.mkeyprop); err != nil { + if err := tm.writeAny(w, key, props.MapKeyProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { @@ -370,7 +370,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, val, props.mvalprop); err != nil { + if err := tm.writeAny(w, val, props.MapValProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go index 0685bae3..bb55a3af 100644 --- a/vendor/github.com/golang/protobuf/proto/text_parser.go +++ b/vendor/github.com/golang/protobuf/proto/text_parser.go @@ -630,17 +630,17 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error { if err := p.consumeToken(":"); err != nil { return err } - if err := p.readAny(key, props.mkeyprop); err != nil { + if err := p.readAny(key, props.MapKeyProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { return err } case "value": - if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil { + if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil { return err } - if err := p.readAny(val, props.mvalprop); err != nil { + if err := p.readAny(val, props.MapValProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { diff --git a/vendor/github.com/golang/snappy/snappy.go b/vendor/github.com/golang/snappy/snappy.go index 0cf5e379..ece692ea 100644 --- a/vendor/github.com/golang/snappy/snappy.go +++ b/vendor/github.com/golang/snappy/snappy.go @@ -2,10 +2,21 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package snappy implements the snappy block-based compression format. -// It aims for very high speeds and reasonable compression. +// Package snappy implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. // -// The C++ snappy implementation is at https://github.com/google/snappy +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. package snappy // import "github.com/golang/snappy" import ( diff --git a/vendor/github.com/gorilla/websocket/AUTHORS b/vendor/github.com/gorilla/websocket/AUTHORS index b003eca0..1931f400 100644 --- a/vendor/github.com/gorilla/websocket/AUTHORS +++ b/vendor/github.com/gorilla/websocket/AUTHORS @@ -4,5 +4,6 @@ # Please keep the list sorted. Gary Burd +Google LLC (https://opensource.google.com/) Joachim Bauch diff --git a/vendor/github.com/gorilla/websocket/server.go b/vendor/github.com/gorilla/websocket/server.go index aee27052..4834c380 100644 --- a/vendor/github.com/gorilla/websocket/server.go +++ b/vendor/github.com/gorilla/websocket/server.go @@ -34,9 +34,11 @@ type Upgrader struct { ReadBufferSize, WriteBufferSize int // Subprotocols specifies the server's supported protocols in order of - // preference. If this field is set, then the Upgrade method negotiates a + // preference. If this field is not nil, then the Upgrade method negotiates a // subprotocol by selecting the first match in this list with a protocol - // requested by the client. + // requested by the client. If there's no match, then no protocol is + // negotiated (the Sec-Websocket-Protocol header is not included in the + // handshake response). Subprotocols []string // Error specifies the function for generating HTTP error responses. If Error diff --git a/vendor/github.com/hashicorp/hcl/go.mod b/vendor/github.com/hashicorp/hcl/go.mod new file mode 100644 index 00000000..4debbbe3 --- /dev/null +++ b/vendor/github.com/hashicorp/hcl/go.mod @@ -0,0 +1,3 @@ +module github.com/hashicorp/hcl + +require github.com/davecgh/go-spew v1.1.1 diff --git a/vendor/github.com/hashicorp/hcl/go.sum b/vendor/github.com/hashicorp/hcl/go.sum new file mode 100644 index 00000000..b5e2922e --- /dev/null +++ b/vendor/github.com/hashicorp/hcl/go.sum @@ -0,0 +1,2 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/vendor/github.com/jpillora/backoff/README.md b/vendor/github.com/jpillora/backoff/README.md index 81e77cd7..ee4d6230 100644 --- a/vendor/github.com/jpillora/backoff/README.md +++ b/vendor/github.com/jpillora/backoff/README.md @@ -116,4 +116,4 @@ https://godoc.org/github.com/jpillora/backoff #### Credits -Forked from some JavaScript written by [@tj](https://github.com/tj) \ No newline at end of file +Forked from [some JavaScript](https://github.com/segmentio/backo) written by [@tj](https://github.com/tj) diff --git a/vendor/github.com/kjk/betterguid/README.md b/vendor/github.com/kjk/betterguid/README.md index 1f1f83ea..fabbdbdb 100644 --- a/vendor/github.com/kjk/betterguid/README.md +++ b/vendor/github.com/kjk/betterguid/README.md @@ -1,4 +1,4 @@ -This is Go package to generate guid (globally unique id) with good properties +This is Go package to generate guid (globally unique id) with good properties. Usage: ```go @@ -10,13 +10,13 @@ fmt.Printf("guid: '%s'\n", id) Generated guids have good properties: * they're 20 character strings, safe for inclusion in urls (don't require escaping) -* they're based on timestamp so that they sort **after** any existing ids +* they're based on timestamp; they sort **after** any existing ids * they contain 72-bits of random data after the timestamp so that IDs won't - collide with other clients' IDs -* they sort **lexicographically** (so the timestamp is converted to characters - that will sort properly) -* they're monotonically increasing. Even if you generate more than one in the - same timestamp, thelatter ones will sort after the former ones. We do this + collide with other IDs +* they sort **lexicographically** (the timestamp is converted to a string + that will sort correctly) +* they're monotonically increasing. Even if you generate more than one in the + same timestamp, the latter ones will sort after the former ones. We do this by using the previous random bits but "incrementing" them by 1 (only in the case of a timestamp collision). @@ -24,3 +24,5 @@ Read https://www.firebase.com/blog/2015-02-11-firebase-unique-identifiers.html for more info. Based on https://gist.github.com/mikelehen/3596a30bd69384624c11 + +You can read [Generating good, random and unique ids in Go](https://blog.kowalczyk.info/article/JyRZ/generating-good-random-and-unique-ids-in-go.html) to see how it compares to other similar libraries. diff --git a/vendor/github.com/kjk/betterguid/betterguid.go b/vendor/github.com/kjk/betterguid/betterguid.go index f431709d..896b570c 100644 --- a/vendor/github.com/kjk/betterguid/betterguid.go +++ b/vendor/github.com/kjk/betterguid/betterguid.go @@ -24,14 +24,17 @@ var ( ) func init() { - // have to seed to get randomness + // seed to get randomness rnd = rand.New(rand.NewSource(time.Now().UnixNano())) - for i := 0; i < 12; i++ { +} + +func genRandPart() { + for i := 0; i < len(lastRandChars); i++ { lastRandChars[i] = rnd.Intn(64) } } -// New creates a new guid. +// New creates a new random, unique id func New() string { var id [8 + 12]byte mu.Lock() @@ -46,6 +49,8 @@ func New() string { // increment the next byte lastRandChars[i] = 0 } + } else { + genRandPart() } lastPushTimeMs = timeMs // put random as the second part diff --git a/vendor/github.com/magiconair/properties/.travis.yml b/vendor/github.com/magiconair/properties/.travis.yml index 923e8664..3e7c3d2c 100644 --- a/vendor/github.com/magiconair/properties/.travis.yml +++ b/vendor/github.com/magiconair/properties/.travis.yml @@ -6,5 +6,5 @@ go: - 1.7.x - 1.8.x - 1.9.x - - "1.10" + - "1.10.x" - tip diff --git a/vendor/github.com/magiconair/properties/CHANGELOG.md b/vendor/github.com/magiconair/properties/CHANGELOG.md index adefa17e..f83adc20 100644 --- a/vendor/github.com/magiconair/properties/CHANGELOG.md +++ b/vendor/github.com/magiconair/properties/CHANGELOG.md @@ -1,5 +1,13 @@ ## Changelog +### [1.8](https://github.com/magiconair/properties/tree/v1.8) - 15 May 2018 + + * [PR #26](https://github.com/magiconair/properties/pull/26): Disable expansion during loading + + This adds the option to disable property expansion during loading. + + Thanks to [@kmala](https://github.com/kmala) for the patch. + ### [1.7.6](https://github.com/magiconair/properties/tree/v1.7.6) - 14 Feb 2018 * [PR #29](https://github.com/magiconair/properties/pull/29): Reworked expansion logic to handle more complex cases. diff --git a/vendor/github.com/magiconair/properties/decode.go b/vendor/github.com/magiconair/properties/decode.go index 0a961bb0..3ebf8049 100644 --- a/vendor/github.com/magiconair/properties/decode.go +++ b/vendor/github.com/magiconair/properties/decode.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. diff --git a/vendor/github.com/magiconair/properties/doc.go b/vendor/github.com/magiconair/properties/doc.go index 36c83680..f8822da2 100644 --- a/vendor/github.com/magiconair/properties/doc.go +++ b/vendor/github.com/magiconair/properties/doc.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -73,7 +73,7 @@ // # refers to the users' home dir // home = ${HOME} // -// # local key takes precendence over env var: u = foo +// # local key takes precedence over env var: u = foo // USER = foo // u = ${USER} // @@ -102,7 +102,7 @@ // v = p.GetString("key", "def") // v = p.GetDuration("key", 999) // -// As an alterantive properties may be applied with the standard +// As an alternative properties may be applied with the standard // library's flag implementation at any time. // // # Standard configuration diff --git a/vendor/github.com/magiconair/properties/integrate.go b/vendor/github.com/magiconair/properties/integrate.go index 0d775e03..74d38dc6 100644 --- a/vendor/github.com/magiconair/properties/integrate.go +++ b/vendor/github.com/magiconair/properties/integrate.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. diff --git a/vendor/github.com/magiconair/properties/lex.go b/vendor/github.com/magiconair/properties/lex.go index c63fcc60..367166d5 100644 --- a/vendor/github.com/magiconair/properties/lex.go +++ b/vendor/github.com/magiconair/properties/lex.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // diff --git a/vendor/github.com/magiconair/properties/load.go b/vendor/github.com/magiconair/properties/load.go index 9c83fd63..c8e1b580 100644 --- a/vendor/github.com/magiconair/properties/load.go +++ b/vendor/github.com/magiconair/properties/load.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -16,21 +16,157 @@ import ( type Encoding uint const ( + // utf8Default is a private placeholder for the zero value of Encoding to + // ensure that it has the correct meaning. UTF8 is the default encoding but + // was assigned a non-zero value which cannot be changed without breaking + // existing code. Clients should continue to use the public constants. + utf8Default Encoding = iota + // UTF8 interprets the input data as UTF-8. - UTF8 Encoding = 1 << iota + UTF8 // ISO_8859_1 interprets the input data as ISO-8859-1. ISO_8859_1 ) +type Loader struct { + // Encoding determines how the data from files and byte buffers + // is interpreted. For URLs the Content-Type header is used + // to determine the encoding of the data. + Encoding Encoding + + // DisableExpansion configures the property expansion of the + // returned property object. When set to true, the property values + // will not be expanded and the Property object will not be checked + // for invalid expansion expressions. + DisableExpansion bool + + // IgnoreMissing configures whether missing files or URLs which return + // 404 are reported as errors. When set to true, missing files and 404 + // status codes are not reported as errors. + IgnoreMissing bool +} + +// Load reads a buffer into a Properties struct. +func (l *Loader) LoadBytes(buf []byte) (*Properties, error) { + return l.loadBytes(buf, l.Encoding) +} + +// LoadAll reads the content of multiple URLs or files in the given order into +// a Properties struct. If IgnoreMissing is true then a 404 status code or +// missing file will not be reported as error. Encoding sets the encoding for +// files. For the URLs see LoadURL for the Content-Type header and the +// encoding. +func (l *Loader) LoadAll(names []string) (*Properties, error) { + all := NewProperties() + for _, name := range names { + n, err := expandName(name) + if err != nil { + return nil, err + } + + var p *Properties + switch { + case strings.HasPrefix(n, "http://"): + p, err = l.LoadURL(n) + case strings.HasPrefix(n, "https://"): + p, err = l.LoadURL(n) + default: + p, err = l.LoadFile(n) + } + if err != nil { + return nil, err + } + all.Merge(p) + } + + all.DisableExpansion = l.DisableExpansion + if all.DisableExpansion { + return all, nil + } + return all, all.check() +} + +// LoadFile reads a file into a Properties struct. +// If IgnoreMissing is true then a missing file will not be +// reported as error. +func (l *Loader) LoadFile(filename string) (*Properties, error) { + data, err := ioutil.ReadFile(filename) + if err != nil { + if l.IgnoreMissing && os.IsNotExist(err) { + LogPrintf("properties: %s not found. skipping", filename) + return NewProperties(), nil + } + return nil, err + } + return l.loadBytes(data, l.Encoding) +} + +// LoadURL reads the content of the URL into a Properties struct. +// +// The encoding is determined via the Content-Type header which +// should be set to 'text/plain'. If the 'charset' parameter is +// missing, 'iso-8859-1' or 'latin1' the encoding is set to +// ISO-8859-1. If the 'charset' parameter is set to 'utf-8' the +// encoding is set to UTF-8. A missing content type header is +// interpreted as 'text/plain; charset=utf-8'. +func (l *Loader) LoadURL(url string) (*Properties, error) { + resp, err := http.Get(url) + if err != nil { + return nil, fmt.Errorf("properties: error fetching %q. %s", url, err) + } + + if resp.StatusCode == 404 && l.IgnoreMissing { + LogPrintf("properties: %s returned %d. skipping", url, resp.StatusCode) + return NewProperties(), nil + } + + if resp.StatusCode != 200 { + return nil, fmt.Errorf("properties: %s returned %d", url, resp.StatusCode) + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("properties: %s error reading response. %s", url, err) + } + defer resp.Body.Close() + + ct := resp.Header.Get("Content-Type") + var enc Encoding + switch strings.ToLower(ct) { + case "text/plain", "text/plain; charset=iso-8859-1", "text/plain; charset=latin1": + enc = ISO_8859_1 + case "", "text/plain; charset=utf-8": + enc = UTF8 + default: + return nil, fmt.Errorf("properties: invalid content type %s", ct) + } + + return l.loadBytes(body, enc) +} + +func (l *Loader) loadBytes(buf []byte, enc Encoding) (*Properties, error) { + p, err := parse(convert(buf, enc)) + if err != nil { + return nil, err + } + p.DisableExpansion = l.DisableExpansion + if p.DisableExpansion { + return p, nil + } + return p, p.check() +} + // Load reads a buffer into a Properties struct. func Load(buf []byte, enc Encoding) (*Properties, error) { - return loadBuf(buf, enc) + l := &Loader{Encoding: enc} + return l.LoadBytes(buf) } // LoadString reads an UTF8 string into a properties struct. func LoadString(s string) (*Properties, error) { - return loadBuf([]byte(s), UTF8) + l := &Loader{Encoding: UTF8} + return l.LoadBytes([]byte(s)) } // LoadMap creates a new Properties struct from a string map. @@ -44,34 +180,32 @@ func LoadMap(m map[string]string) *Properties { // LoadFile reads a file into a Properties struct. func LoadFile(filename string, enc Encoding) (*Properties, error) { - return loadAll([]string{filename}, enc, false) + l := &Loader{Encoding: enc} + return l.LoadAll([]string{filename}) } // LoadFiles reads multiple files in the given order into // a Properties struct. If 'ignoreMissing' is true then // non-existent files will not be reported as error. func LoadFiles(filenames []string, enc Encoding, ignoreMissing bool) (*Properties, error) { - return loadAll(filenames, enc, ignoreMissing) + l := &Loader{Encoding: enc, IgnoreMissing: ignoreMissing} + return l.LoadAll(filenames) } // LoadURL reads the content of the URL into a Properties struct. -// -// The encoding is determined via the Content-Type header which -// should be set to 'text/plain'. If the 'charset' parameter is -// missing, 'iso-8859-1' or 'latin1' the encoding is set to -// ISO-8859-1. If the 'charset' parameter is set to 'utf-8' the -// encoding is set to UTF-8. A missing content type header is -// interpreted as 'text/plain; charset=utf-8'. +// See Loader#LoadURL for details. func LoadURL(url string) (*Properties, error) { - return loadAll([]string{url}, UTF8, false) + l := &Loader{Encoding: UTF8} + return l.LoadAll([]string{url}) } // LoadURLs reads the content of multiple URLs in the given order into a -// Properties struct. If 'ignoreMissing' is true then a 404 status code will -// not be reported as error. See LoadURL for the Content-Type header +// Properties struct. If IgnoreMissing is true then a 404 status code will +// not be reported as error. See Loader#LoadURL for the Content-Type header // and the encoding. func LoadURLs(urls []string, ignoreMissing bool) (*Properties, error) { - return loadAll(urls, UTF8, ignoreMissing) + l := &Loader{Encoding: UTF8, IgnoreMissing: ignoreMissing} + return l.LoadAll(urls) } // LoadAll reads the content of multiple URLs or files in the given order into a @@ -79,7 +213,8 @@ func LoadURLs(urls []string, ignoreMissing bool) (*Properties, error) { // not be reported as error. Encoding sets the encoding for files. For the URLs please see // LoadURL for the Content-Type header and the encoding. func LoadAll(names []string, enc Encoding, ignoreMissing bool) (*Properties, error) { - return loadAll(names, enc, ignoreMissing) + l := &Loader{Encoding: enc, IgnoreMissing: ignoreMissing} + return l.LoadAll(names) } // MustLoadString reads an UTF8 string into a Properties struct and @@ -122,90 +257,6 @@ func MustLoadAll(names []string, enc Encoding, ignoreMissing bool) *Properties { return must(LoadAll(names, enc, ignoreMissing)) } -func loadBuf(buf []byte, enc Encoding) (*Properties, error) { - p, err := parse(convert(buf, enc)) - if err != nil { - return nil, err - } - return p, p.check() -} - -func loadAll(names []string, enc Encoding, ignoreMissing bool) (*Properties, error) { - result := NewProperties() - for _, name := range names { - n, err := expandName(name) - if err != nil { - return nil, err - } - var p *Properties - if strings.HasPrefix(n, "http://") || strings.HasPrefix(n, "https://") { - p, err = loadURL(n, ignoreMissing) - } else { - p, err = loadFile(n, enc, ignoreMissing) - } - if err != nil { - return nil, err - } - result.Merge(p) - - } - return result, result.check() -} - -func loadFile(filename string, enc Encoding, ignoreMissing bool) (*Properties, error) { - data, err := ioutil.ReadFile(filename) - if err != nil { - if ignoreMissing && os.IsNotExist(err) { - LogPrintf("properties: %s not found. skipping", filename) - return NewProperties(), nil - } - return nil, err - } - p, err := parse(convert(data, enc)) - if err != nil { - return nil, err - } - return p, nil -} - -func loadURL(url string, ignoreMissing bool) (*Properties, error) { - resp, err := http.Get(url) - if err != nil { - return nil, fmt.Errorf("properties: error fetching %q. %s", url, err) - } - if resp.StatusCode == 404 && ignoreMissing { - LogPrintf("properties: %s returned %d. skipping", url, resp.StatusCode) - return NewProperties(), nil - } - if resp.StatusCode != 200 { - return nil, fmt.Errorf("properties: %s returned %d", url, resp.StatusCode) - } - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("properties: %s error reading response. %s", url, err) - } - if err = resp.Body.Close(); err != nil { - return nil, fmt.Errorf("properties: %s error reading response. %s", url, err) - } - - ct := resp.Header.Get("Content-Type") - var enc Encoding - switch strings.ToLower(ct) { - case "text/plain", "text/plain; charset=iso-8859-1", "text/plain; charset=latin1": - enc = ISO_8859_1 - case "", "text/plain; charset=utf-8": - enc = UTF8 - default: - return nil, fmt.Errorf("properties: invalid content type %s", ct) - } - - p, err := parse(convert(body, enc)) - if err != nil { - return nil, err - } - return p, nil -} - func must(p *Properties, err error) *Properties { if err != nil { ErrorHandler(err) @@ -226,7 +277,7 @@ func expandName(name string) (string, error) { // first 256 unicode code points cover ISO-8859-1. func convert(buf []byte, enc Encoding) string { switch enc { - case UTF8: + case utf8Default, UTF8: return string(buf) case ISO_8859_1: runes := make([]rune, len(buf)) diff --git a/vendor/github.com/magiconair/properties/parser.go b/vendor/github.com/magiconair/properties/parser.go index 90f555cb..cdc4a803 100644 --- a/vendor/github.com/magiconair/properties/parser.go +++ b/vendor/github.com/magiconair/properties/parser.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. diff --git a/vendor/github.com/magiconair/properties/properties.go b/vendor/github.com/magiconair/properties/properties.go index 53f5b2ff..cb3d1a33 100644 --- a/vendor/github.com/magiconair/properties/properties.go +++ b/vendor/github.com/magiconair/properties/properties.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -83,6 +83,17 @@ func NewProperties() *Properties { } } +// Load reads a buffer into the given Properties struct. +func (p *Properties) Load(buf []byte, enc Encoding) error { + l := &Loader{Encoding: enc, DisableExpansion: p.DisableExpansion} + newProperties, err := l.LoadBytes(buf) + if err != nil { + return err + } + p.Merge(newProperties) + return nil +} + // Get returns the expanded value for the given key if exists. // Otherwise, ok is false. func (p *Properties) Get(key string) (value string, ok bool) { diff --git a/vendor/github.com/magiconair/properties/rangecheck.go b/vendor/github.com/magiconair/properties/rangecheck.go index 2e907d54..b013a2e5 100644 --- a/vendor/github.com/magiconair/properties/rangecheck.go +++ b/vendor/github.com/magiconair/properties/rangecheck.go @@ -1,4 +1,4 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. +// Copyright 2018 Frank Schroeder. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. diff --git a/vendor/github.com/mailru/easyjson/.gitignore b/vendor/github.com/mailru/easyjson/.gitignore index db8c66ed..26156fb4 100644 --- a/vendor/github.com/mailru/easyjson/.gitignore +++ b/vendor/github.com/mailru/easyjson/.gitignore @@ -2,3 +2,4 @@ *_easyjson.go *.iml .idea +*.swp diff --git a/vendor/github.com/mailru/easyjson/Makefile b/vendor/github.com/mailru/easyjson/Makefile index 49c80f3b..7cfec87b 100644 --- a/vendor/github.com/mailru/easyjson/Makefile +++ b/vendor/github.com/mailru/easyjson/Makefile @@ -6,7 +6,7 @@ all: test .root/src/$(PKG): mkdir -p $@ - for i in $$PWD/* ; do ln -s $$i $@/`basename $$i` ; done + for i in $$PWD/* ; do ln -s $$i $@/`basename $$i` ; done root: .root/src/$(PKG) @@ -27,7 +27,7 @@ generate: root build .root/src/$(PKG)/tests/custom_map_key_type.go \ .root/src/$(PKG)/tests/embedded_type.go - .root/bin/easyjson -all .root/src/$(PKG)/tests/data.go + .root/bin/easyjson -all .root/src/$(PKG)/tests/data.go .root/bin/easyjson -all .root/src/$(PKG)/tests/nothing.go .root/bin/easyjson -all .root/src/$(PKG)/tests/errors.go .root/bin/easyjson -snake_case .root/src/$(PKG)/tests/snake.go @@ -37,6 +37,7 @@ generate: root build .root/bin/easyjson .root/src/$(PKG)/tests/named_type.go .root/bin/easyjson .root/src/$(PKG)/tests/custom_map_key_type.go .root/bin/easyjson .root/src/$(PKG)/tests/embedded_type.go + .root/bin/easyjson -disallow_unknown_fields .root/src/$(PKG)/tests/disallow_unknown.go test: generate root go test \ diff --git a/vendor/github.com/mailru/easyjson/README.md b/vendor/github.com/mailru/easyjson/README.md index 9366e3f7..7fd76865 100644 --- a/vendor/github.com/mailru/easyjson/README.md +++ b/vendor/github.com/mailru/easyjson/README.md @@ -53,6 +53,8 @@ Usage of easyjson: use lowerCamelCase instead of CamelCase by default -stubs only generate stubs for marshaler/unmarshaler funcs + -disallow_unknown_fields + return error if some unknown field in json appeared ``` Using `-all` will generate marshalers/unmarshalers for all Go structs in the diff --git a/vendor/github.com/mailru/easyjson/jlexer/lexer.go b/vendor/github.com/mailru/easyjson/jlexer/lexer.go index 0fd9b122..51f05661 100644 --- a/vendor/github.com/mailru/easyjson/jlexer/lexer.go +++ b/vendor/github.com/mailru/easyjson/jlexer/lexer.go @@ -240,7 +240,7 @@ func (r *Lexer) fetchNumber() { // findStringLen tries to scan into the string literal for ending quote char to determine required size. // The size will be exact if no escapes are present and may be inexact if there are escaped chars. -func findStringLen(data []byte) (hasEscapes bool, length int) { +func findStringLen(data []byte) (isValid, hasEscapes bool, length int) { delta := 0 for i := 0; i < len(data); i++ { @@ -252,11 +252,11 @@ func findStringLen(data []byte) (hasEscapes bool, length int) { delta++ } case '"': - return (delta > 0), (i - delta) + return true, (delta > 0), (i - delta) } } - return false, len(data) + return false, false, len(data) } // getu4 decodes \uXXXX from the beginning of s, returning the hex value, @@ -342,7 +342,12 @@ func (r *Lexer) fetchString() { r.pos++ data := r.Data[r.pos:] - hasEscapes, length := findStringLen(data) + isValid, hasEscapes, length := findStringLen(data) + if !isValid { + r.pos += length + r.errParse("unterminated string literal") + return + } if !hasEscapes { r.token.byteValue = data[:length] r.pos += length + 1 @@ -649,7 +654,7 @@ func (r *Lexer) Bytes() []byte { return nil } ret := make([]byte, base64.StdEncoding.DecodedLen(len(r.token.byteValue))) - len, err := base64.StdEncoding.Decode(ret, r.token.byteValue) + n, err := base64.StdEncoding.Decode(ret, r.token.byteValue) if err != nil { r.fatalError = &LexerError{ Reason: err.Error(), @@ -658,7 +663,7 @@ func (r *Lexer) Bytes() []byte { } r.consume() - return ret[:len] + return ret[:n] } // Bool reads a true or false boolean keyword. diff --git a/vendor/github.com/miekg/dns/client.go b/vendor/github.com/miekg/dns/client.go index 282565af..dd6b512a 100644 --- a/vendor/github.com/miekg/dns/client.go +++ b/vendor/github.com/miekg/dns/client.go @@ -7,14 +7,21 @@ import ( "context" "crypto/tls" "encoding/binary" + "fmt" "io" + "io/ioutil" "net" + "net/http" "strings" "time" ) -const dnsTimeout time.Duration = 2 * time.Second -const tcpIdleTimeout time.Duration = 8 * time.Second +const ( + dnsTimeout time.Duration = 2 * time.Second + tcpIdleTimeout time.Duration = 8 * time.Second + + dohMimeType = "application/dns-message" +) // A Conn represents a connection to a DNS server. type Conn struct { @@ -37,6 +44,7 @@ type Client struct { DialTimeout time.Duration // net.DialTimeout, defaults to 2 seconds, or net.Dialer.Timeout if expiring earlier - overridden by Timeout when that value is non-zero ReadTimeout time.Duration // net.Conn.SetReadTimeout value for connections, defaults to 2 seconds - overridden by Timeout when that value is non-zero WriteTimeout time.Duration // net.Conn.SetWriteTimeout value for connections, defaults to 2 seconds - overridden by Timeout when that value is non-zero + HTTPClient *http.Client // The http.Client to use for DNS-over-HTTPS TsigSecret map[string]string // secret(s) for Tsig map[], zonename must be in canonical form (lowercase, fqdn, see RFC 4034 Section 6.2) SingleInflight bool // if true suppress multiple outstanding queries for the same Qname, Qtype and Qclass group singleflight @@ -81,11 +89,10 @@ func (c *Client) Dial(address string) (conn *Conn, err error) { // create a new dialer with the appropriate timeout var d net.Dialer if c.Dialer == nil { - d = net.Dialer{} + d = net.Dialer{Timeout:c.getTimeoutForRequest(c.dialTimeout())} } else { d = net.Dialer(*c.Dialer) } - d.Timeout = c.getTimeoutForRequest(c.writeTimeout()) network := "udp" useTLS := false @@ -134,6 +141,11 @@ func (c *Client) Dial(address string) (conn *Conn, err error) { // attribute appropriately func (c *Client) Exchange(m *Msg, address string) (r *Msg, rtt time.Duration, err error) { if !c.SingleInflight { + if c.Net == "https" { + // TODO(tmthrgd): pipe timeouts into exchangeDOH + return c.exchangeDOH(context.TODO(), m, address) + } + return c.exchange(m, address) } @@ -146,6 +158,11 @@ func (c *Client) Exchange(m *Msg, address string) (r *Msg, rtt time.Duration, er cl = cl1 } r, rtt, err, shared := c.group.Do(m.Question[0].Name+t+cl, func() (*Msg, time.Duration, error) { + if c.Net == "https" { + // TODO(tmthrgd): pipe timeouts into exchangeDOH + return c.exchangeDOH(context.TODO(), m, address) + } + return c.exchange(m, address) }) if r != nil && shared { @@ -191,6 +208,67 @@ func (c *Client) exchange(m *Msg, a string) (r *Msg, rtt time.Duration, err erro return r, rtt, err } +func (c *Client) exchangeDOH(ctx context.Context, m *Msg, a string) (r *Msg, rtt time.Duration, err error) { + p, err := m.Pack() + if err != nil { + return nil, 0, err + } + + req, err := http.NewRequest(http.MethodPost, a, bytes.NewReader(p)) + if err != nil { + return nil, 0, err + } + + req.Header.Set("Content-Type", dohMimeType) + req.Header.Set("Accept", dohMimeType) + + hc := http.DefaultClient + if c.HTTPClient != nil { + hc = c.HTTPClient + } + + if ctx != context.Background() && ctx != context.TODO() { + req = req.WithContext(ctx) + } + + t := time.Now() + + resp, err := hc.Do(req) + if err != nil { + return nil, 0, err + } + defer closeHTTPBody(resp.Body) + + if resp.StatusCode != http.StatusOK { + return nil, 0, fmt.Errorf("dns: server returned HTTP %d error: %q", resp.StatusCode, resp.Status) + } + + if ct := resp.Header.Get("Content-Type"); ct != dohMimeType { + return nil, 0, fmt.Errorf("dns: unexpected Content-Type %q; expected %q", ct, dohMimeType) + } + + p, err = ioutil.ReadAll(resp.Body) + if err != nil { + return nil, 0, err + } + + rtt = time.Since(t) + + r = new(Msg) + if err := r.Unpack(p); err != nil { + return r, 0, err + } + + // TODO: TSIG? Is it even supported over DoH? + + return r, rtt, nil +} + +func closeHTTPBody(r io.ReadCloser) error { + io.Copy(ioutil.Discard, io.LimitReader(r, 8<<20)) + return r.Close() +} + // ReadMsg reads a message from the connection co. // If the received message contains a TSIG record the transaction signature // is verified. This method always tries to return the message, however if an @@ -490,6 +568,10 @@ func DialTimeoutWithTLS(network, address string, tlsConfig *tls.Config, timeout // context, if present. If there is both a context deadline and a configured // timeout on the client, the earliest of the two takes effect. func (c *Client) ExchangeContext(ctx context.Context, m *Msg, a string) (r *Msg, rtt time.Duration, err error) { + if !c.SingleInflight && c.Net == "https" { + return c.exchangeDOH(ctx, m, a) + } + var timeout time.Duration if deadline, ok := ctx.Deadline(); !ok { timeout = 0 @@ -498,6 +580,7 @@ func (c *Client) ExchangeContext(ctx context.Context, m *Msg, a string) (r *Msg, } // not passing the context to the underlying calls, as the API does not support // context. For timeouts you should set up Client.Dialer and call Client.Exchange. + // TODO(tmthrgd): this is a race condition c.Dialer = &net.Dialer{Timeout: timeout} return c.Exchange(m, a) } diff --git a/vendor/github.com/miekg/dns/compress_generate.go b/vendor/github.com/miekg/dns/compress_generate.go index 87fb36f6..9a136c41 100644 --- a/vendor/github.com/miekg/dns/compress_generate.go +++ b/vendor/github.com/miekg/dns/compress_generate.go @@ -101,7 +101,8 @@ Names: // compressionLenHelperType - all types that have domain-name/cdomain-name can be used for compressing names - fmt.Fprint(b, "func compressionLenHelperType(c map[string]int, r RR) {\n") + fmt.Fprint(b, "func compressionLenHelperType(c map[string]int, r RR, initLen int) int {\n") + fmt.Fprint(b, "currentLen := initLen\n") fmt.Fprint(b, "switch x := r.(type) {\n") for _, name := range domainTypes { o := scope.Lookup(name) @@ -109,7 +110,10 @@ Names: fmt.Fprintf(b, "case *%s:\n", name) for i := 1; i < st.NumFields(); i++ { - out := func(s string) { fmt.Fprintf(b, "compressionLenHelper(c, x.%s)\n", st.Field(i).Name()) } + out := func(s string) { + fmt.Fprintf(b, "currentLen -= len(x.%s) + 1\n", st.Field(i).Name()) + fmt.Fprintf(b, "currentLen += compressionLenHelper(c, x.%s, currentLen)\n", st.Field(i).Name()) + } if _, ok := st.Field(i).Type().(*types.Slice); ok { switch st.Tag(i) { @@ -118,8 +122,12 @@ Names: case `dns:"cdomain-name"`: // For HIP we need to slice over the elements in this slice. fmt.Fprintf(b, `for i := range x.%s { - compressionLenHelper(c, x.%s[i]) - } + currentLen -= len(x.%s[i]) + 1 +} +`, st.Field(i).Name(), st.Field(i).Name()) + fmt.Fprintf(b, `for i := range x.%s { + currentLen += compressionLenHelper(c, x.%s[i], currentLen) +} `, st.Field(i).Name(), st.Field(i).Name()) } continue @@ -133,11 +141,11 @@ Names: } } } - fmt.Fprintln(b, "}\n}\n\n") + fmt.Fprintln(b, "}\nreturn currentLen - initLen\n}\n\n") // compressionLenSearchType - search cdomain-tags types for compressible names. - fmt.Fprint(b, "func compressionLenSearchType(c map[string]int, r RR) (int, bool) {\n") + fmt.Fprint(b, "func compressionLenSearchType(c map[string]int, r RR) (int, bool, int) {\n") fmt.Fprint(b, "switch x := r.(type) {\n") for _, name := range cdomainTypes { o := scope.Lookup(name) @@ -147,7 +155,7 @@ Names: j := 1 for i := 1; i < st.NumFields(); i++ { out := func(s string, j int) { - fmt.Fprintf(b, "k%d, ok%d := compressionLenSearch(c, x.%s)\n", j, j, st.Field(i).Name()) + fmt.Fprintf(b, "k%d, ok%d, sz%d := compressionLenSearch(c, x.%s)\n", j, j, j, st.Field(i).Name()) } // There are no slice types with names that can be compressed. @@ -160,13 +168,15 @@ Names: } k := "k1" ok := "ok1" + sz := "sz1" for i := 2; i < j; i++ { k += fmt.Sprintf(" + k%d", i) ok += fmt.Sprintf(" && ok%d", i) + sz += fmt.Sprintf(" + sz%d", i) } - fmt.Fprintf(b, "return %s, %s\n", k, ok) + fmt.Fprintf(b, "return %s, %s, %s\n", k, ok, sz) } - fmt.Fprintln(b, "}\nreturn 0, false\n}\n\n") + fmt.Fprintln(b, "}\nreturn 0, false, 0\n}\n\n") // gofmt res, err := format.Source(b.Bytes()) diff --git a/vendor/github.com/miekg/dns/dns.go b/vendor/github.com/miekg/dns/dns.go index 5133eac7..e7557f51 100644 --- a/vendor/github.com/miekg/dns/dns.go +++ b/vendor/github.com/miekg/dns/dns.go @@ -55,16 +55,6 @@ func (h *RR_Header) Header() *RR_Header { return h } // Just to implement the RR interface. func (h *RR_Header) copy() RR { return nil } -func (h *RR_Header) copyHeader() *RR_Header { - r := new(RR_Header) - r.Name = h.Name - r.Rrtype = h.Rrtype - r.Class = h.Class - r.Ttl = h.Ttl - r.Rdlength = h.Rdlength - return r -} - func (h *RR_Header) String() string { var s string diff --git a/vendor/github.com/miekg/dns/dnssec.go b/vendor/github.com/miekg/dns/dnssec.go index ac9fdd45..7e6bac42 100644 --- a/vendor/github.com/miekg/dns/dnssec.go +++ b/vendor/github.com/miekg/dns/dnssec.go @@ -73,6 +73,7 @@ var StringToAlgorithm = reverseInt8(AlgorithmToString) // AlgorithmToHash is a map of algorithm crypto hash IDs to crypto.Hash's. var AlgorithmToHash = map[uint8]crypto.Hash{ RSAMD5: crypto.MD5, // Deprecated in RFC 6725 + DSA: crypto.SHA1, RSASHA1: crypto.SHA1, RSASHA1NSEC3SHA1: crypto.SHA1, RSASHA256: crypto.SHA256, @@ -239,7 +240,7 @@ func (k *DNSKEY) ToDS(h uint8) *DS { // ToCDNSKEY converts a DNSKEY record to a CDNSKEY record. func (k *DNSKEY) ToCDNSKEY() *CDNSKEY { c := &CDNSKEY{DNSKEY: *k} - c.Hdr = *k.Hdr.copyHeader() + c.Hdr = k.Hdr c.Hdr.Rrtype = TypeCDNSKEY return c } @@ -247,7 +248,7 @@ func (k *DNSKEY) ToCDNSKEY() *CDNSKEY { // ToCDS converts a DS record to a CDS record. func (d *DS) ToCDS() *CDS { c := &CDS{DS: *d} - c.Hdr = *d.Hdr.copyHeader() + c.Hdr = d.Hdr c.Hdr.Rrtype = TypeCDS return c } @@ -541,20 +542,20 @@ func (k *DNSKEY) publicKeyRSA() *rsa.PublicKey { explen = uint16(keybuf[1])<<8 | uint16(keybuf[2]) keyoff = 3 } + if explen > 4 { + // Larger exponent than supported by the crypto package. + return nil + } pubkey := new(rsa.PublicKey) pubkey.N = big.NewInt(0) - shift := uint64((explen - 1) * 8) expo := uint64(0) - for i := int(explen - 1); i > 0; i-- { - expo += uint64(keybuf[keyoff+i]) << shift - shift -= 8 + for i := 0; i < int(explen); i++ { + expo <<= 8 + expo |= uint64(keybuf[keyoff+i]) } - // Remainder - expo += uint64(keybuf[keyoff]) - if expo > (2<<31)+1 { - // Larger expo than supported. - // println("dns: F5 primes (or larger) are not supported") + if expo > 1<<31-1 { + // Larger exponent than supported by the crypto package. return nil } pubkey.E = int(expo) diff --git a/vendor/github.com/miekg/dns/edns.go b/vendor/github.com/miekg/dns/edns.go index 6f9d2ea3..55059eb1 100644 --- a/vendor/github.com/miekg/dns/edns.go +++ b/vendor/github.com/miekg/dns/edns.go @@ -102,12 +102,15 @@ func (rr *OPT) SetVersion(v uint8) { // ExtendedRcode returns the EDNS extended RCODE field (the upper 8 bits of the TTL). func (rr *OPT) ExtendedRcode() int { - return int((rr.Hdr.Ttl & 0xFF000000) >> 24) + return int((rr.Hdr.Ttl&0xFF000000)>>24) + 15 } // SetExtendedRcode sets the EDNS extended RCODE field. func (rr *OPT) SetExtendedRcode(v uint8) { - rr.Hdr.Ttl = rr.Hdr.Ttl&0x00FFFFFF | (uint32(v) << 24) + if v < RcodeBadVers { // Smaller than 16.. Use the 4 bits you have! + return + } + rr.Hdr.Ttl = rr.Hdr.Ttl&0x00FFFFFF | (uint32(v-15) << 24) } // UDPSize returns the UDP buffer size. diff --git a/vendor/github.com/miekg/dns/msg.go b/vendor/github.com/miekg/dns/msg.go index 276e6b02..dcd3b6a5 100644 --- a/vendor/github.com/miekg/dns/msg.go +++ b/vendor/github.com/miekg/dns/msg.go @@ -691,18 +691,20 @@ func (dns *Msg) Pack() (msg []byte, err error) { return dns.PackBuffer(nil) } -// PackBuffer packs a Msg, using the given buffer buf. If buf is too small -// a new buffer is allocated. +// PackBuffer packs a Msg, using the given buffer buf. If buf is too small a new buffer is allocated. func (dns *Msg) PackBuffer(buf []byte) (msg []byte, err error) { - // We use a similar function in tsig.go's stripTsig. - var ( - dh Header - compression map[string]int - ) - + var compression map[string]int if dns.Compress { - compression = make(map[string]int) // Compression pointer mappings + compression = make(map[string]int) // Compression pointer mappings. } + return dns.packBufferWithCompressionMap(buf, compression) +} + +// packBufferWithCompressionMap packs a Msg, using the given buffer buf. +func (dns *Msg) packBufferWithCompressionMap(buf []byte, compression map[string]int) (msg []byte, err error) { + // We use a similar function in tsig.go's stripTsig. + + var dh Header if dns.Rcode < 0 || dns.Rcode > 0xFFF { return nil, ErrRcode @@ -714,12 +716,11 @@ func (dns *Msg) PackBuffer(buf []byte) (msg []byte, err error) { return nil, ErrExtendedRcode } opt.SetExtendedRcode(uint8(dns.Rcode >> 4)) - dns.Rcode &= 0xF } // Convert convenient Msg into wire-like Header. dh.Id = dns.Id - dh.Bits = uint16(dns.Opcode)<<11 | uint16(dns.Rcode) + dh.Bits = uint16(dns.Opcode)<<11 | uint16(dns.Rcode&0xF) if dns.Response { dh.Bits |= _QR } @@ -922,23 +923,27 @@ func (dns *Msg) String() string { // than packing it, measuring the size and discarding the buffer. func (dns *Msg) Len() int { return compressedLen(dns, dns.Compress) } +func compressedLenWithCompressionMap(dns *Msg, compression map[string]int) int { + l := 12 // Message header is always 12 bytes + for _, r := range dns.Question { + compressionLenHelper(compression, r.Name, l) + l += r.len() + } + l += compressionLenSlice(l, compression, dns.Answer) + l += compressionLenSlice(l, compression, dns.Ns) + l += compressionLenSlice(l, compression, dns.Extra) + return l +} + // compressedLen returns the message length when in compressed wire format // when compress is true, otherwise the uncompressed length is returned. func compressedLen(dns *Msg, compress bool) int { // We always return one more than needed. - l := 12 // Message header is always 12 bytes if compress { compression := map[string]int{} - for _, r := range dns.Question { - l += r.len() - compressionLenHelper(compression, r.Name) - } - l += compressionLenSlice(l, compression, dns.Answer) - l += compressionLenSlice(l, compression, dns.Ns) - l += compressionLenSlice(l, compression, dns.Extra) - - return l + return compressedLenWithCompressionMap(dns, compression) } + l := 12 // Message header is always 12 bytes for _, r := range dns.Question { l += r.len() @@ -962,70 +967,94 @@ func compressedLen(dns *Msg, compress bool) int { return l } -func compressionLenSlice(len int, c map[string]int, rs []RR) int { - var l int +func compressionLenSlice(lenp int, c map[string]int, rs []RR) int { + initLen := lenp for _, r := range rs { if r == nil { continue } - // track this length, and the global length in len, while taking compression into account for both. + // TmpLen is to track len of record at 14bits boudaries + tmpLen := lenp + x := r.len() - l += x - len += x - - k, ok := compressionLenSearch(c, r.Header().Name) + // track this length, and the global length in len, while taking compression into account for both. + k, ok, _ := compressionLenSearch(c, r.Header().Name) if ok { - l += 1 - k - len += 1 - k + // Size of x is reduced by k, but we add 1 since k includes the '.' and label descriptor take 2 bytes + // so, basically x:= x - k - 1 + 2 + x += 1 - k } - if len < maxCompressionOffset { - compressionLenHelper(c, r.Header().Name) - } - - k, ok = compressionLenSearchType(c, r) + tmpLen += compressionLenHelper(c, r.Header().Name, tmpLen) + k, ok, _ = compressionLenSearchType(c, r) if ok { - l += 1 - k - len += 1 - k + x += 1 - k } + lenp += x + tmpLen = lenp + tmpLen += compressionLenHelperType(c, r, tmpLen) - if len < maxCompressionOffset { - compressionLenHelperType(c, r) - } } - return l + return lenp - initLen } -// Put the parts of the name in the compression map. -func compressionLenHelper(c map[string]int, s string) { +// Put the parts of the name in the compression map, return the size in bytes added in payload +func compressionLenHelper(c map[string]int, s string, currentLen int) int { + if currentLen > maxCompressionOffset { + // We won't be able to add any label that could be re-used later anyway + return 0 + } + if _, ok := c[s]; ok { + return 0 + } + initLen := currentLen pref := "" + prev := s lbs := Split(s) - for j := len(lbs) - 1; j >= 0; j-- { + for j := 0; j < len(lbs); j++ { pref = s[lbs[j]:] + currentLen += len(prev) - len(pref) + prev = pref if _, ok := c[pref]; !ok { - c[pref] = len(pref) + // If first byte label is within the first 14bits, it might be re-used later + if currentLen < maxCompressionOffset { + c[pref] = currentLen + } + } else { + added := currentLen - initLen + if j > 0 { + // We added a new PTR + added += 2 + } + return added } } + return currentLen - initLen } // Look for each part in the compression map and returns its length, // keep on searching so we get the longest match. -func compressionLenSearch(c map[string]int, s string) (int, bool) { +// Will return the size of compression found, whether a match has been +// found and the size of record if added in payload +func compressionLenSearch(c map[string]int, s string) (int, bool, int) { off := 0 end := false if s == "" { // don't bork on bogus data - return 0, false + return 0, false, 0 } + fullSize := 0 for { if _, ok := c[s[off:]]; ok { - return len(s[off:]), true + return len(s[off:]), true, fullSize + off } if end { break } + // Each label descriptor takes 2 bytes, add it + fullSize += 2 off, end = NextLabel(s, off) } - return 0, false + return 0, false, fullSize + len(s) } // Copy returns a new RR which is a deep-copy of r. diff --git a/vendor/github.com/miekg/dns/msg_helpers.go b/vendor/github.com/miekg/dns/msg_helpers.go index 946d5acb..4a6e878d 100644 --- a/vendor/github.com/miekg/dns/msg_helpers.go +++ b/vendor/github.com/miekg/dns/msg_helpers.go @@ -141,20 +141,24 @@ func truncateMsgFromRdlength(msg []byte, off int, rdlength uint16) (truncmsg []b return msg[:lenrd], nil } +var base32HexNoPadEncoding = base32.HexEncoding.WithPadding(base32.NoPadding) + func fromBase32(s []byte) (buf []byte, err error) { for i, b := range s { if b >= 'a' && b <= 'z' { s[i] = b - 32 } } - buflen := base32.HexEncoding.DecodedLen(len(s)) + buflen := base32HexNoPadEncoding.DecodedLen(len(s)) buf = make([]byte, buflen) - n, err := base32.HexEncoding.Decode(buf, s) + n, err := base32HexNoPadEncoding.Decode(buf, s) buf = buf[:n] return } -func toBase32(b []byte) string { return base32.HexEncoding.EncodeToString(b) } +func toBase32(b []byte) string { + return base32HexNoPadEncoding.EncodeToString(b) +} func fromBase64(s []byte) (buf []byte, err error) { buflen := base64.StdEncoding.DecodedLen(len(s)) diff --git a/vendor/github.com/miekg/dns/privaterr.go b/vendor/github.com/miekg/dns/privaterr.go index 6b08e6e9..41989e7a 100644 --- a/vendor/github.com/miekg/dns/privaterr.go +++ b/vendor/github.com/miekg/dns/privaterr.go @@ -56,8 +56,7 @@ func (r *PrivateRR) len() int { return r.Hdr.len() + r.Data.Len() } func (r *PrivateRR) copy() RR { // make new RR like this: rr := mkPrivateRR(r.Hdr.Rrtype) - newh := r.Hdr.copyHeader() - rr.Hdr = *newh + rr.Hdr = r.Hdr err := r.Data.Copy(rr.Data) if err != nil { diff --git a/vendor/github.com/miekg/dns/scan_rr.go b/vendor/github.com/miekg/dns/scan_rr.go index f4ccc842..fb6f95d1 100644 --- a/vendor/github.com/miekg/dns/scan_rr.go +++ b/vendor/github.com/miekg/dns/scan_rr.go @@ -1255,8 +1255,10 @@ func setNSEC3(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { if len(l.token) == 0 || l.err { return nil, &ParseError{f, "bad NSEC3 Salt", l}, "" } - rr.SaltLength = uint8(len(l.token)) / 2 - rr.Salt = l.token + if l.token != "-" { + rr.SaltLength = uint8(len(l.token)) / 2 + rr.Salt = l.token + } <-c l = <-c @@ -1321,8 +1323,10 @@ func setNSEC3PARAM(h RR_Header, c chan lex, o, f string) (RR, *ParseError, strin rr.Iterations = uint16(i) <-c l = <-c - rr.SaltLength = uint8(len(l.token)) - rr.Salt = l.token + if l.token != "-" { + rr.SaltLength = uint8(len(l.token)) + rr.Salt = l.token + } return rr, nil, "" } diff --git a/vendor/github.com/miekg/dns/server.go b/vendor/github.com/miekg/dns/server.go index 20ef6b10..2d98f148 100644 --- a/vendor/github.com/miekg/dns/server.go +++ b/vendor/github.com/miekg/dns/server.go @@ -9,12 +9,19 @@ import ( "io" "net" "sync" + "sync/atomic" "time" ) -// Maximum number of TCP queries before we close the socket. +// Default maximum number of TCP queries before we close the socket. const maxTCPQueries = 128 +// Interval for stop worker if no load +const idleWorkerTimeout = 10 * time.Second + +// Maximum number of workers +const maxWorkersCount = 10000 + // Handler is implemented by any value that implements ServeDNS. type Handler interface { ServeDNS(w ResponseWriter, r *Msg) @@ -43,6 +50,7 @@ type ResponseWriter interface { } type response struct { + msg []byte hijacked bool // connection has been hijacked by handler tsigStatus error tsigTimersOnly bool @@ -295,12 +303,63 @@ type Server struct { DecorateReader DecorateReader // DecorateWriter is optional, allows customization of the process that writes raw DNS messages. DecorateWriter DecorateWriter + // Maximum number of TCP queries before we close the socket. Default is maxTCPQueries (unlimited if -1). + MaxTCPQueries int + // UDP packet or TCP connection queue + queue chan *response + // Workers count + workersCount int32 // Shutdown handling lock sync.RWMutex started bool } +func (srv *Server) worker(w *response) { + srv.serve(w) + + for { + count := atomic.LoadInt32(&srv.workersCount) + if count > maxWorkersCount { + return + } + if atomic.CompareAndSwapInt32(&srv.workersCount, count, count+1) { + break + } + } + + defer atomic.AddInt32(&srv.workersCount, -1) + + inUse := false + timeout := time.NewTimer(idleWorkerTimeout) + defer timeout.Stop() +LOOP: + for { + select { + case w, ok := <-srv.queue: + if !ok { + break LOOP + } + inUse = true + srv.serve(w) + case <-timeout.C: + if !inUse { + break LOOP + } + inUse = false + timeout.Reset(idleWorkerTimeout) + } + } +} + +func (srv *Server) spawnWorker(w *response) { + select { + case srv.queue <- w: + default: + go srv.worker(w) + } +} + // ListenAndServe starts a nameserver on the configured address in *Server. func (srv *Server) ListenAndServe() error { srv.lock.Lock() @@ -308,6 +367,7 @@ func (srv *Server) ListenAndServe() error { if srv.started { return &Error{err: "server already started"} } + addr := srv.Addr if addr == "" { addr = ":domain" @@ -315,6 +375,8 @@ func (srv *Server) ListenAndServe() error { if srv.UDPSize == 0 { srv.UDPSize = MinMsgSize } + srv.queue = make(chan *response) + defer close(srv.queue) switch srv.Net { case "tcp", "tcp4", "tcp6": a, err := net.ResolveTCPAddr(srv.Net, addr) @@ -379,8 +441,11 @@ func (srv *Server) ActivateAndServe() error { if srv.started { return &Error{err: "server already started"} } + pConn := srv.PacketConn l := srv.Listener + srv.queue = make(chan *response) + defer close(srv.queue) if pConn != nil { if srv.UDPSize == 0 { srv.UDPSize = MinMsgSize @@ -438,7 +503,6 @@ func (srv *Server) getReadTimeout() time.Duration { } // serveTCP starts a TCP listener for the server. -// Each request is handled in a separate goroutine. func (srv *Server) serveTCP(l net.Listener) error { defer l.Close() @@ -446,11 +510,6 @@ func (srv *Server) serveTCP(l net.Listener) error { srv.NotifyStartedFunc() } - handler := srv.Handler - if handler == nil { - handler = DefaultServeMux - } - // deadline is not used here for { rw, err := l.Accept() srv.lock.RLock() @@ -465,12 +524,11 @@ func (srv *Server) serveTCP(l net.Listener) error { } return err } - go srv.serveTCPConn(handler, rw) + srv.spawnWorker(&response{tsigSecret: srv.TsigSecret, tcp: rw}) } } // serveUDP starts a UDP listener for the server. -// Each request is handled in a separate goroutine. func (srv *Server) serveUDP(l *net.UDPConn) error { defer l.Close() @@ -483,10 +541,6 @@ func (srv *Server) serveUDP(l *net.UDPConn) error { reader = srv.DecorateReader(reader) } - handler := srv.Handler - if handler == nil { - handler = DefaultServeMux - } rtimeout := srv.getReadTimeout() // deadline is not used here for { @@ -506,24 +560,28 @@ func (srv *Server) serveUDP(l *net.UDPConn) error { if len(m) < headerSize { continue } - go srv.serveUDPPacket(handler, m, l, s) + srv.spawnWorker(&response{msg: m, tsigSecret: srv.TsigSecret, udp: l, udpSession: s}) } } -// Serve a new TCP connection. -func (srv *Server) serveTCPConn(h Handler, t net.Conn) { - reader := Reader(&defaultReader{srv}) - if srv.DecorateReader != nil { - reader = srv.DecorateReader(reader) - } - - w := &response{tsigSecret: srv.TsigSecret, tcp: t} +func (srv *Server) serve(w *response) { if srv.DecorateWriter != nil { w.writer = srv.DecorateWriter(w) } else { w.writer = w } + if w.udp != nil { + // serve UDP + srv.serveDNS(w) + return + } + + reader := Reader(&defaultReader{srv}) + if srv.DecorateReader != nil { + reader = srv.DecorateReader(reader) + } + defer func() { if !w.hijacked { w.Close() @@ -537,14 +595,19 @@ func (srv *Server) serveTCPConn(h Handler, t net.Conn) { timeout := srv.getReadTimeout() - // TODO(miek): make maxTCPQueries configurable? - for q := 0; q < maxTCPQueries; q++ { - m, err := reader.ReadTCP(t, timeout) + limit := srv.MaxTCPQueries + if limit == 0 { + limit = maxTCPQueries + } + + for q := 0; q < limit || limit == -1; q++ { + var err error + w.msg, err = reader.ReadTCP(w.tcp, timeout) if err != nil { // TODO(tmthrgd): handle error break } - srv.serveDNS(h, m, w) + srv.serveDNS(w) if w.tcp == nil { break // Close() was called } @@ -557,20 +620,9 @@ func (srv *Server) serveTCPConn(h Handler, t net.Conn) { } } -// Serve a new UDP request. -func (srv *Server) serveUDPPacket(h Handler, m []byte, u *net.UDPConn, s *SessionUDP) { - w := &response{tsigSecret: srv.TsigSecret, udp: u, udpSession: s} - if srv.DecorateWriter != nil { - w.writer = srv.DecorateWriter(w) - } else { - w.writer = w - } - srv.serveDNS(h, m, w) -} - -func (srv *Server) serveDNS(h Handler, m []byte, w *response) { +func (srv *Server) serveDNS(w *response) { req := new(Msg) - err := req.Unpack(m) + err := req.Unpack(w.msg) if err != nil { // Send a FormatError back x := new(Msg) x.SetRcodeFormatError(req) @@ -585,7 +637,7 @@ func (srv *Server) serveDNS(h Handler, m []byte, w *response) { if w.tsigSecret != nil { if t := req.IsTsig(); t != nil { if secret, ok := w.tsigSecret[t.Hdr.Name]; ok { - w.tsigStatus = TsigVerify(m, secret, "", false) + w.tsigStatus = TsigVerify(w.msg, secret, "", false) } else { w.tsigStatus = ErrSecret } @@ -593,7 +645,13 @@ func (srv *Server) serveDNS(h Handler, m []byte, w *response) { w.tsigRequestMAC = req.Extra[len(req.Extra)-1].(*TSIG).MAC } } - h.ServeDNS(w, req) // Writes back to the client + + handler := srv.Handler + if handler == nil { + handler = DefaultServeMux + } + + handler.ServeDNS(w, req) // Writes back to the client } func (srv *Server) readTCP(conn net.Conn, timeout time.Duration) ([]byte, error) { diff --git a/vendor/github.com/miekg/dns/types_generate.go b/vendor/github.com/miekg/dns/types_generate.go index 8703cce6..b8db4f36 100644 --- a/vendor/github.com/miekg/dns/types_generate.go +++ b/vendor/github.com/miekg/dns/types_generate.go @@ -226,7 +226,7 @@ func main() { continue } fmt.Fprintf(b, "func (rr *%s) copy() RR {\n", name) - fields := []string{"*rr.Hdr.copyHeader()"} + fields := []string{"rr.Hdr"} for i := 1; i < st.NumFields(); i++ { f := st.Field(i).Name() if sl, ok := st.Field(i).Type().(*types.Slice); ok { diff --git a/vendor/github.com/miekg/dns/version.go b/vendor/github.com/miekg/dns/version.go index e746fee5..dcc84e4a 100644 --- a/vendor/github.com/miekg/dns/version.go +++ b/vendor/github.com/miekg/dns/version.go @@ -3,7 +3,7 @@ package dns import "fmt" // Version is current version of this library. -var Version = V{1, 0, 5} +var Version = V{1, 0, 8} // V holds the version of this library. type V struct { diff --git a/vendor/github.com/miekg/dns/zcompress.go b/vendor/github.com/miekg/dns/zcompress.go index c2503204..a2c09dd4 100644 --- a/vendor/github.com/miekg/dns/zcompress.go +++ b/vendor/github.com/miekg/dns/zcompress.go @@ -2,117 +2,154 @@ package dns -func compressionLenHelperType(c map[string]int, r RR) { +func compressionLenHelperType(c map[string]int, r RR, initLen int) int { + currentLen := initLen switch x := r.(type) { case *AFSDB: - compressionLenHelper(c, x.Hostname) + currentLen -= len(x.Hostname) + 1 + currentLen += compressionLenHelper(c, x.Hostname, currentLen) case *CNAME: - compressionLenHelper(c, x.Target) + currentLen -= len(x.Target) + 1 + currentLen += compressionLenHelper(c, x.Target, currentLen) case *DNAME: - compressionLenHelper(c, x.Target) + currentLen -= len(x.Target) + 1 + currentLen += compressionLenHelper(c, x.Target, currentLen) case *HIP: for i := range x.RendezvousServers { - compressionLenHelper(c, x.RendezvousServers[i]) + currentLen -= len(x.RendezvousServers[i]) + 1 + } + for i := range x.RendezvousServers { + currentLen += compressionLenHelper(c, x.RendezvousServers[i], currentLen) } case *KX: - compressionLenHelper(c, x.Exchanger) + currentLen -= len(x.Exchanger) + 1 + currentLen += compressionLenHelper(c, x.Exchanger, currentLen) case *LP: - compressionLenHelper(c, x.Fqdn) + currentLen -= len(x.Fqdn) + 1 + currentLen += compressionLenHelper(c, x.Fqdn, currentLen) case *MB: - compressionLenHelper(c, x.Mb) + currentLen -= len(x.Mb) + 1 + currentLen += compressionLenHelper(c, x.Mb, currentLen) case *MD: - compressionLenHelper(c, x.Md) + currentLen -= len(x.Md) + 1 + currentLen += compressionLenHelper(c, x.Md, currentLen) case *MF: - compressionLenHelper(c, x.Mf) + currentLen -= len(x.Mf) + 1 + currentLen += compressionLenHelper(c, x.Mf, currentLen) case *MG: - compressionLenHelper(c, x.Mg) + currentLen -= len(x.Mg) + 1 + currentLen += compressionLenHelper(c, x.Mg, currentLen) case *MINFO: - compressionLenHelper(c, x.Rmail) - compressionLenHelper(c, x.Email) + currentLen -= len(x.Rmail) + 1 + currentLen += compressionLenHelper(c, x.Rmail, currentLen) + currentLen -= len(x.Email) + 1 + currentLen += compressionLenHelper(c, x.Email, currentLen) case *MR: - compressionLenHelper(c, x.Mr) + currentLen -= len(x.Mr) + 1 + currentLen += compressionLenHelper(c, x.Mr, currentLen) case *MX: - compressionLenHelper(c, x.Mx) + currentLen -= len(x.Mx) + 1 + currentLen += compressionLenHelper(c, x.Mx, currentLen) case *NAPTR: - compressionLenHelper(c, x.Replacement) + currentLen -= len(x.Replacement) + 1 + currentLen += compressionLenHelper(c, x.Replacement, currentLen) case *NS: - compressionLenHelper(c, x.Ns) + currentLen -= len(x.Ns) + 1 + currentLen += compressionLenHelper(c, x.Ns, currentLen) case *NSAPPTR: - compressionLenHelper(c, x.Ptr) + currentLen -= len(x.Ptr) + 1 + currentLen += compressionLenHelper(c, x.Ptr, currentLen) case *NSEC: - compressionLenHelper(c, x.NextDomain) + currentLen -= len(x.NextDomain) + 1 + currentLen += compressionLenHelper(c, x.NextDomain, currentLen) case *PTR: - compressionLenHelper(c, x.Ptr) + currentLen -= len(x.Ptr) + 1 + currentLen += compressionLenHelper(c, x.Ptr, currentLen) case *PX: - compressionLenHelper(c, x.Map822) - compressionLenHelper(c, x.Mapx400) + currentLen -= len(x.Map822) + 1 + currentLen += compressionLenHelper(c, x.Map822, currentLen) + currentLen -= len(x.Mapx400) + 1 + currentLen += compressionLenHelper(c, x.Mapx400, currentLen) case *RP: - compressionLenHelper(c, x.Mbox) - compressionLenHelper(c, x.Txt) + currentLen -= len(x.Mbox) + 1 + currentLen += compressionLenHelper(c, x.Mbox, currentLen) + currentLen -= len(x.Txt) + 1 + currentLen += compressionLenHelper(c, x.Txt, currentLen) case *RRSIG: - compressionLenHelper(c, x.SignerName) + currentLen -= len(x.SignerName) + 1 + currentLen += compressionLenHelper(c, x.SignerName, currentLen) case *RT: - compressionLenHelper(c, x.Host) + currentLen -= len(x.Host) + 1 + currentLen += compressionLenHelper(c, x.Host, currentLen) case *SIG: - compressionLenHelper(c, x.SignerName) + currentLen -= len(x.SignerName) + 1 + currentLen += compressionLenHelper(c, x.SignerName, currentLen) case *SOA: - compressionLenHelper(c, x.Ns) - compressionLenHelper(c, x.Mbox) + currentLen -= len(x.Ns) + 1 + currentLen += compressionLenHelper(c, x.Ns, currentLen) + currentLen -= len(x.Mbox) + 1 + currentLen += compressionLenHelper(c, x.Mbox, currentLen) case *SRV: - compressionLenHelper(c, x.Target) + currentLen -= len(x.Target) + 1 + currentLen += compressionLenHelper(c, x.Target, currentLen) case *TALINK: - compressionLenHelper(c, x.PreviousName) - compressionLenHelper(c, x.NextName) + currentLen -= len(x.PreviousName) + 1 + currentLen += compressionLenHelper(c, x.PreviousName, currentLen) + currentLen -= len(x.NextName) + 1 + currentLen += compressionLenHelper(c, x.NextName, currentLen) case *TKEY: - compressionLenHelper(c, x.Algorithm) + currentLen -= len(x.Algorithm) + 1 + currentLen += compressionLenHelper(c, x.Algorithm, currentLen) case *TSIG: - compressionLenHelper(c, x.Algorithm) + currentLen -= len(x.Algorithm) + 1 + currentLen += compressionLenHelper(c, x.Algorithm, currentLen) } + return currentLen - initLen } -func compressionLenSearchType(c map[string]int, r RR) (int, bool) { +func compressionLenSearchType(c map[string]int, r RR) (int, bool, int) { switch x := r.(type) { case *AFSDB: - k1, ok1 := compressionLenSearch(c, x.Hostname) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Hostname) + return k1, ok1, sz1 case *CNAME: - k1, ok1 := compressionLenSearch(c, x.Target) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Target) + return k1, ok1, sz1 case *MB: - k1, ok1 := compressionLenSearch(c, x.Mb) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Mb) + return k1, ok1, sz1 case *MD: - k1, ok1 := compressionLenSearch(c, x.Md) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Md) + return k1, ok1, sz1 case *MF: - k1, ok1 := compressionLenSearch(c, x.Mf) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Mf) + return k1, ok1, sz1 case *MG: - k1, ok1 := compressionLenSearch(c, x.Mg) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Mg) + return k1, ok1, sz1 case *MINFO: - k1, ok1 := compressionLenSearch(c, x.Rmail) - k2, ok2 := compressionLenSearch(c, x.Email) - return k1 + k2, ok1 && ok2 + k1, ok1, sz1 := compressionLenSearch(c, x.Rmail) + k2, ok2, sz2 := compressionLenSearch(c, x.Email) + return k1 + k2, ok1 && ok2, sz1 + sz2 case *MR: - k1, ok1 := compressionLenSearch(c, x.Mr) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Mr) + return k1, ok1, sz1 case *MX: - k1, ok1 := compressionLenSearch(c, x.Mx) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Mx) + return k1, ok1, sz1 case *NS: - k1, ok1 := compressionLenSearch(c, x.Ns) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Ns) + return k1, ok1, sz1 case *PTR: - k1, ok1 := compressionLenSearch(c, x.Ptr) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Ptr) + return k1, ok1, sz1 case *RT: - k1, ok1 := compressionLenSearch(c, x.Host) - return k1, ok1 + k1, ok1, sz1 := compressionLenSearch(c, x.Host) + return k1, ok1, sz1 case *SOA: - k1, ok1 := compressionLenSearch(c, x.Ns) - k2, ok2 := compressionLenSearch(c, x.Mbox) - return k1 + k2, ok1 && ok2 + k1, ok1, sz1 := compressionLenSearch(c, x.Ns) + k2, ok2, sz2 := compressionLenSearch(c, x.Mbox) + return k1 + k2, ok1 && ok2, sz1 + sz2 } - return 0, false + return 0, false, 0 } diff --git a/vendor/github.com/miekg/dns/ztypes.go b/vendor/github.com/miekg/dns/ztypes.go index abd75dd9..965753b1 100644 --- a/vendor/github.com/miekg/dns/ztypes.go +++ b/vendor/github.com/miekg/dns/ztypes.go @@ -649,215 +649,215 @@ func (rr *X25) len() int { // copy() functions func (rr *A) copy() RR { - return &A{*rr.Hdr.copyHeader(), copyIP(rr.A)} + return &A{rr.Hdr, copyIP(rr.A)} } func (rr *AAAA) copy() RR { - return &AAAA{*rr.Hdr.copyHeader(), copyIP(rr.AAAA)} + return &AAAA{rr.Hdr, copyIP(rr.AAAA)} } func (rr *AFSDB) copy() RR { - return &AFSDB{*rr.Hdr.copyHeader(), rr.Subtype, rr.Hostname} + return &AFSDB{rr.Hdr, rr.Subtype, rr.Hostname} } func (rr *ANY) copy() RR { - return &ANY{*rr.Hdr.copyHeader()} + return &ANY{rr.Hdr} } func (rr *AVC) copy() RR { Txt := make([]string, len(rr.Txt)) copy(Txt, rr.Txt) - return &AVC{*rr.Hdr.copyHeader(), Txt} + return &AVC{rr.Hdr, Txt} } func (rr *CAA) copy() RR { - return &CAA{*rr.Hdr.copyHeader(), rr.Flag, rr.Tag, rr.Value} + return &CAA{rr.Hdr, rr.Flag, rr.Tag, rr.Value} } func (rr *CERT) copy() RR { - return &CERT{*rr.Hdr.copyHeader(), rr.Type, rr.KeyTag, rr.Algorithm, rr.Certificate} + return &CERT{rr.Hdr, rr.Type, rr.KeyTag, rr.Algorithm, rr.Certificate} } func (rr *CNAME) copy() RR { - return &CNAME{*rr.Hdr.copyHeader(), rr.Target} + return &CNAME{rr.Hdr, rr.Target} } func (rr *CSYNC) copy() RR { TypeBitMap := make([]uint16, len(rr.TypeBitMap)) copy(TypeBitMap, rr.TypeBitMap) - return &CSYNC{*rr.Hdr.copyHeader(), rr.Serial, rr.Flags, TypeBitMap} + return &CSYNC{rr.Hdr, rr.Serial, rr.Flags, TypeBitMap} } func (rr *DHCID) copy() RR { - return &DHCID{*rr.Hdr.copyHeader(), rr.Digest} + return &DHCID{rr.Hdr, rr.Digest} } func (rr *DNAME) copy() RR { - return &DNAME{*rr.Hdr.copyHeader(), rr.Target} + return &DNAME{rr.Hdr, rr.Target} } func (rr *DNSKEY) copy() RR { - return &DNSKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} + return &DNSKEY{rr.Hdr, rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} } func (rr *DS) copy() RR { - return &DS{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} + return &DS{rr.Hdr, rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} } func (rr *EID) copy() RR { - return &EID{*rr.Hdr.copyHeader(), rr.Endpoint} + return &EID{rr.Hdr, rr.Endpoint} } func (rr *EUI48) copy() RR { - return &EUI48{*rr.Hdr.copyHeader(), rr.Address} + return &EUI48{rr.Hdr, rr.Address} } func (rr *EUI64) copy() RR { - return &EUI64{*rr.Hdr.copyHeader(), rr.Address} + return &EUI64{rr.Hdr, rr.Address} } func (rr *GID) copy() RR { - return &GID{*rr.Hdr.copyHeader(), rr.Gid} + return &GID{rr.Hdr, rr.Gid} } func (rr *GPOS) copy() RR { - return &GPOS{*rr.Hdr.copyHeader(), rr.Longitude, rr.Latitude, rr.Altitude} + return &GPOS{rr.Hdr, rr.Longitude, rr.Latitude, rr.Altitude} } func (rr *HINFO) copy() RR { - return &HINFO{*rr.Hdr.copyHeader(), rr.Cpu, rr.Os} + return &HINFO{rr.Hdr, rr.Cpu, rr.Os} } func (rr *HIP) copy() RR { RendezvousServers := make([]string, len(rr.RendezvousServers)) copy(RendezvousServers, rr.RendezvousServers) - return &HIP{*rr.Hdr.copyHeader(), rr.HitLength, rr.PublicKeyAlgorithm, rr.PublicKeyLength, rr.Hit, rr.PublicKey, RendezvousServers} + return &HIP{rr.Hdr, rr.HitLength, rr.PublicKeyAlgorithm, rr.PublicKeyLength, rr.Hit, rr.PublicKey, RendezvousServers} } func (rr *KX) copy() RR { - return &KX{*rr.Hdr.copyHeader(), rr.Preference, rr.Exchanger} + return &KX{rr.Hdr, rr.Preference, rr.Exchanger} } func (rr *L32) copy() RR { - return &L32{*rr.Hdr.copyHeader(), rr.Preference, copyIP(rr.Locator32)} + return &L32{rr.Hdr, rr.Preference, copyIP(rr.Locator32)} } func (rr *L64) copy() RR { - return &L64{*rr.Hdr.copyHeader(), rr.Preference, rr.Locator64} + return &L64{rr.Hdr, rr.Preference, rr.Locator64} } func (rr *LOC) copy() RR { - return &LOC{*rr.Hdr.copyHeader(), rr.Version, rr.Size, rr.HorizPre, rr.VertPre, rr.Latitude, rr.Longitude, rr.Altitude} + return &LOC{rr.Hdr, rr.Version, rr.Size, rr.HorizPre, rr.VertPre, rr.Latitude, rr.Longitude, rr.Altitude} } func (rr *LP) copy() RR { - return &LP{*rr.Hdr.copyHeader(), rr.Preference, rr.Fqdn} + return &LP{rr.Hdr, rr.Preference, rr.Fqdn} } func (rr *MB) copy() RR { - return &MB{*rr.Hdr.copyHeader(), rr.Mb} + return &MB{rr.Hdr, rr.Mb} } func (rr *MD) copy() RR { - return &MD{*rr.Hdr.copyHeader(), rr.Md} + return &MD{rr.Hdr, rr.Md} } func (rr *MF) copy() RR { - return &MF{*rr.Hdr.copyHeader(), rr.Mf} + return &MF{rr.Hdr, rr.Mf} } func (rr *MG) copy() RR { - return &MG{*rr.Hdr.copyHeader(), rr.Mg} + return &MG{rr.Hdr, rr.Mg} } func (rr *MINFO) copy() RR { - return &MINFO{*rr.Hdr.copyHeader(), rr.Rmail, rr.Email} + return &MINFO{rr.Hdr, rr.Rmail, rr.Email} } func (rr *MR) copy() RR { - return &MR{*rr.Hdr.copyHeader(), rr.Mr} + return &MR{rr.Hdr, rr.Mr} } func (rr *MX) copy() RR { - return &MX{*rr.Hdr.copyHeader(), rr.Preference, rr.Mx} + return &MX{rr.Hdr, rr.Preference, rr.Mx} } func (rr *NAPTR) copy() RR { - return &NAPTR{*rr.Hdr.copyHeader(), rr.Order, rr.Preference, rr.Flags, rr.Service, rr.Regexp, rr.Replacement} + return &NAPTR{rr.Hdr, rr.Order, rr.Preference, rr.Flags, rr.Service, rr.Regexp, rr.Replacement} } func (rr *NID) copy() RR { - return &NID{*rr.Hdr.copyHeader(), rr.Preference, rr.NodeID} + return &NID{rr.Hdr, rr.Preference, rr.NodeID} } func (rr *NIMLOC) copy() RR { - return &NIMLOC{*rr.Hdr.copyHeader(), rr.Locator} + return &NIMLOC{rr.Hdr, rr.Locator} } func (rr *NINFO) copy() RR { ZSData := make([]string, len(rr.ZSData)) copy(ZSData, rr.ZSData) - return &NINFO{*rr.Hdr.copyHeader(), ZSData} + return &NINFO{rr.Hdr, ZSData} } func (rr *NS) copy() RR { - return &NS{*rr.Hdr.copyHeader(), rr.Ns} + return &NS{rr.Hdr, rr.Ns} } func (rr *NSAPPTR) copy() RR { - return &NSAPPTR{*rr.Hdr.copyHeader(), rr.Ptr} + return &NSAPPTR{rr.Hdr, rr.Ptr} } func (rr *NSEC) copy() RR { TypeBitMap := make([]uint16, len(rr.TypeBitMap)) copy(TypeBitMap, rr.TypeBitMap) - return &NSEC{*rr.Hdr.copyHeader(), rr.NextDomain, TypeBitMap} + return &NSEC{rr.Hdr, rr.NextDomain, TypeBitMap} } func (rr *NSEC3) copy() RR { TypeBitMap := make([]uint16, len(rr.TypeBitMap)) copy(TypeBitMap, rr.TypeBitMap) - return &NSEC3{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt, rr.HashLength, rr.NextDomain, TypeBitMap} + return &NSEC3{rr.Hdr, rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt, rr.HashLength, rr.NextDomain, TypeBitMap} } func (rr *NSEC3PARAM) copy() RR { - return &NSEC3PARAM{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt} + return &NSEC3PARAM{rr.Hdr, rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt} } func (rr *OPENPGPKEY) copy() RR { - return &OPENPGPKEY{*rr.Hdr.copyHeader(), rr.PublicKey} + return &OPENPGPKEY{rr.Hdr, rr.PublicKey} } func (rr *OPT) copy() RR { Option := make([]EDNS0, len(rr.Option)) copy(Option, rr.Option) - return &OPT{*rr.Hdr.copyHeader(), Option} + return &OPT{rr.Hdr, Option} } func (rr *PTR) copy() RR { - return &PTR{*rr.Hdr.copyHeader(), rr.Ptr} + return &PTR{rr.Hdr, rr.Ptr} } func (rr *PX) copy() RR { - return &PX{*rr.Hdr.copyHeader(), rr.Preference, rr.Map822, rr.Mapx400} + return &PX{rr.Hdr, rr.Preference, rr.Map822, rr.Mapx400} } func (rr *RFC3597) copy() RR { - return &RFC3597{*rr.Hdr.copyHeader(), rr.Rdata} + return &RFC3597{rr.Hdr, rr.Rdata} } func (rr *RKEY) copy() RR { - return &RKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} + return &RKEY{rr.Hdr, rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} } func (rr *RP) copy() RR { - return &RP{*rr.Hdr.copyHeader(), rr.Mbox, rr.Txt} + return &RP{rr.Hdr, rr.Mbox, rr.Txt} } func (rr *RRSIG) copy() RR { - return &RRSIG{*rr.Hdr.copyHeader(), rr.TypeCovered, rr.Algorithm, rr.Labels, rr.OrigTtl, rr.Expiration, rr.Inception, rr.KeyTag, rr.SignerName, rr.Signature} + return &RRSIG{rr.Hdr, rr.TypeCovered, rr.Algorithm, rr.Labels, rr.OrigTtl, rr.Expiration, rr.Inception, rr.KeyTag, rr.SignerName, rr.Signature} } func (rr *RT) copy() RR { - return &RT{*rr.Hdr.copyHeader(), rr.Preference, rr.Host} + return &RT{rr.Hdr, rr.Preference, rr.Host} } func (rr *SMIMEA) copy() RR { - return &SMIMEA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} + return &SMIMEA{rr.Hdr, rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} } func (rr *SOA) copy() RR { - return &SOA{*rr.Hdr.copyHeader(), rr.Ns, rr.Mbox, rr.Serial, rr.Refresh, rr.Retry, rr.Expire, rr.Minttl} + return &SOA{rr.Hdr, rr.Ns, rr.Mbox, rr.Serial, rr.Refresh, rr.Retry, rr.Expire, rr.Minttl} } func (rr *SPF) copy() RR { Txt := make([]string, len(rr.Txt)) copy(Txt, rr.Txt) - return &SPF{*rr.Hdr.copyHeader(), Txt} + return &SPF{rr.Hdr, Txt} } func (rr *SRV) copy() RR { - return &SRV{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Port, rr.Target} + return &SRV{rr.Hdr, rr.Priority, rr.Weight, rr.Port, rr.Target} } func (rr *SSHFP) copy() RR { - return &SSHFP{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Type, rr.FingerPrint} + return &SSHFP{rr.Hdr, rr.Algorithm, rr.Type, rr.FingerPrint} } func (rr *TA) copy() RR { - return &TA{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} + return &TA{rr.Hdr, rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} } func (rr *TALINK) copy() RR { - return &TALINK{*rr.Hdr.copyHeader(), rr.PreviousName, rr.NextName} + return &TALINK{rr.Hdr, rr.PreviousName, rr.NextName} } func (rr *TKEY) copy() RR { - return &TKEY{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Inception, rr.Expiration, rr.Mode, rr.Error, rr.KeySize, rr.Key, rr.OtherLen, rr.OtherData} + return &TKEY{rr.Hdr, rr.Algorithm, rr.Inception, rr.Expiration, rr.Mode, rr.Error, rr.KeySize, rr.Key, rr.OtherLen, rr.OtherData} } func (rr *TLSA) copy() RR { - return &TLSA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} + return &TLSA{rr.Hdr, rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} } func (rr *TSIG) copy() RR { - return &TSIG{*rr.Hdr.copyHeader(), rr.Algorithm, rr.TimeSigned, rr.Fudge, rr.MACSize, rr.MAC, rr.OrigId, rr.Error, rr.OtherLen, rr.OtherData} + return &TSIG{rr.Hdr, rr.Algorithm, rr.TimeSigned, rr.Fudge, rr.MACSize, rr.MAC, rr.OrigId, rr.Error, rr.OtherLen, rr.OtherData} } func (rr *TXT) copy() RR { Txt := make([]string, len(rr.Txt)) copy(Txt, rr.Txt) - return &TXT{*rr.Hdr.copyHeader(), Txt} + return &TXT{rr.Hdr, Txt} } func (rr *UID) copy() RR { - return &UID{*rr.Hdr.copyHeader(), rr.Uid} + return &UID{rr.Hdr, rr.Uid} } func (rr *UINFO) copy() RR { - return &UINFO{*rr.Hdr.copyHeader(), rr.Uinfo} + return &UINFO{rr.Hdr, rr.Uinfo} } func (rr *URI) copy() RR { - return &URI{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Target} + return &URI{rr.Hdr, rr.Priority, rr.Weight, rr.Target} } func (rr *X25) copy() RR { - return &X25{*rr.Hdr.copyHeader(), rr.PSDNAddress} + return &X25{rr.Hdr, rr.PSDNAddress} } diff --git a/vendor/github.com/mitchellh/go-homedir/go.mod b/vendor/github.com/mitchellh/go-homedir/go.mod new file mode 100644 index 00000000..7efa09a0 --- /dev/null +++ b/vendor/github.com/mitchellh/go-homedir/go.mod @@ -0,0 +1 @@ +module github.com/mitchellh/go-homedir diff --git a/vendor/github.com/mitchellh/go-homedir/homedir.go b/vendor/github.com/mitchellh/go-homedir/homedir.go index 47e1f9ef..fb87bef9 100644 --- a/vendor/github.com/mitchellh/go-homedir/homedir.go +++ b/vendor/github.com/mitchellh/go-homedir/homedir.go @@ -77,33 +77,51 @@ func Expand(path string) (string, error) { } func dirUnix() (string, error) { + homeEnv := "HOME" + if runtime.GOOS == "plan9" { + // On plan9, env vars are lowercase. + homeEnv = "home" + } + // First prefer the HOME environmental variable - if home := os.Getenv("HOME"); home != "" { + if home := os.Getenv(homeEnv); home != "" { return home, nil } - // If that fails, try getent var stdout bytes.Buffer - cmd := exec.Command("getent", "passwd", strconv.Itoa(os.Getuid())) - cmd.Stdout = &stdout - if err := cmd.Run(); err != nil { - // If the error is ErrNotFound, we ignore it. Otherwise, return it. - if err != exec.ErrNotFound { - return "", err + + // If that fails, try OS specific commands + if runtime.GOOS == "darwin" { + cmd := exec.Command("sh", "-c", `dscl -q . -read /Users/"$(whoami)" NFSHomeDirectory | sed 's/^[^ ]*: //'`) + cmd.Stdout = &stdout + if err := cmd.Run(); err == nil { + result := strings.TrimSpace(stdout.String()) + if result != "" { + return result, nil + } } } else { - if passwd := strings.TrimSpace(stdout.String()); passwd != "" { - // username:password:uid:gid:gecos:home:shell - passwdParts := strings.SplitN(passwd, ":", 7) - if len(passwdParts) > 5 { - return passwdParts[5], nil + cmd := exec.Command("getent", "passwd", strconv.Itoa(os.Getuid())) + cmd.Stdout = &stdout + if err := cmd.Run(); err != nil { + // If the error is ErrNotFound, we ignore it. Otherwise, return it. + if err != exec.ErrNotFound { + return "", err + } + } else { + if passwd := strings.TrimSpace(stdout.String()); passwd != "" { + // username:password:uid:gid:gecos:home:shell + passwdParts := strings.SplitN(passwd, ":", 7) + if len(passwdParts) > 5 { + return passwdParts[5], nil + } } } } // If all else fails, try the shell stdout.Reset() - cmd = exec.Command("sh", "-c", "cd && pwd") + cmd := exec.Command("sh", "-c", "cd && pwd") cmd.Stdout = &stdout if err := cmd.Run(); err != nil { return "", err @@ -123,14 +141,16 @@ func dirWindows() (string, error) { return home, nil } + // Prefer standard environment variable USERPROFILE + if home := os.Getenv("USERPROFILE"); home != "" { + return home, nil + } + drive := os.Getenv("HOMEDRIVE") path := os.Getenv("HOMEPATH") home := drive + path if drive == "" || path == "" { - home = os.Getenv("USERPROFILE") - } - if home == "" { - return "", errors.New("HOMEDRIVE, HOMEPATH, and USERPROFILE are blank") + return "", errors.New("HOMEDRIVE, HOMEPATH, or USERPROFILE are blank") } return home, nil diff --git a/vendor/github.com/mitchellh/mapstructure/go.mod b/vendor/github.com/mitchellh/mapstructure/go.mod new file mode 100644 index 00000000..d2a71256 --- /dev/null +++ b/vendor/github.com/mitchellh/mapstructure/go.mod @@ -0,0 +1 @@ +module github.com/mitchellh/mapstructure diff --git a/vendor/github.com/mitchellh/mapstructure/mapstructure.go b/vendor/github.com/mitchellh/mapstructure/mapstructure.go index aaf12a29..d3222b8f 100644 --- a/vendor/github.com/mitchellh/mapstructure/mapstructure.go +++ b/vendor/github.com/mitchellh/mapstructure/mapstructure.go @@ -644,16 +644,28 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re return fmt.Errorf("cannot assign type '%s' to map value field of type '%s'", v.Type(), valMap.Type().Elem()) } + tagValue := f.Tag.Get(d.config.TagName) + tagParts := strings.Split(tagValue, ",") + // Determine the name of the key in the map keyName := f.Name - tagValue := f.Tag.Get(d.config.TagName) - tagValue = strings.SplitN(tagValue, ",", 2)[0] - if tagValue != "" { - if tagValue == "-" { + if tagParts[0] != "" { + if tagParts[0] == "-" { continue } + keyName = tagParts[0] + } - keyName = tagValue + // If "squash" is specified in the tag, we squash the field down. + squash := false + for _, tag := range tagParts[1:] { + if tag == "squash" { + squash = true + break + } + } + if squash && v.Kind() != reflect.Struct { + return fmt.Errorf("cannot squash non-struct type '%s'", v.Type()) } switch v.Kind() { @@ -673,7 +685,13 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re return err } - valMap.SetMapIndex(reflect.ValueOf(keyName), vMap) + if squash { + for _, k := range vMap.MapKeys() { + valMap.SetMapIndex(k, vMap.MapIndex(k)) + } + } else { + valMap.SetMapIndex(reflect.ValueOf(keyName), vMap) + } default: valMap.SetMapIndex(reflect.ValueOf(keyName), v) @@ -744,6 +762,9 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) val.Set(reflect.MakeSlice(sliceType, 0, 0)) return nil } + // Create slice of maps of other sizes + return d.decodeSlice(name, []interface{}{data}, val) + case dataValKind == reflect.String && valElemType.Kind() == reflect.Uint8: return d.decodeSlice(name, []byte(dataVal.String()), val) // All other types we try to convert to the slice type diff --git a/vendor/github.com/pelletier/go-toml/marshal.go b/vendor/github.com/pelletier/go-toml/marshal.go index f584ba4e..671da556 100644 --- a/vendor/github.com/pelletier/go-toml/marshal.go +++ b/vendor/github.com/pelletier/go-toml/marshal.go @@ -11,10 +11,13 @@ import ( "time" ) +const tagKeyMultiline = "multiline" + type tomlOpts struct { name string comment string commented bool + multiline bool include bool omitempty bool } @@ -230,7 +233,12 @@ func (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, er if err != nil { return nil, err } - tval.SetWithComment(opts.name, opts.comment, opts.commented, val) + + tval.SetWithOptions(opts.name, SetOptions{ + Comment: opts.comment, + Commented: opts.commented, + Multiline: opts.multiline, + }, val) } } case reflect.Map: @@ -559,7 +567,8 @@ func tomlOptions(vf reflect.StructField) tomlOpts { comment = c } commented, _ := strconv.ParseBool(vf.Tag.Get("commented")) - result := tomlOpts{name: vf.Name, comment: comment, commented: commented, include: true, omitempty: false} + multiline, _ := strconv.ParseBool(vf.Tag.Get(tagKeyMultiline)) + result := tomlOpts{name: vf.Name, comment: comment, commented: commented, multiline: multiline, include: true, omitempty: false} if parse[0] != "" { if parse[0] == "-" && len(parse) == 1 { result.include = false diff --git a/vendor/github.com/pelletier/go-toml/toml.go b/vendor/github.com/pelletier/go-toml/toml.go index 05493a44..98c185ad 100644 --- a/vendor/github.com/pelletier/go-toml/toml.go +++ b/vendor/github.com/pelletier/go-toml/toml.go @@ -14,6 +14,7 @@ type tomlValue struct { value interface{} // string, int64, uint64, float64, bool, time.Time, [] of any of this list comment string commented bool + multiline bool position Position } @@ -175,6 +176,63 @@ func (t *Tree) GetDefault(key string, def interface{}) interface{} { return val } +// SetOptions arguments are supplied to the SetWithOptions and SetPathWithOptions functions to modify marshalling behaviour. +// The default values within the struct are valid default options. +type SetOptions struct { + Comment string + Commented bool + Multiline bool +} + +// SetWithOptions is the same as Set, but allows you to provide formatting +// instructions to the key, that will be used by Marshal(). +func (t *Tree) SetWithOptions(key string, opts SetOptions, value interface{}) { + t.SetPathWithOptions(strings.Split(key, "."), opts, value) +} + +// SetPathWithOptions is the same as SetPath, but allows you to provide +// formatting instructions to the key, that will be reused by Marshal(). +func (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interface{}) { + subtree := t + for _, intermediateKey := range keys[:len(keys)-1] { + nextTree, exists := subtree.values[intermediateKey] + if !exists { + nextTree = newTree() + subtree.values[intermediateKey] = nextTree // add new element here + } + switch node := nextTree.(type) { + case *Tree: + subtree = node + case []*Tree: + // go to most recent element + if len(node) == 0 { + // create element if it does not exist + subtree.values[intermediateKey] = append(node, newTree()) + } + subtree = node[len(node)-1] + } + } + + var toInsert interface{} + + switch value.(type) { + case *Tree: + tt := value.(*Tree) + tt.comment = opts.Comment + toInsert = value + case []*Tree: + toInsert = value + case *tomlValue: + tt := value.(*tomlValue) + tt.comment = opts.Comment + toInsert = tt + default: + toInsert = &tomlValue{value: value, comment: opts.Comment, commented: opts.Commented, multiline: opts.Multiline} + } + + subtree.values[keys[len(keys)-1]] = toInsert +} + // Set an element in the tree. // Key is a dot-separated path (e.g. a.b.c). // Creates all necessary intermediate trees, if needed. diff --git a/vendor/github.com/pelletier/go-toml/tomltree_write.go b/vendor/github.com/pelletier/go-toml/tomltree_write.go index b5600a58..e4049e29 100644 --- a/vendor/github.com/pelletier/go-toml/tomltree_write.go +++ b/vendor/github.com/pelletier/go-toml/tomltree_write.go @@ -12,7 +12,41 @@ import ( "time" ) -// encodes a string to a TOML-compliant string value +// Encodes a string to a TOML-compliant multi-line string value +// This function is a clone of the existing encodeTomlString function, except that whitespace characters +// are preserved. Quotation marks and backslashes are also not escaped. +func encodeMultilineTomlString(value string) string { + var b bytes.Buffer + + for _, rr := range value { + switch rr { + case '\b': + b.WriteString(`\b`) + case '\t': + b.WriteString("\t") + case '\n': + b.WriteString("\n") + case '\f': + b.WriteString(`\f`) + case '\r': + b.WriteString("\r") + case '"': + b.WriteString(`"`) + case '\\': + b.WriteString(`\`) + default: + intRr := uint16(rr) + if intRr < 0x001F { + b.WriteString(fmt.Sprintf("\\u%0.4X", intRr)) + } else { + b.WriteRune(rr) + } + } + } + return b.String() +} + +// Encodes a string to a TOML-compliant string value func encodeTomlString(value string) string { var b bytes.Buffer @@ -45,6 +79,15 @@ func encodeTomlString(value string) string { } func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElementPerLine bool) (string, error) { + // this interface check is added to dereference the change made in the writeTo function. + // That change was made to allow this function to see formatting options. + tv, ok := v.(*tomlValue) + if ok { + v = tv.value + } else { + tv = &tomlValue{} + } + switch value := v.(type) { case uint64: return strconv.FormatUint(value, 10), nil @@ -58,6 +101,9 @@ func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElemen } return strings.ToLower(strconv.FormatFloat(value, 'f', -1, 32)), nil case string: + if tv.multiline { + return "\"\"\"\n" + encodeMultilineTomlString(value) + "\"\"\"", nil + } return "\"" + encodeTomlString(value) + "\"", nil case []byte: b, _ := v.([]byte) @@ -130,7 +176,7 @@ func (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, a return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k]) } - repr, err := tomlValueStringRepresentation(v.value, indent, arraysOneElementPerLine) + repr, err := tomlValueStringRepresentation(v, indent, arraysOneElementPerLine) if err != nil { return bytesCount, err } diff --git a/vendor/github.com/spf13/afero/mem/file.go b/vendor/github.com/spf13/afero/mem/file.go index 885e5542..7af2fb56 100644 --- a/vendor/github.com/spf13/afero/mem/file.go +++ b/vendor/github.com/spf13/afero/mem/file.go @@ -131,6 +131,9 @@ func (f *File) Sync() error { } func (f *File) Readdir(count int) (res []os.FileInfo, err error) { + if !f.fileData.dir { + return nil, &os.PathError{Op: "readdir", Path: f.fileData.name, Err: errors.New("not a dir")} + } var outLength int64 f.fileData.Lock() diff --git a/vendor/github.com/spf13/jwalterweatherman/README.md b/vendor/github.com/spf13/jwalterweatherman/README.md index d8cfd27a..932a23fc 100644 --- a/vendor/github.com/spf13/jwalterweatherman/README.md +++ b/vendor/github.com/spf13/jwalterweatherman/README.md @@ -18,7 +18,7 @@ provides a few advantages over using the standard log library alone. I really wanted a very straightforward library that could seamlessly do the following things. -1. Replace all the println, printf, etc statements thought my code with +1. Replace all the println, printf, etc statements thoughout my code with something more useful 2. Allow the user to easily control what levels are printed to stdout 3. Allow the user to easily control what levels are logged diff --git a/vendor/github.com/spf13/pflag/bytes.go b/vendor/github.com/spf13/pflag/bytes.go index 12c58db9..67d53045 100644 --- a/vendor/github.com/spf13/pflag/bytes.go +++ b/vendor/github.com/spf13/pflag/bytes.go @@ -1,6 +1,7 @@ package pflag import ( + "encoding/base64" "encoding/hex" "fmt" "strings" @@ -9,10 +10,12 @@ import ( // BytesHex adapts []byte for use as a flag. Value of flag is HEX encoded type bytesHexValue []byte +// String implements pflag.Value.String. func (bytesHex bytesHexValue) String() string { return fmt.Sprintf("%X", []byte(bytesHex)) } +// Set implements pflag.Value.Set. func (bytesHex *bytesHexValue) Set(value string) error { bin, err := hex.DecodeString(strings.TrimSpace(value)) @@ -25,6 +28,7 @@ func (bytesHex *bytesHexValue) Set(value string) error { return nil } +// Type implements pflag.Value.Type. func (*bytesHexValue) Type() string { return "bytesHex" } @@ -103,3 +107,103 @@ func BytesHex(name string, value []byte, usage string) *[]byte { func BytesHexP(name, shorthand string, value []byte, usage string) *[]byte { return CommandLine.BytesHexP(name, shorthand, value, usage) } + +// BytesBase64 adapts []byte for use as a flag. Value of flag is Base64 encoded +type bytesBase64Value []byte + +// String implements pflag.Value.String. +func (bytesBase64 bytesBase64Value) String() string { + return base64.StdEncoding.EncodeToString([]byte(bytesBase64)) +} + +// Set implements pflag.Value.Set. +func (bytesBase64 *bytesBase64Value) Set(value string) error { + bin, err := base64.StdEncoding.DecodeString(strings.TrimSpace(value)) + + if err != nil { + return err + } + + *bytesBase64 = bin + + return nil +} + +// Type implements pflag.Value.Type. +func (*bytesBase64Value) Type() string { + return "bytesBase64" +} + +func newBytesBase64Value(val []byte, p *[]byte) *bytesBase64Value { + *p = val + return (*bytesBase64Value)(p) +} + +func bytesBase64ValueConv(sval string) (interface{}, error) { + + bin, err := base64.StdEncoding.DecodeString(sval) + if err == nil { + return bin, nil + } + + return nil, fmt.Errorf("invalid string being converted to Bytes: %s %s", sval, err) +} + +// GetBytesBase64 return the []byte value of a flag with the given name +func (f *FlagSet) GetBytesBase64(name string) ([]byte, error) { + val, err := f.getFlagType(name, "bytesBase64", bytesBase64ValueConv) + + if err != nil { + return []byte{}, err + } + + return val.([]byte), nil +} + +// BytesBase64Var defines an []byte flag with specified name, default value, and usage string. +// The argument p points to an []byte variable in which to store the value of the flag. +func (f *FlagSet) BytesBase64Var(p *[]byte, name string, value []byte, usage string) { + f.VarP(newBytesBase64Value(value, p), name, "", usage) +} + +// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) { + f.VarP(newBytesBase64Value(value, p), name, shorthand, usage) +} + +// BytesBase64Var defines an []byte flag with specified name, default value, and usage string. +// The argument p points to an []byte variable in which to store the value of the flag. +func BytesBase64Var(p *[]byte, name string, value []byte, usage string) { + CommandLine.VarP(newBytesBase64Value(value, p), name, "", usage) +} + +// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash. +func BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) { + CommandLine.VarP(newBytesBase64Value(value, p), name, shorthand, usage) +} + +// BytesBase64 defines an []byte flag with specified name, default value, and usage string. +// The return value is the address of an []byte variable that stores the value of the flag. +func (f *FlagSet) BytesBase64(name string, value []byte, usage string) *[]byte { + p := new([]byte) + f.BytesBase64VarP(p, name, "", value, usage) + return p +} + +// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte { + p := new([]byte) + f.BytesBase64VarP(p, name, shorthand, value, usage) + return p +} + +// BytesBase64 defines an []byte flag with specified name, default value, and usage string. +// The return value is the address of an []byte variable that stores the value of the flag. +func BytesBase64(name string, value []byte, usage string) *[]byte { + return CommandLine.BytesBase64P(name, "", value, usage) +} + +// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash. +func BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte { + return CommandLine.BytesBase64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go index 5eadc84e..5cc710cc 100644 --- a/vendor/github.com/spf13/pflag/flag.go +++ b/vendor/github.com/spf13/pflag/flag.go @@ -990,11 +990,12 @@ func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []strin } func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parseFunc) (outShorts string, outArgs []string, err error) { + outArgs = args + if strings.HasPrefix(shorthands, "test.") { return } - outArgs = args outShorts = shorthands[1:] c := shorthands[0] diff --git a/vendor/github.com/spf13/viper/README.md b/vendor/github.com/spf13/viper/README.md index 64bf4743..d7528222 100644 --- a/vendor/github.com/spf13/viper/README.md +++ b/vendor/github.com/spf13/viper/README.md @@ -191,7 +191,7 @@ _When working with ENV variables, it’s important to recognize that Viper treats ENV variables as case sensitive._ Viper provides a mechanism to try to ensure that ENV variables are unique. By -using `SetEnvPrefix`, you can tell Viper to use add a prefix while reading from +using `SetEnvPrefix`, you can tell Viper to use a prefix while reading from the environment variables. Both `BindEnv` and `AutomaticEnv` will use this prefix. @@ -437,6 +437,7 @@ The following functions and methods exist: * `GetTime(key string) : time.Time` * `GetDuration(key string) : time.Duration` * `IsSet(key string) : bool` + * `AllSettings() : map[string]interface{}` One important thing to recognize is that each Get function will return a zero value if it’s not found. To check if a given key exists, the `IsSet()` method @@ -590,6 +591,27 @@ if err != nil { } ``` +### Marshalling to string + +You may need to marhsal all the settings held in viper into a string rather than write them to a file. +You can use your favorite format's marshaller with the config returned by `AllSettings()`. + +```go +import ( + yaml "gopkg.in/yaml.v2" + // ... +) + +func yamlStringSettings() string { + c := viper.AllSettings() + bs, err := yaml.Marshal(c) + if err != nil { + t.Fatalf("unable to marshal config to YAML: %v", err) + } + return string(bs) +} +``` + ## Viper or Vipers? Viper comes ready to use out of the box. There is no configuration or diff --git a/vendor/github.com/spf13/viper/viper.go b/vendor/github.com/spf13/viper/viper.go index e9966ba5..f657b201 100644 --- a/vendor/github.com/spf13/viper/viper.go +++ b/vendor/github.com/spf13/viper/viper.go @@ -113,6 +113,23 @@ func (fnfe ConfigFileNotFoundError) Error() string { return fmt.Sprintf("Config File %q Not Found in %q", fnfe.name, fnfe.locations) } +// A DecoderConfigOption can be passed to viper.Unmarshal to configure +// mapstructure.DecoderConfig options +type DecoderConfigOption func(*mapstructure.DecoderConfig) + +// DecodeHook returns a DecoderConfigOption which overrides the default +// DecoderConfig.DecodeHook value, the default is: +// +// mapstructure.ComposeDecodeHookFunc( +// mapstructure.StringToTimeDurationHookFunc(), +// mapstructure.StringToSliceHookFunc(","), +// ) +func DecodeHook(hook mapstructure.DecodeHookFunc) DecoderConfigOption { + return func(c *mapstructure.DecoderConfig) { + c.DecodeHook = hook + } +} + // Viper is a prioritized configuration registry. It // maintains a set of configuration sources, fetches // values to populate those, and provides them according @@ -682,6 +699,12 @@ func (v *Viper) GetInt(key string) int { return cast.ToInt(v.Get(key)) } +// GetInt32 returns the value associated with the key as an integer. +func GetInt32(key string) int32 { return v.GetInt32(key) } +func (v *Viper) GetInt32(key string) int32 { + return cast.ToInt32(v.Get(key)) +} + // GetInt64 returns the value associated with the key as an integer. func GetInt64(key string) int64 { return v.GetInt64(key) } func (v *Viper) GetInt64(key string) int64 { @@ -739,9 +762,11 @@ func (v *Viper) GetSizeInBytes(key string) uint { } // UnmarshalKey takes a single key and unmarshals it into a Struct. -func UnmarshalKey(key string, rawVal interface{}) error { return v.UnmarshalKey(key, rawVal) } -func (v *Viper) UnmarshalKey(key string, rawVal interface{}) error { - err := decode(v.Get(key), defaultDecoderConfig(rawVal)) +func UnmarshalKey(key string, rawVal interface{}, opts ...DecoderConfigOption) error { + return v.UnmarshalKey(key, rawVal, opts...) +} +func (v *Viper) UnmarshalKey(key string, rawVal interface{}, opts ...DecoderConfigOption) error { + err := decode(v.Get(key), defaultDecoderConfig(rawVal, opts...)) if err != nil { return err @@ -754,9 +779,11 @@ func (v *Viper) UnmarshalKey(key string, rawVal interface{}) error { // Unmarshal unmarshals the config into a Struct. Make sure that the tags // on the fields of the structure are properly set. -func Unmarshal(rawVal interface{}) error { return v.Unmarshal(rawVal) } -func (v *Viper) Unmarshal(rawVal interface{}) error { - err := decode(v.AllSettings(), defaultDecoderConfig(rawVal)) +func Unmarshal(rawVal interface{}, opts ...DecoderConfigOption) error { + return v.Unmarshal(rawVal, opts...) +} +func (v *Viper) Unmarshal(rawVal interface{}, opts ...DecoderConfigOption) error { + err := decode(v.AllSettings(), defaultDecoderConfig(rawVal, opts...)) if err != nil { return err @@ -769,8 +796,8 @@ func (v *Viper) Unmarshal(rawVal interface{}) error { // defaultDecoderConfig returns default mapsstructure.DecoderConfig with suppot // of time.Duration values & string slices -func defaultDecoderConfig(output interface{}) *mapstructure.DecoderConfig { - return &mapstructure.DecoderConfig{ +func defaultDecoderConfig(output interface{}, opts ...DecoderConfigOption) *mapstructure.DecoderConfig { + c := &mapstructure.DecoderConfig{ Metadata: nil, Result: output, WeaklyTypedInput: true, @@ -779,6 +806,10 @@ func defaultDecoderConfig(output interface{}) *mapstructure.DecoderConfig { mapstructure.StringToSliceHookFunc(","), ), } + for _, opt := range opts { + opt(c) + } + return c } // A wrapper around mapstructure.Decode that mimics the WeakDecode functionality diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go new file mode 100644 index 00000000..aa1c2b95 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -0,0 +1,484 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND + */ + +package assert + +import ( + http "net/http" + url "net/url" + time "time" +) + +// Conditionf uses a Comparison to assert a complex condition. +func Conditionf(t TestingT, comp Comparison, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Condition(t, comp, append([]interface{}{msg}, args...)...) +} + +// Containsf asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") +// assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") +// assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") +func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Contains(t, s, contains, append([]interface{}{msg}, args...)...) +} + +// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return DirExists(t, path, append([]interface{}{msg}, args...)...) +} + +// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// assert.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return ElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...) +} + +// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Emptyf(t, obj, "error message %s", "formatted") +func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Empty(t, object, append([]interface{}{msg}, args...)...) +} + +// Equalf asserts that two objects are equal. +// +// assert.Equalf(t, 123, 123, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Equal(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// EqualErrorf asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// assert.EqualErrorf(t, err, expectedErrorString, "error message %s", "formatted") +func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return EqualError(t, theError, errString, append([]interface{}{msg}, args...)...) +} + +// EqualValuesf asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValuesf(t, uint32(123, "error message %s", "formatted"), int32(123)) +func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return EqualValues(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Errorf asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Errorf(t, err, "error message %s", "formatted") { +// assert.Equal(t, expectedErrorf, err) +// } +func Errorf(t TestingT, err error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Error(t, err, append([]interface{}{msg}, args...)...) +} + +// Exactlyf asserts that two objects are equal in value and type. +// +// assert.Exactlyf(t, int32(123, "error message %s", "formatted"), int64(123)) +func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Exactly(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Failf reports a failure through +func Failf(t TestingT, failureMessage string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Fail(t, failureMessage, append([]interface{}{msg}, args...)...) +} + +// FailNowf fails test +func FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return FailNow(t, failureMessage, append([]interface{}{msg}, args...)...) +} + +// Falsef asserts that the specified value is false. +// +// assert.Falsef(t, myBool, "error message %s", "formatted") +func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return False(t, value, append([]interface{}{msg}, args...)...) +} + +// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return FileExists(t, path, append([]interface{}{msg}, args...)...) +} + +// HTTPBodyContainsf asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPBodyContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...) +} + +// HTTPBodyNotContainsf asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPBodyNotContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...) +} + +// HTTPErrorf asserts that a specified handler returns an error status code. +// +// assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPError(t, handler, method, url, values, append([]interface{}{msg}, args...)...) +} + +// HTTPRedirectf asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPRedirect(t, handler, method, url, values, append([]interface{}{msg}, args...)...) +} + +// HTTPSuccessf asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPSuccess(t, handler, method, url, values, append([]interface{}{msg}, args...)...) +} + +// Implementsf asserts that an object is implemented by the specified interface. +// +// assert.Implementsf(t, (*MyInterface, "error message %s", "formatted")(nil), new(MyObject)) +func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Implements(t, interfaceObject, object, append([]interface{}{msg}, args...)...) +} + +// InDeltaf asserts that the two numerals are within delta of each other. +// +// assert.InDeltaf(t, math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01) +func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InDelta(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InDeltaMapValues(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// InDeltaSlicef is the same as InDelta, except it compares two slices. +func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InDeltaSlice(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// InEpsilonf asserts that expected and actual have a relative error less than epsilon +func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InEpsilon(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...) +} + +// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices. +func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InEpsilonSlice(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...) +} + +// IsTypef asserts that the specified objects are of the same type. +func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsType(t, expectedType, object, append([]interface{}{msg}, args...)...) +} + +// JSONEqf asserts that two JSON strings are equivalent. +// +// assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Lenf asserts that the specified object has specific length. +// Lenf also fails if the object has a type that len() not accept. +// +// assert.Lenf(t, mySlice, 3, "error message %s", "formatted") +func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Len(t, object, length, append([]interface{}{msg}, args...)...) +} + +// Nilf asserts that the specified object is nil. +// +// assert.Nilf(t, err, "error message %s", "formatted") +func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Nil(t, object, append([]interface{}{msg}, args...)...) +} + +// NoErrorf asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoErrorf(t, err, "error message %s", "formatted") { +// assert.Equal(t, expectedObj, actualObj) +// } +func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NoError(t, err, append([]interface{}{msg}, args...)...) +} + +// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") +// assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") +// assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") +func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotContains(t, s, contains, append([]interface{}{msg}, args...)...) +} + +// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmptyf(t, obj, "error message %s", "formatted") { +// assert.Equal(t, "two", obj[1]) +// } +func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotEmpty(t, object, append([]interface{}{msg}, args...)...) +} + +// NotEqualf asserts that the specified values are NOT equal. +// +// assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotEqual(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// NotNilf asserts that the specified object is not nil. +// +// assert.NotNilf(t, err, "error message %s", "formatted") +func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotNil(t, object, append([]interface{}{msg}, args...)...) +} + +// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") +func NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotPanics(t, f, append([]interface{}{msg}, args...)...) +} + +// NotRegexpf asserts that a specified regexp does not match a string. +// +// assert.NotRegexpf(t, regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting") +// assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") +func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...) +} + +// NotSubsetf asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted") +func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotSubset(t, list, subset, append([]interface{}{msg}, args...)...) +} + +// NotZerof asserts that i is not the zero value for its type. +func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotZero(t, i, append([]interface{}{msg}, args...)...) +} + +// Panicsf asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") +func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Panics(t, f, append([]interface{}{msg}, args...)...) +} + +// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return PanicsWithValue(t, expected, f, append([]interface{}{msg}, args...)...) +} + +// Regexpf asserts that a specified regexp matches a string. +// +// assert.Regexpf(t, regexp.MustCompile("start", "error message %s", "formatted"), "it's starting") +// assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") +func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Regexp(t, rx, str, append([]interface{}{msg}, args...)...) +} + +// Subsetf asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted") +func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Subset(t, list, subset, append([]interface{}{msg}, args...)...) +} + +// Truef asserts that the specified value is true. +// +// assert.Truef(t, myBool, "error message %s", "formatted") +func Truef(t TestingT, value bool, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return True(t, value, append([]interface{}{msg}, args...)...) +} + +// WithinDurationf asserts that the two times are within duration delta of each other. +// +// assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// Zerof asserts that i is the zero value for its type. +func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Zero(t, i, append([]interface{}{msg}, args...)...) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl new file mode 100644 index 00000000..d2bb0b81 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl @@ -0,0 +1,5 @@ +{{.CommentFormat}} +func {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool { + if h, ok := t.(tHelper); ok { h.Helper() } + return {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}}) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go index aa4311ff..de39f794 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -13,40 +13,119 @@ import ( // Condition uses a Comparison to assert a complex condition. func (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Condition(a.t, comp, msgAndArgs...) } +// Conditionf uses a Comparison to assert a complex condition. +func (a *Assertions) Conditionf(comp Comparison, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Conditionf(a.t, comp, msg, args...) +} + // Contains asserts that the specified string, list(array, slice...) or map contains the // specified substring or element. // -// a.Contains("Hello World", "World", "But 'Hello World' does contain 'World'") -// a.Contains(["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") -// a.Contains({"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") -// -// Returns whether the assertion was successful (true) or not (false). +// a.Contains("Hello World", "World") +// a.Contains(["Hello", "World"], "World") +// a.Contains({"Hello": "World"}, "Hello") func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Contains(a.t, s, contains, msgAndArgs...) } +// Containsf asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Containsf("Hello World", "World", "error message %s", "formatted") +// a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") +// a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted") +func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Containsf(a.t, s, contains, msg, args...) +} + +// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return DirExists(a.t, path, msgAndArgs...) +} + +// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return DirExistsf(a.t, path, msg, args...) +} + +// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2]) +func (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ElementsMatch(a.t, listA, listB, msgAndArgs...) +} + +// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ElementsMatchf(a.t, listA, listB, msg, args...) +} + // Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either // a slice or a channel with len == 0. // // a.Empty(obj) -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Empty(a.t, object, msgAndArgs...) } +// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Emptyf(obj, "error message %s", "formatted") +func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Emptyf(a.t, object, msg, args...) +} + // Equal asserts that two objects are equal. // -// a.Equal(123, 123, "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// a.Equal(123, 123) // // Pointer variable equality is determined based on the equality of the -// referenced values (as opposed to the memory addresses). +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Equal(a.t, expected, actual, msgAndArgs...) } @@ -54,81 +133,226 @@ func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs // and that it is equal to the provided error. // // actualObj, err := SomeFunction() -// a.EqualError(err, expectedErrorString, "An error was expected") -// -// Returns whether the assertion was successful (true) or not (false). +// a.EqualError(err, expectedErrorString) func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return EqualError(a.t, theError, errString, msgAndArgs...) } +// EqualErrorf asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// a.EqualErrorf(err, expectedErrorString, "error message %s", "formatted") +func (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return EqualErrorf(a.t, theError, errString, msg, args...) +} + // EqualValues asserts that two objects are equal or convertable to the same types // and equal. // -// a.EqualValues(uint32(123), int32(123), "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// a.EqualValues(uint32(123), int32(123)) func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return EqualValues(a.t, expected, actual, msgAndArgs...) } +// EqualValuesf asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValuesf(uint32(123, "error message %s", "formatted"), int32(123)) +func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return EqualValuesf(a.t, expected, actual, msg, args...) +} + +// Equalf asserts that two objects are equal. +// +// a.Equalf(123, 123, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Equalf(a.t, expected, actual, msg, args...) +} + // Error asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() -// if a.Error(err, "An error was expected") { -// assert.Equal(t, err, expectedError) +// if a.Error(err) { +// assert.Equal(t, expectedError, err) // } -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Error(a.t, err, msgAndArgs...) } -// Exactly asserts that two objects are equal is value and type. +// Errorf asserts that a function returned an error (i.e. not `nil`). // -// a.Exactly(int32(123), int64(123), "123 and 123 should NOT be equal") +// actualObj, err := SomeFunction() +// if a.Errorf(err, "error message %s", "formatted") { +// assert.Equal(t, expectedErrorf, err) +// } +func (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Errorf(a.t, err, msg, args...) +} + +// Exactly asserts that two objects are equal in value and type. // -// Returns whether the assertion was successful (true) or not (false). +// a.Exactly(int32(123), int64(123)) func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Exactly(a.t, expected, actual, msgAndArgs...) } +// Exactlyf asserts that two objects are equal in value and type. +// +// a.Exactlyf(int32(123, "error message %s", "formatted"), int64(123)) +func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Exactlyf(a.t, expected, actual, msg, args...) +} + // Fail reports a failure through func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Fail(a.t, failureMessage, msgAndArgs...) } // FailNow fails test func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return FailNow(a.t, failureMessage, msgAndArgs...) } +// FailNowf fails test +func (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FailNowf(a.t, failureMessage, msg, args...) +} + +// Failf reports a failure through +func (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Failf(a.t, failureMessage, msg, args...) +} + // False asserts that the specified value is false. // -// a.False(myBool, "myBool should be false") -// -// Returns whether the assertion was successful (true) or not (false). +// a.False(myBool) func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return False(a.t, value, msgAndArgs...) } +// Falsef asserts that the specified value is false. +// +// a.Falsef(myBool, "error message %s", "formatted") +func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Falsef(a.t, value, msg, args...) +} + +// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FileExists(a.t, path, msgAndArgs...) +} + +// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FileExistsf(a.t, path, msg, args...) +} + // HTTPBodyContains asserts that a specified handler returns a // body that contains a string. // -// a.HTTPBodyContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") // // Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) bool { - return HTTPBodyContains(a.t, handler, method, url, values, str) +func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...) +} + +// HTTPBodyContainsf asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...) } // HTTPBodyNotContains asserts that a specified handler returns a // body that does not contain a string. // -// a.HTTPBodyNotContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") // // Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) bool { - return HTTPBodyNotContains(a.t, handler, method, url, values, str) +func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...) +} + +// HTTPBodyNotContainsf asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...) } // HTTPError asserts that a specified handler returns an error status code. @@ -136,8 +360,23 @@ func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string // a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values) bool { - return HTTPError(a.t, handler, method, url, values) +func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPError(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPErrorf asserts that a specified handler returns an error status code. +// +// a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPErrorf(a.t, handler, method, url, values, msg, args...) } // HTTPRedirect asserts that a specified handler returns a redirect status code. @@ -145,8 +384,23 @@ func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url stri // a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values) bool { - return HTTPRedirect(a.t, handler, method, url, values) +func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPRedirect(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPRedirectf asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPRedirectf(a.t, handler, method, url, values, msg, args...) } // HTTPSuccess asserts that a specified handler returns a success status code. @@ -154,199 +408,549 @@ func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url s // a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) // // Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values) bool { - return HTTPSuccess(a.t, handler, method, url, values) +func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPSuccess(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPSuccessf asserts that a specified handler returns a success status code. +// +// a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPSuccessf(a.t, handler, method, url, values, msg, args...) } // Implements asserts that an object is implemented by the specified interface. // -// a.Implements((*MyInterface)(nil), new(MyObject), "MyObject") +// a.Implements((*MyInterface)(nil), new(MyObject)) func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Implements(a.t, interfaceObject, object, msgAndArgs...) } +// Implementsf asserts that an object is implemented by the specified interface. +// +// a.Implementsf((*MyInterface, "error message %s", "formatted")(nil), new(MyObject)) +func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Implementsf(a.t, interfaceObject, object, msg, args...) +} + // InDelta asserts that the two numerals are within delta of each other. // // a.InDelta(math.Pi, (22 / 7.0), 0.01) -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return InDelta(a.t, expected, actual, delta, msgAndArgs...) } +// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaMapValuesf(a.t, expected, actual, delta, msg, args...) +} + // InDeltaSlice is the same as InDelta, except it compares two slices. func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...) } -// InEpsilon asserts that expected and actual have a relative error less than epsilon +// InDeltaSlicef is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaSlicef(a.t, expected, actual, delta, msg, args...) +} + +// InDeltaf asserts that the two numerals are within delta of each other. // -// Returns whether the assertion was successful (true) or not (false). +// a.InDeltaf(math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01) +func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaf(a.t, expected, actual, delta, msg, args...) +} + +// InEpsilon asserts that expected and actual have a relative error less than epsilon func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...) } // InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return InEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...) } +// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices. +func (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...) +} + +// InEpsilonf asserts that expected and actual have a relative error less than epsilon +func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InEpsilonf(a.t, expected, actual, epsilon, msg, args...) +} + // IsType asserts that the specified objects are of the same type. func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return IsType(a.t, expectedType, object, msgAndArgs...) } +// IsTypef asserts that the specified objects are of the same type. +func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsTypef(a.t, expectedType, object, msg, args...) +} + // JSONEq asserts that two JSON strings are equivalent. // // a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return JSONEq(a.t, expected, actual, msgAndArgs...) } +// JSONEqf asserts that two JSON strings are equivalent. +// +// a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return JSONEqf(a.t, expected, actual, msg, args...) +} + // Len asserts that the specified object has specific length. // Len also fails if the object has a type that len() not accept. // -// a.Len(mySlice, 3, "The size of slice is not 3") -// -// Returns whether the assertion was successful (true) or not (false). +// a.Len(mySlice, 3) func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Len(a.t, object, length, msgAndArgs...) } +// Lenf asserts that the specified object has specific length. +// Lenf also fails if the object has a type that len() not accept. +// +// a.Lenf(mySlice, 3, "error message %s", "formatted") +func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Lenf(a.t, object, length, msg, args...) +} + // Nil asserts that the specified object is nil. // -// a.Nil(err, "err should be nothing") -// -// Returns whether the assertion was successful (true) or not (false). +// a.Nil(err) func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Nil(a.t, object, msgAndArgs...) } +// Nilf asserts that the specified object is nil. +// +// a.Nilf(err, "error message %s", "formatted") +func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Nilf(a.t, object, msg, args...) +} + // NoError asserts that a function returned no error (i.e. `nil`). // // actualObj, err := SomeFunction() // if a.NoError(err) { -// assert.Equal(t, actualObj, expectedObj) +// assert.Equal(t, expectedObj, actualObj) // } -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NoError(a.t, err, msgAndArgs...) } +// NoErrorf asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoErrorf(err, "error message %s", "formatted") { +// assert.Equal(t, expectedObj, actualObj) +// } +func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NoErrorf(a.t, err, msg, args...) +} + // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the // specified substring or element. // -// a.NotContains("Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") -// a.NotContains(["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") -// a.NotContains({"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") -// -// Returns whether the assertion was successful (true) or not (false). +// a.NotContains("Hello World", "Earth") +// a.NotContains(["Hello", "World"], "Earth") +// a.NotContains({"Hello": "World"}, "Earth") func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotContains(a.t, s, contains, msgAndArgs...) } +// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") +// a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") +// a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted") +func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotContainsf(a.t, s, contains, msg, args...) +} + // NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either // a slice or a channel with len == 0. // // if a.NotEmpty(obj) { // assert.Equal(t, "two", obj[1]) // } -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotEmpty(a.t, object, msgAndArgs...) } +// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmptyf(obj, "error message %s", "formatted") { +// assert.Equal(t, "two", obj[1]) +// } +func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotEmptyf(a.t, object, msg, args...) +} + // NotEqual asserts that the specified values are NOT equal. // -// a.NotEqual(obj1, obj2, "two objects shouldn't be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// a.NotEqual(obj1, obj2) // // Pointer variable equality is determined based on the equality of the // referenced values (as opposed to the memory addresses). func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotEqual(a.t, expected, actual, msgAndArgs...) } +// NotEqualf asserts that the specified values are NOT equal. +// +// a.NotEqualf(obj1, obj2, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotEqualf(a.t, expected, actual, msg, args...) +} + // NotNil asserts that the specified object is not nil. // -// a.NotNil(err, "err should be something") -// -// Returns whether the assertion was successful (true) or not (false). +// a.NotNil(err) func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotNil(a.t, object, msgAndArgs...) } +// NotNilf asserts that the specified object is not nil. +// +// a.NotNilf(err, "error message %s", "formatted") +func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotNilf(a.t, object, msg, args...) +} + // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. // -// a.NotPanics(func(){ -// RemainCalm() -// }, "Calling RemainCalm() should NOT panic") -// -// Returns whether the assertion was successful (true) or not (false). +// a.NotPanics(func(){ RemainCalm() }) func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotPanics(a.t, f, msgAndArgs...) } +// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted") +func (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotPanicsf(a.t, f, msg, args...) +} + // NotRegexp asserts that a specified regexp does not match a string. // // a.NotRegexp(regexp.MustCompile("starts"), "it's starting") // a.NotRegexp("^start", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotRegexp(a.t, rx, str, msgAndArgs...) } -// NotZero asserts that i is not the zero value for its type and returns the truth. +// NotRegexpf asserts that a specified regexp does not match a string. +// +// a.NotRegexpf(regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting") +// a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted") +func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotRegexpf(a.t, rx, str, msg, args...) +} + +// NotSubset asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotSubset(a.t, list, subset, msgAndArgs...) +} + +// NotSubsetf asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted") +func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotSubsetf(a.t, list, subset, msg, args...) +} + +// NotZero asserts that i is not the zero value for its type. func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return NotZero(a.t, i, msgAndArgs...) } +// NotZerof asserts that i is not the zero value for its type. +func (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotZerof(a.t, i, msg, args...) +} + // Panics asserts that the code inside the specified PanicTestFunc panics. // -// a.Panics(func(){ -// GoCrazy() -// }, "Calling GoCrazy() should panic") -// -// Returns whether the assertion was successful (true) or not (false). +// a.Panics(func(){ GoCrazy() }) func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Panics(a.t, f, msgAndArgs...) } +// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// a.PanicsWithValue("crazy error", func(){ GoCrazy() }) +func (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return PanicsWithValue(a.t, expected, f, msgAndArgs...) +} + +// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +func (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return PanicsWithValuef(a.t, expected, f, msg, args...) +} + +// Panicsf asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted") +func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Panicsf(a.t, f, msg, args...) +} + // Regexp asserts that a specified regexp matches a string. // // a.Regexp(regexp.MustCompile("start"), "it's starting") // a.Regexp("start...$", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Regexp(a.t, rx, str, msgAndArgs...) } +// Regexpf asserts that a specified regexp matches a string. +// +// a.Regexpf(regexp.MustCompile("start", "error message %s", "formatted"), "it's starting") +// a.Regexpf("start...$", "it's not starting", "error message %s", "formatted") +func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Regexpf(a.t, rx, str, msg, args...) +} + +// Subset asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Subset(a.t, list, subset, msgAndArgs...) +} + +// Subsetf asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted") +func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Subsetf(a.t, list, subset, msg, args...) +} + // True asserts that the specified value is true. // -// a.True(myBool, "myBool should be true") -// -// Returns whether the assertion was successful (true) or not (false). +// a.True(myBool) func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return True(a.t, value, msgAndArgs...) } +// Truef asserts that the specified value is true. +// +// a.Truef(myBool, "error message %s", "formatted") +func (a *Assertions) Truef(value bool, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Truef(a.t, value, msg, args...) +} + // WithinDuration asserts that the two times are within duration delta of each other. // -// a.WithinDuration(time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") -// -// Returns whether the assertion was successful (true) or not (false). +// a.WithinDuration(time.Now(), time.Now(), 10*time.Second) func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return WithinDuration(a.t, expected, actual, delta, msgAndArgs...) } -// Zero asserts that i is the zero value for its type and returns the truth. +// WithinDurationf asserts that the two times are within duration delta of each other. +// +// a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return WithinDurationf(a.t, expected, actual, delta, msg, args...) +} + +// Zero asserts that i is the zero value for its type. func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } return Zero(a.t, i, msgAndArgs...) } + +// Zerof asserts that i is the zero value for its type. +func (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Zerof(a.t, i, msg, args...) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl index 99f9acfb..188bb9e1 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl @@ -1,4 +1,5 @@ {{.CommentWithoutT "a"}} func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool { + if h, ok := a.t.(tHelper); ok { h.Helper() } return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) } diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go index d1552e5e..5bdec56c 100644 --- a/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -4,8 +4,10 @@ import ( "bufio" "bytes" "encoding/json" + "errors" "fmt" "math" + "os" "reflect" "regexp" "runtime" @@ -18,11 +20,29 @@ import ( "github.com/pmezard/go-difflib/difflib" ) +//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_format.go.tmpl + // TestingT is an interface wrapper around *testing.T type TestingT interface { Errorf(format string, args ...interface{}) } +// ComparisonAssertionFunc is a common function prototype when comparing two values. Can be useful +// for table driven tests. +type ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{}) bool + +// ValueAssertionFunc is a common function prototype when validating a single value. Can be useful +// for table driven tests. +type ValueAssertionFunc func(TestingT, interface{}, ...interface{}) bool + +// BoolAssertionFunc is a common function prototype when validating a bool value. Can be useful +// for table driven tests. +type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool + +// ValuesAssertionFunc is a common function prototype when validating an error value. Can be useful +// for table driven tests. +type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool + // Comparison a custom function that returns true on success and false on failure type Comparison func() (success bool) @@ -34,13 +54,23 @@ type Comparison func() (success bool) // // This function does no assertion of any kind. func ObjectsAreEqual(expected, actual interface{}) bool { - if expected == nil || actual == nil { return expected == actual } - return reflect.DeepEqual(expected, actual) + exp, ok := expected.([]byte) + if !ok { + return reflect.DeepEqual(expected, actual) + } + act, ok := actual.([]byte) + if !ok { + return false + } + if exp == nil || act == nil { + return exp == nil && act == nil + } + return bytes.Equal(exp, act) } // ObjectsAreEqualValues gets whether two objects are equal, or if their @@ -108,10 +138,12 @@ func CallerInfo() []string { } parts := strings.Split(file, "/") - dir := parts[len(parts)-2] file = parts[len(parts)-1] - if (dir != "assert" && dir != "mock" && dir != "require") || file == "mock_test.go" { - callers = append(callers, fmt.Sprintf("%s:%d", file, line)) + if len(parts) > 1 { + dir := parts[len(parts)-2] + if (dir != "assert" && dir != "mock" && dir != "require") || file == "mock_test.go" { + callers = append(callers, fmt.Sprintf("%s:%d", file, line)) + } } // Drop the package @@ -142,21 +174,6 @@ func isTest(name, prefix string) bool { return !unicode.IsLower(rune) } -// getWhitespaceString returns a string that is long enough to overwrite the default -// output from the go testing framework. -func getWhitespaceString() string { - - _, file, line, ok := runtime.Caller(1) - if !ok { - return "" - } - parts := strings.Split(file, "/") - file = parts[len(parts)-1] - - return strings.Repeat(" ", len(fmt.Sprintf("%s:%d: ", file, line))) - -} - func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { if len(msgAndArgs) == 0 || msgAndArgs == nil { return "" @@ -181,7 +198,7 @@ func indentMessageLines(message string, longestLabelLen int) string { // no need to align first line because it starts at the correct location (after the label) if i != 0 { // append alignLen+1 spaces to align with "{{longestLabel}}:" before adding tab - outBuf.WriteString("\n\r\t" + strings.Repeat(" ", longestLabelLen +1) + "\t") + outBuf.WriteString("\n\t" + strings.Repeat(" ", longestLabelLen+1) + "\t") } outBuf.WriteString(scanner.Text()) } @@ -195,6 +212,9 @@ type failNower interface { // FailNow fails test func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } Fail(t, failureMessage, msgAndArgs...) // We cannot extend TestingT with FailNow() and @@ -213,29 +233,39 @@ func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool // Fail reports a failure through func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } content := []labeledContent{ - {"Error Trace", strings.Join(CallerInfo(), "\n\r\t\t\t")}, + {"Error Trace", strings.Join(CallerInfo(), "\n\t\t\t")}, {"Error", failureMessage}, } + // Add test name if the Go version supports it + if n, ok := t.(interface { + Name() string + }); ok { + content = append(content, labeledContent{"Test", n.Name()}) + } + message := messageFromMsgAndArgs(msgAndArgs...) if len(message) > 0 { content = append(content, labeledContent{"Messages", message}) } - t.Errorf("\r" + getWhitespaceString() + labeledOutput(content...)) + t.Errorf("\n%s", ""+labeledOutput(content...)) return false } type labeledContent struct { - label string + label string content string } // labeledOutput returns a string consisting of the provided labeledContent. Each labeled output is appended in the following manner: // -// \r\t{{label}}:{{align_spaces}}\t{{content}}\n +// \t{{label}}:{{align_spaces}}\t{{content}}\n // // The initial carriage return is required to undo/erase any padding added by testing.T.Errorf. The "\t{{label}}:" is for the label. // If a label is shorter than the longest label provided, padding spaces are added to make all the labels match in length. Once this @@ -251,28 +281,35 @@ func labeledOutput(content ...labeledContent) string { } var output string for _, v := range content { - output += "\r\t" + v.label + ":" + strings.Repeat(" ", longestLabel-len(v.label)) + "\t" + indentMessageLines(v.content, longestLabel) + "\n" + output += "\t" + v.label + ":" + strings.Repeat(" ", longestLabel-len(v.label)) + "\t" + indentMessageLines(v.content, longestLabel) + "\n" } return output } // Implements asserts that an object is implemented by the specified interface. // -// assert.Implements(t, (*MyInterface)(nil), new(MyObject), "MyObject") +// assert.Implements(t, (*MyInterface)(nil), new(MyObject)) func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { - + if h, ok := t.(tHelper); ok { + h.Helper() + } interfaceType := reflect.TypeOf(interfaceObject).Elem() + if object == nil { + return Fail(t, fmt.Sprintf("Cannot check if nil implements %v", interfaceType), msgAndArgs...) + } if !reflect.TypeOf(object).Implements(interfaceType) { return Fail(t, fmt.Sprintf("%T must implement %v", object, interfaceType), msgAndArgs...) } return true - } // IsType asserts that the specified objects are of the same type. func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if !ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) { return Fail(t, fmt.Sprintf("Object expected to be of type %v, but was %v", reflect.TypeOf(expectedType), reflect.TypeOf(object)), msgAndArgs...) @@ -283,20 +320,26 @@ func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs // Equal asserts that two objects are equal. // -// assert.Equal(t, 123, 123, "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.Equal(t, 123, 123) // // Pointer variable equality is determined based on the equality of the -// referenced values (as opposed to the memory addresses). +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if err := validateEqualArgs(expected, actual); err != nil { + return Fail(t, fmt.Sprintf("Invalid operation: %#v == %#v (%s)", + expected, actual, err), msgAndArgs...) + } if !ObjectsAreEqual(expected, actual) { diff := diff(expected, actual) expected, actual = formatUnequalValues(expected, actual) return Fail(t, fmt.Sprintf("Not equal: \n"+ "expected: %s\n"+ - "received: %s%s", expected, actual, diff), msgAndArgs...) + "actual : %s%s", expected, actual, diff), msgAndArgs...) } return true @@ -322,35 +365,37 @@ func formatUnequalValues(expected, actual interface{}) (e string, a string) { // EqualValues asserts that two objects are equal or convertable to the same types // and equal. // -// assert.EqualValues(t, uint32(123), int32(123), "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.EqualValues(t, uint32(123), int32(123)) func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if !ObjectsAreEqualValues(expected, actual) { diff := diff(expected, actual) expected, actual = formatUnequalValues(expected, actual) return Fail(t, fmt.Sprintf("Not equal: \n"+ "expected: %s\n"+ - "received: %s%s", expected, actual, diff), msgAndArgs...) + "actual : %s%s", expected, actual, diff), msgAndArgs...) } return true } -// Exactly asserts that two objects are equal is value and type. +// Exactly asserts that two objects are equal in value and type. // -// assert.Exactly(t, int32(123), int64(123), "123 and 123 should NOT be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.Exactly(t, int32(123), int64(123)) func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } aType := reflect.TypeOf(expected) bType := reflect.TypeOf(actual) if aType != bType { - return Fail(t, fmt.Sprintf("Types expected to match exactly\n\r\t%v != %v", aType, bType), msgAndArgs...) + return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...) } return Equal(t, expected, actual, msgAndArgs...) @@ -359,10 +404,11 @@ func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{} // NotNil asserts that the specified object is not nil. // -// assert.NotNil(t, err, "err should be something") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.NotNil(t, err) func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if !isNil(object) { return true } @@ -386,85 +432,53 @@ func isNil(object interface{}) bool { // Nil asserts that the specified object is nil. // -// assert.Nil(t, err, "err should be nothing") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.Nil(t, err) func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if isNil(object) { return true } return Fail(t, fmt.Sprintf("Expected nil, but got: %#v", object), msgAndArgs...) } -var numericZeros = []interface{}{ - int(0), - int8(0), - int16(0), - int32(0), - int64(0), - uint(0), - uint8(0), - uint16(0), - uint32(0), - uint64(0), - float32(0), - float64(0), -} - // isEmpty gets whether the specified object is considered empty or not. func isEmpty(object interface{}) bool { + // get nil case out of the way if object == nil { return true - } else if object == "" { - return true - } else if object == false { - return true - } - - for _, v := range numericZeros { - if object == v { - return true - } } objValue := reflect.ValueOf(object) switch objValue.Kind() { - case reflect.Map: - fallthrough - case reflect.Slice, reflect.Chan: - { - return (objValue.Len() == 0) - } - case reflect.Struct: - switch object.(type) { - case time.Time: - return object.(time.Time).IsZero() - } + // collection types are empty when they have no element + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: + return objValue.Len() == 0 + // pointers are empty if nil or if the value they point to is empty case reflect.Ptr: - { - if objValue.IsNil() { - return true - } - switch object.(type) { - case *time.Time: - return object.(*time.Time).IsZero() - default: - return false - } + if objValue.IsNil() { + return true } + deref := objValue.Elem().Interface() + return isEmpty(deref) + // for all other types, compare against the zero value + default: + zero := reflect.Zero(objValue.Type()) + return reflect.DeepEqual(object, zero.Interface()) } - return false } // Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either // a slice or a channel with len == 0. // // assert.Empty(t, obj) -// -// Returns whether the assertion was successful (true) or not (false). func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } pass := isEmpty(object) if !pass { @@ -481,9 +495,10 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { // if assert.NotEmpty(t, obj) { // assert.Equal(t, "two", obj[1]) // } -// -// Returns whether the assertion was successful (true) or not (false). func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } pass := !isEmpty(object) if !pass { @@ -509,10 +524,11 @@ func getLen(x interface{}) (ok bool, length int) { // Len asserts that the specified object has specific length. // Len also fails if the object has a type that len() not accept. // -// assert.Len(t, mySlice, 3, "The size of slice is not 3") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.Len(t, mySlice, 3) func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } ok, l := getLen(object) if !ok { return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", object), msgAndArgs...) @@ -526,10 +542,16 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) // True asserts that the specified value is true. // -// assert.True(t, myBool, "myBool should be true") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.True(t, myBool) func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if h, ok := t.(interface { + Helper() + }); ok { + h.Helper() + } if value != true { return Fail(t, "Should be true", msgAndArgs...) @@ -541,10 +563,11 @@ func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { // False asserts that the specified value is false. // -// assert.False(t, myBool, "myBool should be false") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.False(t, myBool) func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if value != false { return Fail(t, "Should be false", msgAndArgs...) @@ -556,13 +579,18 @@ func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { // NotEqual asserts that the specified values are NOT equal. // -// assert.NotEqual(t, obj1, obj2, "two objects shouldn't be equal") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.NotEqual(t, obj1, obj2) // // Pointer variable equality is determined based on the equality of the // referenced values (as opposed to the memory addresses). func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if err := validateEqualArgs(expected, actual); err != nil { + return Fail(t, fmt.Sprintf("Invalid operation: %#v != %#v (%s)", + expected, actual, err), msgAndArgs...) + } if ObjectsAreEqual(expected, actual) { return Fail(t, fmt.Sprintf("Should not be: %#v\n", actual), msgAndArgs...) @@ -613,12 +641,13 @@ func includeElement(list interface{}, element interface{}) (ok, found bool) { // Contains asserts that the specified string, list(array, slice...) or map contains the // specified substring or element. // -// assert.Contains(t, "Hello World", "World", "But 'Hello World' does contain 'World'") -// assert.Contains(t, ["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") -// assert.Contains(t, {"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.Contains(t, "Hello World", "World") +// assert.Contains(t, ["Hello", "World"], "World") +// assert.Contains(t, {"Hello": "World"}, "Hello") func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } ok, found := includeElement(s, contains) if !ok { @@ -635,12 +664,13 @@ func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bo // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the // specified substring or element. // -// assert.NotContains(t, "Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") -// assert.NotContains(t, ["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") -// assert.NotContains(t, {"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.NotContains(t, "Hello World", "Earth") +// assert.NotContains(t, ["Hello", "World"], "Earth") +// assert.NotContains(t, {"Hello": "World"}, "Earth") func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } ok, found := includeElement(s, contains) if !ok { @@ -654,8 +684,156 @@ func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) } +// Subset asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if subset == nil { + return true // we consider nil to be equal to the nil set + } + + subsetValue := reflect.ValueOf(subset) + defer func() { + if e := recover(); e != nil { + ok = false + } + }() + + listKind := reflect.TypeOf(list).Kind() + subsetKind := reflect.TypeOf(subset).Kind() + + if listKind != reflect.Array && listKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", list, listKind), msgAndArgs...) + } + + if subsetKind != reflect.Array && subsetKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", subset, subsetKind), msgAndArgs...) + } + + for i := 0; i < subsetValue.Len(); i++ { + element := subsetValue.Index(i).Interface() + ok, found := includeElement(list, element) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", list), msgAndArgs...) + } + if !found { + return Fail(t, fmt.Sprintf("\"%s\" does not contain \"%s\"", list, element), msgAndArgs...) + } + } + + return true +} + +// NotSubset asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if subset == nil { + return Fail(t, fmt.Sprintf("nil is the empty set which is a subset of every set"), msgAndArgs...) + } + + subsetValue := reflect.ValueOf(subset) + defer func() { + if e := recover(); e != nil { + ok = false + } + }() + + listKind := reflect.TypeOf(list).Kind() + subsetKind := reflect.TypeOf(subset).Kind() + + if listKind != reflect.Array && listKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", list, listKind), msgAndArgs...) + } + + if subsetKind != reflect.Array && subsetKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", subset, subsetKind), msgAndArgs...) + } + + for i := 0; i < subsetValue.Len(); i++ { + element := subsetValue.Index(i).Interface() + ok, found := includeElement(list, element) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", list), msgAndArgs...) + } + if !found { + return true + } + } + + return Fail(t, fmt.Sprintf("%q is a subset of %q", subset, list), msgAndArgs...) +} + +// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// assert.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2]) +func ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if isEmpty(listA) && isEmpty(listB) { + return true + } + + aKind := reflect.TypeOf(listA).Kind() + bKind := reflect.TypeOf(listB).Kind() + + if aKind != reflect.Array && aKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind), msgAndArgs...) + } + + if bKind != reflect.Array && bKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind), msgAndArgs...) + } + + aValue := reflect.ValueOf(listA) + bValue := reflect.ValueOf(listB) + + aLen := aValue.Len() + bLen := bValue.Len() + + if aLen != bLen { + return Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen), msgAndArgs...) + } + + // Mark indexes in bValue that we already used + visited := make([]bool, bLen) + for i := 0; i < aLen; i++ { + element := aValue.Index(i).Interface() + found := false + for j := 0; j < bLen; j++ { + if visited[j] { + continue + } + if ObjectsAreEqual(bValue.Index(j).Interface(), element) { + visited[j] = true + found = true + break + } + } + if !found { + return Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue), msgAndArgs...) + } + } + + return true +} + // Condition uses a Comparison to assert a complex condition. func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } result := comp() if !result { Fail(t, "Condition failed!", msgAndArgs...) @@ -691,15 +869,34 @@ func didPanic(f PanicTestFunc) (bool, interface{}) { // Panics asserts that the code inside the specified PanicTestFunc panics. // -// assert.Panics(t, func(){ -// GoCrazy() -// }, "Calling GoCrazy() should panic") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.Panics(t, func(){ GoCrazy() }) func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if funcDidPanic, panicValue := didPanic(f); !funcDidPanic { - return Fail(t, fmt.Sprintf("func %#v should panic\n\r\tPanic value:\t%v", f, panicValue), msgAndArgs...) + return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...) + } + + return true +} + +// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) +func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + funcDidPanic, panicValue := didPanic(f) + if !funcDidPanic { + return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...) + } + if panicValue != expected { + return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v", f, expected, panicValue), msgAndArgs...) } return true @@ -707,15 +904,14 @@ func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. // -// assert.NotPanics(t, func(){ -// RemainCalm() -// }, "Calling RemainCalm() should NOT panic") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.NotPanics(t, func(){ RemainCalm() }) func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if funcDidPanic, panicValue := didPanic(f); funcDidPanic { - return Fail(t, fmt.Sprintf("func %#v should not panic\n\r\tPanic value:\t%v", f, panicValue), msgAndArgs...) + return Fail(t, fmt.Sprintf("func %#v should not panic\n\tPanic value:\t%v", f, panicValue), msgAndArgs...) } return true @@ -723,10 +919,11 @@ func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { // WithinDuration asserts that the two times are within duration delta of each other. // -// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) func WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } dt := expected.Sub(actual) if dt < -delta || dt > delta { @@ -763,6 +960,8 @@ func toFloat(x interface{}) (float64, bool) { xf = float64(xn) case float64: xf = float64(xn) + case time.Duration: + xf = float64(xn) default: xok = false } @@ -773,9 +972,10 @@ func toFloat(x interface{}) (float64, bool) { // InDelta asserts that the two numerals are within delta of each other. // // assert.InDelta(t, math.Pi, (22 / 7.0), 0.01) -// -// Returns whether the assertion was successful (true) or not (false). func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } af, aok := toFloat(expected) bf, bok := toFloat(actual) @@ -785,7 +985,7 @@ func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs } if math.IsNaN(af) { - return Fail(t, fmt.Sprintf("Actual must not be NaN"), msgAndArgs...) + return Fail(t, fmt.Sprintf("Expected must not be NaN"), msgAndArgs...) } if math.IsNaN(bf) { @@ -802,6 +1002,9 @@ func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs // InDeltaSlice is the same as InDelta, except it compares two slices. func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if expected == nil || actual == nil || reflect.TypeOf(actual).Kind() != reflect.Slice || reflect.TypeOf(expected).Kind() != reflect.Slice { @@ -812,7 +1015,7 @@ func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAn expectedSlice := reflect.ValueOf(expected) for i := 0; i < actualSlice.Len(); i++ { - result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta) + result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...) if !result { return result } @@ -821,6 +1024,50 @@ func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAn return true } +// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func InDeltaMapValues(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if expected == nil || actual == nil || + reflect.TypeOf(actual).Kind() != reflect.Map || + reflect.TypeOf(expected).Kind() != reflect.Map { + return Fail(t, "Arguments must be maps", msgAndArgs...) + } + + expectedMap := reflect.ValueOf(expected) + actualMap := reflect.ValueOf(actual) + + if expectedMap.Len() != actualMap.Len() { + return Fail(t, "Arguments must have the same number of keys", msgAndArgs...) + } + + for _, k := range expectedMap.MapKeys() { + ev := expectedMap.MapIndex(k) + av := actualMap.MapIndex(k) + + if !ev.IsValid() { + return Fail(t, fmt.Sprintf("missing key %q in expected map", k), msgAndArgs...) + } + + if !av.IsValid() { + return Fail(t, fmt.Sprintf("missing key %q in actual map", k), msgAndArgs...) + } + + if !InDelta( + t, + ev.Interface(), + av.Interface(), + delta, + msgAndArgs..., + ) { + return false + } + } + + return true +} + func calcRelativeError(expected, actual interface{}) (float64, error) { af, aok := toFloat(expected) if !aok { @@ -831,23 +1078,24 @@ func calcRelativeError(expected, actual interface{}) (float64, error) { } bf, bok := toFloat(actual) if !bok { - return 0, fmt.Errorf("expected value %q cannot be converted to float", actual) + return 0, fmt.Errorf("actual value %q cannot be converted to float", actual) } return math.Abs(af-bf) / math.Abs(af), nil } // InEpsilon asserts that expected and actual have a relative error less than epsilon -// -// Returns whether the assertion was successful (true) or not (false). func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } actualEpsilon, err := calcRelativeError(expected, actual) if err != nil { return Fail(t, err.Error(), msgAndArgs...) } if actualEpsilon > epsilon { return Fail(t, fmt.Sprintf("Relative error is too high: %#v (expected)\n"+ - " < %#v (actual)", actualEpsilon, epsilon), msgAndArgs...) + " < %#v (actual)", epsilon, actualEpsilon), msgAndArgs...) } return true @@ -855,6 +1103,9 @@ func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAnd // InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if expected == nil || actual == nil || reflect.TypeOf(actual).Kind() != reflect.Slice || reflect.TypeOf(expected).Kind() != reflect.Slice { @@ -882,11 +1133,12 @@ func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, m // // actualObj, err := SomeFunction() // if assert.NoError(t, err) { -// assert.Equal(t, actualObj, expectedObj) +// assert.Equal(t, expectedObj, actualObj) // } -// -// Returns whether the assertion was successful (true) or not (false). func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if err != nil { return Fail(t, fmt.Sprintf("Received unexpected error:\n%+v", err), msgAndArgs...) } @@ -897,12 +1149,13 @@ func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { // Error asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() -// if assert.Error(t, err, "An error was expected") { -// assert.Equal(t, err, expectedError) +// if assert.Error(t, err) { +// assert.Equal(t, expectedError, err) // } -// -// Returns whether the assertion was successful (true) or not (false). func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if err == nil { return Fail(t, "An error is expected but got nil.", msgAndArgs...) @@ -915,10 +1168,11 @@ func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { // and that it is equal to the provided error. // // actualObj, err := SomeFunction() -// assert.EqualError(t, err, expectedErrorString, "An error was expected") -// -// Returns whether the assertion was successful (true) or not (false). +// assert.EqualError(t, err, expectedErrorString) func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if !Error(t, theError, msgAndArgs...) { return false } @@ -928,7 +1182,7 @@ func EqualError(t TestingT, theError error, errString string, msgAndArgs ...inte if expected != actual { return Fail(t, fmt.Sprintf("Error message not equal:\n"+ "expected: %q\n"+ - "received: %q", expected, actual), msgAndArgs...) + "actual : %q", expected, actual), msgAndArgs...) } return true } @@ -951,9 +1205,10 @@ func matchRegexp(rx interface{}, str interface{}) bool { // // assert.Regexp(t, regexp.MustCompile("start"), "it's starting") // assert.Regexp(t, "start...$", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } match := matchRegexp(rx, str) @@ -968,9 +1223,10 @@ func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface // // assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") // assert.NotRegexp(t, "^start", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } match := matchRegexp(rx, str) if match { @@ -981,28 +1237,71 @@ func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interf } -// Zero asserts that i is the zero value for its type and returns the truth. +// Zero asserts that i is the zero value for its type. func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if i != nil && !reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { return Fail(t, fmt.Sprintf("Should be zero, but was %v", i), msgAndArgs...) } return true } -// NotZero asserts that i is not the zero value for its type and returns the truth. +// NotZero asserts that i is not the zero value for its type. func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } if i == nil || reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { return Fail(t, fmt.Sprintf("Should not be zero, but was %v", i), msgAndArgs...) } return true } +// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + info, err := os.Lstat(path) + if err != nil { + if os.IsNotExist(err) { + return Fail(t, fmt.Sprintf("unable to find file %q", path), msgAndArgs...) + } + return Fail(t, fmt.Sprintf("error when running os.Lstat(%q): %s", path, err), msgAndArgs...) + } + if info.IsDir() { + return Fail(t, fmt.Sprintf("%q is a directory", path), msgAndArgs...) + } + return true +} + +// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + info, err := os.Lstat(path) + if err != nil { + if os.IsNotExist(err) { + return Fail(t, fmt.Sprintf("unable to find file %q", path), msgAndArgs...) + } + return Fail(t, fmt.Sprintf("error when running os.Lstat(%q): %s", path, err), msgAndArgs...) + } + if !info.IsDir() { + return Fail(t, fmt.Sprintf("%q is a file", path), msgAndArgs...) + } + return true +} + // JSONEq asserts that two JSON strings are equivalent. // // assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) -// -// Returns whether the assertion was successful (true) or not (false). func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } var expectedJSONAsInterface, actualJSONAsInterface interface{} if err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil { @@ -1041,12 +1340,18 @@ func diff(expected interface{}, actual interface{}) string { return "" } - if ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array { + if ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array && ek != reflect.String { return "" } - e := spewConfig.Sdump(expected) - a := spewConfig.Sdump(actual) + var e, a string + if ek != reflect.String { + e = spewConfig.Sdump(expected) + a = spewConfig.Sdump(actual) + } else { + e = expected.(string) + a = actual.(string) + } diff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{ A: difflib.SplitLines(e), @@ -1061,9 +1366,29 @@ func diff(expected interface{}, actual interface{}) string { return "\n\nDiff:\n" + diff } +// validateEqualArgs checks whether provided arguments can be safely used in the +// Equal/NotEqual functions. +func validateEqualArgs(expected, actual interface{}) error { + if isFunction(expected) || isFunction(actual) { + return errors.New("cannot take func type as argument") + } + return nil +} + +func isFunction(arg interface{}) bool { + if arg == nil { + return false + } + return reflect.TypeOf(arg).Kind() == reflect.Func +} + var spewConfig = spew.ConfigState{ Indent: " ", DisablePointerAddresses: true, DisableCapacities: true, SortKeys: true, } + +type tHelper interface { + Helper() +} diff --git a/vendor/github.com/stretchr/testify/assert/forward_assertions.go b/vendor/github.com/stretchr/testify/assert/forward_assertions.go index b867e95e..9ad56851 100644 --- a/vendor/github.com/stretchr/testify/assert/forward_assertions.go +++ b/vendor/github.com/stretchr/testify/assert/forward_assertions.go @@ -13,4 +13,4 @@ func New(t TestingT) *Assertions { } } -//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl +//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go index fa7ab89b..df46fa77 100644 --- a/vendor/github.com/stretchr/testify/assert/http_assertions.go +++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go @@ -8,16 +8,17 @@ import ( "strings" ) -// httpCode is a helper that returns HTTP code of the response. It returns -1 -// if building a new request fails. -func httpCode(handler http.HandlerFunc, method, url string, values url.Values) int { +// httpCode is a helper that returns HTTP code of the response. It returns -1 and +// an error if building a new request fails. +func httpCode(handler http.HandlerFunc, method, url string, values url.Values) (int, error) { w := httptest.NewRecorder() - req, err := http.NewRequest(method, url+"?"+values.Encode(), nil) + req, err := http.NewRequest(method, url, nil) if err != nil { - return -1 + return -1, err } + req.URL.RawQuery = values.Encode() handler(w, req) - return w.Code + return w.Code, nil } // HTTPSuccess asserts that a specified handler returns a success status code. @@ -25,12 +26,22 @@ func httpCode(handler http.HandlerFunc, method, url string, values url.Values) i // assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) // // Returns whether the assertion was successful (true) or not (false). -func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { - code := httpCode(handler, method, url, values) - if code == -1 { +func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + code, err := httpCode(handler, method, url, values) + if err != nil { + Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err)) return false } - return code >= http.StatusOK && code <= http.StatusPartialContent + + isSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent + if !isSuccessCode { + Fail(t, fmt.Sprintf("Expected HTTP success status code for %q but received %d", url+"?"+values.Encode(), code)) + } + + return isSuccessCode } // HTTPRedirect asserts that a specified handler returns a redirect status code. @@ -38,12 +49,22 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, value // assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). -func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { - code := httpCode(handler, method, url, values) - if code == -1 { +func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + code, err := httpCode(handler, method, url, values) + if err != nil { + Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err)) return false } - return code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect + + isRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect + if !isRedirectCode { + Fail(t, fmt.Sprintf("Expected HTTP redirect status code for %q but received %d", url+"?"+values.Encode(), code)) + } + + return isRedirectCode } // HTTPError asserts that a specified handler returns an error status code. @@ -51,12 +72,22 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, valu // assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). -func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { - code := httpCode(handler, method, url, values) - if code == -1 { +func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + code, err := httpCode(handler, method, url, values) + if err != nil { + Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err)) return false } - return code >= http.StatusBadRequest + + isErrorCode := code >= http.StatusBadRequest + if !isErrorCode { + Fail(t, fmt.Sprintf("Expected HTTP error status code for %q but received %d", url+"?"+values.Encode(), code)) + } + + return isErrorCode } // HTTPBody is a helper that returns HTTP body of the response. It returns @@ -74,10 +105,13 @@ func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) s // HTTPBodyContains asserts that a specified handler returns a // body that contains a string. // -// assert.HTTPBodyContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") // // Returns whether the assertion was successful (true) or not (false). -func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}) bool { +func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } body := HTTPBody(handler, method, url, values) contains := strings.Contains(body, fmt.Sprint(str)) @@ -91,10 +125,13 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, // HTTPBodyNotContains asserts that a specified handler returns a // body that does not contain a string. // -// assert.HTTPBodyNotContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") // // Returns whether the assertion was successful (true) or not (false). -func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}) bool { +func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } body := HTTPBody(handler, method, url, values) contains := strings.Contains(body, fmt.Sprint(str)) diff --git a/vendor/github.com/xenolf/lego/acme/challenges.go b/vendor/github.com/xenolf/lego/acme/challenges.go index 85790050..cf7bd7f7 100644 --- a/vendor/github.com/xenolf/lego/acme/challenges.go +++ b/vendor/github.com/xenolf/lego/acme/challenges.go @@ -7,9 +7,6 @@ const ( // HTTP01 is the "http-01" ACME challenge https://github.com/ietf-wg-acme/acme/blob/master/draft-ietf-acme-acme.md#http // Note: HTTP01ChallengePath returns the URL path to fulfill this challenge HTTP01 = Challenge("http-01") - // TLSSNI01 is the "tls-sni-01" ACME challenge https://github.com/ietf-wg-acme/acme/blob/master/draft-ietf-acme-acme.md#tls-with-server-name-indication-tls-sni - // Note: TLSSNI01ChallengeCert returns a certificate to fulfill this challenge - TLSSNI01 = Challenge("tls-sni-01") // DNS01 is the "dns-01" ACME challenge https://github.com/ietf-wg-acme/acme/blob/master/draft-ietf-acme-acme.md#dns // Note: DNS01Record returns a DNS record which will fulfill this challenge DNS01 = Challenge("dns-01") diff --git a/vendor/github.com/xenolf/lego/acme/client.go b/vendor/github.com/xenolf/lego/acme/client.go index bcb84437..a9e34608 100644 --- a/vendor/github.com/xenolf/lego/acme/client.go +++ b/vendor/github.com/xenolf/lego/acme/client.go @@ -5,22 +5,16 @@ import ( "crypto" "crypto/x509" "encoding/base64" - "encoding/json" "errors" "fmt" "io/ioutil" - "log" "net" - "net/http" "regexp" "strconv" "strings" "time" -) -var ( - // Logger is an optional custom logger. - Logger *log.Logger + "github.com/xenolf/lego/log" ) const ( @@ -33,16 +27,6 @@ const ( overallRequestLimit = 18 ) -// logf writes a log entry. It uses Logger if not -// nil, otherwise it uses the default log.Logger. -func logf(format string, args ...interface{}) { - if Logger != nil { - Logger.Printf(format, args...) - } else { - log.Printf(format, args...) - } -} - // User interface is to be implemented by users of this library. // It is used by the client type to get user specific information. type User interface { @@ -82,27 +66,23 @@ func NewClient(caDirURL string, user User, keyType KeyType) (*Client, error) { return nil, fmt.Errorf("get directory at '%s': %v", caDirURL, err) } - if dir.NewRegURL == "" { + if dir.NewAccountURL == "" { return nil, errors.New("directory missing new registration URL") } - if dir.NewAuthzURL == "" { - return nil, errors.New("directory missing new authz URL") - } - if dir.NewCertURL == "" { - return nil, errors.New("directory missing new certificate URL") - } - if dir.RevokeCertURL == "" { - return nil, errors.New("directory missing revoke certificate URL") + if dir.NewOrderURL == "" { + return nil, errors.New("directory missing new order URL") } - jws := &jws{privKey: privKey, directoryURL: caDirURL} + jws := &jws{privKey: privKey, getNonceURL: dir.NewNonceURL} + if reg := user.GetRegistration(); reg != nil { + jws.kid = reg.URI + } // REVIEW: best possibility? // Add all available solvers with the right index as per ACME // spec to this map. Otherwise they won`t be found. solvers := make(map[Challenge]solver) solvers[HTTP01] = &httpChallenge{jws: jws, validate: validate, provider: &HTTPProviderServer{}} - solvers[TLSSNI01] = &tlsSNIChallenge{jws: jws, validate: validate, provider: &TLSProviderServer{}} return &Client{directory: dir, user: user, jws: jws, keyType: keyType, solvers: solvers}, nil } @@ -112,8 +92,6 @@ func (c *Client) SetChallengeProvider(challenge Challenge, p ChallengeProvider) switch challenge { case HTTP01: c.solvers[challenge] = &httpChallenge{jws: c.jws, validate: validate, provider: p} - case TLSSNI01: - c.solvers[challenge] = &tlsSNIChallenge{jws: c.jws, validate: validate, provider: p} case DNS01: c.solvers[challenge] = &dnsChallenge{jws: c.jws, validate: validate, provider: p} default: @@ -141,24 +119,6 @@ func (c *Client) SetHTTPAddress(iface string) error { return nil } -// SetTLSAddress specifies a custom interface:port to be used for TLS based challenges. -// If this option is not used, the default port 443 and all interfaces will be used. -// To only specify a port and no interface use the ":port" notation. -// -// NOTE: This REPLACES any custom TLS-SNI provider previously set by calling -// c.SetChallengeProvider with the default TLS-SNI challenge provider. -func (c *Client) SetTLSAddress(iface string) error { - host, port, err := net.SplitHostPort(iface) - if err != nil { - return err - } - - if chlng, ok := c.solvers[TLSSNI01]; ok { - chlng.(*tlsSNIChallenge).provider = NewTLSProviderServer(host, port) - } - return nil -} - // ExcludeChallenges explicitly removes challenges from the pool for solving. func (c *Client) ExcludeChallenges(challenges []Challenge) { // Loop through all challenges and delete the requested one if found. @@ -167,80 +127,138 @@ func (c *Client) ExcludeChallenges(challenges []Challenge) { } } +// GetToSURL returns the current ToS URL from the Directory +func (c *Client) GetToSURL() string { + return c.directory.Meta.TermsOfService +} + +// GetExternalAccountRequired returns the External Account Binding requirement of the Directory +func (c *Client) GetExternalAccountRequired() bool { + return c.directory.Meta.ExternalAccountRequired +} + // Register the current account to the ACME server. -func (c *Client) Register() (*RegistrationResource, error) { +func (c *Client) Register(tosAgreed bool) (*RegistrationResource, error) { if c == nil || c.user == nil { return nil, errors.New("acme: cannot register a nil client or user") } - logf("[INFO] acme: Registering account for %s", c.user.GetEmail()) + log.Printf("[INFO] acme: Registering account for %s", c.user.GetEmail()) - regMsg := registrationMessage{ - Resource: "new-reg", - } + accMsg := accountMessage{} if c.user.GetEmail() != "" { - regMsg.Contact = []string{"mailto:" + c.user.GetEmail()} + accMsg.Contact = []string{"mailto:" + c.user.GetEmail()} } else { - regMsg.Contact = []string{} + accMsg.Contact = []string{} } + accMsg.TermsOfServiceAgreed = tosAgreed - var serverReg Registration - var regURI string - hdr, err := postJSON(c.jws, c.directory.NewRegURL, regMsg, &serverReg) + var serverReg accountMessage + hdr, err := postJSON(c.jws, c.directory.NewAccountURL, accMsg, &serverReg) if err != nil { remoteErr, ok := err.(RemoteError) if ok && remoteErr.StatusCode == 409 { - regURI = hdr.Get("Location") - regMsg = registrationMessage{ - Resource: "reg", - } - if hdr, err = postJSON(c.jws, regURI, regMsg, &serverReg); err != nil { - return nil, err - } } else { return nil, err } } - reg := &RegistrationResource{Body: serverReg} - - links := parseLinks(hdr["Link"]) - - if regURI == "" { - regURI = hdr.Get("Location") - } - reg.URI = regURI - if links["terms-of-service"] != "" { - reg.TosURL = links["terms-of-service"] - } - - if links["next"] != "" { - reg.NewAuthzURL = links["next"] - } else { - return nil, errors.New("acme: The server did not return 'next' link to proceed") + reg := &RegistrationResource{ + URI: hdr.Get("Location"), + Body: serverReg, } + c.jws.kid = reg.URI return reg, nil } +// RegisterWithExternalAccountBinding Register the current account to the ACME server. +func (c *Client) RegisterWithExternalAccountBinding(tosAgreed bool, kid string, hmacEncoded string) (*RegistrationResource, error) { + if c == nil || c.user == nil { + return nil, errors.New("acme: cannot register a nil client or user") + } + log.Printf("[INFO] acme: Registering account (EAB) for %s", c.user.GetEmail()) + + accMsg := accountMessage{} + if c.user.GetEmail() != "" { + accMsg.Contact = []string{"mailto:" + c.user.GetEmail()} + } else { + accMsg.Contact = []string{} + } + accMsg.TermsOfServiceAgreed = tosAgreed + + hmac, err := base64.RawURLEncoding.DecodeString(hmacEncoded) + if err != nil { + return nil, fmt.Errorf("acme: could not decode hmac key: %s", err.Error()) + } + + eabJWS, err := c.jws.signEABContent(c.directory.NewAccountURL, kid, hmac) + if err != nil { + return nil, fmt.Errorf("acme: error signing eab content: %s", err.Error()) + } + + eabPayload := eabJWS.FullSerialize() + + accMsg.ExternalAccountBinding = []byte(eabPayload) + + var serverReg accountMessage + hdr, err := postJSON(c.jws, c.directory.NewAccountURL, accMsg, &serverReg) + if err != nil { + remoteErr, ok := err.(RemoteError) + if ok && remoteErr.StatusCode == 409 { + } else { + return nil, err + } + } + + reg := &RegistrationResource{ + URI: hdr.Get("Location"), + Body: serverReg, + } + c.jws.kid = reg.URI + + return reg, nil +} + +// ResolveAccountByKey will attempt to look up an account using the given account key +// and return its registration resource. +func (c *Client) ResolveAccountByKey() (*RegistrationResource, error) { + log.Printf("[INFO] acme: Trying to resolve account by key") + + acc := accountMessage{OnlyReturnExisting: true} + hdr, err := postJSON(c.jws, c.directory.NewAccountURL, acc, nil) + if err != nil { + return nil, err + } + + accountLink := hdr.Get("Location") + if accountLink == "" { + return nil, errors.New("Server did not return the account link") + } + + var retAccount accountMessage + c.jws.kid = accountLink + _, err = postJSON(c.jws, accountLink, accountMessage{}, &retAccount) + if err != nil { + return nil, err + } + + return &RegistrationResource{URI: accountLink, Body: retAccount}, nil +} + // DeleteRegistration deletes the client's user registration from the ACME // server. func (c *Client) DeleteRegistration() error { if c == nil || c.user == nil { return errors.New("acme: cannot unregister a nil client or user") } - logf("[INFO] acme: Deleting account for %s", c.user.GetEmail()) + log.Printf("[INFO] acme: Deleting account for %s", c.user.GetEmail()) - regMsg := registrationMessage{ - Resource: "reg", - Delete: true, + accMsg := accountMessage{ + Status: "deactivated", } - _, err := postJSON(c.jws, c.user.GetRegistration().URI, regMsg, nil) - if err != nil { - return err - } - - return nil + _, err := postJSON(c.jws, c.user.GetRegistration().URI, accMsg, nil) + return err } // QueryRegistration runs a POST request on the client's registration and @@ -253,48 +271,25 @@ func (c *Client) QueryRegistration() (*RegistrationResource, error) { return nil, errors.New("acme: cannot query the registration of a nil client or user") } // Log the URL here instead of the email as the email may not be set - logf("[INFO] acme: Querying account for %s", c.user.GetRegistration().URI) + log.Printf("[INFO] acme: Querying account for %s", c.user.GetRegistration().URI) - regMsg := registrationMessage{ - Resource: "reg", - } + accMsg := accountMessage{} - var serverReg Registration - hdr, err := postJSON(c.jws, c.user.GetRegistration().URI, regMsg, &serverReg) + var serverReg accountMessage + _, err := postJSON(c.jws, c.user.GetRegistration().URI, accMsg, &serverReg) if err != nil { return nil, err } reg := &RegistrationResource{Body: serverReg} - links := parseLinks(hdr["Link"]) // Location: header is not returned so this needs to be populated off of // existing URI reg.URI = c.user.GetRegistration().URI - if links["terms-of-service"] != "" { - reg.TosURL = links["terms-of-service"] - } - - if links["next"] != "" { - reg.NewAuthzURL = links["next"] - } else { - return nil, errors.New("acme: No new-authz link in response to registration query") - } return reg, nil } -// AgreeToTOS updates the Client registration and sends the agreement to -// the server. -func (c *Client) AgreeToTOS() error { - reg := c.user.GetRegistration() - - reg.Body.Agreement = c.user.GetRegistration().TosURL - reg.Body.Resource = "reg" - _, err := postJSON(c.jws, c.user.GetRegistration().URI, c.user.GetRegistration().Body, nil) - return err -} - // ObtainCertificateForCSR tries to obtain a certificate matching the CSR passed into it. // The domains are inferred from the CommonName and SubjectAltNames, if any. The private key // for this CSR is not required. @@ -302,7 +297,7 @@ func (c *Client) AgreeToTOS() error { // your issued certificate as a bundle. // This function will never return a partial certificate. If one domain in the list fails, // the whole certificate will fail. -func (c *Client) ObtainCertificateForCSR(csr x509.CertificateRequest, bundle bool) (CertificateResource, map[string]error) { +func (c *Client) ObtainCertificateForCSR(csr x509.CertificateRequest, bundle bool) (*CertificateResource, error) { // figure out what domains it concerns // start with the common name domains := []string{csr.Subject.CommonName} @@ -322,40 +317,49 @@ DNSNames: } if bundle { - logf("[INFO][%s] acme: Obtaining bundled SAN certificate given a CSR", strings.Join(domains, ", ")) + log.Printf("[INFO][%s] acme: Obtaining bundled SAN certificate given a CSR", strings.Join(domains, ", ")) } else { - logf("[INFO][%s] acme: Obtaining SAN certificate given a CSR", strings.Join(domains, ", ")) + log.Printf("[INFO][%s] acme: Obtaining SAN certificate given a CSR", strings.Join(domains, ", ")) } - challenges, failures := c.getChallenges(domains) - // If any challenge fails - return. Do not generate partial SAN certificates. - if len(failures) > 0 { - for _, auth := range challenges { - c.disableAuthz(auth) - } - - return CertificateResource{}, failures - } - - errs := c.solveChallenges(challenges) - // If any challenge fails - return. Do not generate partial SAN certificates. - if len(errs) > 0 { - return CertificateResource{}, errs - } - - logf("[INFO][%s] acme: Validations succeeded; requesting certificates", strings.Join(domains, ", ")) - - cert, err := c.requestCertificateForCsr(challenges, bundle, csr.Raw, nil) + order, err := c.createOrderForIdentifiers(domains) if err != nil { - for _, chln := range challenges { - failures[chln.Domain] = err + return nil, err + } + authz, err := c.getAuthzForOrder(order) + if err != nil { + // If any challenge fails, return. Do not generate partial SAN certificates. + /*for _, auth := range authz { + c.disableAuthz(auth) + }*/ + return nil, err + } + + err = c.solveChallengeForAuthz(authz) + if err != nil { + // If any challenge fails, return. Do not generate partial SAN certificates. + return nil, err + } + + log.Printf("[INFO][%s] acme: Validations succeeded; requesting certificates", strings.Join(domains, ", ")) + + failures := make(ObtainError) + cert, err := c.requestCertificateForCsr(order, bundle, csr.Raw, nil) + if err != nil { + for _, chln := range authz { + failures[chln.Identifier.Value] = err } } // Add the CSR to the certificate so that it can be used for renewals. cert.CSR = pemEncode(&csr) - return cert, failures + // do not return an empty failures map, because + // it would still be a non-nil error value + if len(failures) > 0 { + return cert, failures + } + return cert, nil } // ObtainCertificate tries to obtain a single certificate using all domains passed into it. @@ -367,39 +371,52 @@ DNSNames: // your issued certificate as a bundle. // This function will never return a partial certificate. If one domain in the list fails, // the whole certificate will fail. -func (c *Client) ObtainCertificate(domains []string, bundle bool, privKey crypto.PrivateKey, mustStaple bool) (CertificateResource, map[string]error) { +func (c *Client) ObtainCertificate(domains []string, bundle bool, privKey crypto.PrivateKey, mustStaple bool) (*CertificateResource, error) { + if len(domains) == 0 { + return nil, errors.New("No domains to obtain a certificate for") + } + if bundle { - logf("[INFO][%s] acme: Obtaining bundled SAN certificate", strings.Join(domains, ", ")) + log.Printf("[INFO][%s] acme: Obtaining bundled SAN certificate", strings.Join(domains, ", ")) } else { - logf("[INFO][%s] acme: Obtaining SAN certificate", strings.Join(domains, ", ")) + log.Printf("[INFO][%s] acme: Obtaining SAN certificate", strings.Join(domains, ", ")) } - challenges, failures := c.getChallenges(domains) - // If any challenge fails - return. Do not generate partial SAN certificates. - if len(failures) > 0 { - for _, auth := range challenges { - c.disableAuthz(auth) - } - - return CertificateResource{}, failures - } - - errs := c.solveChallenges(challenges) - // If any challenge fails - return. Do not generate partial SAN certificates. - if len(errs) > 0 { - return CertificateResource{}, errs - } - - logf("[INFO][%s] acme: Validations succeeded; requesting certificates", strings.Join(domains, ", ")) - - cert, err := c.requestCertificate(challenges, bundle, privKey, mustStaple) + order, err := c.createOrderForIdentifiers(domains) if err != nil { - for _, chln := range challenges { - failures[chln.Domain] = err + return nil, err + } + authz, err := c.getAuthzForOrder(order) + if err != nil { + // If any challenge fails, return. Do not generate partial SAN certificates. + /*for _, auth := range authz { + c.disableAuthz(auth) + }*/ + return nil, err + } + + err = c.solveChallengeForAuthz(authz) + if err != nil { + // If any challenge fails, return. Do not generate partial SAN certificates. + return nil, err + } + + log.Printf("[INFO][%s] acme: Validations succeeded; requesting certificates", strings.Join(domains, ", ")) + + failures := make(ObtainError) + cert, err := c.requestCertificateForOrder(order, bundle, privKey, mustStaple) + if err != nil { + for _, auth := range authz { + failures[auth.Identifier.Value] = err } } - return cert, failures + // do not return an empty failures map, because + // it would still be a non-nil error value + if len(failures) > 0 { + return cert, failures + } + return cert, nil } // RevokeCertificate takes a PEM encoded certificate or bundle and tries to revoke it at the CA. @@ -416,7 +433,7 @@ func (c *Client) RevokeCertificate(certificate []byte) error { encodedCert := base64.URLEncoding.EncodeToString(x509Cert.Raw) - _, err = postJSON(c.jws, c.directory.RevokeCertURL, revokeCertMessage{Resource: "revoke-cert", Certificate: encodedCert}, nil) + _, err = postJSON(c.jws, c.directory.RevokeCertURL, revokeCertMessage{Certificate: encodedCert}, nil) return err } @@ -428,22 +445,22 @@ func (c *Client) RevokeCertificate(certificate []byte) error { // If bundle is true, the []byte contains both the issuer certificate and // your issued certificate as a bundle. // For private key reuse the PrivateKey property of the passed in CertificateResource should be non-nil. -func (c *Client) RenewCertificate(cert CertificateResource, bundle, mustStaple bool) (CertificateResource, error) { +func (c *Client) RenewCertificate(cert CertificateResource, bundle, mustStaple bool) (*CertificateResource, error) { // Input certificate is PEM encoded. Decode it here as we may need the decoded // cert later on in the renewal process. The input may be a bundle or a single certificate. certificates, err := parsePEMBundle(cert.Certificate) if err != nil { - return CertificateResource{}, err + return nil, err } x509Cert := certificates[0] if x509Cert.IsCA { - return CertificateResource{}, fmt.Errorf("[%s] Certificate bundle starts with a CA certificate", cert.Domain) + return nil, fmt.Errorf("[%s] Certificate bundle starts with a CA certificate", cert.Domain) } // This is just meant to be informal for the user. timeLeft := x509Cert.NotAfter.Sub(time.Now().UTC()) - logf("[INFO][%s] acme: Trying renewal with %d hours remaining", cert.Domain, int(timeLeft.Hours())) + log.Printf("[INFO][%s] acme: Trying renewal with %d hours remaining", cert.Domain, int(timeLeft.Hours())) // We always need to request a new certificate to renew. // Start by checking to see if the certificate was based off a CSR, and @@ -451,22 +468,21 @@ func (c *Client) RenewCertificate(cert CertificateResource, bundle, mustStaple b if len(cert.CSR) > 0 { csr, err := pemDecodeTox509CSR(cert.CSR) if err != nil { - return CertificateResource{}, err + return nil, err } newCert, failures := c.ObtainCertificateForCSR(*csr, bundle) - return newCert, failures[cert.Domain] + return newCert, failures } var privKey crypto.PrivateKey if cert.PrivateKey != nil { privKey, err = parsePEMPrivateKey(cert.PrivateKey) if err != nil { - return CertificateResource{}, err + return nil, err } } var domains []string - var failures map[string]error // check for SAN certificate if len(x509Cert.DNSNames) > 1 { domains = append(domains, x509Cert.Subject.CommonName) @@ -480,272 +496,276 @@ func (c *Client) RenewCertificate(cert CertificateResource, bundle, mustStaple b domains = append(domains, x509Cert.Subject.CommonName) } - newCert, failures := c.ObtainCertificate(domains, bundle, privKey, mustStaple) - return newCert, failures[cert.Domain] + newCert, err := c.ObtainCertificate(domains, bundle, privKey, mustStaple) + return newCert, err +} + +func (c *Client) createOrderForIdentifiers(domains []string) (orderResource, error) { + + var identifiers []identifier + for _, domain := range domains { + identifiers = append(identifiers, identifier{Type: "dns", Value: domain}) + } + + order := orderMessage{ + Identifiers: identifiers, + } + + var response orderMessage + hdr, err := postJSON(c.jws, c.directory.NewOrderURL, order, &response) + if err != nil { + return orderResource{}, err + } + + orderRes := orderResource{ + URL: hdr.Get("Location"), + Domains: domains, + orderMessage: response, + } + return orderRes, nil } // Looks through the challenge combinations to find a solvable match. // Then solves the challenges in series and returns. -func (c *Client) solveChallenges(challenges []authorizationResource) map[string]error { +func (c *Client) solveChallengeForAuthz(authorizations []authorization) error { + failures := make(ObtainError) + // loop through the resources, basically through the domains. - failures := make(map[string]error) - for _, authz := range challenges { - if authz.Body.Status == "valid" { + for _, authz := range authorizations { + if authz.Status == "valid" { // Boulder might recycle recent validated authz (see issue #267) - logf("[INFO][%s] acme: Authorization already valid; skipping challenge", authz.Domain) + log.Printf("[INFO][%s] acme: Authorization already valid; skipping challenge", authz.Identifier.Value) continue } + // no solvers - no solving - if solvers := c.chooseSolvers(authz.Body, authz.Domain); solvers != nil { - for i, solver := range solvers { - // TODO: do not immediately fail if one domain fails to validate. - err := solver.Solve(authz.Body.Challenges[i], authz.Domain) - if err != nil { - c.disableAuthz(authz) - failures[authz.Domain] = err - } + if i, solver := c.chooseSolver(authz, authz.Identifier.Value); solver != nil { + err := solver.Solve(authz.Challenges[i], authz.Identifier.Value) + if err != nil { + //c.disableAuthz(authz.Identifier) + failures[authz.Identifier.Value] = err } } else { - c.disableAuthz(authz) - failures[authz.Domain] = fmt.Errorf("[%s] acme: Could not determine solvers", authz.Domain) + //c.disableAuthz(authz) + failures[authz.Identifier.Value] = fmt.Errorf("[%s] acme: Could not determine solvers", authz.Identifier.Value) } } - return failures -} - -// Checks all combinations from the server and returns an array of -// solvers which should get executed in series. -func (c *Client) chooseSolvers(auth authorization, domain string) map[int]solver { - for _, combination := range auth.Combinations { - solvers := make(map[int]solver) - for _, idx := range combination { - if solver, ok := c.solvers[auth.Challenges[idx].Type]; ok { - solvers[idx] = solver - } else { - logf("[INFO][%s] acme: Could not find solver for: %s", domain, auth.Challenges[idx].Type) - } - } - - // If we can solve the whole combination, return the solvers - if len(solvers) == len(combination) { - return solvers - } + // be careful not to return an empty failures map, for + // even an empty ObtainError is a non-nil error value + if len(failures) > 0 { + return failures } return nil } +// Checks all challenges from the server in order and returns the first matching solver. +func (c *Client) chooseSolver(auth authorization, domain string) (int, solver) { + for i, challenge := range auth.Challenges { + if solver, ok := c.solvers[Challenge(challenge.Type)]; ok { + return i, solver + } + log.Printf("[INFO][%s] acme: Could not find solver for: %s", domain, challenge.Type) + } + return 0, nil +} + // Get the challenges needed to proof our identifier to the ACME server. -func (c *Client) getChallenges(domains []string) ([]authorizationResource, map[string]error) { - resc, errc := make(chan authorizationResource), make(chan domainError) +func (c *Client) getAuthzForOrder(order orderResource) ([]authorization, error) { + resc, errc := make(chan authorization), make(chan domainError) delay := time.Second / overallRequestLimit - for _, domain := range domains { + for _, authzURL := range order.Authorizations { time.Sleep(delay) - go func(domain string) { - authMsg := authorization{Resource: "new-authz", Identifier: identifier{Type: "dns", Value: domain}} + go func(authzURL string) { var authz authorization - hdr, err := postJSON(c.jws, c.user.GetRegistration().NewAuthzURL, authMsg, &authz) + _, err := getJSON(authzURL, &authz) if err != nil { - errc <- domainError{Domain: domain, Error: err} + errc <- domainError{Domain: authz.Identifier.Value, Error: err} return } - links := parseLinks(hdr["Link"]) - if links["next"] == "" { - logf("[ERROR][%s] acme: Server did not provide next link to proceed", domain) - errc <- domainError{Domain: domain, Error: errors.New("Server did not provide next link to proceed")} - return - } - - resc <- authorizationResource{Body: authz, NewCertURL: links["next"], AuthURL: hdr.Get("Location"), Domain: domain} - }(domain) + resc <- authz + }(authzURL) } - responses := make(map[string]authorizationResource) - failures := make(map[string]error) - for i := 0; i < len(domains); i++ { + var responses []authorization + failures := make(ObtainError) + for i := 0; i < len(order.Authorizations); i++ { select { case res := <-resc: - responses[res.Domain] = res + responses = append(responses, res) case err := <-errc: failures[err.Domain] = err.Error } } - challenges := make([]authorizationResource, 0, len(responses)) - for _, domain := range domains { - if challenge, ok := responses[domain]; ok { - challenges = append(challenges, challenge) - } - } - - logAuthz(challenges) + logAuthz(order) close(resc) close(errc) - return challenges, failures + // be careful to not return an empty failures map; + // even if empty, they become non-nil error values + if len(failures) > 0 { + return responses, failures + } + return responses, nil } -func logAuthz(authz []authorizationResource) { - for _, auth := range authz { - logf("[INFO][%s] AuthURL: %s", auth.Domain, auth.AuthURL) +func logAuthz(order orderResource) { + for i, auth := range order.Authorizations { + log.Printf("[INFO][%s] AuthURL: %s", order.Identifiers[i].Value, auth) } } // cleanAuthz loops through the passed in slice and disables any auths which are not "valid" -func (c *Client) disableAuthz(auth authorizationResource) error { +func (c *Client) disableAuthz(authURL string) error { var disabledAuth authorization - _, err := postJSON(c.jws, auth.AuthURL, deactivateAuthMessage{Resource: "authz", Status: "deactivated"}, &disabledAuth) + _, err := postJSON(c.jws, authURL, deactivateAuthMessage{Status: "deactivated"}, &disabledAuth) return err } -func (c *Client) requestCertificate(authz []authorizationResource, bundle bool, privKey crypto.PrivateKey, mustStaple bool) (CertificateResource, error) { - if len(authz) == 0 { - return CertificateResource{}, errors.New("Passed no authorizations to requestCertificate!") - } +func (c *Client) requestCertificateForOrder(order orderResource, bundle bool, privKey crypto.PrivateKey, mustStaple bool) (*CertificateResource, error) { var err error if privKey == nil { privKey, err = generatePrivateKey(c.keyType) if err != nil { - return CertificateResource{}, err + return nil, err } } // determine certificate name(s) based on the authorization resources - commonName := authz[0] + commonName := order.Domains[0] var san []string - for _, auth := range authz[1:] { - san = append(san, auth.Domain) + for _, auth := range order.Identifiers { + san = append(san, auth.Value) } // TODO: should the CSR be customizable? - csr, err := generateCsr(privKey, commonName.Domain, san, mustStaple) + csr, err := generateCsr(privKey, commonName, san, mustStaple) if err != nil { - return CertificateResource{}, err + return nil, err } - return c.requestCertificateForCsr(authz, bundle, csr, pemEncode(privKey)) + return c.requestCertificateForCsr(order, bundle, csr, pemEncode(privKey)) } -func (c *Client) requestCertificateForCsr(authz []authorizationResource, bundle bool, csr []byte, privateKeyPem []byte) (CertificateResource, error) { - commonName := authz[0] +func (c *Client) requestCertificateForCsr(order orderResource, bundle bool, csr []byte, privateKeyPem []byte) (*CertificateResource, error) { + commonName := order.Domains[0] - var authURLs []string - for _, auth := range authz[1:] { - authURLs = append(authURLs, auth.AuthURL) + csrString := base64.RawURLEncoding.EncodeToString(csr) + var retOrder orderMessage + _, error := postJSON(c.jws, order.Finalize, csrMessage{Csr: csrString}, &retOrder) + if error != nil { + return nil, error } - csrString := base64.URLEncoding.EncodeToString(csr) - jsonBytes, err := json.Marshal(csrMessage{Resource: "new-cert", Csr: csrString, Authorizations: authURLs}) - if err != nil { - return CertificateResource{}, err - } - - resp, err := c.jws.post(commonName.NewCertURL, jsonBytes) - if err != nil { - return CertificateResource{}, err + if retOrder.Status == "invalid" { + return nil, error } certRes := CertificateResource{ - Domain: commonName.Domain, - CertURL: resp.Header.Get("Location"), + Domain: commonName, + CertURL: retOrder.Certificate, PrivateKey: privateKeyPem, } + if retOrder.Status == "valid" { + // if the certificate is available right away, short cut! + ok, err := c.checkCertResponse(retOrder, &certRes, bundle) + if err != nil { + return nil, err + } + + if ok { + return &certRes, nil + } + } + maxChecks := 1000 for i := 0; i < maxChecks; i++ { - done, err := c.checkCertResponse(resp, &certRes, bundle) - resp.Body.Close() + _, err := getJSON(order.URL, &retOrder) if err != nil { - return CertificateResource{}, err + return nil, err + } + done, err := c.checkCertResponse(retOrder, &certRes, bundle) + if err != nil { + return nil, err } if done { break } if i == maxChecks-1 { - return CertificateResource{}, fmt.Errorf("polled for certificate %d times; giving up", i) - } - resp, err = httpGet(certRes.CertURL) - if err != nil { - return CertificateResource{}, err + return nil, fmt.Errorf("polled for certificate %d times; giving up", i) } } - return certRes, nil + return &certRes, nil } -// checkCertResponse checks resp to see if a certificate is contained in the -// response, and if so, loads it into certRes and returns true. If the cert -// is not yet ready, it returns false. This function honors the waiting period -// required by the Retry-After header of the response, if specified. This -// function may read from resp.Body but does NOT close it. The certRes input +// checkCertResponse checks to see if the certificate is ready and a link is contained in the +// response. if so, loads it into certRes and returns true. If the cert +// is not yet ready, it returns false. The certRes input // should already have the Domain (common name) field populated. If bundle is // true, the certificate will be bundled with the issuer's cert. -func (c *Client) checkCertResponse(resp *http.Response, certRes *CertificateResource, bundle bool) (bool, error) { - switch resp.StatusCode { - case 201, 202: +func (c *Client) checkCertResponse(order orderMessage, certRes *CertificateResource, bundle bool) (bool, error) { + + switch order.Status { + case "valid": + resp, err := httpGet(order.Certificate) + if err != nil { + return false, err + } + cert, err := ioutil.ReadAll(limitReader(resp.Body, maxBodySize)) if err != nil { return false, err } - // The server returns a body with a length of zero if the - // certificate was not ready at the time this request completed. - // Otherwise the body is the certificate. - if len(cert) > 0 { - certRes.CertStableURL = resp.Header.Get("Content-Location") - certRes.AccountRef = c.user.GetRegistration().URI + // The issuer certificate link is always supplied via an "up" link + // in the response headers of a new certificate. + links := parseLinks(resp.Header["Link"]) + if link, ok := links["up"]; ok { + issuerCert, err := c.getIssuerCertificate(link) - issuedCert := pemEncode(derCertificateBytes(cert)) - - // The issuer certificate link is always supplied via an "up" link - // in the response headers of a new certificate. - links := parseLinks(resp.Header["Link"]) - issuerCert, err := c.getIssuerCertificate(links["up"]) if err != nil { // If we fail to acquire the issuer cert, return the issued certificate - do not fail. - logf("[WARNING][%s] acme: Could not bundle issuer certificate: %v", certRes.Domain, err) + log.Printf("[WARNING][%s] acme: Could not bundle issuer certificate: %v", certRes.Domain, err) } else { issuerCert = pemEncode(derCertificateBytes(issuerCert)) // If bundle is true, we want to return a certificate bundle. // To do this, we append the issuer cert to the issued cert. if bundle { - issuedCert = append(issuedCert, issuerCert...) + cert = append(cert, issuerCert...) } + + certRes.IssuerCertificate = issuerCert } - - certRes.Certificate = issuedCert - certRes.IssuerCertificate = issuerCert - logf("[INFO][%s] Server responded with a certificate.", certRes.Domain) - return true, nil } - // The certificate was granted but is not yet issued. - // Check retry-after and loop. - ra := resp.Header.Get("Retry-After") - retryAfter, err := strconv.Atoi(ra) - if err != nil { - return false, err - } - - logf("[INFO][%s] acme: Server responded with status 202; retrying after %ds", certRes.Domain, retryAfter) - time.Sleep(time.Duration(retryAfter) * time.Second) + certRes.Certificate = cert + certRes.CertURL = order.Certificate + certRes.CertStableURL = order.Certificate + log.Printf("[INFO][%s] Server responded with a certificate.", certRes.Domain) + return true, nil + case "processing": return false, nil - default: - return false, handleHTTPError(resp) + case "invalid": + return false, errors.New("Order has invalid state: invalid") } + + return false, nil } // getIssuerCertificate requests the issuer certificate func (c *Client) getIssuerCertificate(url string) ([]byte, error) { - logf("[INFO] acme: Requesting issuer cert from %s", url) + log.Printf("[INFO] acme: Requesting issuer cert from %s", url) resp, err := httpGet(url) if err != nil { return nil, err @@ -786,10 +806,10 @@ func parseLinks(links []string) map[string]string { // validate makes the ACME server start validating a // challenge response, only returning once it is done. -func validate(j *jws, domain, uri string, chlng challenge) error { - var challengeResponse challenge +func validate(j *jws, domain, uri string, c challenge) error { + var chlng challenge - hdr, err := postJSON(j, uri, chlng, &challengeResponse) + hdr, err := postJSON(j, uri, c, &chlng) if err != nil { return err } @@ -797,27 +817,27 @@ func validate(j *jws, domain, uri string, chlng challenge) error { // After the path is sent, the ACME server will access our server. // Repeatedly check the server for an updated status on our request. for { - switch challengeResponse.Status { + switch chlng.Status { case "valid": - logf("[INFO][%s] The server validated our request", domain) + log.Printf("[INFO][%s] The server validated our request", domain) return nil case "pending": - break + case "processing": case "invalid": - return handleChallengeError(challengeResponse) + return handleChallengeError(chlng) default: - return errors.New("The server returned an unexpected state.") + return errors.New("the server returned an unexpected state") } ra, err := strconv.Atoi(hdr.Get("Retry-After")) if err != nil { // The ACME server MUST return a Retry-After. // If it doesn't, we'll just poll hard. - ra = 1 + ra = 5 } time.Sleep(time.Duration(ra) * time.Second) - hdr, err = getJSON(uri, &challengeResponse) + hdr, err = getJSON(uri, &chlng) if err != nil { return err } diff --git a/vendor/github.com/xenolf/lego/acme/crypto.go b/vendor/github.com/xenolf/lego/acme/crypto.go index fa868a90..7d4f4425 100644 --- a/vendor/github.com/xenolf/lego/acme/crypto.go +++ b/vendor/github.com/xenolf/lego/acme/crypto.go @@ -9,6 +9,7 @@ import ( "crypto/rsa" "crypto/x509" "crypto/x509/pkix" + "encoding/asn1" "encoding/base64" "encoding/pem" "errors" @@ -17,12 +18,10 @@ import ( "io/ioutil" "math/big" "net/http" - "strings" "time" - "encoding/asn1" - "golang.org/x/crypto/ocsp" + jose "gopkg.in/square/go-jose.v2" ) // KeyType represents the key algo as well as the key size or curve to use. @@ -118,6 +117,10 @@ func GetOCSPForCert(bundle []byte) ([]byte, *ocsp.Response, error) { defer req.Body.Close() ocspResBytes, err := ioutil.ReadAll(limitReader(req.Body, 1024*1024)) + if err != nil { + return nil, nil, err + } + ocspRes, err := ocsp.ParseResponse(ocspResBytes, issuerCert) if err != nil { return nil, nil, err @@ -136,9 +139,9 @@ func getKeyAuthorization(token string, key interface{}) (string, error) { } // Generate the Key Authorization for the challenge - jwk := keyAsJWK(publicKey) + jwk := &jose.JSONWebKey{Key: publicKey} if jwk == nil { - return "", errors.New("Could not generate JWK from key.") + return "", errors.New("could not generate JWK from key") } thumbBytes, err := jwk.Thumbprint(crypto.SHA256) if err != nil { @@ -146,11 +149,7 @@ func getKeyAuthorization(token string, key interface{}) (string, error) { } // unpad the base64URL - keyThumb := base64.URLEncoding.EncodeToString(thumbBytes) - index := strings.Index(keyThumb, "=") - if index != -1 { - keyThumb = keyThumb[:index] - } + keyThumb := base64.RawURLEncoding.EncodeToString(thumbBytes) return token + "." + keyThumb, nil } @@ -177,7 +176,7 @@ func parsePEMBundle(bundle []byte) ([]*x509.Certificate, error) { } if len(certificates) == 0 { - return nil, errors.New("No certificates were found while parsing the bundle.") + return nil, errors.New("no certificates were found while parsing the bundle") } return certificates, nil @@ -192,7 +191,7 @@ func parsePEMPrivateKey(key []byte) (crypto.PrivateKey, error) { case "EC PRIVATE KEY": return x509.ParseECPrivateKey(keyBlock.Bytes) default: - return nil, errors.New("Unknown PEM header value") + return nil, errors.New("unknown PEM header value") } } @@ -211,7 +210,7 @@ func generatePrivateKey(keyType KeyType) (crypto.PrivateKey, error) { return rsa.GenerateKey(rand.Reader, 8192) } - return nil, fmt.Errorf("Invalid KeyType: %s", keyType) + return nil, fmt.Errorf("invalid KeyType: %s", keyType) } func generateCsr(privateKey crypto.PrivateKey, domain string, san []string, mustStaple bool) ([]byte, error) { @@ -243,10 +242,8 @@ func pemEncode(data interface{}) []byte { pemBlock = &pem.Block{Type: "EC PRIVATE KEY", Bytes: keyBytes} case *rsa.PrivateKey: pemBlock = &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key)} - break case *x509.CertificateRequest: pemBlock = &pem.Block{Type: "CERTIFICATE REQUEST", Bytes: key.Raw} - break case derCertificateBytes: pemBlock = &pem.Block{Type: "CERTIFICATE", Bytes: []byte(data.(derCertificateBytes))} } diff --git a/vendor/github.com/xenolf/lego/acme/dns_challenge.go b/vendor/github.com/xenolf/lego/acme/dns_challenge.go index d6844dcd..d494501c 100644 --- a/vendor/github.com/xenolf/lego/acme/dns_challenge.go +++ b/vendor/github.com/xenolf/lego/acme/dns_challenge.go @@ -5,12 +5,12 @@ import ( "encoding/base64" "errors" "fmt" - "log" "net" "strings" "time" "github.com/miekg/dns" + "github.com/xenolf/lego/log" ) type preCheckDNSFunc func(fqdn, value string) (bool, error) @@ -29,6 +29,7 @@ var defaultNameservers = []string{ "google-public-dns-b.google.com:53", } +// RecursiveNameservers are used to pre-check DNS propagations var RecursiveNameservers = getNameservers(defaultResolvConf, defaultNameservers) // DNSTimeout is used to override the default DNS timeout of 10 seconds. @@ -57,8 +58,7 @@ func getNameservers(path string, defaults []string) []string { func DNS01Record(domain, keyAuth string) (fqdn string, value string, ttl int) { keyAuthShaBytes := sha256.Sum256([]byte(keyAuth)) // base64URL encoding without padding - keyAuthSha := base64.URLEncoding.EncodeToString(keyAuthShaBytes[:sha256.Size]) - value = strings.TrimRight(keyAuthSha, "=") + value = base64.RawURLEncoding.EncodeToString(keyAuthShaBytes[:sha256.Size]) ttl = 120 fqdn = fmt.Sprintf("_acme-challenge.%s.", domain) return @@ -72,7 +72,7 @@ type dnsChallenge struct { } func (s *dnsChallenge) Solve(chlng challenge, domain string) error { - logf("[INFO][%s] acme: Trying to solve DNS-01", domain) + log.Printf("[INFO][%s] acme: Trying to solve DNS-01", domain) if s.provider == nil { return errors.New("No DNS Provider configured") @@ -97,7 +97,7 @@ func (s *dnsChallenge) Solve(chlng challenge, domain string) error { fqdn, value, _ := DNS01Record(domain, keyAuth) - logf("[INFO][%s] Checking DNS record propagation using %+v", domain, RecursiveNameservers) + log.Printf("[INFO][%s] Checking DNS record propagation using %+v", domain, RecursiveNameservers) var timeout, interval time.Duration switch provider := s.provider.(type) { @@ -114,7 +114,7 @@ func (s *dnsChallenge) Solve(chlng challenge, domain string) error { return err } - return s.validate(s.jws, domain, chlng.URI, challenge{Resource: "challenge", Type: chlng.Type, Token: chlng.Token, KeyAuthorization: keyAuth}) + return s.validate(s.jws, domain, chlng.URL, challenge{Type: chlng.Type, Token: chlng.Token, KeyAuthorization: keyAuth}) } // checkDNSPropagation checks if the expected TXT record has been propagated to all authoritative nameservers. diff --git a/vendor/github.com/xenolf/lego/acme/dns_challenge_manual.go b/vendor/github.com/xenolf/lego/acme/dns_challenge_manual.go index 240384e6..cd4c3c8a 100644 --- a/vendor/github.com/xenolf/lego/acme/dns_challenge_manual.go +++ b/vendor/github.com/xenolf/lego/acme/dns_challenge_manual.go @@ -4,6 +4,8 @@ import ( "bufio" "fmt" "os" + + "github.com/xenolf/lego/log" ) const ( @@ -28,9 +30,9 @@ func (*DNSProviderManual) Present(domain, token, keyAuth string) error { return err } - logf("[INFO] acme: Please create the following TXT record in your %s zone:", authZone) - logf("[INFO] acme: %s", dnsRecord) - logf("[INFO] acme: Press 'Enter' when you are done") + log.Printf("[INFO] acme: Please create the following TXT record in your %s zone:", authZone) + log.Printf("[INFO] acme: %s", dnsRecord) + log.Printf("[INFO] acme: Press 'Enter' when you are done") reader := bufio.NewReader(os.Stdin) _, _ = reader.ReadString('\n') @@ -47,7 +49,7 @@ func (*DNSProviderManual) CleanUp(domain, token, keyAuth string) error { return err } - logf("[INFO] acme: You can now remove this TXT record from your %s zone:", authZone) - logf("[INFO] acme: %s", dnsRecord) + log.Printf("[INFO] acme: You can now remove this TXT record from your %s zone:", authZone) + log.Printf("[INFO] acme: %s", dnsRecord) return nil } diff --git a/vendor/github.com/xenolf/lego/acme/error.go b/vendor/github.com/xenolf/lego/acme/error.go index e4bc934c..78694deb 100644 --- a/vendor/github.com/xenolf/lego/acme/error.go +++ b/vendor/github.com/xenolf/lego/acme/error.go @@ -1,6 +1,7 @@ package acme import ( + "bytes" "encoding/json" "fmt" "io/ioutil" @@ -9,8 +10,8 @@ import ( ) const ( - tosAgreementError = "Must agree to subscriber agreement before any further actions" - invalidNonceError = "JWS has invalid anti-replay nonce" + tosAgreementError = "Terms of service have changed" + invalidNonceError = "urn:ietf:params:acme:error:badNonce" ) // RemoteError is the base type for all errors specific to the ACME protocol. @@ -42,27 +43,23 @@ type domainError struct { Error error } -type challengeError struct { - RemoteError - records []validationRecord -} +// ObtainError is returned when there are specific errors available +// per domain. For example in ObtainCertificate +type ObtainError map[string]error -func (c challengeError) Error() string { - - var errStr string - for _, validation := range c.records { - errStr = errStr + fmt.Sprintf("\tValidation for %s:%s\n\tResolved to:\n\t\t%s\n\tUsed: %s\n\n", - validation.Hostname, validation.Port, strings.Join(validation.ResolvedAddresses, "\n\t\t"), validation.UsedAddress) +func (e ObtainError) Error() string { + buffer := bytes.NewBufferString("acme: Error -> One or more domains had a problem:\n") + for dom, err := range e { + buffer.WriteString(fmt.Sprintf("[%s] %s\n", dom, err)) } - - return fmt.Sprintf("%s\nError Detail:\n%s", c.RemoteError.Error(), errStr) + return buffer.String() } func handleHTTPError(resp *http.Response) error { var errorDetail RemoteError contentType := resp.Header.Get("Content-Type") - if contentType == "application/json" || contentType == "application/problem+json" { + if contentType == "application/json" || strings.HasPrefix(contentType, "application/problem+json") { err := json.NewDecoder(resp.Body).Decode(&errorDetail) if err != nil { return err @@ -82,7 +79,7 @@ func handleHTTPError(resp *http.Response) error { return TOSError{errorDetail} } - if errorDetail.StatusCode == http.StatusBadRequest && strings.HasPrefix(errorDetail.Detail, invalidNonceError) { + if errorDetail.StatusCode == http.StatusBadRequest && errorDetail.Type == invalidNonceError { return NonceError{errorDetail} } @@ -90,5 +87,5 @@ func handleHTTPError(resp *http.Response) error { } func handleChallengeError(chlng challenge) error { - return challengeError{chlng.Error, chlng.ValidationRecords} + return chlng.Error } diff --git a/vendor/github.com/xenolf/lego/acme/http.go b/vendor/github.com/xenolf/lego/acme/http.go index e469e0de..b93e5344 100644 --- a/vendor/github.com/xenolf/lego/acme/http.go +++ b/vendor/github.com/xenolf/lego/acme/http.go @@ -102,7 +102,7 @@ func getJSON(uri string, respBody interface{}) (http.Header, error) { func postJSON(j *jws, uri string, reqBody, respBody interface{}) (http.Header, error) { jsonBytes, err := json.Marshal(reqBody) if err != nil { - return nil, errors.New("Failed to marshal network message...") + return nil, errors.New("Failed to marshal network message") } resp, err := j.post(uri, jsonBytes) diff --git a/vendor/github.com/xenolf/lego/acme/http_challenge.go b/vendor/github.com/xenolf/lego/acme/http_challenge.go index 95cb1fd8..7659bfc5 100644 --- a/vendor/github.com/xenolf/lego/acme/http_challenge.go +++ b/vendor/github.com/xenolf/lego/acme/http_challenge.go @@ -2,7 +2,8 @@ package acme import ( "fmt" - "log" + + "github.com/xenolf/lego/log" ) type httpChallenge struct { @@ -18,7 +19,7 @@ func HTTP01ChallengePath(token string) string { func (s *httpChallenge) Solve(chlng challenge, domain string) error { - logf("[INFO][%s] acme: Trying to solve HTTP-01", domain) + log.Printf("[INFO][%s] acme: Trying to solve HTTP-01", domain) // Generate the Key Authorization for the challenge keyAuth, err := getKeyAuthorization(chlng.Token, s.jws.privKey) @@ -37,5 +38,5 @@ func (s *httpChallenge) Solve(chlng challenge, domain string) error { } }() - return s.validate(s.jws, domain, chlng.URI, challenge{Resource: "challenge", Type: chlng.Type, Token: chlng.Token, KeyAuthorization: keyAuth}) + return s.validate(s.jws, domain, chlng.URL, challenge{Type: chlng.Type, Token: chlng.Token, KeyAuthorization: keyAuth}) } diff --git a/vendor/github.com/xenolf/lego/acme/http_challenge_server.go b/vendor/github.com/xenolf/lego/acme/http_challenge_server.go index 64c6a828..214a278f 100644 --- a/vendor/github.com/xenolf/lego/acme/http_challenge_server.go +++ b/vendor/github.com/xenolf/lego/acme/http_challenge_server.go @@ -5,6 +5,8 @@ import ( "net" "net/http" "strings" + + "github.com/xenolf/lego/log" ) // HTTPProviderServer implements ChallengeProvider for `http-01` challenge @@ -61,9 +63,9 @@ func (s *HTTPProviderServer) serve(domain, token, keyAuth string) { if strings.HasPrefix(r.Host, domain) && r.Method == "GET" { w.Header().Add("Content-Type", "text/plain") w.Write([]byte(keyAuth)) - logf("[INFO][%s] Served key authentication", domain) + log.Printf("[INFO][%s] Served key authentication", domain) } else { - logf("[WARN] Received request for domain %s with method %s but the domain did not match any challenge. Please ensure your are passing the HOST header properly.", r.Host, r.Method) + log.Printf("[WARN] Received request for domain %s with method %s but the domain did not match any challenge. Please ensure your are passing the HOST header properly.", r.Host, r.Method) w.Write([]byte("TEST")) } }) diff --git a/vendor/github.com/xenolf/lego/acme/jws.go b/vendor/github.com/xenolf/lego/acme/jws.go index a3943434..bea76210 100644 --- a/vendor/github.com/xenolf/lego/acme/jws.go +++ b/vendor/github.com/xenolf/lego/acme/jws.go @@ -10,39 +10,29 @@ import ( "net/http" "sync" - "gopkg.in/square/go-jose.v1" + "gopkg.in/square/go-jose.v2" ) type jws struct { - directoryURL string - privKey crypto.PrivateKey - nonces nonceManager -} - -func keyAsJWK(key interface{}) *jose.JsonWebKey { - switch k := key.(type) { - case *ecdsa.PublicKey: - return &jose.JsonWebKey{Key: k, Algorithm: "EC"} - case *rsa.PublicKey: - return &jose.JsonWebKey{Key: k, Algorithm: "RSA"} - - default: - return nil - } + getNonceURL string + privKey crypto.PrivateKey + kid string + nonces nonceManager } // Posts a JWS signed message to the specified URL. // It does NOT close the response body, so the caller must // do that if no error was returned. func (j *jws) post(url string, content []byte) (*http.Response, error) { - signedContent, err := j.signContent(content) + signedContent, err := j.signContent(url, content) if err != nil { - return nil, fmt.Errorf("Failed to sign content -> %s", err.Error()) + return nil, fmt.Errorf("failed to sign content -> %s", err.Error()) } - resp, err := httpPost(url, "application/jose+json", bytes.NewBuffer([]byte(signedContent.FullSerialize()))) + data := bytes.NewBuffer([]byte(signedContent.FullSerialize())) + resp, err := httpPost(url, "application/jose+json", data) if err != nil { - return nil, fmt.Errorf("Failed to HTTP POST to %s -> %s", url, err.Error()) + return nil, fmt.Errorf("failed to HTTP POST to %s -> %s", url, err.Error()) } nonce, nonceErr := getNonceFromResponse(resp) @@ -53,7 +43,7 @@ func (j *jws) post(url string, content []byte) (*http.Response, error) { return resp, nil } -func (j *jws) signContent(content []byte) (*jose.JsonWebSignature, error) { +func (j *jws) signContent(url string, content []byte) (*jose.JSONWebSignature, error) { var alg jose.SignatureAlgorithm switch k := j.privKey.(type) { @@ -67,25 +57,71 @@ func (j *jws) signContent(content []byte) (*jose.JsonWebSignature, error) { } } - signer, err := jose.NewSigner(alg, j.privKey) - if err != nil { - return nil, fmt.Errorf("Failed to create jose signer -> %s", err.Error()) + jsonKey := jose.JSONWebKey{ + Key: j.privKey, + KeyID: j.kid, + } + + signKey := jose.SigningKey{ + Algorithm: alg, + Key: jsonKey, + } + options := jose.SignerOptions{ + NonceSource: j, + ExtraHeaders: make(map[jose.HeaderKey]interface{}), + } + options.ExtraHeaders["url"] = url + if j.kid == "" { + options.EmbedJWK = true + } + + signer, err := jose.NewSigner(signKey, &options) + if err != nil { + return nil, fmt.Errorf("failed to create jose signer -> %s", err.Error()) } - signer.SetNonceSource(j) signed, err := signer.Sign(content) if err != nil { - return nil, fmt.Errorf("Failed to sign content -> %s", err.Error()) + return nil, fmt.Errorf("failed to sign content -> %s", err.Error()) } return signed, nil } +func (j *jws) signEABContent(url, kid string, hmac []byte) (*jose.JSONWebSignature, error) { + jwk := jose.JSONWebKey{Key: j.privKey} + jwkJSON, err := jwk.Public().MarshalJSON() + if err != nil { + return nil, fmt.Errorf("acme: error encoding eab jwk key: %s", err.Error()) + } + + signer, err := jose.NewSigner( + jose.SigningKey{Algorithm: jose.HS256, Key: hmac}, + &jose.SignerOptions{ + EmbedJWK: false, + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "kid": kid, + "url": url, + }, + }, + ) + if err != nil { + return nil, fmt.Errorf("failed to create External Account Binding jose signer -> %s", err.Error()) + } + + signed, err := signer.Sign(jwkJSON) + if err != nil { + return nil, fmt.Errorf("failed to External Account Binding sign content -> %s", err.Error()) + } + + return signed, nil +} + func (j *jws) Nonce() (string, error) { if nonce, ok := j.nonces.Pop(); ok { return nonce, nil } - return getNonce(j.directoryURL) + return getNonce(j.getNonceURL) } type nonceManager struct { @@ -115,7 +151,7 @@ func (n *nonceManager) Push(nonce string) { func getNonce(url string) (string, error) { resp, err := httpHead(url) if err != nil { - return "", fmt.Errorf("Failed to get nonce from HTTP HEAD -> %s", err.Error()) + return "", fmt.Errorf("failed to get nonce from HTTP HEAD -> %s", err.Error()) } return getNonceFromResponse(resp) @@ -124,7 +160,7 @@ func getNonce(url string) (string, error) { func getNonceFromResponse(resp *http.Response) (string, error) { nonce := resp.Header.Get("Replay-Nonce") if nonce == "" { - return "", fmt.Errorf("Server did not respond with a proper nonce header.") + return "", fmt.Errorf("server did not respond with a proper nonce header") } return nonce, nil diff --git a/vendor/github.com/xenolf/lego/acme/messages.go b/vendor/github.com/xenolf/lego/acme/messages.go index 79ccf154..6946cc15 100644 --- a/vendor/github.com/xenolf/lego/acme/messages.go +++ b/vendor/github.com/xenolf/lego/acme/messages.go @@ -1,59 +1,62 @@ package acme import ( + "encoding/json" "time" - - "gopkg.in/square/go-jose.v1" ) -type directory struct { - NewAuthzURL string `json:"new-authz"` - NewCertURL string `json:"new-cert"` - NewRegURL string `json:"new-reg"` - RevokeCertURL string `json:"revoke-cert"` -} - -type registrationMessage struct { - Resource string `json:"resource"` - Contact []string `json:"contact"` - Delete bool `json:"delete,omitempty"` -} - -// Registration is returned by the ACME server after the registration -// The client implementation should save this registration somewhere. -type Registration struct { - Resource string `json:"resource,omitempty"` - ID int `json:"id"` - Key jose.JsonWebKey `json:"key"` - Contact []string `json:"contact"` - Agreement string `json:"agreement,omitempty"` - Authorizations string `json:"authorizations,omitempty"` - Certificates string `json:"certificates,omitempty"` -} - // RegistrationResource represents all important informations about a registration // of which the client needs to keep track itself. type RegistrationResource struct { - Body Registration `json:"body,omitempty"` - URI string `json:"uri,omitempty"` - NewAuthzURL string `json:"new_authzr_uri,omitempty"` - TosURL string `json:"terms_of_service,omitempty"` + Body accountMessage `json:"body,omitempty"` + URI string `json:"uri,omitempty"` } -type authorizationResource struct { - Body authorization - Domain string - NewCertURL string - AuthURL string +type directory struct { + NewNonceURL string `json:"newNonce"` + NewAccountURL string `json:"newAccount"` + NewOrderURL string `json:"newOrder"` + RevokeCertURL string `json:"revokeCert"` + KeyChangeURL string `json:"keyChange"` + Meta struct { + TermsOfService string `json:"termsOfService"` + Website string `json:"website"` + CaaIdentities []string `json:"caaIdentities"` + ExternalAccountRequired bool `json:"externalAccountRequired"` + } `json:"meta"` +} + +type accountMessage struct { + Status string `json:"status,omitempty"` + Contact []string `json:"contact,omitempty"` + TermsOfServiceAgreed bool `json:"termsOfServiceAgreed,omitempty"` + Orders string `json:"orders,omitempty"` + OnlyReturnExisting bool `json:"onlyReturnExisting,omitempty"` + ExternalAccountBinding json.RawMessage `json:"externalAccountBinding,omitempty"` +} + +type orderResource struct { + URL string `json:"url,omitempty"` + Domains []string `json:"domains,omitempty"` + orderMessage `json:"body,omitempty"` +} + +type orderMessage struct { + Status string `json:"status,omitempty"` + Expires string `json:"expires,omitempty"` + Identifiers []identifier `json:"identifiers"` + NotBefore string `json:"notBefore,omitempty"` + NotAfter string `json:"notAfter,omitempty"` + Authorizations []string `json:"authorizations,omitempty"` + Finalize string `json:"finalize,omitempty"` + Certificate string `json:"certificate,omitempty"` } type authorization struct { - Resource string `json:"resource,omitempty"` - Identifier identifier `json:"identifier"` - Status string `json:"status,omitempty"` - Expires time.Time `json:"expires,omitempty"` - Challenges []challenge `json:"challenges,omitempty"` - Combinations [][]int `json:"combinations,omitempty"` + Status string `json:"status"` + Expires time.Time `json:"expires"` + Identifier identifier `json:"identifier"` + Challenges []challenge `json:"challenges"` } type identifier struct { @@ -61,41 +64,26 @@ type identifier struct { Value string `json:"value"` } -type validationRecord struct { - URI string `json:"url,omitempty"` - Hostname string `json:"hostname,omitempty"` - Port string `json:"port,omitempty"` - ResolvedAddresses []string `json:"addressesResolved,omitempty"` - UsedAddress string `json:"addressUsed,omitempty"` -} - type challenge struct { - Resource string `json:"resource,omitempty"` - Type Challenge `json:"type,omitempty"` - Status string `json:"status,omitempty"` - URI string `json:"uri,omitempty"` - Token string `json:"token,omitempty"` - KeyAuthorization string `json:"keyAuthorization,omitempty"` - TLS bool `json:"tls,omitempty"` - Iterations int `json:"n,omitempty"` - Error RemoteError `json:"error,omitempty"` - ValidationRecords []validationRecord `json:"validationRecord,omitempty"` + URL string `json:"url"` + Type string `json:"type"` + Status string `json:"status"` + Token string `json:"token"` + Validated time.Time `json:"validated"` + KeyAuthorization string `json:"keyAuthorization"` + Error RemoteError `json:"error"` } type csrMessage struct { - Resource string `json:"resource,omitempty"` - Csr string `json:"csr"` - Authorizations []string `json:"authorizations"` + Csr string `json:"csr"` } type revokeCertMessage struct { - Resource string `json:"resource"` Certificate string `json:"certificate"` } type deactivateAuthMessage struct { - Resource string `json:"resource,omitempty"` - Status string `jsom:"status"` + Status string `jsom:"status"` } // CertificateResource represents a CA issued certificate. diff --git a/vendor/github.com/xenolf/lego/acme/pop_challenge.go b/vendor/github.com/xenolf/lego/acme/pop_challenge.go deleted file mode 100644 index 8d2a213b..00000000 --- a/vendor/github.com/xenolf/lego/acme/pop_challenge.go +++ /dev/null @@ -1 +0,0 @@ -package acme diff --git a/vendor/github.com/xenolf/lego/acme/tls_sni_challenge.go b/vendor/github.com/xenolf/lego/acme/tls_sni_challenge.go deleted file mode 100644 index 34383cbf..00000000 --- a/vendor/github.com/xenolf/lego/acme/tls_sni_challenge.go +++ /dev/null @@ -1,67 +0,0 @@ -package acme - -import ( - "crypto/rsa" - "crypto/sha256" - "crypto/tls" - "encoding/hex" - "fmt" - "log" -) - -type tlsSNIChallenge struct { - jws *jws - validate validateFunc - provider ChallengeProvider -} - -func (t *tlsSNIChallenge) Solve(chlng challenge, domain string) error { - // FIXME: https://github.com/ietf-wg-acme/acme/pull/22 - // Currently we implement this challenge to track boulder, not the current spec! - - logf("[INFO][%s] acme: Trying to solve TLS-SNI-01", domain) - - // Generate the Key Authorization for the challenge - keyAuth, err := getKeyAuthorization(chlng.Token, t.jws.privKey) - if err != nil { - return err - } - - err = t.provider.Present(domain, chlng.Token, keyAuth) - if err != nil { - return fmt.Errorf("[%s] error presenting token: %v", domain, err) - } - defer func() { - err := t.provider.CleanUp(domain, chlng.Token, keyAuth) - if err != nil { - log.Printf("[%s] error cleaning up: %v", domain, err) - } - }() - return t.validate(t.jws, domain, chlng.URI, challenge{Resource: "challenge", Type: chlng.Type, Token: chlng.Token, KeyAuthorization: keyAuth}) -} - -// TLSSNI01ChallengeCert returns a certificate and target domain for the `tls-sni-01` challenge -func TLSSNI01ChallengeCert(keyAuth string) (tls.Certificate, string, error) { - // generate a new RSA key for the certificates - tempPrivKey, err := generatePrivateKey(RSA2048) - if err != nil { - return tls.Certificate{}, "", err - } - rsaPrivKey := tempPrivKey.(*rsa.PrivateKey) - rsaPrivPEM := pemEncode(rsaPrivKey) - - zBytes := sha256.Sum256([]byte(keyAuth)) - z := hex.EncodeToString(zBytes[:sha256.Size]) - domain := fmt.Sprintf("%s.%s.acme.invalid", z[:32], z[32:]) - tempCertPEM, err := generatePemCert(rsaPrivKey, domain) - if err != nil { - return tls.Certificate{}, "", err - } - - certificate, err := tls.X509KeyPair(tempCertPEM, rsaPrivPEM) - if err != nil { - return tls.Certificate{}, "", err - } - - return certificate, domain, nil -} diff --git a/vendor/github.com/xenolf/lego/acme/tls_sni_challenge_server.go b/vendor/github.com/xenolf/lego/acme/tls_sni_challenge_server.go deleted file mode 100644 index df00fbb5..00000000 --- a/vendor/github.com/xenolf/lego/acme/tls_sni_challenge_server.go +++ /dev/null @@ -1,62 +0,0 @@ -package acme - -import ( - "crypto/tls" - "fmt" - "net" - "net/http" -) - -// TLSProviderServer implements ChallengeProvider for `TLS-SNI-01` challenge -// It may be instantiated without using the NewTLSProviderServer function if -// you want only to use the default values. -type TLSProviderServer struct { - iface string - port string - done chan bool - listener net.Listener -} - -// NewTLSProviderServer creates a new TLSProviderServer on the selected interface and port. -// Setting iface and / or port to an empty string will make the server fall back to -// the "any" interface and port 443 respectively. -func NewTLSProviderServer(iface, port string) *TLSProviderServer { - return &TLSProviderServer{iface: iface, port: port} -} - -// Present makes the keyAuth available as a cert -func (s *TLSProviderServer) Present(domain, token, keyAuth string) error { - if s.port == "" { - s.port = "443" - } - - cert, _, err := TLSSNI01ChallengeCert(keyAuth) - if err != nil { - return err - } - - tlsConf := new(tls.Config) - tlsConf.Certificates = []tls.Certificate{cert} - - s.listener, err = tls.Listen("tcp", net.JoinHostPort(s.iface, s.port), tlsConf) - if err != nil { - return fmt.Errorf("Could not start HTTPS server for challenge -> %v", err) - } - - s.done = make(chan bool) - go func() { - http.Serve(s.listener, nil) - s.done <- true - }() - return nil -} - -// CleanUp closes the HTTP server. -func (s *TLSProviderServer) CleanUp(domain, token, keyAuth string) error { - if s.listener == nil { - return nil - } - s.listener.Close() - <-s.done - return nil -} diff --git a/vendor/github.com/xenolf/lego/log/logger.go b/vendor/github.com/xenolf/lego/log/logger.go new file mode 100644 index 00000000..291541c0 --- /dev/null +++ b/vendor/github.com/xenolf/lego/log/logger.go @@ -0,0 +1,59 @@ +package log + +import ( + "log" + "os" +) + +// Logger is an optional custom logger. +var Logger *log.Logger + +// Fatal writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Fatal(args ...interface{}) { + if Logger == nil { + Logger = log.New(os.Stderr, "", log.LstdFlags) + } + + Logger.Fatal(args...) +} + +// Fatalf writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Fatalf(format string, args ...interface{}) { + if Logger == nil { + Logger = log.New(os.Stderr, "", log.LstdFlags) + } + + Logger.Fatalf(format, args...) +} + +// Print writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Print(args ...interface{}) { + if Logger == nil { + Logger = log.New(os.Stdout, "", log.LstdFlags) + } + + Logger.Print(args...) +} + +// Println writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Println(args ...interface{}) { + if Logger == nil { + Logger = log.New(os.Stdout, "", log.LstdFlags) + } + + Logger.Println(args...) +} + +// Printf writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Printf(format string, args ...interface{}) { + if Logger == nil { + Logger = log.New(os.Stdout, "", log.LstdFlags) + } + + Logger.Printf(format, args...) +} diff --git a/vendor/golang.org/x/crypto/ed25519/ed25519.go b/vendor/golang.org/x/crypto/ed25519/ed25519.go index a57771a1..d6f683ba 100644 --- a/vendor/golang.org/x/crypto/ed25519/ed25519.go +++ b/vendor/golang.org/x/crypto/ed25519/ed25519.go @@ -6,7 +6,10 @@ // https://ed25519.cr.yp.to/. // // These functions are also compatible with the “Ed25519” function defined in -// RFC 8032. +// RFC 8032. However, unlike RFC 8032's formulation, this package's private key +// representation includes a public key suffix to make multiple signing +// operations with the same key more efficient. This package refers to the RFC +// 8032 private key as the “seed”. package ed25519 // This code is a port of the public domain, “ref10” implementation of ed25519 @@ -31,6 +34,8 @@ const ( PrivateKeySize = 64 // SignatureSize is the size, in bytes, of signatures generated and verified by this package. SignatureSize = 64 + // SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032. + SeedSize = 32 ) // PublicKey is the type of Ed25519 public keys. @@ -46,6 +51,15 @@ func (priv PrivateKey) Public() crypto.PublicKey { return PublicKey(publicKey) } +// Seed returns the private key seed corresponding to priv. It is provided for +// interoperability with RFC 8032. RFC 8032's private keys correspond to seeds +// in this package. +func (priv PrivateKey) Seed() []byte { + seed := make([]byte, SeedSize) + copy(seed, priv[:32]) + return seed +} + // Sign signs the given message with priv. // Ed25519 performs two passes over messages to be signed and therefore cannot // handle pre-hashed messages. Thus opts.HashFunc() must return zero to @@ -61,19 +75,33 @@ func (priv PrivateKey) Sign(rand io.Reader, message []byte, opts crypto.SignerOp // GenerateKey generates a public/private key pair using entropy from rand. // If rand is nil, crypto/rand.Reader will be used. -func GenerateKey(rand io.Reader) (publicKey PublicKey, privateKey PrivateKey, err error) { +func GenerateKey(rand io.Reader) (PublicKey, PrivateKey, error) { if rand == nil { rand = cryptorand.Reader } - privateKey = make([]byte, PrivateKeySize) - publicKey = make([]byte, PublicKeySize) - _, err = io.ReadFull(rand, privateKey[:32]) - if err != nil { + seed := make([]byte, SeedSize) + if _, err := io.ReadFull(rand, seed); err != nil { return nil, nil, err } - digest := sha512.Sum512(privateKey[:32]) + privateKey := NewKeyFromSeed(seed) + publicKey := make([]byte, PublicKeySize) + copy(publicKey, privateKey[32:]) + + return publicKey, privateKey, nil +} + +// NewKeyFromSeed calculates a private key from a seed. It will panic if +// len(seed) is not SeedSize. This function is provided for interoperability +// with RFC 8032. RFC 8032's private keys correspond to seeds in this +// package. +func NewKeyFromSeed(seed []byte) PrivateKey { + if l := len(seed); l != SeedSize { + panic("ed25519: bad seed length: " + strconv.Itoa(l)) + } + + digest := sha512.Sum512(seed) digest[0] &= 248 digest[31] &= 127 digest[31] |= 64 @@ -85,10 +113,11 @@ func GenerateKey(rand io.Reader) (publicKey PublicKey, privateKey PrivateKey, er var publicKeyBytes [32]byte A.ToBytes(&publicKeyBytes) + privateKey := make([]byte, PrivateKeySize) + copy(privateKey, seed) copy(privateKey[32:], publicKeyBytes[:]) - copy(publicKey, publicKeyBytes[:]) - return publicKey, privateKey, nil + return privateKey } // Sign signs the message with privateKey and returns a signature. It will diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go new file mode 100644 index 00000000..593f6530 --- /dev/null +++ b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go @@ -0,0 +1,77 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC +2898 / PKCS #5 v2.0. + +A key derivation function is useful when encrypting data based on a password +or any other not-fully-random data. It uses a pseudorandom function to derive +a secure encryption key based on the password. + +While v2.0 of the standard defines only one pseudorandom function to use, +HMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved +Hash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To +choose, you can pass the `New` functions from the different SHA packages to +pbkdf2.Key. +*/ +package pbkdf2 // import "golang.org/x/crypto/pbkdf2" + +import ( + "crypto/hmac" + "hash" +) + +// Key derives a key from the password, salt and iteration count, returning a +// []byte of length keylen that can be used as cryptographic key. The key is +// derived based on the method described as PBKDF2 with the HMAC variant using +// the supplied hash function. +// +// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you +// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by +// doing: +// +// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) +// +// Remember to get a good random salt. At least 8 bytes is recommended by the +// RFC. +// +// Using a higher iteration count will increase the cost of an exhaustive +// search but will also make derivation proportionally slower. +func Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { + prf := hmac.New(h, password) + hashLen := prf.Size() + numBlocks := (keyLen + hashLen - 1) / hashLen + + var buf [4]byte + dk := make([]byte, 0, numBlocks*hashLen) + U := make([]byte, hashLen) + for block := 1; block <= numBlocks; block++ { + // N.B.: || means concatenation, ^ means XOR + // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter + // U_1 = PRF(password, salt || uint(i)) + prf.Reset() + prf.Write(salt) + buf[0] = byte(block >> 24) + buf[1] = byte(block >> 16) + buf[2] = byte(block >> 8) + buf[3] = byte(block) + prf.Write(buf[:4]) + dk = prf.Sum(dk) + T := dk[len(dk)-hashLen:] + copy(U, T) + + // U_n = PRF(password, U_(n-1)) + for n := 2; n <= iter; n++ { + prf.Reset() + prf.Write(U) + U = U[:0] + U = prf.Sum(U) + for x := range U { + T[x] ^= U[x] + } + } + } + return dk[:keyLen] +} diff --git a/vendor/golang.org/x/net/html/entity.go b/vendor/golang.org/x/net/html/entity.go index a50c04c6..b628880a 100644 --- a/vendor/golang.org/x/net/html/entity.go +++ b/vendor/golang.org/x/net/html/entity.go @@ -75,2083 +75,2083 @@ var entity = map[string]rune{ "Copf;": '\U00002102', "Coproduct;": '\U00002210', "CounterClockwiseContourIntegral;": '\U00002233', - "Cross;": '\U00002A2F', - "Cscr;": '\U0001D49E', - "Cup;": '\U000022D3', - "CupCap;": '\U0000224D', - "DD;": '\U00002145', - "DDotrahd;": '\U00002911', - "DJcy;": '\U00000402', - "DScy;": '\U00000405', - "DZcy;": '\U0000040F', - "Dagger;": '\U00002021', - "Darr;": '\U000021A1', - "Dashv;": '\U00002AE4', - "Dcaron;": '\U0000010E', - "Dcy;": '\U00000414', - "Del;": '\U00002207', - "Delta;": '\U00000394', - "Dfr;": '\U0001D507', - "DiacriticalAcute;": '\U000000B4', - "DiacriticalDot;": '\U000002D9', - "DiacriticalDoubleAcute;": '\U000002DD', - "DiacriticalGrave;": '\U00000060', - "DiacriticalTilde;": '\U000002DC', - "Diamond;": '\U000022C4', - "DifferentialD;": '\U00002146', - "Dopf;": '\U0001D53B', - "Dot;": '\U000000A8', - "DotDot;": '\U000020DC', - "DotEqual;": '\U00002250', - "DoubleContourIntegral;": '\U0000222F', - "DoubleDot;": '\U000000A8', - "DoubleDownArrow;": '\U000021D3', - "DoubleLeftArrow;": '\U000021D0', - "DoubleLeftRightArrow;": '\U000021D4', - "DoubleLeftTee;": '\U00002AE4', - "DoubleLongLeftArrow;": '\U000027F8', - "DoubleLongLeftRightArrow;": '\U000027FA', - "DoubleLongRightArrow;": '\U000027F9', - "DoubleRightArrow;": '\U000021D2', - "DoubleRightTee;": '\U000022A8', - "DoubleUpArrow;": '\U000021D1', - "DoubleUpDownArrow;": '\U000021D5', - "DoubleVerticalBar;": '\U00002225', - "DownArrow;": '\U00002193', - "DownArrowBar;": '\U00002913', - "DownArrowUpArrow;": '\U000021F5', - "DownBreve;": '\U00000311', - "DownLeftRightVector;": '\U00002950', - "DownLeftTeeVector;": '\U0000295E', - "DownLeftVector;": '\U000021BD', - "DownLeftVectorBar;": '\U00002956', - "DownRightTeeVector;": '\U0000295F', - "DownRightVector;": '\U000021C1', - "DownRightVectorBar;": '\U00002957', - "DownTee;": '\U000022A4', - "DownTeeArrow;": '\U000021A7', - "Downarrow;": '\U000021D3', - "Dscr;": '\U0001D49F', - "Dstrok;": '\U00000110', - "ENG;": '\U0000014A', - "ETH;": '\U000000D0', - "Eacute;": '\U000000C9', - "Ecaron;": '\U0000011A', - "Ecirc;": '\U000000CA', - "Ecy;": '\U0000042D', - "Edot;": '\U00000116', - "Efr;": '\U0001D508', - "Egrave;": '\U000000C8', - "Element;": '\U00002208', - "Emacr;": '\U00000112', - "EmptySmallSquare;": '\U000025FB', - "EmptyVerySmallSquare;": '\U000025AB', - "Eogon;": '\U00000118', - "Eopf;": '\U0001D53C', - "Epsilon;": '\U00000395', - "Equal;": '\U00002A75', - "EqualTilde;": '\U00002242', - "Equilibrium;": '\U000021CC', - "Escr;": '\U00002130', - "Esim;": '\U00002A73', - "Eta;": '\U00000397', - "Euml;": '\U000000CB', - "Exists;": '\U00002203', - "ExponentialE;": '\U00002147', - "Fcy;": '\U00000424', - "Ffr;": '\U0001D509', - "FilledSmallSquare;": '\U000025FC', - "FilledVerySmallSquare;": '\U000025AA', - "Fopf;": '\U0001D53D', - "ForAll;": '\U00002200', - "Fouriertrf;": '\U00002131', - "Fscr;": '\U00002131', - "GJcy;": '\U00000403', - "GT;": '\U0000003E', - "Gamma;": '\U00000393', - "Gammad;": '\U000003DC', - "Gbreve;": '\U0000011E', - "Gcedil;": '\U00000122', - "Gcirc;": '\U0000011C', - "Gcy;": '\U00000413', - "Gdot;": '\U00000120', - "Gfr;": '\U0001D50A', - "Gg;": '\U000022D9', - "Gopf;": '\U0001D53E', - "GreaterEqual;": '\U00002265', - "GreaterEqualLess;": '\U000022DB', - "GreaterFullEqual;": '\U00002267', - "GreaterGreater;": '\U00002AA2', - "GreaterLess;": '\U00002277', - "GreaterSlantEqual;": '\U00002A7E', - "GreaterTilde;": '\U00002273', - "Gscr;": '\U0001D4A2', - "Gt;": '\U0000226B', - "HARDcy;": '\U0000042A', - "Hacek;": '\U000002C7', - "Hat;": '\U0000005E', - "Hcirc;": '\U00000124', - "Hfr;": '\U0000210C', - "HilbertSpace;": '\U0000210B', - "Hopf;": '\U0000210D', - "HorizontalLine;": '\U00002500', - "Hscr;": '\U0000210B', - "Hstrok;": '\U00000126', - "HumpDownHump;": '\U0000224E', - "HumpEqual;": '\U0000224F', - "IEcy;": '\U00000415', - "IJlig;": '\U00000132', - "IOcy;": '\U00000401', - "Iacute;": '\U000000CD', - "Icirc;": '\U000000CE', - "Icy;": '\U00000418', - "Idot;": '\U00000130', - "Ifr;": '\U00002111', - "Igrave;": '\U000000CC', - "Im;": '\U00002111', - "Imacr;": '\U0000012A', - "ImaginaryI;": '\U00002148', - "Implies;": '\U000021D2', - "Int;": '\U0000222C', - "Integral;": '\U0000222B', - "Intersection;": '\U000022C2', - "InvisibleComma;": '\U00002063', - "InvisibleTimes;": '\U00002062', - "Iogon;": '\U0000012E', - "Iopf;": '\U0001D540', - "Iota;": '\U00000399', - "Iscr;": '\U00002110', - "Itilde;": '\U00000128', - "Iukcy;": '\U00000406', - "Iuml;": '\U000000CF', - "Jcirc;": '\U00000134', - "Jcy;": '\U00000419', - "Jfr;": '\U0001D50D', - "Jopf;": '\U0001D541', - "Jscr;": '\U0001D4A5', - "Jsercy;": '\U00000408', - "Jukcy;": '\U00000404', - "KHcy;": '\U00000425', - "KJcy;": '\U0000040C', - "Kappa;": '\U0000039A', - "Kcedil;": '\U00000136', - "Kcy;": '\U0000041A', - "Kfr;": '\U0001D50E', - "Kopf;": '\U0001D542', - "Kscr;": '\U0001D4A6', - "LJcy;": '\U00000409', - "LT;": '\U0000003C', - "Lacute;": '\U00000139', - "Lambda;": '\U0000039B', - "Lang;": '\U000027EA', - "Laplacetrf;": '\U00002112', - "Larr;": '\U0000219E', - "Lcaron;": '\U0000013D', - "Lcedil;": '\U0000013B', - "Lcy;": '\U0000041B', - "LeftAngleBracket;": '\U000027E8', - "LeftArrow;": '\U00002190', - "LeftArrowBar;": '\U000021E4', - "LeftArrowRightArrow;": '\U000021C6', - "LeftCeiling;": '\U00002308', - "LeftDoubleBracket;": '\U000027E6', - "LeftDownTeeVector;": '\U00002961', - "LeftDownVector;": '\U000021C3', - "LeftDownVectorBar;": '\U00002959', - "LeftFloor;": '\U0000230A', - "LeftRightArrow;": '\U00002194', - "LeftRightVector;": '\U0000294E', - "LeftTee;": '\U000022A3', - "LeftTeeArrow;": '\U000021A4', - "LeftTeeVector;": '\U0000295A', - "LeftTriangle;": '\U000022B2', - "LeftTriangleBar;": '\U000029CF', - "LeftTriangleEqual;": '\U000022B4', - "LeftUpDownVector;": '\U00002951', - "LeftUpTeeVector;": '\U00002960', - "LeftUpVector;": '\U000021BF', - "LeftUpVectorBar;": '\U00002958', - "LeftVector;": '\U000021BC', - "LeftVectorBar;": '\U00002952', - "Leftarrow;": '\U000021D0', - "Leftrightarrow;": '\U000021D4', - "LessEqualGreater;": '\U000022DA', - "LessFullEqual;": '\U00002266', - "LessGreater;": '\U00002276', - "LessLess;": '\U00002AA1', - "LessSlantEqual;": '\U00002A7D', - "LessTilde;": '\U00002272', - "Lfr;": '\U0001D50F', - "Ll;": '\U000022D8', - "Lleftarrow;": '\U000021DA', - "Lmidot;": '\U0000013F', - "LongLeftArrow;": '\U000027F5', - "LongLeftRightArrow;": '\U000027F7', - "LongRightArrow;": '\U000027F6', - "Longleftarrow;": '\U000027F8', - "Longleftrightarrow;": '\U000027FA', - "Longrightarrow;": '\U000027F9', - "Lopf;": '\U0001D543', - "LowerLeftArrow;": '\U00002199', - "LowerRightArrow;": '\U00002198', - "Lscr;": '\U00002112', - "Lsh;": '\U000021B0', - "Lstrok;": '\U00000141', - "Lt;": '\U0000226A', - "Map;": '\U00002905', - "Mcy;": '\U0000041C', - "MediumSpace;": '\U0000205F', - "Mellintrf;": '\U00002133', - "Mfr;": '\U0001D510', - "MinusPlus;": '\U00002213', - "Mopf;": '\U0001D544', - "Mscr;": '\U00002133', - "Mu;": '\U0000039C', - "NJcy;": '\U0000040A', - "Nacute;": '\U00000143', - "Ncaron;": '\U00000147', - "Ncedil;": '\U00000145', - "Ncy;": '\U0000041D', - "NegativeMediumSpace;": '\U0000200B', - "NegativeThickSpace;": '\U0000200B', - "NegativeThinSpace;": '\U0000200B', - "NegativeVeryThinSpace;": '\U0000200B', - "NestedGreaterGreater;": '\U0000226B', - "NestedLessLess;": '\U0000226A', - "NewLine;": '\U0000000A', - "Nfr;": '\U0001D511', - "NoBreak;": '\U00002060', - "NonBreakingSpace;": '\U000000A0', - "Nopf;": '\U00002115', - "Not;": '\U00002AEC', - "NotCongruent;": '\U00002262', - "NotCupCap;": '\U0000226D', - "NotDoubleVerticalBar;": '\U00002226', - "NotElement;": '\U00002209', - "NotEqual;": '\U00002260', - "NotExists;": '\U00002204', - "NotGreater;": '\U0000226F', - "NotGreaterEqual;": '\U00002271', - "NotGreaterLess;": '\U00002279', - "NotGreaterTilde;": '\U00002275', - "NotLeftTriangle;": '\U000022EA', - "NotLeftTriangleEqual;": '\U000022EC', - "NotLess;": '\U0000226E', - "NotLessEqual;": '\U00002270', - "NotLessGreater;": '\U00002278', - "NotLessTilde;": '\U00002274', - "NotPrecedes;": '\U00002280', - "NotPrecedesSlantEqual;": '\U000022E0', - "NotReverseElement;": '\U0000220C', - "NotRightTriangle;": '\U000022EB', - "NotRightTriangleEqual;": '\U000022ED', - "NotSquareSubsetEqual;": '\U000022E2', - "NotSquareSupersetEqual;": '\U000022E3', - "NotSubsetEqual;": '\U00002288', - "NotSucceeds;": '\U00002281', - "NotSucceedsSlantEqual;": '\U000022E1', - "NotSupersetEqual;": '\U00002289', - "NotTilde;": '\U00002241', - "NotTildeEqual;": '\U00002244', - "NotTildeFullEqual;": '\U00002247', - "NotTildeTilde;": '\U00002249', - "NotVerticalBar;": '\U00002224', - "Nscr;": '\U0001D4A9', - "Ntilde;": '\U000000D1', - "Nu;": '\U0000039D', - "OElig;": '\U00000152', - "Oacute;": '\U000000D3', - "Ocirc;": '\U000000D4', - "Ocy;": '\U0000041E', - "Odblac;": '\U00000150', - "Ofr;": '\U0001D512', - "Ograve;": '\U000000D2', - "Omacr;": '\U0000014C', - "Omega;": '\U000003A9', - "Omicron;": '\U0000039F', - "Oopf;": '\U0001D546', - "OpenCurlyDoubleQuote;": '\U0000201C', - "OpenCurlyQuote;": '\U00002018', - "Or;": '\U00002A54', - "Oscr;": '\U0001D4AA', - "Oslash;": '\U000000D8', - "Otilde;": '\U000000D5', - "Otimes;": '\U00002A37', - "Ouml;": '\U000000D6', - "OverBar;": '\U0000203E', - "OverBrace;": '\U000023DE', - "OverBracket;": '\U000023B4', - "OverParenthesis;": '\U000023DC', - "PartialD;": '\U00002202', - "Pcy;": '\U0000041F', - "Pfr;": '\U0001D513', - "Phi;": '\U000003A6', - "Pi;": '\U000003A0', - "PlusMinus;": '\U000000B1', - "Poincareplane;": '\U0000210C', - "Popf;": '\U00002119', - "Pr;": '\U00002ABB', - "Precedes;": '\U0000227A', - "PrecedesEqual;": '\U00002AAF', - "PrecedesSlantEqual;": '\U0000227C', - "PrecedesTilde;": '\U0000227E', - "Prime;": '\U00002033', - "Product;": '\U0000220F', - "Proportion;": '\U00002237', - "Proportional;": '\U0000221D', - "Pscr;": '\U0001D4AB', - "Psi;": '\U000003A8', - "QUOT;": '\U00000022', - "Qfr;": '\U0001D514', - "Qopf;": '\U0000211A', - "Qscr;": '\U0001D4AC', - "RBarr;": '\U00002910', - "REG;": '\U000000AE', - "Racute;": '\U00000154', - "Rang;": '\U000027EB', - "Rarr;": '\U000021A0', - "Rarrtl;": '\U00002916', - "Rcaron;": '\U00000158', - "Rcedil;": '\U00000156', - "Rcy;": '\U00000420', - "Re;": '\U0000211C', - "ReverseElement;": '\U0000220B', - "ReverseEquilibrium;": '\U000021CB', - "ReverseUpEquilibrium;": '\U0000296F', - "Rfr;": '\U0000211C', - "Rho;": '\U000003A1', - "RightAngleBracket;": '\U000027E9', - "RightArrow;": '\U00002192', - "RightArrowBar;": '\U000021E5', - "RightArrowLeftArrow;": '\U000021C4', - "RightCeiling;": '\U00002309', - "RightDoubleBracket;": '\U000027E7', - "RightDownTeeVector;": '\U0000295D', - "RightDownVector;": '\U000021C2', - "RightDownVectorBar;": '\U00002955', - "RightFloor;": '\U0000230B', - "RightTee;": '\U000022A2', - "RightTeeArrow;": '\U000021A6', - "RightTeeVector;": '\U0000295B', - "RightTriangle;": '\U000022B3', - "RightTriangleBar;": '\U000029D0', - "RightTriangleEqual;": '\U000022B5', - "RightUpDownVector;": '\U0000294F', - "RightUpTeeVector;": '\U0000295C', - "RightUpVector;": '\U000021BE', - "RightUpVectorBar;": '\U00002954', - "RightVector;": '\U000021C0', - "RightVectorBar;": '\U00002953', - "Rightarrow;": '\U000021D2', - "Ropf;": '\U0000211D', - "RoundImplies;": '\U00002970', - "Rrightarrow;": '\U000021DB', - "Rscr;": '\U0000211B', - "Rsh;": '\U000021B1', - "RuleDelayed;": '\U000029F4', - "SHCHcy;": '\U00000429', - "SHcy;": '\U00000428', - "SOFTcy;": '\U0000042C', - "Sacute;": '\U0000015A', - "Sc;": '\U00002ABC', - "Scaron;": '\U00000160', - "Scedil;": '\U0000015E', - "Scirc;": '\U0000015C', - "Scy;": '\U00000421', - "Sfr;": '\U0001D516', - "ShortDownArrow;": '\U00002193', - "ShortLeftArrow;": '\U00002190', - "ShortRightArrow;": '\U00002192', - "ShortUpArrow;": '\U00002191', - "Sigma;": '\U000003A3', - "SmallCircle;": '\U00002218', - "Sopf;": '\U0001D54A', - "Sqrt;": '\U0000221A', - "Square;": '\U000025A1', - "SquareIntersection;": '\U00002293', - "SquareSubset;": '\U0000228F', - "SquareSubsetEqual;": '\U00002291', - "SquareSuperset;": '\U00002290', - "SquareSupersetEqual;": '\U00002292', - "SquareUnion;": '\U00002294', - "Sscr;": '\U0001D4AE', - "Star;": '\U000022C6', - "Sub;": '\U000022D0', - "Subset;": '\U000022D0', - "SubsetEqual;": '\U00002286', - "Succeeds;": '\U0000227B', - "SucceedsEqual;": '\U00002AB0', - "SucceedsSlantEqual;": '\U0000227D', - "SucceedsTilde;": '\U0000227F', - "SuchThat;": '\U0000220B', - "Sum;": '\U00002211', - "Sup;": '\U000022D1', - "Superset;": '\U00002283', - "SupersetEqual;": '\U00002287', - "Supset;": '\U000022D1', - "THORN;": '\U000000DE', - "TRADE;": '\U00002122', - "TSHcy;": '\U0000040B', - "TScy;": '\U00000426', - "Tab;": '\U00000009', - "Tau;": '\U000003A4', - "Tcaron;": '\U00000164', - "Tcedil;": '\U00000162', - "Tcy;": '\U00000422', - "Tfr;": '\U0001D517', - "Therefore;": '\U00002234', - "Theta;": '\U00000398', - "ThinSpace;": '\U00002009', - "Tilde;": '\U0000223C', - "TildeEqual;": '\U00002243', - "TildeFullEqual;": '\U00002245', - "TildeTilde;": '\U00002248', - "Topf;": '\U0001D54B', - "TripleDot;": '\U000020DB', - "Tscr;": '\U0001D4AF', - "Tstrok;": '\U00000166', - "Uacute;": '\U000000DA', - "Uarr;": '\U0000219F', - "Uarrocir;": '\U00002949', - "Ubrcy;": '\U0000040E', - "Ubreve;": '\U0000016C', - "Ucirc;": '\U000000DB', - "Ucy;": '\U00000423', - "Udblac;": '\U00000170', - "Ufr;": '\U0001D518', - "Ugrave;": '\U000000D9', - "Umacr;": '\U0000016A', - "UnderBar;": '\U0000005F', - "UnderBrace;": '\U000023DF', - "UnderBracket;": '\U000023B5', - "UnderParenthesis;": '\U000023DD', - "Union;": '\U000022C3', - "UnionPlus;": '\U0000228E', - "Uogon;": '\U00000172', - "Uopf;": '\U0001D54C', - "UpArrow;": '\U00002191', - "UpArrowBar;": '\U00002912', - "UpArrowDownArrow;": '\U000021C5', - "UpDownArrow;": '\U00002195', - "UpEquilibrium;": '\U0000296E', - "UpTee;": '\U000022A5', - "UpTeeArrow;": '\U000021A5', - "Uparrow;": '\U000021D1', - "Updownarrow;": '\U000021D5', - "UpperLeftArrow;": '\U00002196', - "UpperRightArrow;": '\U00002197', - "Upsi;": '\U000003D2', - "Upsilon;": '\U000003A5', - "Uring;": '\U0000016E', - "Uscr;": '\U0001D4B0', - "Utilde;": '\U00000168', - "Uuml;": '\U000000DC', - "VDash;": '\U000022AB', - "Vbar;": '\U00002AEB', - "Vcy;": '\U00000412', - "Vdash;": '\U000022A9', - "Vdashl;": '\U00002AE6', - "Vee;": '\U000022C1', - "Verbar;": '\U00002016', - "Vert;": '\U00002016', - "VerticalBar;": '\U00002223', - "VerticalLine;": '\U0000007C', - "VerticalSeparator;": '\U00002758', - "VerticalTilde;": '\U00002240', - "VeryThinSpace;": '\U0000200A', - "Vfr;": '\U0001D519', - "Vopf;": '\U0001D54D', - "Vscr;": '\U0001D4B1', - "Vvdash;": '\U000022AA', - "Wcirc;": '\U00000174', - "Wedge;": '\U000022C0', - "Wfr;": '\U0001D51A', - "Wopf;": '\U0001D54E', - "Wscr;": '\U0001D4B2', - "Xfr;": '\U0001D51B', - "Xi;": '\U0000039E', - "Xopf;": '\U0001D54F', - "Xscr;": '\U0001D4B3', - "YAcy;": '\U0000042F', - "YIcy;": '\U00000407', - "YUcy;": '\U0000042E', - "Yacute;": '\U000000DD', - "Ycirc;": '\U00000176', - "Ycy;": '\U0000042B', - "Yfr;": '\U0001D51C', - "Yopf;": '\U0001D550', - "Yscr;": '\U0001D4B4', - "Yuml;": '\U00000178', - "ZHcy;": '\U00000416', - "Zacute;": '\U00000179', - "Zcaron;": '\U0000017D', - "Zcy;": '\U00000417', - "Zdot;": '\U0000017B', - "ZeroWidthSpace;": '\U0000200B', - "Zeta;": '\U00000396', - "Zfr;": '\U00002128', - "Zopf;": '\U00002124', - "Zscr;": '\U0001D4B5', - "aacute;": '\U000000E1', - "abreve;": '\U00000103', - "ac;": '\U0000223E', - "acd;": '\U0000223F', - "acirc;": '\U000000E2', - "acute;": '\U000000B4', - "acy;": '\U00000430', - "aelig;": '\U000000E6', - "af;": '\U00002061', - "afr;": '\U0001D51E', - "agrave;": '\U000000E0', - "alefsym;": '\U00002135', - "aleph;": '\U00002135', - "alpha;": '\U000003B1', - "amacr;": '\U00000101', - "amalg;": '\U00002A3F', - "amp;": '\U00000026', - "and;": '\U00002227', - "andand;": '\U00002A55', - "andd;": '\U00002A5C', - "andslope;": '\U00002A58', - "andv;": '\U00002A5A', - "ang;": '\U00002220', - "ange;": '\U000029A4', - "angle;": '\U00002220', - "angmsd;": '\U00002221', - "angmsdaa;": '\U000029A8', - "angmsdab;": '\U000029A9', - "angmsdac;": '\U000029AA', - "angmsdad;": '\U000029AB', - "angmsdae;": '\U000029AC', - "angmsdaf;": '\U000029AD', - "angmsdag;": '\U000029AE', - "angmsdah;": '\U000029AF', - "angrt;": '\U0000221F', - "angrtvb;": '\U000022BE', - "angrtvbd;": '\U0000299D', - "angsph;": '\U00002222', - "angst;": '\U000000C5', - "angzarr;": '\U0000237C', - "aogon;": '\U00000105', - "aopf;": '\U0001D552', - "ap;": '\U00002248', - "apE;": '\U00002A70', - "apacir;": '\U00002A6F', - "ape;": '\U0000224A', - "apid;": '\U0000224B', - "apos;": '\U00000027', - "approx;": '\U00002248', - "approxeq;": '\U0000224A', - "aring;": '\U000000E5', - "ascr;": '\U0001D4B6', - "ast;": '\U0000002A', - "asymp;": '\U00002248', - "asympeq;": '\U0000224D', - "atilde;": '\U000000E3', - "auml;": '\U000000E4', - "awconint;": '\U00002233', - "awint;": '\U00002A11', - "bNot;": '\U00002AED', - "backcong;": '\U0000224C', - "backepsilon;": '\U000003F6', - "backprime;": '\U00002035', - "backsim;": '\U0000223D', - "backsimeq;": '\U000022CD', - "barvee;": '\U000022BD', - "barwed;": '\U00002305', - "barwedge;": '\U00002305', - "bbrk;": '\U000023B5', - "bbrktbrk;": '\U000023B6', - "bcong;": '\U0000224C', - "bcy;": '\U00000431', - "bdquo;": '\U0000201E', - "becaus;": '\U00002235', - "because;": '\U00002235', - "bemptyv;": '\U000029B0', - "bepsi;": '\U000003F6', - "bernou;": '\U0000212C', - "beta;": '\U000003B2', - "beth;": '\U00002136', - "between;": '\U0000226C', - "bfr;": '\U0001D51F', - "bigcap;": '\U000022C2', - "bigcirc;": '\U000025EF', - "bigcup;": '\U000022C3', - "bigodot;": '\U00002A00', - "bigoplus;": '\U00002A01', - "bigotimes;": '\U00002A02', - "bigsqcup;": '\U00002A06', - "bigstar;": '\U00002605', - "bigtriangledown;": '\U000025BD', - "bigtriangleup;": '\U000025B3', - "biguplus;": '\U00002A04', - "bigvee;": '\U000022C1', - "bigwedge;": '\U000022C0', - "bkarow;": '\U0000290D', - "blacklozenge;": '\U000029EB', - "blacksquare;": '\U000025AA', - "blacktriangle;": '\U000025B4', - "blacktriangledown;": '\U000025BE', - "blacktriangleleft;": '\U000025C2', - "blacktriangleright;": '\U000025B8', - "blank;": '\U00002423', - "blk12;": '\U00002592', - "blk14;": '\U00002591', - "blk34;": '\U00002593', - "block;": '\U00002588', - "bnot;": '\U00002310', - "bopf;": '\U0001D553', - "bot;": '\U000022A5', - "bottom;": '\U000022A5', - "bowtie;": '\U000022C8', - "boxDL;": '\U00002557', - "boxDR;": '\U00002554', - "boxDl;": '\U00002556', - "boxDr;": '\U00002553', - "boxH;": '\U00002550', - "boxHD;": '\U00002566', - "boxHU;": '\U00002569', - "boxHd;": '\U00002564', - "boxHu;": '\U00002567', - "boxUL;": '\U0000255D', - "boxUR;": '\U0000255A', - "boxUl;": '\U0000255C', - "boxUr;": '\U00002559', - "boxV;": '\U00002551', - "boxVH;": '\U0000256C', - "boxVL;": '\U00002563', - "boxVR;": '\U00002560', - "boxVh;": '\U0000256B', - "boxVl;": '\U00002562', - "boxVr;": '\U0000255F', - "boxbox;": '\U000029C9', - "boxdL;": '\U00002555', - "boxdR;": '\U00002552', - "boxdl;": '\U00002510', - "boxdr;": '\U0000250C', - "boxh;": '\U00002500', - "boxhD;": '\U00002565', - "boxhU;": '\U00002568', - "boxhd;": '\U0000252C', - "boxhu;": '\U00002534', - "boxminus;": '\U0000229F', - "boxplus;": '\U0000229E', - "boxtimes;": '\U000022A0', - "boxuL;": '\U0000255B', - "boxuR;": '\U00002558', - "boxul;": '\U00002518', - "boxur;": '\U00002514', - "boxv;": '\U00002502', - "boxvH;": '\U0000256A', - "boxvL;": '\U00002561', - "boxvR;": '\U0000255E', - "boxvh;": '\U0000253C', - "boxvl;": '\U00002524', - "boxvr;": '\U0000251C', - "bprime;": '\U00002035', - "breve;": '\U000002D8', - "brvbar;": '\U000000A6', - "bscr;": '\U0001D4B7', - "bsemi;": '\U0000204F', - "bsim;": '\U0000223D', - "bsime;": '\U000022CD', - "bsol;": '\U0000005C', - "bsolb;": '\U000029C5', - "bsolhsub;": '\U000027C8', - "bull;": '\U00002022', - "bullet;": '\U00002022', - "bump;": '\U0000224E', - "bumpE;": '\U00002AAE', - "bumpe;": '\U0000224F', - "bumpeq;": '\U0000224F', - "cacute;": '\U00000107', - "cap;": '\U00002229', - "capand;": '\U00002A44', - "capbrcup;": '\U00002A49', - "capcap;": '\U00002A4B', - "capcup;": '\U00002A47', - "capdot;": '\U00002A40', - "caret;": '\U00002041', - "caron;": '\U000002C7', - "ccaps;": '\U00002A4D', - "ccaron;": '\U0000010D', - "ccedil;": '\U000000E7', - "ccirc;": '\U00000109', - "ccups;": '\U00002A4C', - "ccupssm;": '\U00002A50', - "cdot;": '\U0000010B', - "cedil;": '\U000000B8', - "cemptyv;": '\U000029B2', - "cent;": '\U000000A2', - "centerdot;": '\U000000B7', - "cfr;": '\U0001D520', - "chcy;": '\U00000447', - "check;": '\U00002713', - "checkmark;": '\U00002713', - "chi;": '\U000003C7', - "cir;": '\U000025CB', - "cirE;": '\U000029C3', - "circ;": '\U000002C6', - "circeq;": '\U00002257', - "circlearrowleft;": '\U000021BA', - "circlearrowright;": '\U000021BB', - "circledR;": '\U000000AE', - "circledS;": '\U000024C8', - "circledast;": '\U0000229B', - "circledcirc;": '\U0000229A', - "circleddash;": '\U0000229D', - "cire;": '\U00002257', - "cirfnint;": '\U00002A10', - "cirmid;": '\U00002AEF', - "cirscir;": '\U000029C2', - "clubs;": '\U00002663', - "clubsuit;": '\U00002663', - "colon;": '\U0000003A', - "colone;": '\U00002254', - "coloneq;": '\U00002254', - "comma;": '\U0000002C', - "commat;": '\U00000040', - "comp;": '\U00002201', - "compfn;": '\U00002218', - "complement;": '\U00002201', - "complexes;": '\U00002102', - "cong;": '\U00002245', - "congdot;": '\U00002A6D', - "conint;": '\U0000222E', - "copf;": '\U0001D554', - "coprod;": '\U00002210', - "copy;": '\U000000A9', - "copysr;": '\U00002117', - "crarr;": '\U000021B5', - "cross;": '\U00002717', - "cscr;": '\U0001D4B8', - "csub;": '\U00002ACF', - "csube;": '\U00002AD1', - "csup;": '\U00002AD0', - "csupe;": '\U00002AD2', - "ctdot;": '\U000022EF', - "cudarrl;": '\U00002938', - "cudarrr;": '\U00002935', - "cuepr;": '\U000022DE', - "cuesc;": '\U000022DF', - "cularr;": '\U000021B6', - "cularrp;": '\U0000293D', - "cup;": '\U0000222A', - "cupbrcap;": '\U00002A48', - "cupcap;": '\U00002A46', - "cupcup;": '\U00002A4A', - "cupdot;": '\U0000228D', - "cupor;": '\U00002A45', - "curarr;": '\U000021B7', - "curarrm;": '\U0000293C', - "curlyeqprec;": '\U000022DE', - "curlyeqsucc;": '\U000022DF', - "curlyvee;": '\U000022CE', - "curlywedge;": '\U000022CF', - "curren;": '\U000000A4', - "curvearrowleft;": '\U000021B6', - "curvearrowright;": '\U000021B7', - "cuvee;": '\U000022CE', - "cuwed;": '\U000022CF', - "cwconint;": '\U00002232', - "cwint;": '\U00002231', - "cylcty;": '\U0000232D', - "dArr;": '\U000021D3', - "dHar;": '\U00002965', - "dagger;": '\U00002020', - "daleth;": '\U00002138', - "darr;": '\U00002193', - "dash;": '\U00002010', - "dashv;": '\U000022A3', - "dbkarow;": '\U0000290F', - "dblac;": '\U000002DD', - "dcaron;": '\U0000010F', - "dcy;": '\U00000434', - "dd;": '\U00002146', - "ddagger;": '\U00002021', - "ddarr;": '\U000021CA', - "ddotseq;": '\U00002A77', - "deg;": '\U000000B0', - "delta;": '\U000003B4', - "demptyv;": '\U000029B1', - "dfisht;": '\U0000297F', - "dfr;": '\U0001D521', - "dharl;": '\U000021C3', - "dharr;": '\U000021C2', - "diam;": '\U000022C4', - "diamond;": '\U000022C4', - "diamondsuit;": '\U00002666', - "diams;": '\U00002666', - "die;": '\U000000A8', - "digamma;": '\U000003DD', - "disin;": '\U000022F2', - "div;": '\U000000F7', - "divide;": '\U000000F7', - "divideontimes;": '\U000022C7', - "divonx;": '\U000022C7', - "djcy;": '\U00000452', - "dlcorn;": '\U0000231E', - "dlcrop;": '\U0000230D', - "dollar;": '\U00000024', - "dopf;": '\U0001D555', - "dot;": '\U000002D9', - "doteq;": '\U00002250', - "doteqdot;": '\U00002251', - "dotminus;": '\U00002238', - "dotplus;": '\U00002214', - "dotsquare;": '\U000022A1', - "doublebarwedge;": '\U00002306', - "downarrow;": '\U00002193', - "downdownarrows;": '\U000021CA', - "downharpoonleft;": '\U000021C3', - "downharpoonright;": '\U000021C2', - "drbkarow;": '\U00002910', - "drcorn;": '\U0000231F', - "drcrop;": '\U0000230C', - "dscr;": '\U0001D4B9', - "dscy;": '\U00000455', - "dsol;": '\U000029F6', - "dstrok;": '\U00000111', - "dtdot;": '\U000022F1', - "dtri;": '\U000025BF', - "dtrif;": '\U000025BE', - "duarr;": '\U000021F5', - "duhar;": '\U0000296F', - "dwangle;": '\U000029A6', - "dzcy;": '\U0000045F', - "dzigrarr;": '\U000027FF', - "eDDot;": '\U00002A77', - "eDot;": '\U00002251', - "eacute;": '\U000000E9', - "easter;": '\U00002A6E', - "ecaron;": '\U0000011B', - "ecir;": '\U00002256', - "ecirc;": '\U000000EA', - "ecolon;": '\U00002255', - "ecy;": '\U0000044D', - "edot;": '\U00000117', - "ee;": '\U00002147', - "efDot;": '\U00002252', - "efr;": '\U0001D522', - "eg;": '\U00002A9A', - "egrave;": '\U000000E8', - "egs;": '\U00002A96', - "egsdot;": '\U00002A98', - "el;": '\U00002A99', - "elinters;": '\U000023E7', - "ell;": '\U00002113', - "els;": '\U00002A95', - "elsdot;": '\U00002A97', - "emacr;": '\U00000113', - "empty;": '\U00002205', - "emptyset;": '\U00002205', - "emptyv;": '\U00002205', - "emsp;": '\U00002003', - "emsp13;": '\U00002004', - "emsp14;": '\U00002005', - "eng;": '\U0000014B', - "ensp;": '\U00002002', - "eogon;": '\U00000119', - "eopf;": '\U0001D556', - "epar;": '\U000022D5', - "eparsl;": '\U000029E3', - "eplus;": '\U00002A71', - "epsi;": '\U000003B5', - "epsilon;": '\U000003B5', - "epsiv;": '\U000003F5', - "eqcirc;": '\U00002256', - "eqcolon;": '\U00002255', - "eqsim;": '\U00002242', - "eqslantgtr;": '\U00002A96', - "eqslantless;": '\U00002A95', - "equals;": '\U0000003D', - "equest;": '\U0000225F', - "equiv;": '\U00002261', - "equivDD;": '\U00002A78', - "eqvparsl;": '\U000029E5', - "erDot;": '\U00002253', - "erarr;": '\U00002971', - "escr;": '\U0000212F', - "esdot;": '\U00002250', - "esim;": '\U00002242', - "eta;": '\U000003B7', - "eth;": '\U000000F0', - "euml;": '\U000000EB', - "euro;": '\U000020AC', - "excl;": '\U00000021', - "exist;": '\U00002203', - "expectation;": '\U00002130', - "exponentiale;": '\U00002147', - "fallingdotseq;": '\U00002252', - "fcy;": '\U00000444', - "female;": '\U00002640', - "ffilig;": '\U0000FB03', - "fflig;": '\U0000FB00', - "ffllig;": '\U0000FB04', - "ffr;": '\U0001D523', - "filig;": '\U0000FB01', - "flat;": '\U0000266D', - "fllig;": '\U0000FB02', - "fltns;": '\U000025B1', - "fnof;": '\U00000192', - "fopf;": '\U0001D557', - "forall;": '\U00002200', - "fork;": '\U000022D4', - "forkv;": '\U00002AD9', - "fpartint;": '\U00002A0D', - "frac12;": '\U000000BD', - "frac13;": '\U00002153', - "frac14;": '\U000000BC', - "frac15;": '\U00002155', - "frac16;": '\U00002159', - "frac18;": '\U0000215B', - "frac23;": '\U00002154', - "frac25;": '\U00002156', - "frac34;": '\U000000BE', - "frac35;": '\U00002157', - "frac38;": '\U0000215C', - "frac45;": '\U00002158', - "frac56;": '\U0000215A', - "frac58;": '\U0000215D', - "frac78;": '\U0000215E', - "frasl;": '\U00002044', - "frown;": '\U00002322', - "fscr;": '\U0001D4BB', - "gE;": '\U00002267', - "gEl;": '\U00002A8C', - "gacute;": '\U000001F5', - "gamma;": '\U000003B3', - "gammad;": '\U000003DD', - "gap;": '\U00002A86', - "gbreve;": '\U0000011F', - "gcirc;": '\U0000011D', - "gcy;": '\U00000433', - "gdot;": '\U00000121', - "ge;": '\U00002265', - "gel;": '\U000022DB', - "geq;": '\U00002265', - "geqq;": '\U00002267', - "geqslant;": '\U00002A7E', - "ges;": '\U00002A7E', - "gescc;": '\U00002AA9', - "gesdot;": '\U00002A80', - "gesdoto;": '\U00002A82', - "gesdotol;": '\U00002A84', - "gesles;": '\U00002A94', - "gfr;": '\U0001D524', - "gg;": '\U0000226B', - "ggg;": '\U000022D9', - "gimel;": '\U00002137', - "gjcy;": '\U00000453', - "gl;": '\U00002277', - "glE;": '\U00002A92', - "gla;": '\U00002AA5', - "glj;": '\U00002AA4', - "gnE;": '\U00002269', - "gnap;": '\U00002A8A', - "gnapprox;": '\U00002A8A', - "gne;": '\U00002A88', - "gneq;": '\U00002A88', - "gneqq;": '\U00002269', - "gnsim;": '\U000022E7', - "gopf;": '\U0001D558', - "grave;": '\U00000060', - "gscr;": '\U0000210A', - "gsim;": '\U00002273', - "gsime;": '\U00002A8E', - "gsiml;": '\U00002A90', - "gt;": '\U0000003E', - "gtcc;": '\U00002AA7', - "gtcir;": '\U00002A7A', - "gtdot;": '\U000022D7', - "gtlPar;": '\U00002995', - "gtquest;": '\U00002A7C', - "gtrapprox;": '\U00002A86', - "gtrarr;": '\U00002978', - "gtrdot;": '\U000022D7', - "gtreqless;": '\U000022DB', - "gtreqqless;": '\U00002A8C', - "gtrless;": '\U00002277', - "gtrsim;": '\U00002273', - "hArr;": '\U000021D4', - "hairsp;": '\U0000200A', - "half;": '\U000000BD', - "hamilt;": '\U0000210B', - "hardcy;": '\U0000044A', - "harr;": '\U00002194', - "harrcir;": '\U00002948', - "harrw;": '\U000021AD', - "hbar;": '\U0000210F', - "hcirc;": '\U00000125', - "hearts;": '\U00002665', - "heartsuit;": '\U00002665', - "hellip;": '\U00002026', - "hercon;": '\U000022B9', - "hfr;": '\U0001D525', - "hksearow;": '\U00002925', - "hkswarow;": '\U00002926', - "hoarr;": '\U000021FF', - "homtht;": '\U0000223B', - "hookleftarrow;": '\U000021A9', - "hookrightarrow;": '\U000021AA', - "hopf;": '\U0001D559', - "horbar;": '\U00002015', - "hscr;": '\U0001D4BD', - "hslash;": '\U0000210F', - "hstrok;": '\U00000127', - "hybull;": '\U00002043', - "hyphen;": '\U00002010', - "iacute;": '\U000000ED', - "ic;": '\U00002063', - "icirc;": '\U000000EE', - "icy;": '\U00000438', - "iecy;": '\U00000435', - "iexcl;": '\U000000A1', - "iff;": '\U000021D4', - "ifr;": '\U0001D526', - "igrave;": '\U000000EC', - "ii;": '\U00002148', - "iiiint;": '\U00002A0C', - "iiint;": '\U0000222D', - "iinfin;": '\U000029DC', - "iiota;": '\U00002129', - "ijlig;": '\U00000133', - "imacr;": '\U0000012B', - "image;": '\U00002111', - "imagline;": '\U00002110', - "imagpart;": '\U00002111', - "imath;": '\U00000131', - "imof;": '\U000022B7', - "imped;": '\U000001B5', - "in;": '\U00002208', - "incare;": '\U00002105', - "infin;": '\U0000221E', - "infintie;": '\U000029DD', - "inodot;": '\U00000131', - "int;": '\U0000222B', - "intcal;": '\U000022BA', - "integers;": '\U00002124', - "intercal;": '\U000022BA', - "intlarhk;": '\U00002A17', - "intprod;": '\U00002A3C', - "iocy;": '\U00000451', - "iogon;": '\U0000012F', - "iopf;": '\U0001D55A', - "iota;": '\U000003B9', - "iprod;": '\U00002A3C', - "iquest;": '\U000000BF', - "iscr;": '\U0001D4BE', - "isin;": '\U00002208', - "isinE;": '\U000022F9', - "isindot;": '\U000022F5', - "isins;": '\U000022F4', - "isinsv;": '\U000022F3', - "isinv;": '\U00002208', - "it;": '\U00002062', - "itilde;": '\U00000129', - "iukcy;": '\U00000456', - "iuml;": '\U000000EF', - "jcirc;": '\U00000135', - "jcy;": '\U00000439', - "jfr;": '\U0001D527', - "jmath;": '\U00000237', - "jopf;": '\U0001D55B', - "jscr;": '\U0001D4BF', - "jsercy;": '\U00000458', - "jukcy;": '\U00000454', - "kappa;": '\U000003BA', - "kappav;": '\U000003F0', - "kcedil;": '\U00000137', - "kcy;": '\U0000043A', - "kfr;": '\U0001D528', - "kgreen;": '\U00000138', - "khcy;": '\U00000445', - "kjcy;": '\U0000045C', - "kopf;": '\U0001D55C', - "kscr;": '\U0001D4C0', - "lAarr;": '\U000021DA', - "lArr;": '\U000021D0', - "lAtail;": '\U0000291B', - "lBarr;": '\U0000290E', - "lE;": '\U00002266', - "lEg;": '\U00002A8B', - "lHar;": '\U00002962', - "lacute;": '\U0000013A', - "laemptyv;": '\U000029B4', - "lagran;": '\U00002112', - "lambda;": '\U000003BB', - "lang;": '\U000027E8', - "langd;": '\U00002991', - "langle;": '\U000027E8', - "lap;": '\U00002A85', - "laquo;": '\U000000AB', - "larr;": '\U00002190', - "larrb;": '\U000021E4', - "larrbfs;": '\U0000291F', - "larrfs;": '\U0000291D', - "larrhk;": '\U000021A9', - "larrlp;": '\U000021AB', - "larrpl;": '\U00002939', - "larrsim;": '\U00002973', - "larrtl;": '\U000021A2', - "lat;": '\U00002AAB', - "latail;": '\U00002919', - "late;": '\U00002AAD', - "lbarr;": '\U0000290C', - "lbbrk;": '\U00002772', - "lbrace;": '\U0000007B', - "lbrack;": '\U0000005B', - "lbrke;": '\U0000298B', - "lbrksld;": '\U0000298F', - "lbrkslu;": '\U0000298D', - "lcaron;": '\U0000013E', - "lcedil;": '\U0000013C', - "lceil;": '\U00002308', - "lcub;": '\U0000007B', - "lcy;": '\U0000043B', - "ldca;": '\U00002936', - "ldquo;": '\U0000201C', - "ldquor;": '\U0000201E', - "ldrdhar;": '\U00002967', - "ldrushar;": '\U0000294B', - "ldsh;": '\U000021B2', - "le;": '\U00002264', - "leftarrow;": '\U00002190', - "leftarrowtail;": '\U000021A2', - "leftharpoondown;": '\U000021BD', - "leftharpoonup;": '\U000021BC', - "leftleftarrows;": '\U000021C7', - "leftrightarrow;": '\U00002194', - "leftrightarrows;": '\U000021C6', - "leftrightharpoons;": '\U000021CB', - "leftrightsquigarrow;": '\U000021AD', - "leftthreetimes;": '\U000022CB', - "leg;": '\U000022DA', - "leq;": '\U00002264', - "leqq;": '\U00002266', - "leqslant;": '\U00002A7D', - "les;": '\U00002A7D', - "lescc;": '\U00002AA8', - "lesdot;": '\U00002A7F', - "lesdoto;": '\U00002A81', - "lesdotor;": '\U00002A83', - "lesges;": '\U00002A93', - "lessapprox;": '\U00002A85', - "lessdot;": '\U000022D6', - "lesseqgtr;": '\U000022DA', - "lesseqqgtr;": '\U00002A8B', - "lessgtr;": '\U00002276', - "lesssim;": '\U00002272', - "lfisht;": '\U0000297C', - "lfloor;": '\U0000230A', - "lfr;": '\U0001D529', - "lg;": '\U00002276', - "lgE;": '\U00002A91', - "lhard;": '\U000021BD', - "lharu;": '\U000021BC', - "lharul;": '\U0000296A', - "lhblk;": '\U00002584', - "ljcy;": '\U00000459', - "ll;": '\U0000226A', - "llarr;": '\U000021C7', - "llcorner;": '\U0000231E', - "llhard;": '\U0000296B', - "lltri;": '\U000025FA', - "lmidot;": '\U00000140', - "lmoust;": '\U000023B0', - "lmoustache;": '\U000023B0', - "lnE;": '\U00002268', - "lnap;": '\U00002A89', - "lnapprox;": '\U00002A89', - "lne;": '\U00002A87', - "lneq;": '\U00002A87', - "lneqq;": '\U00002268', - "lnsim;": '\U000022E6', - "loang;": '\U000027EC', - "loarr;": '\U000021FD', - "lobrk;": '\U000027E6', - "longleftarrow;": '\U000027F5', - "longleftrightarrow;": '\U000027F7', - "longmapsto;": '\U000027FC', - "longrightarrow;": '\U000027F6', - "looparrowleft;": '\U000021AB', - "looparrowright;": '\U000021AC', - "lopar;": '\U00002985', - "lopf;": '\U0001D55D', - "loplus;": '\U00002A2D', - "lotimes;": '\U00002A34', - "lowast;": '\U00002217', - "lowbar;": '\U0000005F', - "loz;": '\U000025CA', - "lozenge;": '\U000025CA', - "lozf;": '\U000029EB', - "lpar;": '\U00000028', - "lparlt;": '\U00002993', - "lrarr;": '\U000021C6', - "lrcorner;": '\U0000231F', - "lrhar;": '\U000021CB', - "lrhard;": '\U0000296D', - "lrm;": '\U0000200E', - "lrtri;": '\U000022BF', - "lsaquo;": '\U00002039', - "lscr;": '\U0001D4C1', - "lsh;": '\U000021B0', - "lsim;": '\U00002272', - "lsime;": '\U00002A8D', - "lsimg;": '\U00002A8F', - "lsqb;": '\U0000005B', - "lsquo;": '\U00002018', - "lsquor;": '\U0000201A', - "lstrok;": '\U00000142', - "lt;": '\U0000003C', - "ltcc;": '\U00002AA6', - "ltcir;": '\U00002A79', - "ltdot;": '\U000022D6', - "lthree;": '\U000022CB', - "ltimes;": '\U000022C9', - "ltlarr;": '\U00002976', - "ltquest;": '\U00002A7B', - "ltrPar;": '\U00002996', - "ltri;": '\U000025C3', - "ltrie;": '\U000022B4', - "ltrif;": '\U000025C2', - "lurdshar;": '\U0000294A', - "luruhar;": '\U00002966', - "mDDot;": '\U0000223A', - "macr;": '\U000000AF', - "male;": '\U00002642', - "malt;": '\U00002720', - "maltese;": '\U00002720', - "map;": '\U000021A6', - "mapsto;": '\U000021A6', - "mapstodown;": '\U000021A7', - "mapstoleft;": '\U000021A4', - "mapstoup;": '\U000021A5', - "marker;": '\U000025AE', - "mcomma;": '\U00002A29', - "mcy;": '\U0000043C', - "mdash;": '\U00002014', - "measuredangle;": '\U00002221', - "mfr;": '\U0001D52A', - "mho;": '\U00002127', - "micro;": '\U000000B5', - "mid;": '\U00002223', - "midast;": '\U0000002A', - "midcir;": '\U00002AF0', - "middot;": '\U000000B7', - "minus;": '\U00002212', - "minusb;": '\U0000229F', - "minusd;": '\U00002238', - "minusdu;": '\U00002A2A', - "mlcp;": '\U00002ADB', - "mldr;": '\U00002026', - "mnplus;": '\U00002213', - "models;": '\U000022A7', - "mopf;": '\U0001D55E', - "mp;": '\U00002213', - "mscr;": '\U0001D4C2', - "mstpos;": '\U0000223E', - "mu;": '\U000003BC', - "multimap;": '\U000022B8', - "mumap;": '\U000022B8', - "nLeftarrow;": '\U000021CD', - "nLeftrightarrow;": '\U000021CE', - "nRightarrow;": '\U000021CF', - "nVDash;": '\U000022AF', - "nVdash;": '\U000022AE', - "nabla;": '\U00002207', - "nacute;": '\U00000144', - "nap;": '\U00002249', - "napos;": '\U00000149', - "napprox;": '\U00002249', - "natur;": '\U0000266E', - "natural;": '\U0000266E', - "naturals;": '\U00002115', - "nbsp;": '\U000000A0', - "ncap;": '\U00002A43', - "ncaron;": '\U00000148', - "ncedil;": '\U00000146', - "ncong;": '\U00002247', - "ncup;": '\U00002A42', - "ncy;": '\U0000043D', - "ndash;": '\U00002013', - "ne;": '\U00002260', - "neArr;": '\U000021D7', - "nearhk;": '\U00002924', - "nearr;": '\U00002197', - "nearrow;": '\U00002197', - "nequiv;": '\U00002262', - "nesear;": '\U00002928', - "nexist;": '\U00002204', - "nexists;": '\U00002204', - "nfr;": '\U0001D52B', - "nge;": '\U00002271', - "ngeq;": '\U00002271', - "ngsim;": '\U00002275', - "ngt;": '\U0000226F', - "ngtr;": '\U0000226F', - "nhArr;": '\U000021CE', - "nharr;": '\U000021AE', - "nhpar;": '\U00002AF2', - "ni;": '\U0000220B', - "nis;": '\U000022FC', - "nisd;": '\U000022FA', - "niv;": '\U0000220B', - "njcy;": '\U0000045A', - "nlArr;": '\U000021CD', - "nlarr;": '\U0000219A', - "nldr;": '\U00002025', - "nle;": '\U00002270', - "nleftarrow;": '\U0000219A', - "nleftrightarrow;": '\U000021AE', - "nleq;": '\U00002270', - "nless;": '\U0000226E', - "nlsim;": '\U00002274', - "nlt;": '\U0000226E', - "nltri;": '\U000022EA', - "nltrie;": '\U000022EC', - "nmid;": '\U00002224', - "nopf;": '\U0001D55F', - "not;": '\U000000AC', - "notin;": '\U00002209', - "notinva;": '\U00002209', - "notinvb;": '\U000022F7', - "notinvc;": '\U000022F6', - "notni;": '\U0000220C', - "notniva;": '\U0000220C', - "notnivb;": '\U000022FE', - "notnivc;": '\U000022FD', - "npar;": '\U00002226', - "nparallel;": '\U00002226', - "npolint;": '\U00002A14', - "npr;": '\U00002280', - "nprcue;": '\U000022E0', - "nprec;": '\U00002280', - "nrArr;": '\U000021CF', - "nrarr;": '\U0000219B', - "nrightarrow;": '\U0000219B', - "nrtri;": '\U000022EB', - "nrtrie;": '\U000022ED', - "nsc;": '\U00002281', - "nsccue;": '\U000022E1', - "nscr;": '\U0001D4C3', - "nshortmid;": '\U00002224', - "nshortparallel;": '\U00002226', - "nsim;": '\U00002241', - "nsime;": '\U00002244', - "nsimeq;": '\U00002244', - "nsmid;": '\U00002224', - "nspar;": '\U00002226', - "nsqsube;": '\U000022E2', - "nsqsupe;": '\U000022E3', - "nsub;": '\U00002284', - "nsube;": '\U00002288', - "nsubseteq;": '\U00002288', - "nsucc;": '\U00002281', - "nsup;": '\U00002285', - "nsupe;": '\U00002289', - "nsupseteq;": '\U00002289', - "ntgl;": '\U00002279', - "ntilde;": '\U000000F1', - "ntlg;": '\U00002278', - "ntriangleleft;": '\U000022EA', - "ntrianglelefteq;": '\U000022EC', - "ntriangleright;": '\U000022EB', - "ntrianglerighteq;": '\U000022ED', - "nu;": '\U000003BD', - "num;": '\U00000023', - "numero;": '\U00002116', - "numsp;": '\U00002007', - "nvDash;": '\U000022AD', - "nvHarr;": '\U00002904', - "nvdash;": '\U000022AC', - "nvinfin;": '\U000029DE', - "nvlArr;": '\U00002902', - "nvrArr;": '\U00002903', - "nwArr;": '\U000021D6', - "nwarhk;": '\U00002923', - "nwarr;": '\U00002196', - "nwarrow;": '\U00002196', - "nwnear;": '\U00002927', - "oS;": '\U000024C8', - "oacute;": '\U000000F3', - "oast;": '\U0000229B', - "ocir;": '\U0000229A', - "ocirc;": '\U000000F4', - "ocy;": '\U0000043E', - "odash;": '\U0000229D', - "odblac;": '\U00000151', - "odiv;": '\U00002A38', - "odot;": '\U00002299', - "odsold;": '\U000029BC', - "oelig;": '\U00000153', - "ofcir;": '\U000029BF', - "ofr;": '\U0001D52C', - "ogon;": '\U000002DB', - "ograve;": '\U000000F2', - "ogt;": '\U000029C1', - "ohbar;": '\U000029B5', - "ohm;": '\U000003A9', - "oint;": '\U0000222E', - "olarr;": '\U000021BA', - "olcir;": '\U000029BE', - "olcross;": '\U000029BB', - "oline;": '\U0000203E', - "olt;": '\U000029C0', - "omacr;": '\U0000014D', - "omega;": '\U000003C9', - "omicron;": '\U000003BF', - "omid;": '\U000029B6', - "ominus;": '\U00002296', - "oopf;": '\U0001D560', - "opar;": '\U000029B7', - "operp;": '\U000029B9', - "oplus;": '\U00002295', - "or;": '\U00002228', - "orarr;": '\U000021BB', - "ord;": '\U00002A5D', - "order;": '\U00002134', - "orderof;": '\U00002134', - "ordf;": '\U000000AA', - "ordm;": '\U000000BA', - "origof;": '\U000022B6', - "oror;": '\U00002A56', - "orslope;": '\U00002A57', - "orv;": '\U00002A5B', - "oscr;": '\U00002134', - "oslash;": '\U000000F8', - "osol;": '\U00002298', - "otilde;": '\U000000F5', - "otimes;": '\U00002297', - "otimesas;": '\U00002A36', - "ouml;": '\U000000F6', - "ovbar;": '\U0000233D', - "par;": '\U00002225', - "para;": '\U000000B6', - "parallel;": '\U00002225', - "parsim;": '\U00002AF3', - "parsl;": '\U00002AFD', - "part;": '\U00002202', - "pcy;": '\U0000043F', - "percnt;": '\U00000025', - "period;": '\U0000002E', - "permil;": '\U00002030', - "perp;": '\U000022A5', - "pertenk;": '\U00002031', - "pfr;": '\U0001D52D', - "phi;": '\U000003C6', - "phiv;": '\U000003D5', - "phmmat;": '\U00002133', - "phone;": '\U0000260E', - "pi;": '\U000003C0', - "pitchfork;": '\U000022D4', - "piv;": '\U000003D6', - "planck;": '\U0000210F', - "planckh;": '\U0000210E', - "plankv;": '\U0000210F', - "plus;": '\U0000002B', - "plusacir;": '\U00002A23', - "plusb;": '\U0000229E', - "pluscir;": '\U00002A22', - "plusdo;": '\U00002214', - "plusdu;": '\U00002A25', - "pluse;": '\U00002A72', - "plusmn;": '\U000000B1', - "plussim;": '\U00002A26', - "plustwo;": '\U00002A27', - "pm;": '\U000000B1', - "pointint;": '\U00002A15', - "popf;": '\U0001D561', - "pound;": '\U000000A3', - "pr;": '\U0000227A', - "prE;": '\U00002AB3', - "prap;": '\U00002AB7', - "prcue;": '\U0000227C', - "pre;": '\U00002AAF', - "prec;": '\U0000227A', - "precapprox;": '\U00002AB7', - "preccurlyeq;": '\U0000227C', - "preceq;": '\U00002AAF', - "precnapprox;": '\U00002AB9', - "precneqq;": '\U00002AB5', - "precnsim;": '\U000022E8', - "precsim;": '\U0000227E', - "prime;": '\U00002032', - "primes;": '\U00002119', - "prnE;": '\U00002AB5', - "prnap;": '\U00002AB9', - "prnsim;": '\U000022E8', - "prod;": '\U0000220F', - "profalar;": '\U0000232E', - "profline;": '\U00002312', - "profsurf;": '\U00002313', - "prop;": '\U0000221D', - "propto;": '\U0000221D', - "prsim;": '\U0000227E', - "prurel;": '\U000022B0', - "pscr;": '\U0001D4C5', - "psi;": '\U000003C8', - "puncsp;": '\U00002008', - "qfr;": '\U0001D52E', - "qint;": '\U00002A0C', - "qopf;": '\U0001D562', - "qprime;": '\U00002057', - "qscr;": '\U0001D4C6', - "quaternions;": '\U0000210D', - "quatint;": '\U00002A16', - "quest;": '\U0000003F', - "questeq;": '\U0000225F', - "quot;": '\U00000022', - "rAarr;": '\U000021DB', - "rArr;": '\U000021D2', - "rAtail;": '\U0000291C', - "rBarr;": '\U0000290F', - "rHar;": '\U00002964', - "racute;": '\U00000155', - "radic;": '\U0000221A', - "raemptyv;": '\U000029B3', - "rang;": '\U000027E9', - "rangd;": '\U00002992', - "range;": '\U000029A5', - "rangle;": '\U000027E9', - "raquo;": '\U000000BB', - "rarr;": '\U00002192', - "rarrap;": '\U00002975', - "rarrb;": '\U000021E5', - "rarrbfs;": '\U00002920', - "rarrc;": '\U00002933', - "rarrfs;": '\U0000291E', - "rarrhk;": '\U000021AA', - "rarrlp;": '\U000021AC', - "rarrpl;": '\U00002945', - "rarrsim;": '\U00002974', - "rarrtl;": '\U000021A3', - "rarrw;": '\U0000219D', - "ratail;": '\U0000291A', - "ratio;": '\U00002236', - "rationals;": '\U0000211A', - "rbarr;": '\U0000290D', - "rbbrk;": '\U00002773', - "rbrace;": '\U0000007D', - "rbrack;": '\U0000005D', - "rbrke;": '\U0000298C', - "rbrksld;": '\U0000298E', - "rbrkslu;": '\U00002990', - "rcaron;": '\U00000159', - "rcedil;": '\U00000157', - "rceil;": '\U00002309', - "rcub;": '\U0000007D', - "rcy;": '\U00000440', - "rdca;": '\U00002937', - "rdldhar;": '\U00002969', - "rdquo;": '\U0000201D', - "rdquor;": '\U0000201D', - "rdsh;": '\U000021B3', - "real;": '\U0000211C', - "realine;": '\U0000211B', - "realpart;": '\U0000211C', - "reals;": '\U0000211D', - "rect;": '\U000025AD', - "reg;": '\U000000AE', - "rfisht;": '\U0000297D', - "rfloor;": '\U0000230B', - "rfr;": '\U0001D52F', - "rhard;": '\U000021C1', - "rharu;": '\U000021C0', - "rharul;": '\U0000296C', - "rho;": '\U000003C1', - "rhov;": '\U000003F1', - "rightarrow;": '\U00002192', - "rightarrowtail;": '\U000021A3', - "rightharpoondown;": '\U000021C1', - "rightharpoonup;": '\U000021C0', - "rightleftarrows;": '\U000021C4', - "rightleftharpoons;": '\U000021CC', - "rightrightarrows;": '\U000021C9', - "rightsquigarrow;": '\U0000219D', - "rightthreetimes;": '\U000022CC', - "ring;": '\U000002DA', - "risingdotseq;": '\U00002253', - "rlarr;": '\U000021C4', - "rlhar;": '\U000021CC', - "rlm;": '\U0000200F', - "rmoust;": '\U000023B1', - "rmoustache;": '\U000023B1', - "rnmid;": '\U00002AEE', - "roang;": '\U000027ED', - "roarr;": '\U000021FE', - "robrk;": '\U000027E7', - "ropar;": '\U00002986', - "ropf;": '\U0001D563', - "roplus;": '\U00002A2E', - "rotimes;": '\U00002A35', - "rpar;": '\U00000029', - "rpargt;": '\U00002994', - "rppolint;": '\U00002A12', - "rrarr;": '\U000021C9', - "rsaquo;": '\U0000203A', - "rscr;": '\U0001D4C7', - "rsh;": '\U000021B1', - "rsqb;": '\U0000005D', - "rsquo;": '\U00002019', - "rsquor;": '\U00002019', - "rthree;": '\U000022CC', - "rtimes;": '\U000022CA', - "rtri;": '\U000025B9', - "rtrie;": '\U000022B5', - "rtrif;": '\U000025B8', - "rtriltri;": '\U000029CE', - "ruluhar;": '\U00002968', - "rx;": '\U0000211E', - "sacute;": '\U0000015B', - "sbquo;": '\U0000201A', - "sc;": '\U0000227B', - "scE;": '\U00002AB4', - "scap;": '\U00002AB8', - "scaron;": '\U00000161', - "sccue;": '\U0000227D', - "sce;": '\U00002AB0', - "scedil;": '\U0000015F', - "scirc;": '\U0000015D', - "scnE;": '\U00002AB6', - "scnap;": '\U00002ABA', - "scnsim;": '\U000022E9', - "scpolint;": '\U00002A13', - "scsim;": '\U0000227F', - "scy;": '\U00000441', - "sdot;": '\U000022C5', - "sdotb;": '\U000022A1', - "sdote;": '\U00002A66', - "seArr;": '\U000021D8', - "searhk;": '\U00002925', - "searr;": '\U00002198', - "searrow;": '\U00002198', - "sect;": '\U000000A7', - "semi;": '\U0000003B', - "seswar;": '\U00002929', - "setminus;": '\U00002216', - "setmn;": '\U00002216', - "sext;": '\U00002736', - "sfr;": '\U0001D530', - "sfrown;": '\U00002322', - "sharp;": '\U0000266F', - "shchcy;": '\U00000449', - "shcy;": '\U00000448', - "shortmid;": '\U00002223', - "shortparallel;": '\U00002225', - "shy;": '\U000000AD', - "sigma;": '\U000003C3', - "sigmaf;": '\U000003C2', - "sigmav;": '\U000003C2', - "sim;": '\U0000223C', - "simdot;": '\U00002A6A', - "sime;": '\U00002243', - "simeq;": '\U00002243', - "simg;": '\U00002A9E', - "simgE;": '\U00002AA0', - "siml;": '\U00002A9D', - "simlE;": '\U00002A9F', - "simne;": '\U00002246', - "simplus;": '\U00002A24', - "simrarr;": '\U00002972', - "slarr;": '\U00002190', - "smallsetminus;": '\U00002216', - "smashp;": '\U00002A33', - "smeparsl;": '\U000029E4', - "smid;": '\U00002223', - "smile;": '\U00002323', - "smt;": '\U00002AAA', - "smte;": '\U00002AAC', - "softcy;": '\U0000044C', - "sol;": '\U0000002F', - "solb;": '\U000029C4', - "solbar;": '\U0000233F', - "sopf;": '\U0001D564', - "spades;": '\U00002660', - "spadesuit;": '\U00002660', - "spar;": '\U00002225', - "sqcap;": '\U00002293', - "sqcup;": '\U00002294', - "sqsub;": '\U0000228F', - "sqsube;": '\U00002291', - "sqsubset;": '\U0000228F', - "sqsubseteq;": '\U00002291', - "sqsup;": '\U00002290', - "sqsupe;": '\U00002292', - "sqsupset;": '\U00002290', - "sqsupseteq;": '\U00002292', - "squ;": '\U000025A1', - "square;": '\U000025A1', - "squarf;": '\U000025AA', - "squf;": '\U000025AA', - "srarr;": '\U00002192', - "sscr;": '\U0001D4C8', - "ssetmn;": '\U00002216', - "ssmile;": '\U00002323', - "sstarf;": '\U000022C6', - "star;": '\U00002606', - "starf;": '\U00002605', - "straightepsilon;": '\U000003F5', - "straightphi;": '\U000003D5', - "strns;": '\U000000AF', - "sub;": '\U00002282', - "subE;": '\U00002AC5', - "subdot;": '\U00002ABD', - "sube;": '\U00002286', - "subedot;": '\U00002AC3', - "submult;": '\U00002AC1', - "subnE;": '\U00002ACB', - "subne;": '\U0000228A', - "subplus;": '\U00002ABF', - "subrarr;": '\U00002979', - "subset;": '\U00002282', - "subseteq;": '\U00002286', - "subseteqq;": '\U00002AC5', - "subsetneq;": '\U0000228A', - "subsetneqq;": '\U00002ACB', - "subsim;": '\U00002AC7', - "subsub;": '\U00002AD5', - "subsup;": '\U00002AD3', - "succ;": '\U0000227B', - "succapprox;": '\U00002AB8', - "succcurlyeq;": '\U0000227D', - "succeq;": '\U00002AB0', - "succnapprox;": '\U00002ABA', - "succneqq;": '\U00002AB6', - "succnsim;": '\U000022E9', - "succsim;": '\U0000227F', - "sum;": '\U00002211', - "sung;": '\U0000266A', - "sup;": '\U00002283', - "sup1;": '\U000000B9', - "sup2;": '\U000000B2', - "sup3;": '\U000000B3', - "supE;": '\U00002AC6', - "supdot;": '\U00002ABE', - "supdsub;": '\U00002AD8', - "supe;": '\U00002287', - "supedot;": '\U00002AC4', - "suphsol;": '\U000027C9', - "suphsub;": '\U00002AD7', - "suplarr;": '\U0000297B', - "supmult;": '\U00002AC2', - "supnE;": '\U00002ACC', - "supne;": '\U0000228B', - "supplus;": '\U00002AC0', - "supset;": '\U00002283', - "supseteq;": '\U00002287', - "supseteqq;": '\U00002AC6', - "supsetneq;": '\U0000228B', - "supsetneqq;": '\U00002ACC', - "supsim;": '\U00002AC8', - "supsub;": '\U00002AD4', - "supsup;": '\U00002AD6', - "swArr;": '\U000021D9', - "swarhk;": '\U00002926', - "swarr;": '\U00002199', - "swarrow;": '\U00002199', - "swnwar;": '\U0000292A', - "szlig;": '\U000000DF', - "target;": '\U00002316', - "tau;": '\U000003C4', - "tbrk;": '\U000023B4', - "tcaron;": '\U00000165', - "tcedil;": '\U00000163', - "tcy;": '\U00000442', - "tdot;": '\U000020DB', - "telrec;": '\U00002315', - "tfr;": '\U0001D531', - "there4;": '\U00002234', - "therefore;": '\U00002234', - "theta;": '\U000003B8', - "thetasym;": '\U000003D1', - "thetav;": '\U000003D1', - "thickapprox;": '\U00002248', - "thicksim;": '\U0000223C', - "thinsp;": '\U00002009', - "thkap;": '\U00002248', - "thksim;": '\U0000223C', - "thorn;": '\U000000FE', - "tilde;": '\U000002DC', - "times;": '\U000000D7', - "timesb;": '\U000022A0', - "timesbar;": '\U00002A31', - "timesd;": '\U00002A30', - "tint;": '\U0000222D', - "toea;": '\U00002928', - "top;": '\U000022A4', - "topbot;": '\U00002336', - "topcir;": '\U00002AF1', - "topf;": '\U0001D565', - "topfork;": '\U00002ADA', - "tosa;": '\U00002929', - "tprime;": '\U00002034', - "trade;": '\U00002122', - "triangle;": '\U000025B5', - "triangledown;": '\U000025BF', - "triangleleft;": '\U000025C3', - "trianglelefteq;": '\U000022B4', - "triangleq;": '\U0000225C', - "triangleright;": '\U000025B9', - "trianglerighteq;": '\U000022B5', - "tridot;": '\U000025EC', - "trie;": '\U0000225C', - "triminus;": '\U00002A3A', - "triplus;": '\U00002A39', - "trisb;": '\U000029CD', - "tritime;": '\U00002A3B', - "trpezium;": '\U000023E2', - "tscr;": '\U0001D4C9', - "tscy;": '\U00000446', - "tshcy;": '\U0000045B', - "tstrok;": '\U00000167', - "twixt;": '\U0000226C', - "twoheadleftarrow;": '\U0000219E', - "twoheadrightarrow;": '\U000021A0', - "uArr;": '\U000021D1', - "uHar;": '\U00002963', - "uacute;": '\U000000FA', - "uarr;": '\U00002191', - "ubrcy;": '\U0000045E', - "ubreve;": '\U0000016D', - "ucirc;": '\U000000FB', - "ucy;": '\U00000443', - "udarr;": '\U000021C5', - "udblac;": '\U00000171', - "udhar;": '\U0000296E', - "ufisht;": '\U0000297E', - "ufr;": '\U0001D532', - "ugrave;": '\U000000F9', - "uharl;": '\U000021BF', - "uharr;": '\U000021BE', - "uhblk;": '\U00002580', - "ulcorn;": '\U0000231C', - "ulcorner;": '\U0000231C', - "ulcrop;": '\U0000230F', - "ultri;": '\U000025F8', - "umacr;": '\U0000016B', - "uml;": '\U000000A8', - "uogon;": '\U00000173', - "uopf;": '\U0001D566', - "uparrow;": '\U00002191', - "updownarrow;": '\U00002195', - "upharpoonleft;": '\U000021BF', - "upharpoonright;": '\U000021BE', - "uplus;": '\U0000228E', - "upsi;": '\U000003C5', - "upsih;": '\U000003D2', - "upsilon;": '\U000003C5', - "upuparrows;": '\U000021C8', - "urcorn;": '\U0000231D', - "urcorner;": '\U0000231D', - "urcrop;": '\U0000230E', - "uring;": '\U0000016F', - "urtri;": '\U000025F9', - "uscr;": '\U0001D4CA', - "utdot;": '\U000022F0', - "utilde;": '\U00000169', - "utri;": '\U000025B5', - "utrif;": '\U000025B4', - "uuarr;": '\U000021C8', - "uuml;": '\U000000FC', - "uwangle;": '\U000029A7', - "vArr;": '\U000021D5', - "vBar;": '\U00002AE8', - "vBarv;": '\U00002AE9', - "vDash;": '\U000022A8', - "vangrt;": '\U0000299C', - "varepsilon;": '\U000003F5', - "varkappa;": '\U000003F0', - "varnothing;": '\U00002205', - "varphi;": '\U000003D5', - "varpi;": '\U000003D6', - "varpropto;": '\U0000221D', - "varr;": '\U00002195', - "varrho;": '\U000003F1', - "varsigma;": '\U000003C2', - "vartheta;": '\U000003D1', - "vartriangleleft;": '\U000022B2', - "vartriangleright;": '\U000022B3', - "vcy;": '\U00000432', - "vdash;": '\U000022A2', - "vee;": '\U00002228', - "veebar;": '\U000022BB', - "veeeq;": '\U0000225A', - "vellip;": '\U000022EE', - "verbar;": '\U0000007C', - "vert;": '\U0000007C', - "vfr;": '\U0001D533', - "vltri;": '\U000022B2', - "vopf;": '\U0001D567', - "vprop;": '\U0000221D', - "vrtri;": '\U000022B3', - "vscr;": '\U0001D4CB', - "vzigzag;": '\U0000299A', - "wcirc;": '\U00000175', - "wedbar;": '\U00002A5F', - "wedge;": '\U00002227', - "wedgeq;": '\U00002259', - "weierp;": '\U00002118', - "wfr;": '\U0001D534', - "wopf;": '\U0001D568', - "wp;": '\U00002118', - "wr;": '\U00002240', - "wreath;": '\U00002240', - "wscr;": '\U0001D4CC', - "xcap;": '\U000022C2', - "xcirc;": '\U000025EF', - "xcup;": '\U000022C3', - "xdtri;": '\U000025BD', - "xfr;": '\U0001D535', - "xhArr;": '\U000027FA', - "xharr;": '\U000027F7', - "xi;": '\U000003BE', - "xlArr;": '\U000027F8', - "xlarr;": '\U000027F5', - "xmap;": '\U000027FC', - "xnis;": '\U000022FB', - "xodot;": '\U00002A00', - "xopf;": '\U0001D569', - "xoplus;": '\U00002A01', - "xotime;": '\U00002A02', - "xrArr;": '\U000027F9', - "xrarr;": '\U000027F6', - "xscr;": '\U0001D4CD', - "xsqcup;": '\U00002A06', - "xuplus;": '\U00002A04', - "xutri;": '\U000025B3', - "xvee;": '\U000022C1', - "xwedge;": '\U000022C0', - "yacute;": '\U000000FD', - "yacy;": '\U0000044F', - "ycirc;": '\U00000177', - "ycy;": '\U0000044B', - "yen;": '\U000000A5', - "yfr;": '\U0001D536', - "yicy;": '\U00000457', - "yopf;": '\U0001D56A', - "yscr;": '\U0001D4CE', - "yucy;": '\U0000044E', - "yuml;": '\U000000FF', - "zacute;": '\U0000017A', - "zcaron;": '\U0000017E', - "zcy;": '\U00000437', - "zdot;": '\U0000017C', - "zeetrf;": '\U00002128', - "zeta;": '\U000003B6', - "zfr;": '\U0001D537', - "zhcy;": '\U00000436', - "zigrarr;": '\U000021DD', - "zopf;": '\U0001D56B', - "zscr;": '\U0001D4CF', - "zwj;": '\U0000200D', - "zwnj;": '\U0000200C', - "AElig": '\U000000C6', - "AMP": '\U00000026', - "Aacute": '\U000000C1', - "Acirc": '\U000000C2', - "Agrave": '\U000000C0', - "Aring": '\U000000C5', - "Atilde": '\U000000C3', - "Auml": '\U000000C4', - "COPY": '\U000000A9', - "Ccedil": '\U000000C7', - "ETH": '\U000000D0', - "Eacute": '\U000000C9', - "Ecirc": '\U000000CA', - "Egrave": '\U000000C8', - "Euml": '\U000000CB', - "GT": '\U0000003E', - "Iacute": '\U000000CD', - "Icirc": '\U000000CE', - "Igrave": '\U000000CC', - "Iuml": '\U000000CF', - "LT": '\U0000003C', - "Ntilde": '\U000000D1', - "Oacute": '\U000000D3', - "Ocirc": '\U000000D4', - "Ograve": '\U000000D2', - "Oslash": '\U000000D8', - "Otilde": '\U000000D5', - "Ouml": '\U000000D6', - "QUOT": '\U00000022', - "REG": '\U000000AE', - "THORN": '\U000000DE', - "Uacute": '\U000000DA', - "Ucirc": '\U000000DB', - "Ugrave": '\U000000D9', - "Uuml": '\U000000DC', - "Yacute": '\U000000DD', - "aacute": '\U000000E1', - "acirc": '\U000000E2', - "acute": '\U000000B4', - "aelig": '\U000000E6', - "agrave": '\U000000E0', - "amp": '\U00000026', - "aring": '\U000000E5', - "atilde": '\U000000E3', - "auml": '\U000000E4', - "brvbar": '\U000000A6', - "ccedil": '\U000000E7', - "cedil": '\U000000B8', - "cent": '\U000000A2', - "copy": '\U000000A9', - "curren": '\U000000A4', - "deg": '\U000000B0', - "divide": '\U000000F7', - "eacute": '\U000000E9', - "ecirc": '\U000000EA', - "egrave": '\U000000E8', - "eth": '\U000000F0', - "euml": '\U000000EB', - "frac12": '\U000000BD', - "frac14": '\U000000BC', - "frac34": '\U000000BE', - "gt": '\U0000003E', - "iacute": '\U000000ED', - "icirc": '\U000000EE', - "iexcl": '\U000000A1', - "igrave": '\U000000EC', - "iquest": '\U000000BF', - "iuml": '\U000000EF', - "laquo": '\U000000AB', - "lt": '\U0000003C', - "macr": '\U000000AF', - "micro": '\U000000B5', - "middot": '\U000000B7', - "nbsp": '\U000000A0', - "not": '\U000000AC', - "ntilde": '\U000000F1', - "oacute": '\U000000F3', - "ocirc": '\U000000F4', - "ograve": '\U000000F2', - "ordf": '\U000000AA', - "ordm": '\U000000BA', - "oslash": '\U000000F8', - "otilde": '\U000000F5', - "ouml": '\U000000F6', - "para": '\U000000B6', - "plusmn": '\U000000B1', - "pound": '\U000000A3', - "quot": '\U00000022', - "raquo": '\U000000BB', - "reg": '\U000000AE', - "sect": '\U000000A7', - "shy": '\U000000AD', - "sup1": '\U000000B9', - "sup2": '\U000000B2', - "sup3": '\U000000B3', - "szlig": '\U000000DF', - "thorn": '\U000000FE', - "times": '\U000000D7', - "uacute": '\U000000FA', - "ucirc": '\U000000FB', - "ugrave": '\U000000F9', - "uml": '\U000000A8', - "uuml": '\U000000FC', - "yacute": '\U000000FD', - "yen": '\U000000A5', - "yuml": '\U000000FF', + "Cross;": '\U00002A2F', + "Cscr;": '\U0001D49E', + "Cup;": '\U000022D3', + "CupCap;": '\U0000224D', + "DD;": '\U00002145', + "DDotrahd;": '\U00002911', + "DJcy;": '\U00000402', + "DScy;": '\U00000405', + "DZcy;": '\U0000040F', + "Dagger;": '\U00002021', + "Darr;": '\U000021A1', + "Dashv;": '\U00002AE4', + "Dcaron;": '\U0000010E', + "Dcy;": '\U00000414', + "Del;": '\U00002207', + "Delta;": '\U00000394', + "Dfr;": '\U0001D507', + "DiacriticalAcute;": '\U000000B4', + "DiacriticalDot;": '\U000002D9', + "DiacriticalDoubleAcute;": '\U000002DD', + "DiacriticalGrave;": '\U00000060', + "DiacriticalTilde;": '\U000002DC', + "Diamond;": '\U000022C4', + "DifferentialD;": '\U00002146', + "Dopf;": '\U0001D53B', + "Dot;": '\U000000A8', + "DotDot;": '\U000020DC', + "DotEqual;": '\U00002250', + "DoubleContourIntegral;": '\U0000222F', + "DoubleDot;": '\U000000A8', + "DoubleDownArrow;": '\U000021D3', + "DoubleLeftArrow;": '\U000021D0', + "DoubleLeftRightArrow;": '\U000021D4', + "DoubleLeftTee;": '\U00002AE4', + "DoubleLongLeftArrow;": '\U000027F8', + "DoubleLongLeftRightArrow;": '\U000027FA', + "DoubleLongRightArrow;": '\U000027F9', + "DoubleRightArrow;": '\U000021D2', + "DoubleRightTee;": '\U000022A8', + "DoubleUpArrow;": '\U000021D1', + "DoubleUpDownArrow;": '\U000021D5', + "DoubleVerticalBar;": '\U00002225', + "DownArrow;": '\U00002193', + "DownArrowBar;": '\U00002913', + "DownArrowUpArrow;": '\U000021F5', + "DownBreve;": '\U00000311', + "DownLeftRightVector;": '\U00002950', + "DownLeftTeeVector;": '\U0000295E', + "DownLeftVector;": '\U000021BD', + "DownLeftVectorBar;": '\U00002956', + "DownRightTeeVector;": '\U0000295F', + "DownRightVector;": '\U000021C1', + "DownRightVectorBar;": '\U00002957', + "DownTee;": '\U000022A4', + "DownTeeArrow;": '\U000021A7', + "Downarrow;": '\U000021D3', + "Dscr;": '\U0001D49F', + "Dstrok;": '\U00000110', + "ENG;": '\U0000014A', + "ETH;": '\U000000D0', + "Eacute;": '\U000000C9', + "Ecaron;": '\U0000011A', + "Ecirc;": '\U000000CA', + "Ecy;": '\U0000042D', + "Edot;": '\U00000116', + "Efr;": '\U0001D508', + "Egrave;": '\U000000C8', + "Element;": '\U00002208', + "Emacr;": '\U00000112', + "EmptySmallSquare;": '\U000025FB', + "EmptyVerySmallSquare;": '\U000025AB', + "Eogon;": '\U00000118', + "Eopf;": '\U0001D53C', + "Epsilon;": '\U00000395', + "Equal;": '\U00002A75', + "EqualTilde;": '\U00002242', + "Equilibrium;": '\U000021CC', + "Escr;": '\U00002130', + "Esim;": '\U00002A73', + "Eta;": '\U00000397', + "Euml;": '\U000000CB', + "Exists;": '\U00002203', + "ExponentialE;": '\U00002147', + "Fcy;": '\U00000424', + "Ffr;": '\U0001D509', + "FilledSmallSquare;": '\U000025FC', + "FilledVerySmallSquare;": '\U000025AA', + "Fopf;": '\U0001D53D', + "ForAll;": '\U00002200', + "Fouriertrf;": '\U00002131', + "Fscr;": '\U00002131', + "GJcy;": '\U00000403', + "GT;": '\U0000003E', + "Gamma;": '\U00000393', + "Gammad;": '\U000003DC', + "Gbreve;": '\U0000011E', + "Gcedil;": '\U00000122', + "Gcirc;": '\U0000011C', + "Gcy;": '\U00000413', + "Gdot;": '\U00000120', + "Gfr;": '\U0001D50A', + "Gg;": '\U000022D9', + "Gopf;": '\U0001D53E', + "GreaterEqual;": '\U00002265', + "GreaterEqualLess;": '\U000022DB', + "GreaterFullEqual;": '\U00002267', + "GreaterGreater;": '\U00002AA2', + "GreaterLess;": '\U00002277', + "GreaterSlantEqual;": '\U00002A7E', + "GreaterTilde;": '\U00002273', + "Gscr;": '\U0001D4A2', + "Gt;": '\U0000226B', + "HARDcy;": '\U0000042A', + "Hacek;": '\U000002C7', + "Hat;": '\U0000005E', + "Hcirc;": '\U00000124', + "Hfr;": '\U0000210C', + "HilbertSpace;": '\U0000210B', + "Hopf;": '\U0000210D', + "HorizontalLine;": '\U00002500', + "Hscr;": '\U0000210B', + "Hstrok;": '\U00000126', + "HumpDownHump;": '\U0000224E', + "HumpEqual;": '\U0000224F', + "IEcy;": '\U00000415', + "IJlig;": '\U00000132', + "IOcy;": '\U00000401', + "Iacute;": '\U000000CD', + "Icirc;": '\U000000CE', + "Icy;": '\U00000418', + "Idot;": '\U00000130', + "Ifr;": '\U00002111', + "Igrave;": '\U000000CC', + "Im;": '\U00002111', + "Imacr;": '\U0000012A', + "ImaginaryI;": '\U00002148', + "Implies;": '\U000021D2', + "Int;": '\U0000222C', + "Integral;": '\U0000222B', + "Intersection;": '\U000022C2', + "InvisibleComma;": '\U00002063', + "InvisibleTimes;": '\U00002062', + "Iogon;": '\U0000012E', + "Iopf;": '\U0001D540', + "Iota;": '\U00000399', + "Iscr;": '\U00002110', + "Itilde;": '\U00000128', + "Iukcy;": '\U00000406', + "Iuml;": '\U000000CF', + "Jcirc;": '\U00000134', + "Jcy;": '\U00000419', + "Jfr;": '\U0001D50D', + "Jopf;": '\U0001D541', + "Jscr;": '\U0001D4A5', + "Jsercy;": '\U00000408', + "Jukcy;": '\U00000404', + "KHcy;": '\U00000425', + "KJcy;": '\U0000040C', + "Kappa;": '\U0000039A', + "Kcedil;": '\U00000136', + "Kcy;": '\U0000041A', + "Kfr;": '\U0001D50E', + "Kopf;": '\U0001D542', + "Kscr;": '\U0001D4A6', + "LJcy;": '\U00000409', + "LT;": '\U0000003C', + "Lacute;": '\U00000139', + "Lambda;": '\U0000039B', + "Lang;": '\U000027EA', + "Laplacetrf;": '\U00002112', + "Larr;": '\U0000219E', + "Lcaron;": '\U0000013D', + "Lcedil;": '\U0000013B', + "Lcy;": '\U0000041B', + "LeftAngleBracket;": '\U000027E8', + "LeftArrow;": '\U00002190', + "LeftArrowBar;": '\U000021E4', + "LeftArrowRightArrow;": '\U000021C6', + "LeftCeiling;": '\U00002308', + "LeftDoubleBracket;": '\U000027E6', + "LeftDownTeeVector;": '\U00002961', + "LeftDownVector;": '\U000021C3', + "LeftDownVectorBar;": '\U00002959', + "LeftFloor;": '\U0000230A', + "LeftRightArrow;": '\U00002194', + "LeftRightVector;": '\U0000294E', + "LeftTee;": '\U000022A3', + "LeftTeeArrow;": '\U000021A4', + "LeftTeeVector;": '\U0000295A', + "LeftTriangle;": '\U000022B2', + "LeftTriangleBar;": '\U000029CF', + "LeftTriangleEqual;": '\U000022B4', + "LeftUpDownVector;": '\U00002951', + "LeftUpTeeVector;": '\U00002960', + "LeftUpVector;": '\U000021BF', + "LeftUpVectorBar;": '\U00002958', + "LeftVector;": '\U000021BC', + "LeftVectorBar;": '\U00002952', + "Leftarrow;": '\U000021D0', + "Leftrightarrow;": '\U000021D4', + "LessEqualGreater;": '\U000022DA', + "LessFullEqual;": '\U00002266', + "LessGreater;": '\U00002276', + "LessLess;": '\U00002AA1', + "LessSlantEqual;": '\U00002A7D', + "LessTilde;": '\U00002272', + "Lfr;": '\U0001D50F', + "Ll;": '\U000022D8', + "Lleftarrow;": '\U000021DA', + "Lmidot;": '\U0000013F', + "LongLeftArrow;": '\U000027F5', + "LongLeftRightArrow;": '\U000027F7', + "LongRightArrow;": '\U000027F6', + "Longleftarrow;": '\U000027F8', + "Longleftrightarrow;": '\U000027FA', + "Longrightarrow;": '\U000027F9', + "Lopf;": '\U0001D543', + "LowerLeftArrow;": '\U00002199', + "LowerRightArrow;": '\U00002198', + "Lscr;": '\U00002112', + "Lsh;": '\U000021B0', + "Lstrok;": '\U00000141', + "Lt;": '\U0000226A', + "Map;": '\U00002905', + "Mcy;": '\U0000041C', + "MediumSpace;": '\U0000205F', + "Mellintrf;": '\U00002133', + "Mfr;": '\U0001D510', + "MinusPlus;": '\U00002213', + "Mopf;": '\U0001D544', + "Mscr;": '\U00002133', + "Mu;": '\U0000039C', + "NJcy;": '\U0000040A', + "Nacute;": '\U00000143', + "Ncaron;": '\U00000147', + "Ncedil;": '\U00000145', + "Ncy;": '\U0000041D', + "NegativeMediumSpace;": '\U0000200B', + "NegativeThickSpace;": '\U0000200B', + "NegativeThinSpace;": '\U0000200B', + "NegativeVeryThinSpace;": '\U0000200B', + "NestedGreaterGreater;": '\U0000226B', + "NestedLessLess;": '\U0000226A', + "NewLine;": '\U0000000A', + "Nfr;": '\U0001D511', + "NoBreak;": '\U00002060', + "NonBreakingSpace;": '\U000000A0', + "Nopf;": '\U00002115', + "Not;": '\U00002AEC', + "NotCongruent;": '\U00002262', + "NotCupCap;": '\U0000226D', + "NotDoubleVerticalBar;": '\U00002226', + "NotElement;": '\U00002209', + "NotEqual;": '\U00002260', + "NotExists;": '\U00002204', + "NotGreater;": '\U0000226F', + "NotGreaterEqual;": '\U00002271', + "NotGreaterLess;": '\U00002279', + "NotGreaterTilde;": '\U00002275', + "NotLeftTriangle;": '\U000022EA', + "NotLeftTriangleEqual;": '\U000022EC', + "NotLess;": '\U0000226E', + "NotLessEqual;": '\U00002270', + "NotLessGreater;": '\U00002278', + "NotLessTilde;": '\U00002274', + "NotPrecedes;": '\U00002280', + "NotPrecedesSlantEqual;": '\U000022E0', + "NotReverseElement;": '\U0000220C', + "NotRightTriangle;": '\U000022EB', + "NotRightTriangleEqual;": '\U000022ED', + "NotSquareSubsetEqual;": '\U000022E2', + "NotSquareSupersetEqual;": '\U000022E3', + "NotSubsetEqual;": '\U00002288', + "NotSucceeds;": '\U00002281', + "NotSucceedsSlantEqual;": '\U000022E1', + "NotSupersetEqual;": '\U00002289', + "NotTilde;": '\U00002241', + "NotTildeEqual;": '\U00002244', + "NotTildeFullEqual;": '\U00002247', + "NotTildeTilde;": '\U00002249', + "NotVerticalBar;": '\U00002224', + "Nscr;": '\U0001D4A9', + "Ntilde;": '\U000000D1', + "Nu;": '\U0000039D', + "OElig;": '\U00000152', + "Oacute;": '\U000000D3', + "Ocirc;": '\U000000D4', + "Ocy;": '\U0000041E', + "Odblac;": '\U00000150', + "Ofr;": '\U0001D512', + "Ograve;": '\U000000D2', + "Omacr;": '\U0000014C', + "Omega;": '\U000003A9', + "Omicron;": '\U0000039F', + "Oopf;": '\U0001D546', + "OpenCurlyDoubleQuote;": '\U0000201C', + "OpenCurlyQuote;": '\U00002018', + "Or;": '\U00002A54', + "Oscr;": '\U0001D4AA', + "Oslash;": '\U000000D8', + "Otilde;": '\U000000D5', + "Otimes;": '\U00002A37', + "Ouml;": '\U000000D6', + "OverBar;": '\U0000203E', + "OverBrace;": '\U000023DE', + "OverBracket;": '\U000023B4', + "OverParenthesis;": '\U000023DC', + "PartialD;": '\U00002202', + "Pcy;": '\U0000041F', + "Pfr;": '\U0001D513', + "Phi;": '\U000003A6', + "Pi;": '\U000003A0', + "PlusMinus;": '\U000000B1', + "Poincareplane;": '\U0000210C', + "Popf;": '\U00002119', + "Pr;": '\U00002ABB', + "Precedes;": '\U0000227A', + "PrecedesEqual;": '\U00002AAF', + "PrecedesSlantEqual;": '\U0000227C', + "PrecedesTilde;": '\U0000227E', + "Prime;": '\U00002033', + "Product;": '\U0000220F', + "Proportion;": '\U00002237', + "Proportional;": '\U0000221D', + "Pscr;": '\U0001D4AB', + "Psi;": '\U000003A8', + "QUOT;": '\U00000022', + "Qfr;": '\U0001D514', + "Qopf;": '\U0000211A', + "Qscr;": '\U0001D4AC', + "RBarr;": '\U00002910', + "REG;": '\U000000AE', + "Racute;": '\U00000154', + "Rang;": '\U000027EB', + "Rarr;": '\U000021A0', + "Rarrtl;": '\U00002916', + "Rcaron;": '\U00000158', + "Rcedil;": '\U00000156', + "Rcy;": '\U00000420', + "Re;": '\U0000211C', + "ReverseElement;": '\U0000220B', + "ReverseEquilibrium;": '\U000021CB', + "ReverseUpEquilibrium;": '\U0000296F', + "Rfr;": '\U0000211C', + "Rho;": '\U000003A1', + "RightAngleBracket;": '\U000027E9', + "RightArrow;": '\U00002192', + "RightArrowBar;": '\U000021E5', + "RightArrowLeftArrow;": '\U000021C4', + "RightCeiling;": '\U00002309', + "RightDoubleBracket;": '\U000027E7', + "RightDownTeeVector;": '\U0000295D', + "RightDownVector;": '\U000021C2', + "RightDownVectorBar;": '\U00002955', + "RightFloor;": '\U0000230B', + "RightTee;": '\U000022A2', + "RightTeeArrow;": '\U000021A6', + "RightTeeVector;": '\U0000295B', + "RightTriangle;": '\U000022B3', + "RightTriangleBar;": '\U000029D0', + "RightTriangleEqual;": '\U000022B5', + "RightUpDownVector;": '\U0000294F', + "RightUpTeeVector;": '\U0000295C', + "RightUpVector;": '\U000021BE', + "RightUpVectorBar;": '\U00002954', + "RightVector;": '\U000021C0', + "RightVectorBar;": '\U00002953', + "Rightarrow;": '\U000021D2', + "Ropf;": '\U0000211D', + "RoundImplies;": '\U00002970', + "Rrightarrow;": '\U000021DB', + "Rscr;": '\U0000211B', + "Rsh;": '\U000021B1', + "RuleDelayed;": '\U000029F4', + "SHCHcy;": '\U00000429', + "SHcy;": '\U00000428', + "SOFTcy;": '\U0000042C', + "Sacute;": '\U0000015A', + "Sc;": '\U00002ABC', + "Scaron;": '\U00000160', + "Scedil;": '\U0000015E', + "Scirc;": '\U0000015C', + "Scy;": '\U00000421', + "Sfr;": '\U0001D516', + "ShortDownArrow;": '\U00002193', + "ShortLeftArrow;": '\U00002190', + "ShortRightArrow;": '\U00002192', + "ShortUpArrow;": '\U00002191', + "Sigma;": '\U000003A3', + "SmallCircle;": '\U00002218', + "Sopf;": '\U0001D54A', + "Sqrt;": '\U0000221A', + "Square;": '\U000025A1', + "SquareIntersection;": '\U00002293', + "SquareSubset;": '\U0000228F', + "SquareSubsetEqual;": '\U00002291', + "SquareSuperset;": '\U00002290', + "SquareSupersetEqual;": '\U00002292', + "SquareUnion;": '\U00002294', + "Sscr;": '\U0001D4AE', + "Star;": '\U000022C6', + "Sub;": '\U000022D0', + "Subset;": '\U000022D0', + "SubsetEqual;": '\U00002286', + "Succeeds;": '\U0000227B', + "SucceedsEqual;": '\U00002AB0', + "SucceedsSlantEqual;": '\U0000227D', + "SucceedsTilde;": '\U0000227F', + "SuchThat;": '\U0000220B', + "Sum;": '\U00002211', + "Sup;": '\U000022D1', + "Superset;": '\U00002283', + "SupersetEqual;": '\U00002287', + "Supset;": '\U000022D1', + "THORN;": '\U000000DE', + "TRADE;": '\U00002122', + "TSHcy;": '\U0000040B', + "TScy;": '\U00000426', + "Tab;": '\U00000009', + "Tau;": '\U000003A4', + "Tcaron;": '\U00000164', + "Tcedil;": '\U00000162', + "Tcy;": '\U00000422', + "Tfr;": '\U0001D517', + "Therefore;": '\U00002234', + "Theta;": '\U00000398', + "ThinSpace;": '\U00002009', + "Tilde;": '\U0000223C', + "TildeEqual;": '\U00002243', + "TildeFullEqual;": '\U00002245', + "TildeTilde;": '\U00002248', + "Topf;": '\U0001D54B', + "TripleDot;": '\U000020DB', + "Tscr;": '\U0001D4AF', + "Tstrok;": '\U00000166', + "Uacute;": '\U000000DA', + "Uarr;": '\U0000219F', + "Uarrocir;": '\U00002949', + "Ubrcy;": '\U0000040E', + "Ubreve;": '\U0000016C', + "Ucirc;": '\U000000DB', + "Ucy;": '\U00000423', + "Udblac;": '\U00000170', + "Ufr;": '\U0001D518', + "Ugrave;": '\U000000D9', + "Umacr;": '\U0000016A', + "UnderBar;": '\U0000005F', + "UnderBrace;": '\U000023DF', + "UnderBracket;": '\U000023B5', + "UnderParenthesis;": '\U000023DD', + "Union;": '\U000022C3', + "UnionPlus;": '\U0000228E', + "Uogon;": '\U00000172', + "Uopf;": '\U0001D54C', + "UpArrow;": '\U00002191', + "UpArrowBar;": '\U00002912', + "UpArrowDownArrow;": '\U000021C5', + "UpDownArrow;": '\U00002195', + "UpEquilibrium;": '\U0000296E', + "UpTee;": '\U000022A5', + "UpTeeArrow;": '\U000021A5', + "Uparrow;": '\U000021D1', + "Updownarrow;": '\U000021D5', + "UpperLeftArrow;": '\U00002196', + "UpperRightArrow;": '\U00002197', + "Upsi;": '\U000003D2', + "Upsilon;": '\U000003A5', + "Uring;": '\U0000016E', + "Uscr;": '\U0001D4B0', + "Utilde;": '\U00000168', + "Uuml;": '\U000000DC', + "VDash;": '\U000022AB', + "Vbar;": '\U00002AEB', + "Vcy;": '\U00000412', + "Vdash;": '\U000022A9', + "Vdashl;": '\U00002AE6', + "Vee;": '\U000022C1', + "Verbar;": '\U00002016', + "Vert;": '\U00002016', + "VerticalBar;": '\U00002223', + "VerticalLine;": '\U0000007C', + "VerticalSeparator;": '\U00002758', + "VerticalTilde;": '\U00002240', + "VeryThinSpace;": '\U0000200A', + "Vfr;": '\U0001D519', + "Vopf;": '\U0001D54D', + "Vscr;": '\U0001D4B1', + "Vvdash;": '\U000022AA', + "Wcirc;": '\U00000174', + "Wedge;": '\U000022C0', + "Wfr;": '\U0001D51A', + "Wopf;": '\U0001D54E', + "Wscr;": '\U0001D4B2', + "Xfr;": '\U0001D51B', + "Xi;": '\U0000039E', + "Xopf;": '\U0001D54F', + "Xscr;": '\U0001D4B3', + "YAcy;": '\U0000042F', + "YIcy;": '\U00000407', + "YUcy;": '\U0000042E', + "Yacute;": '\U000000DD', + "Ycirc;": '\U00000176', + "Ycy;": '\U0000042B', + "Yfr;": '\U0001D51C', + "Yopf;": '\U0001D550', + "Yscr;": '\U0001D4B4', + "Yuml;": '\U00000178', + "ZHcy;": '\U00000416', + "Zacute;": '\U00000179', + "Zcaron;": '\U0000017D', + "Zcy;": '\U00000417', + "Zdot;": '\U0000017B', + "ZeroWidthSpace;": '\U0000200B', + "Zeta;": '\U00000396', + "Zfr;": '\U00002128', + "Zopf;": '\U00002124', + "Zscr;": '\U0001D4B5', + "aacute;": '\U000000E1', + "abreve;": '\U00000103', + "ac;": '\U0000223E', + "acd;": '\U0000223F', + "acirc;": '\U000000E2', + "acute;": '\U000000B4', + "acy;": '\U00000430', + "aelig;": '\U000000E6', + "af;": '\U00002061', + "afr;": '\U0001D51E', + "agrave;": '\U000000E0', + "alefsym;": '\U00002135', + "aleph;": '\U00002135', + "alpha;": '\U000003B1', + "amacr;": '\U00000101', + "amalg;": '\U00002A3F', + "amp;": '\U00000026', + "and;": '\U00002227', + "andand;": '\U00002A55', + "andd;": '\U00002A5C', + "andslope;": '\U00002A58', + "andv;": '\U00002A5A', + "ang;": '\U00002220', + "ange;": '\U000029A4', + "angle;": '\U00002220', + "angmsd;": '\U00002221', + "angmsdaa;": '\U000029A8', + "angmsdab;": '\U000029A9', + "angmsdac;": '\U000029AA', + "angmsdad;": '\U000029AB', + "angmsdae;": '\U000029AC', + "angmsdaf;": '\U000029AD', + "angmsdag;": '\U000029AE', + "angmsdah;": '\U000029AF', + "angrt;": '\U0000221F', + "angrtvb;": '\U000022BE', + "angrtvbd;": '\U0000299D', + "angsph;": '\U00002222', + "angst;": '\U000000C5', + "angzarr;": '\U0000237C', + "aogon;": '\U00000105', + "aopf;": '\U0001D552', + "ap;": '\U00002248', + "apE;": '\U00002A70', + "apacir;": '\U00002A6F', + "ape;": '\U0000224A', + "apid;": '\U0000224B', + "apos;": '\U00000027', + "approx;": '\U00002248', + "approxeq;": '\U0000224A', + "aring;": '\U000000E5', + "ascr;": '\U0001D4B6', + "ast;": '\U0000002A', + "asymp;": '\U00002248', + "asympeq;": '\U0000224D', + "atilde;": '\U000000E3', + "auml;": '\U000000E4', + "awconint;": '\U00002233', + "awint;": '\U00002A11', + "bNot;": '\U00002AED', + "backcong;": '\U0000224C', + "backepsilon;": '\U000003F6', + "backprime;": '\U00002035', + "backsim;": '\U0000223D', + "backsimeq;": '\U000022CD', + "barvee;": '\U000022BD', + "barwed;": '\U00002305', + "barwedge;": '\U00002305', + "bbrk;": '\U000023B5', + "bbrktbrk;": '\U000023B6', + "bcong;": '\U0000224C', + "bcy;": '\U00000431', + "bdquo;": '\U0000201E', + "becaus;": '\U00002235', + "because;": '\U00002235', + "bemptyv;": '\U000029B0', + "bepsi;": '\U000003F6', + "bernou;": '\U0000212C', + "beta;": '\U000003B2', + "beth;": '\U00002136', + "between;": '\U0000226C', + "bfr;": '\U0001D51F', + "bigcap;": '\U000022C2', + "bigcirc;": '\U000025EF', + "bigcup;": '\U000022C3', + "bigodot;": '\U00002A00', + "bigoplus;": '\U00002A01', + "bigotimes;": '\U00002A02', + "bigsqcup;": '\U00002A06', + "bigstar;": '\U00002605', + "bigtriangledown;": '\U000025BD', + "bigtriangleup;": '\U000025B3', + "biguplus;": '\U00002A04', + "bigvee;": '\U000022C1', + "bigwedge;": '\U000022C0', + "bkarow;": '\U0000290D', + "blacklozenge;": '\U000029EB', + "blacksquare;": '\U000025AA', + "blacktriangle;": '\U000025B4', + "blacktriangledown;": '\U000025BE', + "blacktriangleleft;": '\U000025C2', + "blacktriangleright;": '\U000025B8', + "blank;": '\U00002423', + "blk12;": '\U00002592', + "blk14;": '\U00002591', + "blk34;": '\U00002593', + "block;": '\U00002588', + "bnot;": '\U00002310', + "bopf;": '\U0001D553', + "bot;": '\U000022A5', + "bottom;": '\U000022A5', + "bowtie;": '\U000022C8', + "boxDL;": '\U00002557', + "boxDR;": '\U00002554', + "boxDl;": '\U00002556', + "boxDr;": '\U00002553', + "boxH;": '\U00002550', + "boxHD;": '\U00002566', + "boxHU;": '\U00002569', + "boxHd;": '\U00002564', + "boxHu;": '\U00002567', + "boxUL;": '\U0000255D', + "boxUR;": '\U0000255A', + "boxUl;": '\U0000255C', + "boxUr;": '\U00002559', + "boxV;": '\U00002551', + "boxVH;": '\U0000256C', + "boxVL;": '\U00002563', + "boxVR;": '\U00002560', + "boxVh;": '\U0000256B', + "boxVl;": '\U00002562', + "boxVr;": '\U0000255F', + "boxbox;": '\U000029C9', + "boxdL;": '\U00002555', + "boxdR;": '\U00002552', + "boxdl;": '\U00002510', + "boxdr;": '\U0000250C', + "boxh;": '\U00002500', + "boxhD;": '\U00002565', + "boxhU;": '\U00002568', + "boxhd;": '\U0000252C', + "boxhu;": '\U00002534', + "boxminus;": '\U0000229F', + "boxplus;": '\U0000229E', + "boxtimes;": '\U000022A0', + "boxuL;": '\U0000255B', + "boxuR;": '\U00002558', + "boxul;": '\U00002518', + "boxur;": '\U00002514', + "boxv;": '\U00002502', + "boxvH;": '\U0000256A', + "boxvL;": '\U00002561', + "boxvR;": '\U0000255E', + "boxvh;": '\U0000253C', + "boxvl;": '\U00002524', + "boxvr;": '\U0000251C', + "bprime;": '\U00002035', + "breve;": '\U000002D8', + "brvbar;": '\U000000A6', + "bscr;": '\U0001D4B7', + "bsemi;": '\U0000204F', + "bsim;": '\U0000223D', + "bsime;": '\U000022CD', + "bsol;": '\U0000005C', + "bsolb;": '\U000029C5', + "bsolhsub;": '\U000027C8', + "bull;": '\U00002022', + "bullet;": '\U00002022', + "bump;": '\U0000224E', + "bumpE;": '\U00002AAE', + "bumpe;": '\U0000224F', + "bumpeq;": '\U0000224F', + "cacute;": '\U00000107', + "cap;": '\U00002229', + "capand;": '\U00002A44', + "capbrcup;": '\U00002A49', + "capcap;": '\U00002A4B', + "capcup;": '\U00002A47', + "capdot;": '\U00002A40', + "caret;": '\U00002041', + "caron;": '\U000002C7', + "ccaps;": '\U00002A4D', + "ccaron;": '\U0000010D', + "ccedil;": '\U000000E7', + "ccirc;": '\U00000109', + "ccups;": '\U00002A4C', + "ccupssm;": '\U00002A50', + "cdot;": '\U0000010B', + "cedil;": '\U000000B8', + "cemptyv;": '\U000029B2', + "cent;": '\U000000A2', + "centerdot;": '\U000000B7', + "cfr;": '\U0001D520', + "chcy;": '\U00000447', + "check;": '\U00002713', + "checkmark;": '\U00002713', + "chi;": '\U000003C7', + "cir;": '\U000025CB', + "cirE;": '\U000029C3', + "circ;": '\U000002C6', + "circeq;": '\U00002257', + "circlearrowleft;": '\U000021BA', + "circlearrowright;": '\U000021BB', + "circledR;": '\U000000AE', + "circledS;": '\U000024C8', + "circledast;": '\U0000229B', + "circledcirc;": '\U0000229A', + "circleddash;": '\U0000229D', + "cire;": '\U00002257', + "cirfnint;": '\U00002A10', + "cirmid;": '\U00002AEF', + "cirscir;": '\U000029C2', + "clubs;": '\U00002663', + "clubsuit;": '\U00002663', + "colon;": '\U0000003A', + "colone;": '\U00002254', + "coloneq;": '\U00002254', + "comma;": '\U0000002C', + "commat;": '\U00000040', + "comp;": '\U00002201', + "compfn;": '\U00002218', + "complement;": '\U00002201', + "complexes;": '\U00002102', + "cong;": '\U00002245', + "congdot;": '\U00002A6D', + "conint;": '\U0000222E', + "copf;": '\U0001D554', + "coprod;": '\U00002210', + "copy;": '\U000000A9', + "copysr;": '\U00002117', + "crarr;": '\U000021B5', + "cross;": '\U00002717', + "cscr;": '\U0001D4B8', + "csub;": '\U00002ACF', + "csube;": '\U00002AD1', + "csup;": '\U00002AD0', + "csupe;": '\U00002AD2', + "ctdot;": '\U000022EF', + "cudarrl;": '\U00002938', + "cudarrr;": '\U00002935', + "cuepr;": '\U000022DE', + "cuesc;": '\U000022DF', + "cularr;": '\U000021B6', + "cularrp;": '\U0000293D', + "cup;": '\U0000222A', + "cupbrcap;": '\U00002A48', + "cupcap;": '\U00002A46', + "cupcup;": '\U00002A4A', + "cupdot;": '\U0000228D', + "cupor;": '\U00002A45', + "curarr;": '\U000021B7', + "curarrm;": '\U0000293C', + "curlyeqprec;": '\U000022DE', + "curlyeqsucc;": '\U000022DF', + "curlyvee;": '\U000022CE', + "curlywedge;": '\U000022CF', + "curren;": '\U000000A4', + "curvearrowleft;": '\U000021B6', + "curvearrowright;": '\U000021B7', + "cuvee;": '\U000022CE', + "cuwed;": '\U000022CF', + "cwconint;": '\U00002232', + "cwint;": '\U00002231', + "cylcty;": '\U0000232D', + "dArr;": '\U000021D3', + "dHar;": '\U00002965', + "dagger;": '\U00002020', + "daleth;": '\U00002138', + "darr;": '\U00002193', + "dash;": '\U00002010', + "dashv;": '\U000022A3', + "dbkarow;": '\U0000290F', + "dblac;": '\U000002DD', + "dcaron;": '\U0000010F', + "dcy;": '\U00000434', + "dd;": '\U00002146', + "ddagger;": '\U00002021', + "ddarr;": '\U000021CA', + "ddotseq;": '\U00002A77', + "deg;": '\U000000B0', + "delta;": '\U000003B4', + "demptyv;": '\U000029B1', + "dfisht;": '\U0000297F', + "dfr;": '\U0001D521', + "dharl;": '\U000021C3', + "dharr;": '\U000021C2', + "diam;": '\U000022C4', + "diamond;": '\U000022C4', + "diamondsuit;": '\U00002666', + "diams;": '\U00002666', + "die;": '\U000000A8', + "digamma;": '\U000003DD', + "disin;": '\U000022F2', + "div;": '\U000000F7', + "divide;": '\U000000F7', + "divideontimes;": '\U000022C7', + "divonx;": '\U000022C7', + "djcy;": '\U00000452', + "dlcorn;": '\U0000231E', + "dlcrop;": '\U0000230D', + "dollar;": '\U00000024', + "dopf;": '\U0001D555', + "dot;": '\U000002D9', + "doteq;": '\U00002250', + "doteqdot;": '\U00002251', + "dotminus;": '\U00002238', + "dotplus;": '\U00002214', + "dotsquare;": '\U000022A1', + "doublebarwedge;": '\U00002306', + "downarrow;": '\U00002193', + "downdownarrows;": '\U000021CA', + "downharpoonleft;": '\U000021C3', + "downharpoonright;": '\U000021C2', + "drbkarow;": '\U00002910', + "drcorn;": '\U0000231F', + "drcrop;": '\U0000230C', + "dscr;": '\U0001D4B9', + "dscy;": '\U00000455', + "dsol;": '\U000029F6', + "dstrok;": '\U00000111', + "dtdot;": '\U000022F1', + "dtri;": '\U000025BF', + "dtrif;": '\U000025BE', + "duarr;": '\U000021F5', + "duhar;": '\U0000296F', + "dwangle;": '\U000029A6', + "dzcy;": '\U0000045F', + "dzigrarr;": '\U000027FF', + "eDDot;": '\U00002A77', + "eDot;": '\U00002251', + "eacute;": '\U000000E9', + "easter;": '\U00002A6E', + "ecaron;": '\U0000011B', + "ecir;": '\U00002256', + "ecirc;": '\U000000EA', + "ecolon;": '\U00002255', + "ecy;": '\U0000044D', + "edot;": '\U00000117', + "ee;": '\U00002147', + "efDot;": '\U00002252', + "efr;": '\U0001D522', + "eg;": '\U00002A9A', + "egrave;": '\U000000E8', + "egs;": '\U00002A96', + "egsdot;": '\U00002A98', + "el;": '\U00002A99', + "elinters;": '\U000023E7', + "ell;": '\U00002113', + "els;": '\U00002A95', + "elsdot;": '\U00002A97', + "emacr;": '\U00000113', + "empty;": '\U00002205', + "emptyset;": '\U00002205', + "emptyv;": '\U00002205', + "emsp;": '\U00002003', + "emsp13;": '\U00002004', + "emsp14;": '\U00002005', + "eng;": '\U0000014B', + "ensp;": '\U00002002', + "eogon;": '\U00000119', + "eopf;": '\U0001D556', + "epar;": '\U000022D5', + "eparsl;": '\U000029E3', + "eplus;": '\U00002A71', + "epsi;": '\U000003B5', + "epsilon;": '\U000003B5', + "epsiv;": '\U000003F5', + "eqcirc;": '\U00002256', + "eqcolon;": '\U00002255', + "eqsim;": '\U00002242', + "eqslantgtr;": '\U00002A96', + "eqslantless;": '\U00002A95', + "equals;": '\U0000003D', + "equest;": '\U0000225F', + "equiv;": '\U00002261', + "equivDD;": '\U00002A78', + "eqvparsl;": '\U000029E5', + "erDot;": '\U00002253', + "erarr;": '\U00002971', + "escr;": '\U0000212F', + "esdot;": '\U00002250', + "esim;": '\U00002242', + "eta;": '\U000003B7', + "eth;": '\U000000F0', + "euml;": '\U000000EB', + "euro;": '\U000020AC', + "excl;": '\U00000021', + "exist;": '\U00002203', + "expectation;": '\U00002130', + "exponentiale;": '\U00002147', + "fallingdotseq;": '\U00002252', + "fcy;": '\U00000444', + "female;": '\U00002640', + "ffilig;": '\U0000FB03', + "fflig;": '\U0000FB00', + "ffllig;": '\U0000FB04', + "ffr;": '\U0001D523', + "filig;": '\U0000FB01', + "flat;": '\U0000266D', + "fllig;": '\U0000FB02', + "fltns;": '\U000025B1', + "fnof;": '\U00000192', + "fopf;": '\U0001D557', + "forall;": '\U00002200', + "fork;": '\U000022D4', + "forkv;": '\U00002AD9', + "fpartint;": '\U00002A0D', + "frac12;": '\U000000BD', + "frac13;": '\U00002153', + "frac14;": '\U000000BC', + "frac15;": '\U00002155', + "frac16;": '\U00002159', + "frac18;": '\U0000215B', + "frac23;": '\U00002154', + "frac25;": '\U00002156', + "frac34;": '\U000000BE', + "frac35;": '\U00002157', + "frac38;": '\U0000215C', + "frac45;": '\U00002158', + "frac56;": '\U0000215A', + "frac58;": '\U0000215D', + "frac78;": '\U0000215E', + "frasl;": '\U00002044', + "frown;": '\U00002322', + "fscr;": '\U0001D4BB', + "gE;": '\U00002267', + "gEl;": '\U00002A8C', + "gacute;": '\U000001F5', + "gamma;": '\U000003B3', + "gammad;": '\U000003DD', + "gap;": '\U00002A86', + "gbreve;": '\U0000011F', + "gcirc;": '\U0000011D', + "gcy;": '\U00000433', + "gdot;": '\U00000121', + "ge;": '\U00002265', + "gel;": '\U000022DB', + "geq;": '\U00002265', + "geqq;": '\U00002267', + "geqslant;": '\U00002A7E', + "ges;": '\U00002A7E', + "gescc;": '\U00002AA9', + "gesdot;": '\U00002A80', + "gesdoto;": '\U00002A82', + "gesdotol;": '\U00002A84', + "gesles;": '\U00002A94', + "gfr;": '\U0001D524', + "gg;": '\U0000226B', + "ggg;": '\U000022D9', + "gimel;": '\U00002137', + "gjcy;": '\U00000453', + "gl;": '\U00002277', + "glE;": '\U00002A92', + "gla;": '\U00002AA5', + "glj;": '\U00002AA4', + "gnE;": '\U00002269', + "gnap;": '\U00002A8A', + "gnapprox;": '\U00002A8A', + "gne;": '\U00002A88', + "gneq;": '\U00002A88', + "gneqq;": '\U00002269', + "gnsim;": '\U000022E7', + "gopf;": '\U0001D558', + "grave;": '\U00000060', + "gscr;": '\U0000210A', + "gsim;": '\U00002273', + "gsime;": '\U00002A8E', + "gsiml;": '\U00002A90', + "gt;": '\U0000003E', + "gtcc;": '\U00002AA7', + "gtcir;": '\U00002A7A', + "gtdot;": '\U000022D7', + "gtlPar;": '\U00002995', + "gtquest;": '\U00002A7C', + "gtrapprox;": '\U00002A86', + "gtrarr;": '\U00002978', + "gtrdot;": '\U000022D7', + "gtreqless;": '\U000022DB', + "gtreqqless;": '\U00002A8C', + "gtrless;": '\U00002277', + "gtrsim;": '\U00002273', + "hArr;": '\U000021D4', + "hairsp;": '\U0000200A', + "half;": '\U000000BD', + "hamilt;": '\U0000210B', + "hardcy;": '\U0000044A', + "harr;": '\U00002194', + "harrcir;": '\U00002948', + "harrw;": '\U000021AD', + "hbar;": '\U0000210F', + "hcirc;": '\U00000125', + "hearts;": '\U00002665', + "heartsuit;": '\U00002665', + "hellip;": '\U00002026', + "hercon;": '\U000022B9', + "hfr;": '\U0001D525', + "hksearow;": '\U00002925', + "hkswarow;": '\U00002926', + "hoarr;": '\U000021FF', + "homtht;": '\U0000223B', + "hookleftarrow;": '\U000021A9', + "hookrightarrow;": '\U000021AA', + "hopf;": '\U0001D559', + "horbar;": '\U00002015', + "hscr;": '\U0001D4BD', + "hslash;": '\U0000210F', + "hstrok;": '\U00000127', + "hybull;": '\U00002043', + "hyphen;": '\U00002010', + "iacute;": '\U000000ED', + "ic;": '\U00002063', + "icirc;": '\U000000EE', + "icy;": '\U00000438', + "iecy;": '\U00000435', + "iexcl;": '\U000000A1', + "iff;": '\U000021D4', + "ifr;": '\U0001D526', + "igrave;": '\U000000EC', + "ii;": '\U00002148', + "iiiint;": '\U00002A0C', + "iiint;": '\U0000222D', + "iinfin;": '\U000029DC', + "iiota;": '\U00002129', + "ijlig;": '\U00000133', + "imacr;": '\U0000012B', + "image;": '\U00002111', + "imagline;": '\U00002110', + "imagpart;": '\U00002111', + "imath;": '\U00000131', + "imof;": '\U000022B7', + "imped;": '\U000001B5', + "in;": '\U00002208', + "incare;": '\U00002105', + "infin;": '\U0000221E', + "infintie;": '\U000029DD', + "inodot;": '\U00000131', + "int;": '\U0000222B', + "intcal;": '\U000022BA', + "integers;": '\U00002124', + "intercal;": '\U000022BA', + "intlarhk;": '\U00002A17', + "intprod;": '\U00002A3C', + "iocy;": '\U00000451', + "iogon;": '\U0000012F', + "iopf;": '\U0001D55A', + "iota;": '\U000003B9', + "iprod;": '\U00002A3C', + "iquest;": '\U000000BF', + "iscr;": '\U0001D4BE', + "isin;": '\U00002208', + "isinE;": '\U000022F9', + "isindot;": '\U000022F5', + "isins;": '\U000022F4', + "isinsv;": '\U000022F3', + "isinv;": '\U00002208', + "it;": '\U00002062', + "itilde;": '\U00000129', + "iukcy;": '\U00000456', + "iuml;": '\U000000EF', + "jcirc;": '\U00000135', + "jcy;": '\U00000439', + "jfr;": '\U0001D527', + "jmath;": '\U00000237', + "jopf;": '\U0001D55B', + "jscr;": '\U0001D4BF', + "jsercy;": '\U00000458', + "jukcy;": '\U00000454', + "kappa;": '\U000003BA', + "kappav;": '\U000003F0', + "kcedil;": '\U00000137', + "kcy;": '\U0000043A', + "kfr;": '\U0001D528', + "kgreen;": '\U00000138', + "khcy;": '\U00000445', + "kjcy;": '\U0000045C', + "kopf;": '\U0001D55C', + "kscr;": '\U0001D4C0', + "lAarr;": '\U000021DA', + "lArr;": '\U000021D0', + "lAtail;": '\U0000291B', + "lBarr;": '\U0000290E', + "lE;": '\U00002266', + "lEg;": '\U00002A8B', + "lHar;": '\U00002962', + "lacute;": '\U0000013A', + "laemptyv;": '\U000029B4', + "lagran;": '\U00002112', + "lambda;": '\U000003BB', + "lang;": '\U000027E8', + "langd;": '\U00002991', + "langle;": '\U000027E8', + "lap;": '\U00002A85', + "laquo;": '\U000000AB', + "larr;": '\U00002190', + "larrb;": '\U000021E4', + "larrbfs;": '\U0000291F', + "larrfs;": '\U0000291D', + "larrhk;": '\U000021A9', + "larrlp;": '\U000021AB', + "larrpl;": '\U00002939', + "larrsim;": '\U00002973', + "larrtl;": '\U000021A2', + "lat;": '\U00002AAB', + "latail;": '\U00002919', + "late;": '\U00002AAD', + "lbarr;": '\U0000290C', + "lbbrk;": '\U00002772', + "lbrace;": '\U0000007B', + "lbrack;": '\U0000005B', + "lbrke;": '\U0000298B', + "lbrksld;": '\U0000298F', + "lbrkslu;": '\U0000298D', + "lcaron;": '\U0000013E', + "lcedil;": '\U0000013C', + "lceil;": '\U00002308', + "lcub;": '\U0000007B', + "lcy;": '\U0000043B', + "ldca;": '\U00002936', + "ldquo;": '\U0000201C', + "ldquor;": '\U0000201E', + "ldrdhar;": '\U00002967', + "ldrushar;": '\U0000294B', + "ldsh;": '\U000021B2', + "le;": '\U00002264', + "leftarrow;": '\U00002190', + "leftarrowtail;": '\U000021A2', + "leftharpoondown;": '\U000021BD', + "leftharpoonup;": '\U000021BC', + "leftleftarrows;": '\U000021C7', + "leftrightarrow;": '\U00002194', + "leftrightarrows;": '\U000021C6', + "leftrightharpoons;": '\U000021CB', + "leftrightsquigarrow;": '\U000021AD', + "leftthreetimes;": '\U000022CB', + "leg;": '\U000022DA', + "leq;": '\U00002264', + "leqq;": '\U00002266', + "leqslant;": '\U00002A7D', + "les;": '\U00002A7D', + "lescc;": '\U00002AA8', + "lesdot;": '\U00002A7F', + "lesdoto;": '\U00002A81', + "lesdotor;": '\U00002A83', + "lesges;": '\U00002A93', + "lessapprox;": '\U00002A85', + "lessdot;": '\U000022D6', + "lesseqgtr;": '\U000022DA', + "lesseqqgtr;": '\U00002A8B', + "lessgtr;": '\U00002276', + "lesssim;": '\U00002272', + "lfisht;": '\U0000297C', + "lfloor;": '\U0000230A', + "lfr;": '\U0001D529', + "lg;": '\U00002276', + "lgE;": '\U00002A91', + "lhard;": '\U000021BD', + "lharu;": '\U000021BC', + "lharul;": '\U0000296A', + "lhblk;": '\U00002584', + "ljcy;": '\U00000459', + "ll;": '\U0000226A', + "llarr;": '\U000021C7', + "llcorner;": '\U0000231E', + "llhard;": '\U0000296B', + "lltri;": '\U000025FA', + "lmidot;": '\U00000140', + "lmoust;": '\U000023B0', + "lmoustache;": '\U000023B0', + "lnE;": '\U00002268', + "lnap;": '\U00002A89', + "lnapprox;": '\U00002A89', + "lne;": '\U00002A87', + "lneq;": '\U00002A87', + "lneqq;": '\U00002268', + "lnsim;": '\U000022E6', + "loang;": '\U000027EC', + "loarr;": '\U000021FD', + "lobrk;": '\U000027E6', + "longleftarrow;": '\U000027F5', + "longleftrightarrow;": '\U000027F7', + "longmapsto;": '\U000027FC', + "longrightarrow;": '\U000027F6', + "looparrowleft;": '\U000021AB', + "looparrowright;": '\U000021AC', + "lopar;": '\U00002985', + "lopf;": '\U0001D55D', + "loplus;": '\U00002A2D', + "lotimes;": '\U00002A34', + "lowast;": '\U00002217', + "lowbar;": '\U0000005F', + "loz;": '\U000025CA', + "lozenge;": '\U000025CA', + "lozf;": '\U000029EB', + "lpar;": '\U00000028', + "lparlt;": '\U00002993', + "lrarr;": '\U000021C6', + "lrcorner;": '\U0000231F', + "lrhar;": '\U000021CB', + "lrhard;": '\U0000296D', + "lrm;": '\U0000200E', + "lrtri;": '\U000022BF', + "lsaquo;": '\U00002039', + "lscr;": '\U0001D4C1', + "lsh;": '\U000021B0', + "lsim;": '\U00002272', + "lsime;": '\U00002A8D', + "lsimg;": '\U00002A8F', + "lsqb;": '\U0000005B', + "lsquo;": '\U00002018', + "lsquor;": '\U0000201A', + "lstrok;": '\U00000142', + "lt;": '\U0000003C', + "ltcc;": '\U00002AA6', + "ltcir;": '\U00002A79', + "ltdot;": '\U000022D6', + "lthree;": '\U000022CB', + "ltimes;": '\U000022C9', + "ltlarr;": '\U00002976', + "ltquest;": '\U00002A7B', + "ltrPar;": '\U00002996', + "ltri;": '\U000025C3', + "ltrie;": '\U000022B4', + "ltrif;": '\U000025C2', + "lurdshar;": '\U0000294A', + "luruhar;": '\U00002966', + "mDDot;": '\U0000223A', + "macr;": '\U000000AF', + "male;": '\U00002642', + "malt;": '\U00002720', + "maltese;": '\U00002720', + "map;": '\U000021A6', + "mapsto;": '\U000021A6', + "mapstodown;": '\U000021A7', + "mapstoleft;": '\U000021A4', + "mapstoup;": '\U000021A5', + "marker;": '\U000025AE', + "mcomma;": '\U00002A29', + "mcy;": '\U0000043C', + "mdash;": '\U00002014', + "measuredangle;": '\U00002221', + "mfr;": '\U0001D52A', + "mho;": '\U00002127', + "micro;": '\U000000B5', + "mid;": '\U00002223', + "midast;": '\U0000002A', + "midcir;": '\U00002AF0', + "middot;": '\U000000B7', + "minus;": '\U00002212', + "minusb;": '\U0000229F', + "minusd;": '\U00002238', + "minusdu;": '\U00002A2A', + "mlcp;": '\U00002ADB', + "mldr;": '\U00002026', + "mnplus;": '\U00002213', + "models;": '\U000022A7', + "mopf;": '\U0001D55E', + "mp;": '\U00002213', + "mscr;": '\U0001D4C2', + "mstpos;": '\U0000223E', + "mu;": '\U000003BC', + "multimap;": '\U000022B8', + "mumap;": '\U000022B8', + "nLeftarrow;": '\U000021CD', + "nLeftrightarrow;": '\U000021CE', + "nRightarrow;": '\U000021CF', + "nVDash;": '\U000022AF', + "nVdash;": '\U000022AE', + "nabla;": '\U00002207', + "nacute;": '\U00000144', + "nap;": '\U00002249', + "napos;": '\U00000149', + "napprox;": '\U00002249', + "natur;": '\U0000266E', + "natural;": '\U0000266E', + "naturals;": '\U00002115', + "nbsp;": '\U000000A0', + "ncap;": '\U00002A43', + "ncaron;": '\U00000148', + "ncedil;": '\U00000146', + "ncong;": '\U00002247', + "ncup;": '\U00002A42', + "ncy;": '\U0000043D', + "ndash;": '\U00002013', + "ne;": '\U00002260', + "neArr;": '\U000021D7', + "nearhk;": '\U00002924', + "nearr;": '\U00002197', + "nearrow;": '\U00002197', + "nequiv;": '\U00002262', + "nesear;": '\U00002928', + "nexist;": '\U00002204', + "nexists;": '\U00002204', + "nfr;": '\U0001D52B', + "nge;": '\U00002271', + "ngeq;": '\U00002271', + "ngsim;": '\U00002275', + "ngt;": '\U0000226F', + "ngtr;": '\U0000226F', + "nhArr;": '\U000021CE', + "nharr;": '\U000021AE', + "nhpar;": '\U00002AF2', + "ni;": '\U0000220B', + "nis;": '\U000022FC', + "nisd;": '\U000022FA', + "niv;": '\U0000220B', + "njcy;": '\U0000045A', + "nlArr;": '\U000021CD', + "nlarr;": '\U0000219A', + "nldr;": '\U00002025', + "nle;": '\U00002270', + "nleftarrow;": '\U0000219A', + "nleftrightarrow;": '\U000021AE', + "nleq;": '\U00002270', + "nless;": '\U0000226E', + "nlsim;": '\U00002274', + "nlt;": '\U0000226E', + "nltri;": '\U000022EA', + "nltrie;": '\U000022EC', + "nmid;": '\U00002224', + "nopf;": '\U0001D55F', + "not;": '\U000000AC', + "notin;": '\U00002209', + "notinva;": '\U00002209', + "notinvb;": '\U000022F7', + "notinvc;": '\U000022F6', + "notni;": '\U0000220C', + "notniva;": '\U0000220C', + "notnivb;": '\U000022FE', + "notnivc;": '\U000022FD', + "npar;": '\U00002226', + "nparallel;": '\U00002226', + "npolint;": '\U00002A14', + "npr;": '\U00002280', + "nprcue;": '\U000022E0', + "nprec;": '\U00002280', + "nrArr;": '\U000021CF', + "nrarr;": '\U0000219B', + "nrightarrow;": '\U0000219B', + "nrtri;": '\U000022EB', + "nrtrie;": '\U000022ED', + "nsc;": '\U00002281', + "nsccue;": '\U000022E1', + "nscr;": '\U0001D4C3', + "nshortmid;": '\U00002224', + "nshortparallel;": '\U00002226', + "nsim;": '\U00002241', + "nsime;": '\U00002244', + "nsimeq;": '\U00002244', + "nsmid;": '\U00002224', + "nspar;": '\U00002226', + "nsqsube;": '\U000022E2', + "nsqsupe;": '\U000022E3', + "nsub;": '\U00002284', + "nsube;": '\U00002288', + "nsubseteq;": '\U00002288', + "nsucc;": '\U00002281', + "nsup;": '\U00002285', + "nsupe;": '\U00002289', + "nsupseteq;": '\U00002289', + "ntgl;": '\U00002279', + "ntilde;": '\U000000F1', + "ntlg;": '\U00002278', + "ntriangleleft;": '\U000022EA', + "ntrianglelefteq;": '\U000022EC', + "ntriangleright;": '\U000022EB', + "ntrianglerighteq;": '\U000022ED', + "nu;": '\U000003BD', + "num;": '\U00000023', + "numero;": '\U00002116', + "numsp;": '\U00002007', + "nvDash;": '\U000022AD', + "nvHarr;": '\U00002904', + "nvdash;": '\U000022AC', + "nvinfin;": '\U000029DE', + "nvlArr;": '\U00002902', + "nvrArr;": '\U00002903', + "nwArr;": '\U000021D6', + "nwarhk;": '\U00002923', + "nwarr;": '\U00002196', + "nwarrow;": '\U00002196', + "nwnear;": '\U00002927', + "oS;": '\U000024C8', + "oacute;": '\U000000F3', + "oast;": '\U0000229B', + "ocir;": '\U0000229A', + "ocirc;": '\U000000F4', + "ocy;": '\U0000043E', + "odash;": '\U0000229D', + "odblac;": '\U00000151', + "odiv;": '\U00002A38', + "odot;": '\U00002299', + "odsold;": '\U000029BC', + "oelig;": '\U00000153', + "ofcir;": '\U000029BF', + "ofr;": '\U0001D52C', + "ogon;": '\U000002DB', + "ograve;": '\U000000F2', + "ogt;": '\U000029C1', + "ohbar;": '\U000029B5', + "ohm;": '\U000003A9', + "oint;": '\U0000222E', + "olarr;": '\U000021BA', + "olcir;": '\U000029BE', + "olcross;": '\U000029BB', + "oline;": '\U0000203E', + "olt;": '\U000029C0', + "omacr;": '\U0000014D', + "omega;": '\U000003C9', + "omicron;": '\U000003BF', + "omid;": '\U000029B6', + "ominus;": '\U00002296', + "oopf;": '\U0001D560', + "opar;": '\U000029B7', + "operp;": '\U000029B9', + "oplus;": '\U00002295', + "or;": '\U00002228', + "orarr;": '\U000021BB', + "ord;": '\U00002A5D', + "order;": '\U00002134', + "orderof;": '\U00002134', + "ordf;": '\U000000AA', + "ordm;": '\U000000BA', + "origof;": '\U000022B6', + "oror;": '\U00002A56', + "orslope;": '\U00002A57', + "orv;": '\U00002A5B', + "oscr;": '\U00002134', + "oslash;": '\U000000F8', + "osol;": '\U00002298', + "otilde;": '\U000000F5', + "otimes;": '\U00002297', + "otimesas;": '\U00002A36', + "ouml;": '\U000000F6', + "ovbar;": '\U0000233D', + "par;": '\U00002225', + "para;": '\U000000B6', + "parallel;": '\U00002225', + "parsim;": '\U00002AF3', + "parsl;": '\U00002AFD', + "part;": '\U00002202', + "pcy;": '\U0000043F', + "percnt;": '\U00000025', + "period;": '\U0000002E', + "permil;": '\U00002030', + "perp;": '\U000022A5', + "pertenk;": '\U00002031', + "pfr;": '\U0001D52D', + "phi;": '\U000003C6', + "phiv;": '\U000003D5', + "phmmat;": '\U00002133', + "phone;": '\U0000260E', + "pi;": '\U000003C0', + "pitchfork;": '\U000022D4', + "piv;": '\U000003D6', + "planck;": '\U0000210F', + "planckh;": '\U0000210E', + "plankv;": '\U0000210F', + "plus;": '\U0000002B', + "plusacir;": '\U00002A23', + "plusb;": '\U0000229E', + "pluscir;": '\U00002A22', + "plusdo;": '\U00002214', + "plusdu;": '\U00002A25', + "pluse;": '\U00002A72', + "plusmn;": '\U000000B1', + "plussim;": '\U00002A26', + "plustwo;": '\U00002A27', + "pm;": '\U000000B1', + "pointint;": '\U00002A15', + "popf;": '\U0001D561', + "pound;": '\U000000A3', + "pr;": '\U0000227A', + "prE;": '\U00002AB3', + "prap;": '\U00002AB7', + "prcue;": '\U0000227C', + "pre;": '\U00002AAF', + "prec;": '\U0000227A', + "precapprox;": '\U00002AB7', + "preccurlyeq;": '\U0000227C', + "preceq;": '\U00002AAF', + "precnapprox;": '\U00002AB9', + "precneqq;": '\U00002AB5', + "precnsim;": '\U000022E8', + "precsim;": '\U0000227E', + "prime;": '\U00002032', + "primes;": '\U00002119', + "prnE;": '\U00002AB5', + "prnap;": '\U00002AB9', + "prnsim;": '\U000022E8', + "prod;": '\U0000220F', + "profalar;": '\U0000232E', + "profline;": '\U00002312', + "profsurf;": '\U00002313', + "prop;": '\U0000221D', + "propto;": '\U0000221D', + "prsim;": '\U0000227E', + "prurel;": '\U000022B0', + "pscr;": '\U0001D4C5', + "psi;": '\U000003C8', + "puncsp;": '\U00002008', + "qfr;": '\U0001D52E', + "qint;": '\U00002A0C', + "qopf;": '\U0001D562', + "qprime;": '\U00002057', + "qscr;": '\U0001D4C6', + "quaternions;": '\U0000210D', + "quatint;": '\U00002A16', + "quest;": '\U0000003F', + "questeq;": '\U0000225F', + "quot;": '\U00000022', + "rAarr;": '\U000021DB', + "rArr;": '\U000021D2', + "rAtail;": '\U0000291C', + "rBarr;": '\U0000290F', + "rHar;": '\U00002964', + "racute;": '\U00000155', + "radic;": '\U0000221A', + "raemptyv;": '\U000029B3', + "rang;": '\U000027E9', + "rangd;": '\U00002992', + "range;": '\U000029A5', + "rangle;": '\U000027E9', + "raquo;": '\U000000BB', + "rarr;": '\U00002192', + "rarrap;": '\U00002975', + "rarrb;": '\U000021E5', + "rarrbfs;": '\U00002920', + "rarrc;": '\U00002933', + "rarrfs;": '\U0000291E', + "rarrhk;": '\U000021AA', + "rarrlp;": '\U000021AC', + "rarrpl;": '\U00002945', + "rarrsim;": '\U00002974', + "rarrtl;": '\U000021A3', + "rarrw;": '\U0000219D', + "ratail;": '\U0000291A', + "ratio;": '\U00002236', + "rationals;": '\U0000211A', + "rbarr;": '\U0000290D', + "rbbrk;": '\U00002773', + "rbrace;": '\U0000007D', + "rbrack;": '\U0000005D', + "rbrke;": '\U0000298C', + "rbrksld;": '\U0000298E', + "rbrkslu;": '\U00002990', + "rcaron;": '\U00000159', + "rcedil;": '\U00000157', + "rceil;": '\U00002309', + "rcub;": '\U0000007D', + "rcy;": '\U00000440', + "rdca;": '\U00002937', + "rdldhar;": '\U00002969', + "rdquo;": '\U0000201D', + "rdquor;": '\U0000201D', + "rdsh;": '\U000021B3', + "real;": '\U0000211C', + "realine;": '\U0000211B', + "realpart;": '\U0000211C', + "reals;": '\U0000211D', + "rect;": '\U000025AD', + "reg;": '\U000000AE', + "rfisht;": '\U0000297D', + "rfloor;": '\U0000230B', + "rfr;": '\U0001D52F', + "rhard;": '\U000021C1', + "rharu;": '\U000021C0', + "rharul;": '\U0000296C', + "rho;": '\U000003C1', + "rhov;": '\U000003F1', + "rightarrow;": '\U00002192', + "rightarrowtail;": '\U000021A3', + "rightharpoondown;": '\U000021C1', + "rightharpoonup;": '\U000021C0', + "rightleftarrows;": '\U000021C4', + "rightleftharpoons;": '\U000021CC', + "rightrightarrows;": '\U000021C9', + "rightsquigarrow;": '\U0000219D', + "rightthreetimes;": '\U000022CC', + "ring;": '\U000002DA', + "risingdotseq;": '\U00002253', + "rlarr;": '\U000021C4', + "rlhar;": '\U000021CC', + "rlm;": '\U0000200F', + "rmoust;": '\U000023B1', + "rmoustache;": '\U000023B1', + "rnmid;": '\U00002AEE', + "roang;": '\U000027ED', + "roarr;": '\U000021FE', + "robrk;": '\U000027E7', + "ropar;": '\U00002986', + "ropf;": '\U0001D563', + "roplus;": '\U00002A2E', + "rotimes;": '\U00002A35', + "rpar;": '\U00000029', + "rpargt;": '\U00002994', + "rppolint;": '\U00002A12', + "rrarr;": '\U000021C9', + "rsaquo;": '\U0000203A', + "rscr;": '\U0001D4C7', + "rsh;": '\U000021B1', + "rsqb;": '\U0000005D', + "rsquo;": '\U00002019', + "rsquor;": '\U00002019', + "rthree;": '\U000022CC', + "rtimes;": '\U000022CA', + "rtri;": '\U000025B9', + "rtrie;": '\U000022B5', + "rtrif;": '\U000025B8', + "rtriltri;": '\U000029CE', + "ruluhar;": '\U00002968', + "rx;": '\U0000211E', + "sacute;": '\U0000015B', + "sbquo;": '\U0000201A', + "sc;": '\U0000227B', + "scE;": '\U00002AB4', + "scap;": '\U00002AB8', + "scaron;": '\U00000161', + "sccue;": '\U0000227D', + "sce;": '\U00002AB0', + "scedil;": '\U0000015F', + "scirc;": '\U0000015D', + "scnE;": '\U00002AB6', + "scnap;": '\U00002ABA', + "scnsim;": '\U000022E9', + "scpolint;": '\U00002A13', + "scsim;": '\U0000227F', + "scy;": '\U00000441', + "sdot;": '\U000022C5', + "sdotb;": '\U000022A1', + "sdote;": '\U00002A66', + "seArr;": '\U000021D8', + "searhk;": '\U00002925', + "searr;": '\U00002198', + "searrow;": '\U00002198', + "sect;": '\U000000A7', + "semi;": '\U0000003B', + "seswar;": '\U00002929', + "setminus;": '\U00002216', + "setmn;": '\U00002216', + "sext;": '\U00002736', + "sfr;": '\U0001D530', + "sfrown;": '\U00002322', + "sharp;": '\U0000266F', + "shchcy;": '\U00000449', + "shcy;": '\U00000448', + "shortmid;": '\U00002223', + "shortparallel;": '\U00002225', + "shy;": '\U000000AD', + "sigma;": '\U000003C3', + "sigmaf;": '\U000003C2', + "sigmav;": '\U000003C2', + "sim;": '\U0000223C', + "simdot;": '\U00002A6A', + "sime;": '\U00002243', + "simeq;": '\U00002243', + "simg;": '\U00002A9E', + "simgE;": '\U00002AA0', + "siml;": '\U00002A9D', + "simlE;": '\U00002A9F', + "simne;": '\U00002246', + "simplus;": '\U00002A24', + "simrarr;": '\U00002972', + "slarr;": '\U00002190', + "smallsetminus;": '\U00002216', + "smashp;": '\U00002A33', + "smeparsl;": '\U000029E4', + "smid;": '\U00002223', + "smile;": '\U00002323', + "smt;": '\U00002AAA', + "smte;": '\U00002AAC', + "softcy;": '\U0000044C', + "sol;": '\U0000002F', + "solb;": '\U000029C4', + "solbar;": '\U0000233F', + "sopf;": '\U0001D564', + "spades;": '\U00002660', + "spadesuit;": '\U00002660', + "spar;": '\U00002225', + "sqcap;": '\U00002293', + "sqcup;": '\U00002294', + "sqsub;": '\U0000228F', + "sqsube;": '\U00002291', + "sqsubset;": '\U0000228F', + "sqsubseteq;": '\U00002291', + "sqsup;": '\U00002290', + "sqsupe;": '\U00002292', + "sqsupset;": '\U00002290', + "sqsupseteq;": '\U00002292', + "squ;": '\U000025A1', + "square;": '\U000025A1', + "squarf;": '\U000025AA', + "squf;": '\U000025AA', + "srarr;": '\U00002192', + "sscr;": '\U0001D4C8', + "ssetmn;": '\U00002216', + "ssmile;": '\U00002323', + "sstarf;": '\U000022C6', + "star;": '\U00002606', + "starf;": '\U00002605', + "straightepsilon;": '\U000003F5', + "straightphi;": '\U000003D5', + "strns;": '\U000000AF', + "sub;": '\U00002282', + "subE;": '\U00002AC5', + "subdot;": '\U00002ABD', + "sube;": '\U00002286', + "subedot;": '\U00002AC3', + "submult;": '\U00002AC1', + "subnE;": '\U00002ACB', + "subne;": '\U0000228A', + "subplus;": '\U00002ABF', + "subrarr;": '\U00002979', + "subset;": '\U00002282', + "subseteq;": '\U00002286', + "subseteqq;": '\U00002AC5', + "subsetneq;": '\U0000228A', + "subsetneqq;": '\U00002ACB', + "subsim;": '\U00002AC7', + "subsub;": '\U00002AD5', + "subsup;": '\U00002AD3', + "succ;": '\U0000227B', + "succapprox;": '\U00002AB8', + "succcurlyeq;": '\U0000227D', + "succeq;": '\U00002AB0', + "succnapprox;": '\U00002ABA', + "succneqq;": '\U00002AB6', + "succnsim;": '\U000022E9', + "succsim;": '\U0000227F', + "sum;": '\U00002211', + "sung;": '\U0000266A', + "sup;": '\U00002283', + "sup1;": '\U000000B9', + "sup2;": '\U000000B2', + "sup3;": '\U000000B3', + "supE;": '\U00002AC6', + "supdot;": '\U00002ABE', + "supdsub;": '\U00002AD8', + "supe;": '\U00002287', + "supedot;": '\U00002AC4', + "suphsol;": '\U000027C9', + "suphsub;": '\U00002AD7', + "suplarr;": '\U0000297B', + "supmult;": '\U00002AC2', + "supnE;": '\U00002ACC', + "supne;": '\U0000228B', + "supplus;": '\U00002AC0', + "supset;": '\U00002283', + "supseteq;": '\U00002287', + "supseteqq;": '\U00002AC6', + "supsetneq;": '\U0000228B', + "supsetneqq;": '\U00002ACC', + "supsim;": '\U00002AC8', + "supsub;": '\U00002AD4', + "supsup;": '\U00002AD6', + "swArr;": '\U000021D9', + "swarhk;": '\U00002926', + "swarr;": '\U00002199', + "swarrow;": '\U00002199', + "swnwar;": '\U0000292A', + "szlig;": '\U000000DF', + "target;": '\U00002316', + "tau;": '\U000003C4', + "tbrk;": '\U000023B4', + "tcaron;": '\U00000165', + "tcedil;": '\U00000163', + "tcy;": '\U00000442', + "tdot;": '\U000020DB', + "telrec;": '\U00002315', + "tfr;": '\U0001D531', + "there4;": '\U00002234', + "therefore;": '\U00002234', + "theta;": '\U000003B8', + "thetasym;": '\U000003D1', + "thetav;": '\U000003D1', + "thickapprox;": '\U00002248', + "thicksim;": '\U0000223C', + "thinsp;": '\U00002009', + "thkap;": '\U00002248', + "thksim;": '\U0000223C', + "thorn;": '\U000000FE', + "tilde;": '\U000002DC', + "times;": '\U000000D7', + "timesb;": '\U000022A0', + "timesbar;": '\U00002A31', + "timesd;": '\U00002A30', + "tint;": '\U0000222D', + "toea;": '\U00002928', + "top;": '\U000022A4', + "topbot;": '\U00002336', + "topcir;": '\U00002AF1', + "topf;": '\U0001D565', + "topfork;": '\U00002ADA', + "tosa;": '\U00002929', + "tprime;": '\U00002034', + "trade;": '\U00002122', + "triangle;": '\U000025B5', + "triangledown;": '\U000025BF', + "triangleleft;": '\U000025C3', + "trianglelefteq;": '\U000022B4', + "triangleq;": '\U0000225C', + "triangleright;": '\U000025B9', + "trianglerighteq;": '\U000022B5', + "tridot;": '\U000025EC', + "trie;": '\U0000225C', + "triminus;": '\U00002A3A', + "triplus;": '\U00002A39', + "trisb;": '\U000029CD', + "tritime;": '\U00002A3B', + "trpezium;": '\U000023E2', + "tscr;": '\U0001D4C9', + "tscy;": '\U00000446', + "tshcy;": '\U0000045B', + "tstrok;": '\U00000167', + "twixt;": '\U0000226C', + "twoheadleftarrow;": '\U0000219E', + "twoheadrightarrow;": '\U000021A0', + "uArr;": '\U000021D1', + "uHar;": '\U00002963', + "uacute;": '\U000000FA', + "uarr;": '\U00002191', + "ubrcy;": '\U0000045E', + "ubreve;": '\U0000016D', + "ucirc;": '\U000000FB', + "ucy;": '\U00000443', + "udarr;": '\U000021C5', + "udblac;": '\U00000171', + "udhar;": '\U0000296E', + "ufisht;": '\U0000297E', + "ufr;": '\U0001D532', + "ugrave;": '\U000000F9', + "uharl;": '\U000021BF', + "uharr;": '\U000021BE', + "uhblk;": '\U00002580', + "ulcorn;": '\U0000231C', + "ulcorner;": '\U0000231C', + "ulcrop;": '\U0000230F', + "ultri;": '\U000025F8', + "umacr;": '\U0000016B', + "uml;": '\U000000A8', + "uogon;": '\U00000173', + "uopf;": '\U0001D566', + "uparrow;": '\U00002191', + "updownarrow;": '\U00002195', + "upharpoonleft;": '\U000021BF', + "upharpoonright;": '\U000021BE', + "uplus;": '\U0000228E', + "upsi;": '\U000003C5', + "upsih;": '\U000003D2', + "upsilon;": '\U000003C5', + "upuparrows;": '\U000021C8', + "urcorn;": '\U0000231D', + "urcorner;": '\U0000231D', + "urcrop;": '\U0000230E', + "uring;": '\U0000016F', + "urtri;": '\U000025F9', + "uscr;": '\U0001D4CA', + "utdot;": '\U000022F0', + "utilde;": '\U00000169', + "utri;": '\U000025B5', + "utrif;": '\U000025B4', + "uuarr;": '\U000021C8', + "uuml;": '\U000000FC', + "uwangle;": '\U000029A7', + "vArr;": '\U000021D5', + "vBar;": '\U00002AE8', + "vBarv;": '\U00002AE9', + "vDash;": '\U000022A8', + "vangrt;": '\U0000299C', + "varepsilon;": '\U000003F5', + "varkappa;": '\U000003F0', + "varnothing;": '\U00002205', + "varphi;": '\U000003D5', + "varpi;": '\U000003D6', + "varpropto;": '\U0000221D', + "varr;": '\U00002195', + "varrho;": '\U000003F1', + "varsigma;": '\U000003C2', + "vartheta;": '\U000003D1', + "vartriangleleft;": '\U000022B2', + "vartriangleright;": '\U000022B3', + "vcy;": '\U00000432', + "vdash;": '\U000022A2', + "vee;": '\U00002228', + "veebar;": '\U000022BB', + "veeeq;": '\U0000225A', + "vellip;": '\U000022EE', + "verbar;": '\U0000007C', + "vert;": '\U0000007C', + "vfr;": '\U0001D533', + "vltri;": '\U000022B2', + "vopf;": '\U0001D567', + "vprop;": '\U0000221D', + "vrtri;": '\U000022B3', + "vscr;": '\U0001D4CB', + "vzigzag;": '\U0000299A', + "wcirc;": '\U00000175', + "wedbar;": '\U00002A5F', + "wedge;": '\U00002227', + "wedgeq;": '\U00002259', + "weierp;": '\U00002118', + "wfr;": '\U0001D534', + "wopf;": '\U0001D568', + "wp;": '\U00002118', + "wr;": '\U00002240', + "wreath;": '\U00002240', + "wscr;": '\U0001D4CC', + "xcap;": '\U000022C2', + "xcirc;": '\U000025EF', + "xcup;": '\U000022C3', + "xdtri;": '\U000025BD', + "xfr;": '\U0001D535', + "xhArr;": '\U000027FA', + "xharr;": '\U000027F7', + "xi;": '\U000003BE', + "xlArr;": '\U000027F8', + "xlarr;": '\U000027F5', + "xmap;": '\U000027FC', + "xnis;": '\U000022FB', + "xodot;": '\U00002A00', + "xopf;": '\U0001D569', + "xoplus;": '\U00002A01', + "xotime;": '\U00002A02', + "xrArr;": '\U000027F9', + "xrarr;": '\U000027F6', + "xscr;": '\U0001D4CD', + "xsqcup;": '\U00002A06', + "xuplus;": '\U00002A04', + "xutri;": '\U000025B3', + "xvee;": '\U000022C1', + "xwedge;": '\U000022C0', + "yacute;": '\U000000FD', + "yacy;": '\U0000044F', + "ycirc;": '\U00000177', + "ycy;": '\U0000044B', + "yen;": '\U000000A5', + "yfr;": '\U0001D536', + "yicy;": '\U00000457', + "yopf;": '\U0001D56A', + "yscr;": '\U0001D4CE', + "yucy;": '\U0000044E', + "yuml;": '\U000000FF', + "zacute;": '\U0000017A', + "zcaron;": '\U0000017E', + "zcy;": '\U00000437', + "zdot;": '\U0000017C', + "zeetrf;": '\U00002128', + "zeta;": '\U000003B6', + "zfr;": '\U0001D537', + "zhcy;": '\U00000436', + "zigrarr;": '\U000021DD', + "zopf;": '\U0001D56B', + "zscr;": '\U0001D4CF', + "zwj;": '\U0000200D', + "zwnj;": '\U0000200C', + "AElig": '\U000000C6', + "AMP": '\U00000026', + "Aacute": '\U000000C1', + "Acirc": '\U000000C2', + "Agrave": '\U000000C0', + "Aring": '\U000000C5', + "Atilde": '\U000000C3', + "Auml": '\U000000C4', + "COPY": '\U000000A9', + "Ccedil": '\U000000C7', + "ETH": '\U000000D0', + "Eacute": '\U000000C9', + "Ecirc": '\U000000CA', + "Egrave": '\U000000C8', + "Euml": '\U000000CB', + "GT": '\U0000003E', + "Iacute": '\U000000CD', + "Icirc": '\U000000CE', + "Igrave": '\U000000CC', + "Iuml": '\U000000CF', + "LT": '\U0000003C', + "Ntilde": '\U000000D1', + "Oacute": '\U000000D3', + "Ocirc": '\U000000D4', + "Ograve": '\U000000D2', + "Oslash": '\U000000D8', + "Otilde": '\U000000D5', + "Ouml": '\U000000D6', + "QUOT": '\U00000022', + "REG": '\U000000AE', + "THORN": '\U000000DE', + "Uacute": '\U000000DA', + "Ucirc": '\U000000DB', + "Ugrave": '\U000000D9', + "Uuml": '\U000000DC', + "Yacute": '\U000000DD', + "aacute": '\U000000E1', + "acirc": '\U000000E2', + "acute": '\U000000B4', + "aelig": '\U000000E6', + "agrave": '\U000000E0', + "amp": '\U00000026', + "aring": '\U000000E5', + "atilde": '\U000000E3', + "auml": '\U000000E4', + "brvbar": '\U000000A6', + "ccedil": '\U000000E7', + "cedil": '\U000000B8', + "cent": '\U000000A2', + "copy": '\U000000A9', + "curren": '\U000000A4', + "deg": '\U000000B0', + "divide": '\U000000F7', + "eacute": '\U000000E9', + "ecirc": '\U000000EA', + "egrave": '\U000000E8', + "eth": '\U000000F0', + "euml": '\U000000EB', + "frac12": '\U000000BD', + "frac14": '\U000000BC', + "frac34": '\U000000BE', + "gt": '\U0000003E', + "iacute": '\U000000ED', + "icirc": '\U000000EE', + "iexcl": '\U000000A1', + "igrave": '\U000000EC', + "iquest": '\U000000BF', + "iuml": '\U000000EF', + "laquo": '\U000000AB', + "lt": '\U0000003C', + "macr": '\U000000AF', + "micro": '\U000000B5', + "middot": '\U000000B7', + "nbsp": '\U000000A0', + "not": '\U000000AC', + "ntilde": '\U000000F1', + "oacute": '\U000000F3', + "ocirc": '\U000000F4', + "ograve": '\U000000F2', + "ordf": '\U000000AA', + "ordm": '\U000000BA', + "oslash": '\U000000F8', + "otilde": '\U000000F5', + "ouml": '\U000000F6', + "para": '\U000000B6', + "plusmn": '\U000000B1', + "pound": '\U000000A3', + "quot": '\U00000022', + "raquo": '\U000000BB', + "reg": '\U000000AE', + "sect": '\U000000A7', + "shy": '\U000000AD', + "sup1": '\U000000B9', + "sup2": '\U000000B2', + "sup3": '\U000000B3', + "szlig": '\U000000DF', + "thorn": '\U000000FE', + "times": '\U000000D7', + "uacute": '\U000000FA', + "ucirc": '\U000000FB', + "ugrave": '\U000000F9', + "uml": '\U000000A8', + "uuml": '\U000000FC', + "yacute": '\U000000FD', + "yen": '\U000000A5', + "yuml": '\U000000FF', } // HTML entities that are two unicode codepoints. diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go index d23e05e0..4b1fa427 100644 --- a/vendor/golang.org/x/net/html/parse.go +++ b/vendor/golang.org/x/net/html/parse.go @@ -209,27 +209,6 @@ loop: p.oe = p.oe[:i+1] } -// generateAllImpliedEndTags pops nodes off the stack of open elements as long as -// the top node has a tag name of caption, colgroup, dd, div, dt, li, optgroup, option, p, rb, -// rp, rt, rtc, span, tbody, td, tfoot, th, thead or tr. -func (p *parser) generateAllImpliedEndTags() { - var i int - for i = len(p.oe) - 1; i >= 0; i-- { - n := p.oe[i] - if n.Type == ElementNode { - switch n.DataAtom { - // TODO: remove this divergence from the HTML5 spec - case a.Caption, a.Colgroup, a.Dd, a.Div, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, - a.Rp, a.Rt, a.Rtc, a.Span, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: - continue - } - } - break - } - - p.oe = p.oe[:i+1] -} - // addChild adds a child node n to the top element, and pushes n onto the stack // of open elements if it is an element node. func (p *parser) addChild(n *Node) { @@ -276,7 +255,7 @@ func (p *parser) fosterParent(n *Node) { } } - if template != nil && (table == nil || j < i) { + if template != nil && (table == nil || j > i) { template.AppendChild(n) return } @@ -679,11 +658,16 @@ func inHeadIM(p *parser) bool { if !p.oe.contains(a.Template) { return true } - p.generateAllImpliedEndTags() - if n := p.oe.top(); n.DataAtom != a.Template { - return true + // TODO: remove this divergence from the HTML5 spec. + // + // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 + p.generateImpliedEndTags() + for i := len(p.oe) - 1; i >= 0; i-- { + if n := p.oe[i]; n.Namespace == "" && n.DataAtom == a.Template { + p.oe = p.oe[:i] + break + } } - p.popUntil(defaultScope, a.Template) p.clearActiveFormattingElements() p.templateStack.pop() p.resetInsertionMode() @@ -860,9 +844,13 @@ func inBodyIM(p *parser) bool { // The newline, if any, will be dealt with by the TextToken case. p.framesetOK = false case a.Form: - if p.oe.contains(a.Template) || p.form == nil { - p.popUntil(buttonScope, a.P) - p.addElement() + if p.form != nil && !p.oe.contains(a.Template) { + // Ignore the token + return true + } + p.popUntil(buttonScope, a.P) + p.addElement() + if !p.oe.contains(a.Template) { p.form = p.top() } case a.Li: @@ -1070,13 +1058,7 @@ func inBodyIM(p *parser) bool { p.acknowledgeSelfClosingTag() } return true - case a.Frame: - // TODO: remove this divergence from the HTML5 spec. - if p.oe.contains(a.Template) { - p.addElement() - return true - } - case a.Caption, a.Col, a.Colgroup, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: + case a.Caption, a.Col, a.Colgroup, a.Frame, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: // Ignore the token. default: p.reconstructActiveFormattingElements() @@ -1098,12 +1080,13 @@ func inBodyIM(p *parser) bool { p.popUntil(defaultScope, p.tok.DataAtom) case a.Form: if p.oe.contains(a.Template) { - if !p.oe.contains(a.Form) { + i := p.indexOfElementInScope(defaultScope, a.Form) + if i == -1 { // Ignore the token. return true } p.generateImpliedEndTags() - if p.tok.DataAtom == a.Form { + if p.oe[i].DataAtom != a.Form { // Ignore the token. return true } @@ -1346,9 +1329,6 @@ func textIM(p *parser) bool { // Section 12.2.6.4.9. func inTableIM(p *parser) bool { switch p.tok.Type { - case ErrorToken: - // Stop parsing. - return true case TextToken: p.tok.Data = strings.Replace(p.tok.Data, "\x00", "", -1) switch p.oe.top().DataAtom { @@ -1443,6 +1423,8 @@ func inTableIM(p *parser) bool { case DoctypeToken: // Ignore the token. return true + case ErrorToken: + return inBodyIM(p) } p.fosterParenting = true @@ -1545,6 +1527,8 @@ func inColumnGroupIM(p *parser) bool { case a.Template: return inHeadIM(p) } + case ErrorToken: + return inBodyIM(p) } if p.oe.top().DataAtom != a.Colgroup { return true @@ -1709,9 +1693,6 @@ func inCellIM(p *parser) bool { // Section 12.2.6.4.16. func inSelectIM(p *parser) bool { switch p.tok.Type { - case ErrorToken: - // Stop parsing. - return true case TextToken: p.addText(strings.Replace(p.tok.Data, "\x00", "", -1)) case StartTagToken: @@ -1775,6 +1756,8 @@ func inSelectIM(p *parser) bool { case DoctypeToken: // Ignore the token. return true + case ErrorToken: + return inBodyIM(p) } return true @@ -1841,15 +1824,26 @@ func inTemplateIM(p *parser) bool { // Ignore the token. return true } + case ErrorToken: + if !p.oe.contains(a.Template) { + // Ignore the token. + return true + } + // TODO: remove this divergence from the HTML5 spec. + // + // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 + p.generateImpliedEndTags() + for i := len(p.oe) - 1; i >= 0; i-- { + if n := p.oe[i]; n.Namespace == "" && n.DataAtom == a.Template { + p.oe = p.oe[:i] + break + } + } + p.clearActiveFormattingElements() + p.templateStack.pop() + p.resetInsertionMode() + return false } - if !p.oe.contains(a.Template) { - // Ignore the token. - return true - } - p.popUntil(defaultScope, a.Template) - p.clearActiveFormattingElements() - p.templateStack.pop() - p.resetInsertionMode() return false } @@ -1923,11 +1917,6 @@ func inFramesetIM(p *parser) bool { p.acknowledgeSelfClosingTag() case a.Noframes: return inHeadIM(p) - case a.Template: - // TODO: remove this divergence from the HTML5 spec. - // - // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 - return inTemplateIM(p) } case EndTagToken: switch p.tok.DataAtom { diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go index 826633e1..cea712fa 100644 --- a/vendor/golang.org/x/net/internal/iana/const.go +++ b/vendor/golang.org/x/net/internal/iana/const.go @@ -4,38 +4,34 @@ // Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). package iana // import "golang.org/x/net/internal/iana" -// Differentiated Services Field Codepoints (DSCP), Updated: 2017-05-12 +// Differentiated Services Field Codepoints (DSCP), Updated: 2018-05-04 const ( - DiffServCS0 = 0x0 // CS0 - DiffServCS1 = 0x20 // CS1 - DiffServCS2 = 0x40 // CS2 - DiffServCS3 = 0x60 // CS3 - DiffServCS4 = 0x80 // CS4 - DiffServCS5 = 0xa0 // CS5 - DiffServCS6 = 0xc0 // CS6 - DiffServCS7 = 0xe0 // CS7 - DiffServAF11 = 0x28 // AF11 - DiffServAF12 = 0x30 // AF12 - DiffServAF13 = 0x38 // AF13 - DiffServAF21 = 0x48 // AF21 - DiffServAF22 = 0x50 // AF22 - DiffServAF23 = 0x58 // AF23 - DiffServAF31 = 0x68 // AF31 - DiffServAF32 = 0x70 // AF32 - DiffServAF33 = 0x78 // AF33 - DiffServAF41 = 0x88 // AF41 - DiffServAF42 = 0x90 // AF42 - DiffServAF43 = 0x98 // AF43 - DiffServEF = 0xb8 // EF - DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT -) - -// IPv4 TOS Byte and IPv6 Traffic Class Octet, Updated: 2001-09-06 -const ( - NotECNTransport = 0x0 // Not-ECT (Not ECN-Capable Transport) - ECNTransport1 = 0x1 // ECT(1) (ECN-Capable Transport(1)) - ECNTransport0 = 0x2 // ECT(0) (ECN-Capable Transport(0)) - CongestionExperienced = 0x3 // CE (Congestion Experienced) + DiffServCS0 = 0x00 // CS0 + DiffServCS1 = 0x20 // CS1 + DiffServCS2 = 0x40 // CS2 + DiffServCS3 = 0x60 // CS3 + DiffServCS4 = 0x80 // CS4 + DiffServCS5 = 0xa0 // CS5 + DiffServCS6 = 0xc0 // CS6 + DiffServCS7 = 0xe0 // CS7 + DiffServAF11 = 0x28 // AF11 + DiffServAF12 = 0x30 // AF12 + DiffServAF13 = 0x38 // AF13 + DiffServAF21 = 0x48 // AF21 + DiffServAF22 = 0x50 // AF22 + DiffServAF23 = 0x58 // AF23 + DiffServAF31 = 0x68 // AF31 + DiffServAF32 = 0x70 // AF32 + DiffServAF33 = 0x78 // AF33 + DiffServAF41 = 0x88 // AF41 + DiffServAF42 = 0x90 // AF42 + DiffServAF43 = 0x98 // AF43 + DiffServEF = 0xb8 // EF + DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT + NotECNTransport = 0x00 // Not-ECT (Not ECN-Capable Transport) + ECNTransport1 = 0x01 // ECT(1) (ECN-Capable Transport(1)) + ECNTransport0 = 0x02 // ECT(0) (ECN-Capable Transport(0)) + CongestionExperienced = 0x03 // CE (Congestion Experienced) ) // Protocol Numbers, Updated: 2017-10-13 @@ -179,7 +175,7 @@ const ( ProtocolReserved = 255 // Reserved ) -// Address Family Numbers, Updated: 2016-10-25 +// Address Family Numbers, Updated: 2018-04-02 const ( AddrFamilyIPv4 = 1 // IP (IP version 4) AddrFamilyIPv6 = 2 // IP6 (IP version 6) diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go index 2227e09e..2a7661c2 100644 --- a/vendor/golang.org/x/net/internal/iana/gen.go +++ b/vendor/golang.org/x/net/internal/iana/gen.go @@ -31,16 +31,12 @@ var registries = []struct { "https://www.iana.org/assignments/dscp-registry/dscp-registry.xml", parseDSCPRegistry, }, - { - "https://www.iana.org/assignments/ipv4-tos-byte/ipv4-tos-byte.xml", - parseTOSTCByte, - }, { "https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml", parseProtocolNumbers, }, { - "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml", + "https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml", parseAddrFamilyNumbers, }, } @@ -85,31 +81,39 @@ func parseDSCPRegistry(w io.Writer, r io.Reader) error { if err := dec.Decode(&dr); err != nil { return err } - drs := dr.escape() fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated) fmt.Fprintf(w, "const (\n") - for _, dr := range drs { - fmt.Fprintf(w, "DiffServ%s = %#x", dr.Name, dr.Value) + for _, dr := range dr.escapeDSCP() { + fmt.Fprintf(w, "DiffServ%s = %#02x", dr.Name, dr.Value) fmt.Fprintf(w, "// %s\n", dr.OrigName) } + for _, er := range dr.escapeECN() { + fmt.Fprintf(w, "%s = %#02x", er.Descr, er.Value) + fmt.Fprintf(w, "// %s\n", er.OrigDescr) + } fmt.Fprintf(w, ")\n") return nil } type dscpRegistry struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Note string `xml:"note"` - RegTitle string `xml:"registry>title"` - PoolRecords []struct { - Name string `xml:"name"` - Space string `xml:"space"` - } `xml:"registry>record"` - Records []struct { - Name string `xml:"name"` - Space string `xml:"space"` - } `xml:"registry>registry>record"` + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Note string `xml:"note"` + Registries []struct { + Title string `xml:"title"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Name string `xml:"name"` + Space string `xml:"space"` + } `xml:"record"` + } `xml:"registry"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"record"` + } `xml:"registry"` } type canonDSCPRecord struct { @@ -118,92 +122,84 @@ type canonDSCPRecord struct { Value int } -func (drr *dscpRegistry) escape() []canonDSCPRecord { - drs := make([]canonDSCPRecord, len(drr.Records)) - sr := strings.NewReplacer( - "+", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, dr := range drr.Records { - s := strings.TrimSpace(dr.Name) - drs[i].OrigName = s - drs[i].Name = sr.Replace(s) - n, err := strconv.ParseUint(dr.Space, 2, 8) - if err != nil { +func (drr *dscpRegistry) escapeDSCP() []canonDSCPRecord { + var drs []canonDSCPRecord + for _, preg := range drr.Registries { + if !strings.Contains(preg.Title, "Differentiated Services Field Codepoints") { continue } - drs[i].Value = int(n) << 2 + for _, reg := range preg.Registries { + if !strings.Contains(reg.Title, "Pool 1 Codepoints") { + continue + } + drs = make([]canonDSCPRecord, len(reg.Records)) + sr := strings.NewReplacer( + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, dr := range reg.Records { + s := strings.TrimSpace(dr.Name) + drs[i].OrigName = s + drs[i].Name = sr.Replace(s) + n, err := strconv.ParseUint(dr.Space, 2, 8) + if err != nil { + continue + } + drs[i].Value = int(n) << 2 + } + } } return drs } -func parseTOSTCByte(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var ttb tosTCByte - if err := dec.Decode(&ttb); err != nil { - return err - } - trs := ttb.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", ttb.Title, ttb.Updated) - fmt.Fprintf(w, "const (\n") - for _, tr := range trs { - fmt.Fprintf(w, "%s = %#x", tr.Keyword, tr.Value) - fmt.Fprintf(w, "// %s\n", tr.OrigKeyword) - } - fmt.Fprintf(w, ")\n") - return nil +type canonECNRecord struct { + OrigDescr string + Descr string + Value int } -type tosTCByte struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Note string `xml:"note"` - RegTitle string `xml:"registry>title"` - Records []struct { - Binary string `xml:"binary"` - Keyword string `xml:"keyword"` - } `xml:"registry>record"` -} - -type canonTOSTCByteRecord struct { - OrigKeyword string - Keyword string - Value int -} - -func (ttb *tosTCByte) escape() []canonTOSTCByteRecord { - trs := make([]canonTOSTCByteRecord, len(ttb.Records)) - sr := strings.NewReplacer( - "Capable", "", - "(", "", - ")", "", - "+", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, tr := range ttb.Records { - s := strings.TrimSpace(tr.Keyword) - trs[i].OrigKeyword = s - ss := strings.Split(s, " ") - if len(ss) > 1 { - trs[i].Keyword = strings.Join(ss[1:], " ") - } else { - trs[i].Keyword = ss[0] - } - trs[i].Keyword = sr.Replace(trs[i].Keyword) - n, err := strconv.ParseUint(tr.Binary, 2, 8) - if err != nil { +func (drr *dscpRegistry) escapeECN() []canonECNRecord { + var ers []canonECNRecord + for _, reg := range drr.Registries { + if !strings.Contains(reg.Title, "ECN Field") { continue } - trs[i].Value = int(n) + ers = make([]canonECNRecord, len(reg.Records)) + sr := strings.NewReplacer( + "Capable", "", + "Not-ECT", "", + "ECT(1)", "", + "ECT(0)", "", + "CE", "", + "(", "", + ")", "", + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, er := range reg.Records { + s := strings.TrimSpace(er.Descr) + ers[i].OrigDescr = s + ss := strings.Split(s, " ") + if len(ss) > 1 { + ers[i].Descr = strings.Join(ss[1:], " ") + } else { + ers[i].Descr = ss[0] + } + ers[i].Descr = sr.Replace(er.Descr) + n, err := strconv.ParseUint(er.Value, 2, 8) + if err != nil { + continue + } + ers[i].Value = int(n) + } } - return trs + return ers } func parseProtocolNumbers(w io.Writer, r io.Reader) error { diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go index b4454992..5ce9b358 100644 --- a/vendor/golang.org/x/net/ipv4/batch.go +++ b/vendor/golang.org/x/net/ipv4/batch.go @@ -9,7 +9,6 @@ package ipv4 import ( "net" "runtime" - "syscall" "golang.org/x/net/internal/socket" ) @@ -76,7 +75,7 @@ type Message = socket.Message // headers. func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } switch runtime.GOOS { case "linux": @@ -107,7 +106,7 @@ func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { // On other platforms, this method will write only a single message. func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } switch runtime.GOOS { case "linux": @@ -139,7 +138,7 @@ func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { // On other platforms, this method will read only a single message. func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } switch runtime.GOOS { case "linux": @@ -170,7 +169,7 @@ func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { // On other platforms, this method will write only a single message. func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } switch runtime.GOOS { case "linux": diff --git a/vendor/golang.org/x/net/ipv4/dgramopt.go b/vendor/golang.org/x/net/ipv4/dgramopt.go index 54d77d5f..36764492 100644 --- a/vendor/golang.org/x/net/ipv4/dgramopt.go +++ b/vendor/golang.org/x/net/ipv4/dgramopt.go @@ -6,7 +6,6 @@ package ipv4 import ( "net" - "syscall" "golang.org/x/net/bpf" ) @@ -15,7 +14,7 @@ import ( // multicast packets. func (c *dgramOpt) MulticastTTL() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoMulticastTTL] if !ok { @@ -28,7 +27,7 @@ func (c *dgramOpt) MulticastTTL() (int, error) { // outgoing multicast packets. func (c *dgramOpt) SetMulticastTTL(ttl int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoMulticastTTL] if !ok { @@ -41,7 +40,7 @@ func (c *dgramOpt) SetMulticastTTL(ttl int) error { // packet transmissions. func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { if !c.ok() { - return nil, syscall.EINVAL + return nil, errInvalidConn } so, ok := sockOpts[ssoMulticastInterface] if !ok { @@ -54,7 +53,7 @@ func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { // multicast packet transmissions. func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoMulticastInterface] if !ok { @@ -67,7 +66,7 @@ func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { // should be copied and send back to the originator. func (c *dgramOpt) MulticastLoopback() (bool, error) { if !c.ok() { - return false, syscall.EINVAL + return false, errInvalidConn } so, ok := sockOpts[ssoMulticastLoopback] if !ok { @@ -84,7 +83,7 @@ func (c *dgramOpt) MulticastLoopback() (bool, error) { // should be copied and send back to the originator. func (c *dgramOpt) SetMulticastLoopback(on bool) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoMulticastLoopback] if !ok { @@ -104,7 +103,7 @@ func (c *dgramOpt) SetMulticastLoopback(on bool) error { // configuration. func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoJoinGroup] if !ok { @@ -122,7 +121,7 @@ func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { // source-specific group. func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoLeaveGroup] if !ok { @@ -143,7 +142,7 @@ func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { // routing configuration. func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoJoinSourceGroup] if !ok { @@ -164,7 +163,7 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net // interface ifi. func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoLeaveSourceGroup] if !ok { @@ -186,7 +185,7 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne // ifi. func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoBlockSourceGroup] if !ok { @@ -207,7 +206,7 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source // group by ExcludeSourceSpecificGroup again on the interface ifi. func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoUnblockSourceGroup] if !ok { @@ -228,7 +227,7 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source // Currently only Linux supports this. func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { if !c.ok() { - return nil, syscall.EINVAL + return nil, errInvalidConn } so, ok := sockOpts[ssoICMPFilter] if !ok { @@ -241,7 +240,7 @@ func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { // Currently only Linux supports this. func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoICMPFilter] if !ok { @@ -255,7 +254,7 @@ func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { // Only supported on Linux. func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoAttachFilter] if !ok { diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go index b43935a5..3efa2903 100644 --- a/vendor/golang.org/x/net/ipv4/doc.go +++ b/vendor/golang.org/x/net/ipv4/doc.go @@ -55,7 +55,7 @@ // Multicasting // // The options for multicasting are available for net.UDPConn and -// net.IPconn which are created as network connections that use the +// net.IPConn which are created as network connections that use the // IPv4 transport. A few network facilities must be prepared before // you begin multicasting, at a minimum joining network interfaces and // multicast groups. @@ -241,4 +241,4 @@ // IncludeSourceSpecificGroup may return an error. package ipv4 // import "golang.org/x/net/ipv4" -// BUG(mikio): This package is not implemented on NaCl and Plan 9. +// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go index 2ab87736..50094637 100644 --- a/vendor/golang.org/x/net/ipv4/endpoint.go +++ b/vendor/golang.org/x/net/ipv4/endpoint.go @@ -6,7 +6,6 @@ package ipv4 import ( "net" - "syscall" "time" "golang.org/x/net/internal/socket" @@ -58,7 +57,7 @@ func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } // SetControlMessage sets the per packet IP-level socket options. func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) } @@ -67,7 +66,7 @@ func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { // endpoint. func (c *PacketConn) SetDeadline(t time.Time) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.PacketConn.SetDeadline(t) } @@ -76,7 +75,7 @@ func (c *PacketConn) SetDeadline(t time.Time) error { // endpoint. func (c *PacketConn) SetReadDeadline(t time.Time) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.PacketConn.SetReadDeadline(t) } @@ -85,7 +84,7 @@ func (c *PacketConn) SetReadDeadline(t time.Time) error { // endpoint. func (c *PacketConn) SetWriteDeadline(t time.Time) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.PacketConn.SetWriteDeadline(t) } @@ -93,7 +92,7 @@ func (c *PacketConn) SetWriteDeadline(t time.Time) error { // Close closes the endpoint. func (c *PacketConn) Close() error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.PacketConn.Close() } @@ -124,7 +123,7 @@ type RawConn struct { // SetControlMessage sets the per packet IP-level socket options. func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { if !c.packetHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on) } @@ -133,7 +132,7 @@ func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { // endpoint. func (c *RawConn) SetDeadline(t time.Time) error { if !c.packetHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.packetHandler.IPConn.SetDeadline(t) } @@ -142,7 +141,7 @@ func (c *RawConn) SetDeadline(t time.Time) error { // endpoint. func (c *RawConn) SetReadDeadline(t time.Time) error { if !c.packetHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.packetHandler.IPConn.SetReadDeadline(t) } @@ -151,7 +150,7 @@ func (c *RawConn) SetReadDeadline(t time.Time) error { // endpoint. func (c *RawConn) SetWriteDeadline(t time.Time) error { if !c.packetHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.packetHandler.IPConn.SetWriteDeadline(t) } @@ -159,7 +158,7 @@ func (c *RawConn) SetWriteDeadline(t time.Time) error { // Close closes the endpoint. func (c *RawConn) Close() error { if !c.packetHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.packetHandler.IPConn.Close() } diff --git a/vendor/golang.org/x/net/ipv4/genericopt.go b/vendor/golang.org/x/net/ipv4/genericopt.go index 119bf841..587ae4a1 100644 --- a/vendor/golang.org/x/net/ipv4/genericopt.go +++ b/vendor/golang.org/x/net/ipv4/genericopt.go @@ -4,12 +4,10 @@ package ipv4 -import "syscall" - // TOS returns the type-of-service field value for outgoing packets. func (c *genericOpt) TOS() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoTOS] if !ok { @@ -22,7 +20,7 @@ func (c *genericOpt) TOS() (int, error) { // packets. func (c *genericOpt) SetTOS(tos int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoTOS] if !ok { @@ -34,7 +32,7 @@ func (c *genericOpt) SetTOS(tos int) error { // TTL returns the time-to-live field value for outgoing packets. func (c *genericOpt) TTL() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoTTL] if !ok { @@ -47,7 +45,7 @@ func (c *genericOpt) TTL() (int, error) { // packets. func (c *genericOpt) SetTTL(ttl int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoTTL] if !ok { diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go index 8bb0f0f4..a8c8f7a6 100644 --- a/vendor/golang.org/x/net/ipv4/header.go +++ b/vendor/golang.org/x/net/ipv4/header.go @@ -9,7 +9,6 @@ import ( "fmt" "net" "runtime" - "syscall" "golang.org/x/net/internal/socket" ) @@ -52,9 +51,13 @@ func (h *Header) String() string { } // Marshal returns the binary encoding of h. +// +// The returned slice is in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. func (h *Header) Marshal() ([]byte, error) { if h == nil { - return nil, syscall.EINVAL + return nil, errInvalidConn } if h.Len < HeaderLen { return nil, errHeaderTooShort @@ -98,7 +101,11 @@ func (h *Header) Marshal() ([]byte, error) { return b, nil } -// Parse parses b as an IPv4 header and sotres the result in h. +// Parse parses b as an IPv4 header and stores the result in h. +// +// The provided b must be in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. func (h *Header) Parse(b []byte) error { if h == nil || len(b) < HeaderLen { return errHeaderTooShort @@ -150,6 +157,10 @@ func (h *Header) Parse(b []byte) error { } // ParseHeader parses b as an IPv4 header. +// +// The provided b must be in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. func ParseHeader(b []byte) (*Header, error) { h := new(Header) if err := h.Parse(b); err != nil { diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go index a5052e32..8d8ff98e 100644 --- a/vendor/golang.org/x/net/ipv4/helper.go +++ b/vendor/golang.org/x/net/ipv4/helper.go @@ -10,6 +10,7 @@ import ( ) var ( + errInvalidConn = errors.New("invalid connection") errMissingAddress = errors.New("missing address") errMissingHeader = errors.New("missing header") errHeaderTooShort = errors.New("header too short") diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go index f00f5b05..966bb776 100644 --- a/vendor/golang.org/x/net/ipv4/packet.go +++ b/vendor/golang.org/x/net/ipv4/packet.go @@ -6,7 +6,6 @@ package ipv4 import ( "net" - "syscall" "golang.org/x/net/internal/socket" ) @@ -28,7 +27,7 @@ func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn // header h, the payload p and the control message cm. func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { if !c.ok() { - return nil, nil, nil, syscall.EINVAL + return nil, nil, nil, errInvalidConn } return c.readFrom(b) } @@ -63,7 +62,7 @@ func slicePacket(b []byte) (h, p []byte, err error) { // Options = optional func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } return c.writeTo(h, p, cm) } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go index 3f06d760..204a49fe 100644 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg.go +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg.go @@ -2,14 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !nacl,!plan9,!windows +// +build !js,!nacl,!plan9,!windows package ipv4 -import ( - "net" - "syscall" -) +import "net" // ReadFrom reads a payload of the received IPv4 datagram, from the // endpoint c, copying the payload into b. It returns the number of @@ -17,7 +14,7 @@ import ( // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { if !c.ok() { - return 0, nil, nil, syscall.EINVAL + return 0, nil, nil, errInvalidConn } return c.readFrom(b) } @@ -30,7 +27,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net. // control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } return c.writeTo(b, cm, dst) } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go index d26ccd90..8d45599f 100644 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // +build !go1.9 -// +build !nacl,!plan9,!windows +// +build !js,!nacl,!plan9,!windows package ipv4 diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go index 2f193118..4081aad8 100644 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // +build go1.9 -// +build !nacl,!plan9,!windows +// +build !js,!nacl,!plan9,!windows package ipv4 diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go index 3926de70..1d434c61 100644 --- a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +++ b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go @@ -2,14 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 windows +// +build js nacl plan9 windows package ipv4 -import ( - "net" - "syscall" -) +import "net" // ReadFrom reads a payload of the received IPv4 datagram, from the // endpoint c, copying the payload into b. It returns the number of @@ -17,7 +14,7 @@ import ( // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { if !c.ok() { - return 0, nil, nil, syscall.EINVAL + return 0, nil, nil, errInvalidConn } if n, src, err = c.PacketConn.ReadFrom(b); err != nil { return 0, nil, nil, err @@ -33,7 +30,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net. // control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } if dst == nil { return 0, errMissingAddress diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go index 4f5fe683..10d64924 100644 --- a/vendor/golang.org/x/net/ipv6/batch.go +++ b/vendor/golang.org/x/net/ipv6/batch.go @@ -9,7 +9,6 @@ package ipv6 import ( "net" "runtime" - "syscall" "golang.org/x/net/internal/socket" ) @@ -67,7 +66,7 @@ type Message = socket.Message // On other platforms, this method will read only a single message. func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } switch runtime.GOOS { case "linux": @@ -98,7 +97,7 @@ func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { // On other platforms, this method will write only a single message. func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } switch runtime.GOOS { case "linux": diff --git a/vendor/golang.org/x/net/ipv6/dgramopt.go b/vendor/golang.org/x/net/ipv6/dgramopt.go index 703dafe8..eea4fde2 100644 --- a/vendor/golang.org/x/net/ipv6/dgramopt.go +++ b/vendor/golang.org/x/net/ipv6/dgramopt.go @@ -6,7 +6,6 @@ package ipv6 import ( "net" - "syscall" "golang.org/x/net/bpf" ) @@ -15,7 +14,7 @@ import ( // multicast packets. func (c *dgramOpt) MulticastHopLimit() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoMulticastHopLimit] if !ok { @@ -28,7 +27,7 @@ func (c *dgramOpt) MulticastHopLimit() (int, error) { // outgoing multicast packets. func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoMulticastHopLimit] if !ok { @@ -41,7 +40,7 @@ func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { // packet transmissions. func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { if !c.ok() { - return nil, syscall.EINVAL + return nil, errInvalidConn } so, ok := sockOpts[ssoMulticastInterface] if !ok { @@ -54,7 +53,7 @@ func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { // multicast packet transmissions. func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoMulticastInterface] if !ok { @@ -67,7 +66,7 @@ func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { // should be copied and send back to the originator. func (c *dgramOpt) MulticastLoopback() (bool, error) { if !c.ok() { - return false, syscall.EINVAL + return false, errInvalidConn } so, ok := sockOpts[ssoMulticastLoopback] if !ok { @@ -84,7 +83,7 @@ func (c *dgramOpt) MulticastLoopback() (bool, error) { // should be copied and send back to the originator. func (c *dgramOpt) SetMulticastLoopback(on bool) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoMulticastLoopback] if !ok { @@ -104,7 +103,7 @@ func (c *dgramOpt) SetMulticastLoopback(on bool) error { // configuration. func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoJoinGroup] if !ok { @@ -122,7 +121,7 @@ func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { // source-specific group. func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoLeaveGroup] if !ok { @@ -143,7 +142,7 @@ func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { // routing configuration. func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoJoinSourceGroup] if !ok { @@ -164,7 +163,7 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net // interface ifi. func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoLeaveSourceGroup] if !ok { @@ -186,7 +185,7 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne // ifi. func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoBlockSourceGroup] if !ok { @@ -207,7 +206,7 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source // group by ExcludeSourceSpecificGroup again on the interface ifi. func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoUnblockSourceGroup] if !ok { @@ -230,7 +229,7 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source // field is located. func (c *dgramOpt) Checksum() (on bool, offset int, err error) { if !c.ok() { - return false, 0, syscall.EINVAL + return false, 0, errInvalidConn } so, ok := sockOpts[ssoChecksum] if !ok { @@ -251,7 +250,7 @@ func (c *dgramOpt) Checksum() (on bool, offset int, err error) { // checksum field is located. func (c *dgramOpt) SetChecksum(on bool, offset int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoChecksum] if !ok { @@ -266,7 +265,7 @@ func (c *dgramOpt) SetChecksum(on bool, offset int) error { // ICMPFilter returns an ICMP filter. func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { if !c.ok() { - return nil, syscall.EINVAL + return nil, errInvalidConn } so, ok := sockOpts[ssoICMPFilter] if !ok { @@ -278,7 +277,7 @@ func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { // SetICMPFilter deploys the ICMP filter. func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoICMPFilter] if !ok { @@ -292,7 +291,7 @@ func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { // Only supported on Linux. func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoAttachFilter] if !ok { diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go index 664a97de..e0be9d50 100644 --- a/vendor/golang.org/x/net/ipv6/doc.go +++ b/vendor/golang.org/x/net/ipv6/doc.go @@ -56,7 +56,7 @@ // Multicasting // // The options for multicasting are available for net.UDPConn and -// net.IPconn which are created as network connections that use the +// net.IPConn which are created as network connections that use the // IPv6 transport. A few network facilities must be prepared before // you begin multicasting, at a minimum joining network interfaces and // multicast groups. @@ -240,4 +240,4 @@ // IncludeSourceSpecificGroup may return an error. package ipv6 // import "golang.org/x/net/ipv6" -// BUG(mikio): This package is not implemented on NaCl and Plan 9. +// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go index 0624c174..93257563 100644 --- a/vendor/golang.org/x/net/ipv6/endpoint.go +++ b/vendor/golang.org/x/net/ipv6/endpoint.go @@ -6,7 +6,6 @@ package ipv6 import ( "net" - "syscall" "time" "golang.org/x/net/internal/socket" @@ -34,7 +33,7 @@ func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } // with the endpoint. func (c *Conn) PathMTU() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoPathMTU] if !ok { @@ -76,7 +75,7 @@ func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } // socket options. func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) } @@ -85,7 +84,7 @@ func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { // endpoint. func (c *PacketConn) SetDeadline(t time.Time) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.SetDeadline(t) } @@ -94,7 +93,7 @@ func (c *PacketConn) SetDeadline(t time.Time) error { // endpoint. func (c *PacketConn) SetReadDeadline(t time.Time) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.SetReadDeadline(t) } @@ -103,7 +102,7 @@ func (c *PacketConn) SetReadDeadline(t time.Time) error { // endpoint. func (c *PacketConn) SetWriteDeadline(t time.Time) error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.SetWriteDeadline(t) } @@ -111,7 +110,7 @@ func (c *PacketConn) SetWriteDeadline(t time.Time) error { // Close closes the endpoint. func (c *PacketConn) Close() error { if !c.payloadHandler.ok() { - return syscall.EINVAL + return errInvalidConn } return c.payloadHandler.Close() } diff --git a/vendor/golang.org/x/net/ipv6/genericopt.go b/vendor/golang.org/x/net/ipv6/genericopt.go index e9dbc2e1..1a18f754 100644 --- a/vendor/golang.org/x/net/ipv6/genericopt.go +++ b/vendor/golang.org/x/net/ipv6/genericopt.go @@ -4,13 +4,11 @@ package ipv6 -import "syscall" - // TrafficClass returns the traffic class field value for outgoing // packets. func (c *genericOpt) TrafficClass() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoTrafficClass] if !ok { @@ -23,7 +21,7 @@ func (c *genericOpt) TrafficClass() (int, error) { // outgoing packets. func (c *genericOpt) SetTrafficClass(tclass int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoTrafficClass] if !ok { @@ -35,7 +33,7 @@ func (c *genericOpt) SetTrafficClass(tclass int) error { // HopLimit returns the hop limit field value for outgoing packets. func (c *genericOpt) HopLimit() (int, error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } so, ok := sockOpts[ssoHopLimit] if !ok { @@ -48,7 +46,7 @@ func (c *genericOpt) HopLimit() (int, error) { // packets. func (c *genericOpt) SetHopLimit(hoplim int) error { if !c.ok() { - return syscall.EINVAL + return errInvalidConn } so, ok := sockOpts[ssoHopLimit] if !ok { diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go index 25974013..7ac53522 100644 --- a/vendor/golang.org/x/net/ipv6/helper.go +++ b/vendor/golang.org/x/net/ipv6/helper.go @@ -10,6 +10,7 @@ import ( ) var ( + errInvalidConn = errors.New("invalid connection") errMissingAddress = errors.New("missing address") errHeaderTooShort = errors.New("header too short") errInvalidConnType = errors.New("invalid conn type") diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go index 4ee4b062..3f23b5d2 100644 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg.go +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg.go @@ -2,14 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !nacl,!plan9,!windows +// +build !js,!nacl,!plan9,!windows package ipv6 -import ( - "net" - "syscall" -) +import "net" // ReadFrom reads a payload of the received IPv6 datagram, from the // endpoint c, copying the payload into b. It returns the number of @@ -17,7 +14,7 @@ import ( // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { if !c.ok() { - return 0, nil, nil, syscall.EINVAL + return 0, nil, nil, errInvalidConn } return c.readFrom(b) } @@ -29,7 +26,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net. // cm may be nil if control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } return c.writeTo(b, cm, dst) } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go index fdc6c399..bc4209db 100644 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // +build !go1.9 -// +build !nacl,!plan9,!windows +// +build !js,!nacl,!plan9,!windows package ipv6 diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go index 8f6d02e2..7dd65048 100644 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // +build go1.9 -// +build !nacl,!plan9,!windows +// +build !js,!nacl,!plan9,!windows package ipv6 diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go index 99a43542..459142d2 100644 --- a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +++ b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go @@ -2,14 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 windows +// +build js nacl plan9 windows package ipv6 -import ( - "net" - "syscall" -) +import "net" // ReadFrom reads a payload of the received IPv6 datagram, from the // endpoint c, copying the payload into b. It returns the number of @@ -17,7 +14,7 @@ import ( // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { if !c.ok() { - return 0, nil, nil, syscall.EINVAL + return 0, nil, nil, errInvalidConn } if n, src, err = c.PacketConn.ReadFrom(b); err != nil { return 0, nil, nil, err @@ -32,7 +29,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net. // cm may be nil if control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { - return 0, syscall.EINVAL + return 0, errInvalidConn } if dst == nil { return 0, errMissingAddress diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go new file mode 100644 index 00000000..951fce4d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +// +build go1.9 + +package unix + +import "syscall" + +type Signal = syscall.Signal +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s index d5ed6726..603dd572 100644 --- a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s @@ -13,17 +13,17 @@ // Just jump to package syscall's implementation for all these functions. // The runtime may know about them. -TEXT ·Syscall(SB),NOSPLIT,$0-64 +TEXT ·Syscall(SB),NOSPLIT,$0-56 JMP syscall·Syscall(SB) -TEXT ·Syscall6(SB),NOSPLIT,$0-88 +TEXT ·Syscall6(SB),NOSPLIT,$0-80 JMP syscall·Syscall6(SB) -TEXT ·Syscall9(SB),NOSPLIT,$0-112 +TEXT ·Syscall9(SB),NOSPLIT,$0-104 JMP syscall·Syscall9(SB) -TEXT ·RawSyscall(SB),NOSPLIT,$0-64 +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 JMP syscall·RawSyscall(SB) -TEXT ·RawSyscall6(SB),NOSPLIT,$0-88 +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go index 83b6bcea..df520487 100644 --- a/vendor/golang.org/x/sys/unix/cap_freebsd.go +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -7,7 +7,7 @@ package unix import ( - errorspkg "errors" + "errors" "fmt" ) @@ -60,26 +60,26 @@ func CapRightsSet(rights *CapRights, setrights []uint64) error { n := caparsize(rights) if n < capArSizeMin || n > capArSizeMax { - return errorspkg.New("bad rights size") + return errors.New("bad rights size") } for _, right := range setrights { if caprver(right) != CAP_RIGHTS_VERSION_00 { - return errorspkg.New("bad right version") + return errors.New("bad right version") } i, err := rightToIndex(right) if err != nil { return err } if i >= n { - return errorspkg.New("index overflow") + return errors.New("index overflow") } if capidxbit(rights.Rights[i]) != capidxbit(right) { - return errorspkg.New("index mismatch") + return errors.New("index mismatch") } rights.Rights[i] |= right if capidxbit(rights.Rights[i]) != capidxbit(right) { - return errorspkg.New("index mismatch (after assign)") + return errors.New("index mismatch (after assign)") } } @@ -95,26 +95,26 @@ func CapRightsClear(rights *CapRights, clearrights []uint64) error { n := caparsize(rights) if n < capArSizeMin || n > capArSizeMax { - return errorspkg.New("bad rights size") + return errors.New("bad rights size") } for _, right := range clearrights { if caprver(right) != CAP_RIGHTS_VERSION_00 { - return errorspkg.New("bad right version") + return errors.New("bad right version") } i, err := rightToIndex(right) if err != nil { return err } if i >= n { - return errorspkg.New("index overflow") + return errors.New("index overflow") } if capidxbit(rights.Rights[i]) != capidxbit(right) { - return errorspkg.New("index mismatch") + return errors.New("index mismatch") } rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF) if capidxbit(rights.Rights[i]) != capidxbit(right) { - return errorspkg.New("index mismatch (after assign)") + return errors.New("index mismatch (after assign)") } } @@ -130,22 +130,22 @@ func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) { n := caparsize(rights) if n < capArSizeMin || n > capArSizeMax { - return false, errorspkg.New("bad rights size") + return false, errors.New("bad rights size") } for _, right := range setrights { if caprver(right) != CAP_RIGHTS_VERSION_00 { - return false, errorspkg.New("bad right version") + return false, errors.New("bad right version") } i, err := rightToIndex(right) if err != nil { return false, err } if i >= n { - return false, errorspkg.New("index overflow") + return false, errors.New("index overflow") } if capidxbit(rights.Rights[i]) != capidxbit(right) { - return false, errorspkg.New("index mismatch") + return false, errors.New("index mismatch") } if (rights.Rights[i] & right) != right { return false, nil diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go index a96f0ebc..3a6ac648 100644 --- a/vendor/golang.org/x/sys/unix/constants.go +++ b/vendor/golang.org/x/sys/unix/constants.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go new file mode 100644 index 00000000..27f92c99 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -0,0 +1,37 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0xffff) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return uint64(((major) << 16) | (minor)) +} diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go new file mode 100644 index 00000000..65d93a68 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -0,0 +1,39 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x3fffffff00000000) >> 32) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32((dev & 0x00000000ffffffff) >> 0) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + var DEVNO64 uint64 + DEVNO64 = 0x8000000000000000 + return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64) +} diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 95fd3531..4407c505 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go index 706b3cd1..84178b0a 100644 --- a/vendor/golang.org/x/sys/unix/env_unix.go +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // Unix environment variables. diff --git a/vendor/golang.org/x/sys/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go index 0c58c7e1..9379ba9c 100644 --- a/vendor/golang.org/x/sys/unix/fcntl.go +++ b/vendor/golang.org/x/sys/unix/fcntl.go @@ -14,7 +14,11 @@ var fcntl64Syscall uintptr = SYS_FCNTL // FcntlInt performs a fcntl syscall on fd with the provided command and argument. func FcntlInt(fd uintptr, cmd, arg int) (int, error) { - valptr, _, err := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg)) + valptr, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg)) + var err error + if errno != 0 { + err = errno + } return int(valptr), err } diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go index 50062e3c..cd6f5a61 100644 --- a/vendor/golang.org/x/sys/unix/gccgo.go +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // +build gccgo +// +build !aix package unix diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c index 24e96b11..c44730c5 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_c.c +++ b/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // +build gccgo +// +build !aix #include #include @@ -36,12 +37,3 @@ gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3 { return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - -// Define the use function in C so that it is not inlined. - -extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline)); - -void -use(void *p __attribute__ ((unused))) -{ -} diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go new file mode 100644 index 00000000..8c9aaeb2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import "runtime" + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + err := ioctlSetWinsize(fd, req, value) + runtime.KeepAlive(value) + return err +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req uint, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + err := ioctlSetTermios(fd, req, value) + runtime.KeepAlive(value) + return err +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index 1715122b..edb176f1 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -59,6 +59,16 @@ _* | *_ | _) echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 exit 1 ;; +aix_ppc) + mkerrors="$mkerrors -maix32" + mksyscall="perl mksyscall_aix.pl -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +aix_ppc64) + mkerrors="$mkerrors -maix64" + mksyscall="perl mksyscall_aix.pl -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; darwin_386) mkerrors="$mkerrors -m32" mksyscall="./mksyscall.pl -l32" diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index ab2a6f7a..1d40fc40 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -25,7 +25,11 @@ if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then fi fi -CC=${CC:-cc} +if [[ "$GOOS" = "aix" ]]; then + CC=${CC:-gcc} +else + CC=${CC:-cc} +fi if [[ "$GOOS" = "solaris" ]]; then # Assumes GNU versions of utilities in PATH. @@ -34,6 +38,20 @@ fi uname=$(uname) +includes_AIX=' +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AF_LOCAL AF_UNIX +' + includes_Darwin=' #define _DARWIN_C_SOURCE #define KERNEL @@ -50,6 +68,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -64,6 +83,7 @@ includes_DragonFly=' #include #include #include +#include #include #include #include @@ -85,6 +105,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -171,7 +192,10 @@ struct ltchars { #include #include #include +#include +#include #include +#include #include #include #include @@ -187,9 +211,10 @@ struct ltchars { #include #include #include -#include #include #include +#include +#include #include #include @@ -225,6 +250,7 @@ includes_NetBSD=' #include #include #include +#include #include #include #include @@ -253,9 +279,11 @@ includes_OpenBSD=' #include #include #include +#include #include #include #include +#include #include #include #include @@ -287,6 +315,7 @@ includes_SunOS=' #include #include #include +#include #include #include #include @@ -384,7 +413,8 @@ ccflags="$@" $2 ~ /^TC[IO](ON|OFF)$/ || $2 ~ /^IN_/ || $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^TP_STATUS_/ || $2 ~ /^FALLOC_/ || $2 == "ICMPV6_FILTER" || $2 == "SOMAXCONN" || @@ -400,7 +430,7 @@ ccflags="$@" $2 ~ /^LINUX_REBOOT_CMD_/ || $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || $2 !~ "NLA_TYPE_MASK" && - $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ || + $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || $2 ~ /^SIOC/ || $2 ~ /^TIOC/ || $2 ~ /^TCGET/ || @@ -426,17 +456,23 @@ ccflags="$@" $2 ~ /^PERF_EVENT_IOC_/ || $2 ~ /^SECCOMP_MODE_/ || $2 ~ /^SPLICE_/ || + $2 !~ /^AUDIT_RECORD_MAGIC/ && + $2 !~ /IOC_MAGIC/ && + $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || $2 ~ /^(VM|VMADDR)_/ || $2 ~ /^IOCTL_VM_SOCKETS_/ || $2 ~ /^(TASKSTATS|TS)_/ || $2 ~ /^CGROUPSTATS_/ || $2 ~ /^GENL_/ || $2 ~ /^STATX_/ || + $2 ~ /^RENAME/ || + $2 ~ /^UBI_IOC[A-Z]/ || $2 ~ /^UTIME_/ || - $2 ~ /^XATTR_(CREATE|REPLACE)/ || + $2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ || $2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || $2 ~ /^FSOPT_/ || $2 ~ /^WDIOC_/ || + $2 ~ /^NFN/ || $2 ~ /^(HDIO|WIN|SMART)_/ || $2 !~ "WMESGLEN" && $2 ~ /^W[A-Z0-9]+$/ || @@ -461,7 +497,7 @@ errors=$( signals=$( echo '#include ' | $CC -x c - -E -dM $ccflags | awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | - egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' | + egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | sort ) @@ -471,7 +507,7 @@ echo '#include ' | $CC -x c - -E -dM $ccflags | sort >_error.grep echo '#include ' | $CC -x c - -E -dM $ccflags | awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | - egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' | + egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | sort >_signal.grep echo '// mkerrors.sh' "$@" @@ -507,21 +543,26 @@ echo ')' enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below -int errors[] = { +struct tuple { + int num; + const char *name; +}; + +struct tuple errors[] = { " for i in $errors do - echo -E ' '$i, + echo -E ' {'$i', "'$i'" },' done echo -E " }; -int signals[] = { +struct tuple signals[] = { " for i in $signals do - echo -E ' '$i, + echo -E ' {'$i', "'$i'" },' done # Use -E because on some systems bash builtin interprets \n itself. @@ -529,9 +570,9 @@ int signals[] = { }; static int -intcmp(const void *a, const void *b) +tuplecmp(const void *a, const void *b) { - return *(int*)a - *(int*)b; + return ((struct tuple *)a)->num - ((struct tuple *)b)->num; } int @@ -541,26 +582,34 @@ main(void) char buf[1024], *p; printf("\n\n// Error table\n"); - printf("var errors = [...]string {\n"); - qsort(errors, nelem(errors), sizeof errors[0], intcmp); + printf("var errorList = [...]struct {\n"); + printf("\tnum syscall.Errno\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(errors, nelem(errors), sizeof errors[0], tuplecmp); for(i=0; i 0 && errors[i-1] == e) + e = errors[i].num; + if(i > 0 && errors[i-1].num == e) continue; strcpy(buf, strerror(e)); // lowercase first letter: Bad -> bad, but STREAM -> STREAM. if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) buf[0] += a - A; - printf("\t%d: \"%s\",\n", e, buf); + printf("\t{ %d, \"%s\", \"%s\" },\n", e, errors[i].name, buf); } printf("}\n\n"); printf("\n\n// Signal table\n"); - printf("var signals = [...]string {\n"); - qsort(signals, nelem(signals), sizeof signals[0], intcmp); + printf("var signalList = [...]struct {\n"); + printf("\tnum syscall.Signal\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(signals, nelem(signals), sizeof signals[0], tuplecmp); for(i=0; i 0 && signals[i-1] == e) + e = signals[i].num; + if(i > 0 && signals[i-1].num == e) continue; strcpy(buf, strsignal(e)); // lowercase first letter: Bad -> bad, but STREAM -> STREAM. @@ -570,7 +619,7 @@ main(void) p = strrchr(buf, ":"[0]); if(p) *p = '\0'; - printf("\t%d: \"%s\",\n", e, buf); + printf("\t{ %d, \"%s\", \"%s\" },\n", e, signals[i].name, buf); } printf("}\n\n"); diff --git a/vendor/golang.org/x/sys/unix/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go index c28e42b0..7e5c22c4 100644 --- a/vendor/golang.org/x/sys/unix/mkpost.go +++ b/vendor/golang.org/x/sys/unix/mkpost.go @@ -74,7 +74,7 @@ func main() { b = removePaddingFieldsRegex.ReplaceAll(b, []byte("_")) // Remove padding, hidden, or unused fields - removeFieldsRegex = regexp.MustCompile(`\bX_\S+`) + removeFieldsRegex = regexp.MustCompile(`\b(X_\S+|Padding)`) b = removeFieldsRegex.ReplaceAll(b, []byte("_")) // Remove the first line of warning from cgo diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix.pl b/vendor/golang.org/x/sys/unix/mksyscall_aix.pl new file mode 100644 index 00000000..c9b3954b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/mksyscall_aix.pl @@ -0,0 +1,385 @@ +#!/usr/bin/env perl +# Copyright 2018 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# This program reads a file containing function prototypes +# (like syscall_aix.go) and generates system call bodies. +# The prototypes are marked by lines beginning with "//sys" +# and read like func declarations if //sys is replaced by func, but: +# * The parameter lists must give a name for each argument. +# This includes return parameters. +# * The parameter lists must give a type for each argument: +# the (x, y, z int) shorthand is not allowed. +# * If the return parameter is an error number, it must be named err. +# * If go func name needs to be different than its libc name, +# * or the function is not in libc, name could be specified +# * at the end, after "=" sign, like +# //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt + +use strict; + +my $cmdline = "mksyscall_aix.pl " . join(' ', @ARGV); +my $errors = 0; +my $_32bit = ""; +my $tags = ""; # build tags +my $aix = 0; +my $solaris = 0; + +binmode STDOUT; + +if($ARGV[0] eq "-b32") { + $_32bit = "big-endian"; + shift; +} elsif($ARGV[0] eq "-l32") { + $_32bit = "little-endian"; + shift; +} +if($ARGV[0] eq "-aix") { + $aix = 1; + shift; +} +if($ARGV[0] eq "-tags") { + shift; + $tags = $ARGV[0]; + shift; +} + +if($ARGV[0] =~ /^-/) { + print STDERR "usage: mksyscall_aix.pl [-b32 | -l32] [-tags x,y] [file ...]\n"; + exit 1; +} + +sub parseparamlist($) { + my ($list) = @_; + $list =~ s/^\s*//; + $list =~ s/\s*$//; + if($list eq "") { + return (); + } + return split(/\s*,\s*/, $list); +} + +sub parseparam($) { + my ($p) = @_; + if($p !~ /^(\S*) (\S*)$/) { + print STDERR "$ARGV:$.: malformed parameter: $p\n"; + $errors = 1; + return ("xx", "int"); + } + return ($1, $2); +} + +my $package = ""; +my $text = ""; +my $c_extern = "/*\n#include \n"; +my @vars = (); +while(<>) { + chomp; + s/\s+/ /g; + s/^\s+//; + s/\s+$//; + $package = $1 if !$package && /^package (\S+)$/; + my $nonblock = /^\/\/sysnb /; + next if !/^\/\/sys / && !$nonblock; + + # Line must be of the form + # func Open(path string, mode int, perm int) (fd int, err error) + # Split into name, in params, out params. + if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$/) { + print STDERR "$ARGV:$.: malformed //sys declaration\n"; + $errors = 1; + next; + } + my ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6); + + # Split argument lists on comma. + my @in = parseparamlist($in); + my @out = parseparamlist($out); + + $in = join(', ', @in); + $out = join(', ', @out); + + # Try in vain to keep people from editing this file. + # The theory is that they jump into the middle of the file + # without reading the header. + $text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"; + + # Check if value return, err return available + my $errvar = ""; + my $retvar = ""; + my $rettype = ""; + foreach my $p (@out) { + my ($name, $type) = parseparam($p); + if($type eq "error") { + $errvar = $name; + } else { + $retvar = $name; + $rettype = $type; + } + } + + # System call name. + #if($func ne "fcntl") { + + if($sysname eq "") { + $sysname = "$func"; + } + + $sysname =~ s/([a-z])([A-Z])/${1}_$2/g; + $sysname =~ y/A-Z/a-z/; # All libc functions are lowercase. + + my $C_rettype = ""; + if($rettype eq "unsafe.Pointer") { + $C_rettype = "uintptr_t"; + } elsif($rettype eq "uintptr") { + $C_rettype = "uintptr_t"; + } elsif($rettype =~ /^_/) { + $C_rettype = "uintptr_t"; + } elsif($rettype eq "int") { + $C_rettype = "int"; + } elsif($rettype eq "int32") { + $C_rettype = "int"; + } elsif($rettype eq "int64") { + $C_rettype = "long long"; + } elsif($rettype eq "uint32") { + $C_rettype = "unsigned int"; + } elsif($rettype eq "uint64") { + $C_rettype = "unsigned long long"; + } else { + $C_rettype = "int"; + } + if($sysname eq "exit") { + $C_rettype = "void"; + } + + # Change types to c + my @c_in = (); + foreach my $p (@in) { + my ($name, $type) = parseparam($p); + if($type =~ /^\*/) { + push @c_in, "uintptr_t"; + } elsif($type eq "string") { + push @c_in, "uintptr_t"; + } elsif($type =~ /^\[\](.*)/) { + push @c_in, "uintptr_t", "size_t"; + } elsif($type eq "unsafe.Pointer") { + push @c_in, "uintptr_t"; + } elsif($type eq "uintptr") { + push @c_in, "uintptr_t"; + } elsif($type =~ /^_/) { + push @c_in, "uintptr_t"; + } elsif($type eq "int") { + push @c_in, "int"; + } elsif($type eq "int32") { + push @c_in, "int"; + } elsif($type eq "int64") { + push @c_in, "long long"; + } elsif($type eq "uint32") { + push @c_in, "unsigned int"; + } elsif($type eq "uint64") { + push @c_in, "unsigned long long"; + } else { + push @c_in, "int"; + } + } + + if ($func ne "fcntl" && $func ne "FcntlInt" && $func ne "readlen" && $func ne "writelen") { + # Imports of system calls from libc + $c_extern .= "$C_rettype $sysname"; + my $c_in = join(', ', @c_in); + $c_extern .= "($c_in);\n"; + } + + # So file name. + if($aix) { + if($modname eq "") { + $modname = "libc.a/shr_64.o"; + } else { + print STDERR "$func: only syscall using libc are available\n"; + $errors = 1; + next; + } + } + + my $strconvfunc = "C.CString"; + my $strconvtype = "*byte"; + + # Go function header. + if($out ne "") { + $out = " ($out)"; + } + if($text ne "") { + $text .= "\n" + } + + $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out ; + + # Prepare arguments to call. + my @args = (); + my $n = 0; + my $arg_n = 0; + foreach my $p (@in) { + my ($name, $type) = parseparam($p); + if($type =~ /^\*/) { + push @args, "C.uintptr_t(uintptr(unsafe.Pointer($name)))"; + } elsif($type eq "string" && $errvar ne "") { + $text .= "\t_p$n := uintptr(unsafe.Pointer($strconvfunc($name)))\n"; + push @args, "C.uintptr_t(_p$n)"; + $n++; + } elsif($type eq "string") { + print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n"; + $text .= "\t_p$n := uintptr(unsafe.Pointer($strconvfunc($name)))\n"; + push @args, "C.uintptr_t(_p$n)"; + $n++; + } elsif($type =~ /^\[\](.*)/) { + # Convert slice into pointer, length. + # Have to be careful not to take address of &a[0] if len == 0: + # pass nil in that case. + $text .= "\tvar _p$n *$1\n"; + $text .= "\tif len($name) > 0 {\n\t\t_p$n = \&$name\[0]\n\t}\n"; + push @args, "C.uintptr_t(uintptr(unsafe.Pointer(_p$n)))"; + $n++; + $text .= "\tvar _p$n int\n"; + $text .= "\t_p$n = len($name)\n"; + push @args, "C.size_t(_p$n)"; + $n++; + } elsif($type eq "int64" && $_32bit ne "") { + if($_32bit eq "big-endian") { + push @args, "uintptr($name >> 32)", "uintptr($name)"; + } else { + push @args, "uintptr($name)", "uintptr($name >> 32)"; + } + $n++; + } elsif($type eq "bool") { + $text .= "\tvar _p$n uint32\n"; + $text .= "\tif $name {\n\t\t_p$n = 1\n\t} else {\n\t\t_p$n = 0\n\t}\n"; + push @args, "_p$n"; + $n++; + } elsif($type =~ /^_/) { + push @args, "C.uintptr_t(uintptr($name))"; + } elsif($type eq "unsafe.Pointer") { + push @args, "C.uintptr_t(uintptr($name))"; + } elsif($type eq "int") { + if (($arg_n == 2) && (($func eq "readlen") || ($func eq "writelen"))) { + push @args, "C.size_t($name)"; + } elsif ($arg_n == 0 && $func eq "fcntl") { + push @args, "C.uintptr_t($name)"; + } elsif (($arg_n == 2) && (($func eq "fcntl") || ($func eq "FcntlInt"))) { + push @args, "C.uintptr_t($name)"; + } else { + push @args, "C.int($name)"; + } + } elsif($type eq "int32") { + push @args, "C.int($name)"; + } elsif($type eq "int64") { + push @args, "C.longlong($name)"; + } elsif($type eq "uint32") { + push @args, "C.uint($name)"; + } elsif($type eq "uint64") { + push @args, "C.ulonglong($name)"; + } elsif($type eq "uintptr") { + push @args, "C.uintptr_t($name)"; + } else { + push @args, "C.int($name)"; + } + $arg_n++; + } + my $nargs = @args; + + + # Determine which form to use; pad args with zeros. + if ($nonblock) { + } + + my $args = join(', ', @args); + my $call = ""; + if ($sysname eq "exit") { + if ($errvar ne "") { + $call .= "er :="; + } else { + $call .= ""; + } + } elsif ($errvar ne "") { + $call .= "r0,er :="; + } elsif ($retvar ne "") { + $call .= "r0,_ :="; + } else { + $call .= "" + } + $call .= "C.$sysname($args)"; + + # Assign return values. + my $body = ""; + my $failexpr = ""; + + for(my $i=0; $i<@out; $i++) { + my $p = $out[$i]; + my ($name, $type) = parseparam($p); + my $reg = ""; + if($name eq "err") { + $reg = "e1"; + } else { + $reg = "r0"; + } + if($reg ne "e1" ) { + $body .= "\t$name = $type($reg)\n"; + } + } + + # verify return + if ($sysname ne "exit" && $errvar ne "") { + if ($C_rettype =~ /^uintptr/) { + $body .= "\tif \(uintptr\(r0\) ==\^uintptr\(0\) && er != nil\) {\n"; + $body .= "\t\t$errvar = er\n"; + $body .= "\t}\n"; + } else { + $body .= "\tif \(r0 ==-1 && er != nil\) {\n"; + $body .= "\t\t$errvar = er\n"; + $body .= "\t}\n"; + } + } elsif ($errvar ne "") { + $body .= "\tif \(er != nil\) {\n"; + $body .= "\t\t$errvar = er\n"; + $body .= "\t}\n"; + } + + $text .= "\t$call\n"; + $text .= $body; + + $text .= "\treturn\n"; + $text .= "}\n"; +} + +if($errors) { + exit 1; +} + +print <){ - if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){ + if(/^([0-9]+)\s+\S+\s+(?:NO)?STD\s+({ \S+\s+(\w+).*)$/){ my $num = $1; my $proto = $2; my $name = "SYS_$3"; diff --git a/vendor/golang.org/x/sys/unix/openbsd_pledge.go b/vendor/golang.org/x/sys/unix/openbsd_pledge.go index db4f72ea..11388e5d 100644 --- a/vendor/golang.org/x/sys/unix/openbsd_pledge.go +++ b/vendor/golang.org/x/sys/unix/openbsd_pledge.go @@ -8,31 +8,88 @@ package unix import ( + "errors" + "fmt" + "strconv" "syscall" "unsafe" ) const ( - SYS_PLEDGE = 108 + _SYS_PLEDGE = 108 ) -// Pledge implements the pledge syscall. For more information see pledge(2). -func Pledge(promises string, paths []string) error { - promisesPtr, err := syscall.BytePtrFromString(promises) +// Pledge implements the pledge syscall. +// +// The pledge syscall does not accept execpromises on OpenBSD releases +// before 6.3. +// +// execpromises must be empty when Pledge is called on OpenBSD +// releases predating 6.3, otherwise an error will be returned. +// +// For more information see pledge(2). +func Pledge(promises, execpromises string) error { + maj, min, err := majmin() if err != nil { return err } - promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil) - if paths != nil { - var pathsPtr []*byte - if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil { + + // If OpenBSD <= 5.9, pledge is not available. + if (maj == 5 && min != 9) || maj < 5 { + return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min) + } + + // If OpenBSD <= 6.2 and execpromises is not empty + // return an error - execpromises is not available before 6.3 + if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" { + return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min) + } + + pptr, err := syscall.BytePtrFromString(promises) + if err != nil { + return err + } + + // This variable will hold either a nil unsafe.Pointer or + // an unsafe.Pointer to a string (execpromises). + var expr unsafe.Pointer + + // If we're running on OpenBSD > 6.2, pass execpromises to the syscall. + if maj > 6 || (maj == 6 && min > 2) { + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { return err } - pathsUnsafe = unsafe.Pointer(&pathsPtr[0]) + expr = unsafe.Pointer(exptr) } - _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0) + + _, _, e := syscall.Syscall(_SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) if e != 0 { return e } + return nil } + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go index 83c85e01..bc2f3629 100644 --- a/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // For Unix, get the pagesize from the runtime. diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go index dd082043..ad026678 100644 --- a/vendor/golang.org/x/sys/unix/race0.go +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go index bb756ece..f153c067 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // Socket control messages diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go index 35ed6643..17fb6986 100644 --- a/vendor/golang.org/x/sys/unix/str.go +++ b/vendor/golang.org/x/sys/unix/str.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index ef35fce8..0d4b1d7a 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // Package unix contains an interface to the low-level operating system // primitives. OS details vary depending on the underlying system, and diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 00000000..86d7c7bd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,562 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +//sys utimes(path string, times *[2]Timeval) (err error) +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + // Recvmsg not implemented on AIX + sa := new(SockaddrUnix) + return -1, -1, -1, sa, ENOSYS +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + // SendmsgN not implemented on AIX + return -1, ENOSYS +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // substract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys getdirent(fd int, buf []byte) (n int, err error) +func ReadDirent(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the processus is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x200 != 0 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +func Flock(fd int, how int) (err error) { + return syscall.Flock(fd, how) +} + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Fdatasync(fd int) (err error) +//sys Fsync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//TODO umount +// //sys Unmount(target string, flags int) (err error) = umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unshare(flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys readlen(fd int, p *byte, np int) (n int, err error) = read +//sys writelen(fd int, p *byte, np int) (n int, err error) = write + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//TODO Select +// //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 00000000..c28af1f8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 00000000..881cacc6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 53fb8518..33c8b5f0 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -206,7 +206,7 @@ func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil } -func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_LINK: pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa)) @@ -286,7 +286,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { Close(nfd) return 0, nil, ECONNABORTED } - sa, err = anyToSockaddr(&rsa) + sa, err = anyToSockaddr(fd, &rsa) if err != nil { Close(nfd) nfd = 0 @@ -306,7 +306,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) { rsa.Addr.Family = AF_UNIX rsa.Addr.Len = SizeofSockaddrUnix } - return anyToSockaddr(&rsa) + return anyToSockaddr(fd, &rsa) } //sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) @@ -356,7 +356,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from recvflags = int(msg.Flags) // source address is only specified if the socket is unconnected if rsa.Addr.Family != AF_UNSPEC { - from, err = anyToSockaddr(&rsa) + from, err = anyToSockaddr(fd, &rsa) } return } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 006e21f5..1aabc560 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -13,7 +13,7 @@ package unix import ( - errorspkg "errors" + "errors" "syscall" "unsafe" ) @@ -98,7 +98,7 @@ type attrList struct { func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) { if len(attrBuf) < 4 { - return nil, errorspkg.New("attrBuf too small") + return nil, errors.New("attrBuf too small") } attrList.bitmapCount = attrBitMapCount @@ -134,12 +134,12 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) ( for i := uint32(0); int(i) < len(dat); { header := dat[i:] if len(header) < 8 { - return attrs, errorspkg.New("truncated attribute header") + return attrs, errors.New("truncated attribute header") } datOff := *(*int32)(unsafe.Pointer(&header[0])) attrLen := *(*uint32)(unsafe.Pointer(&header[4])) if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) { - return attrs, errorspkg.New("truncated results; attrBuf too small") + return attrs, errors.New("truncated results; attrBuf too small") } end := uint32(datOff) + attrLen attrs = append(attrs, dat[datOff:end]) @@ -176,6 +176,112 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { return } +func xattrPointer(dest []byte) *byte { + // It's only when dest is set to NULL that the OS X implementations of + // getxattr() and listxattr() return the current sizes of the named attributes. + // An empty byte array is not sufficient. To maintain the same behaviour as the + // linux implementation, we wrap around the system calls and pass in NULL when + // dest is empty. + var destp *byte + if len(dest) > 0 { + destp = &dest[0] + } + return destp +} + +//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) +} + +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + // The parameters for the OS X implementation vary slightly compared to the + // linux system call, specifically the position parameter: + // + // linux: + // int setxattr( + // const char *path, + // const char *name, + // const void *value, + // size_t size, + // int flags + // ); + // + // darwin: + // int setxattr( + // const char *path, + // const char *name, + // void *value, + // size_t size, + // u_int32_t position, + // int options + // ); + // + // position specifies the offset within the extended attribute. In the + // current implementation, only the resource fork extended attribute makes + // use of this argument. For all others, position is reserved. We simply + // default to setting it to zero. + return setxattr(path, attr, xattrPointer(data), len(data), 0, flags) +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) +} + +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) + +func Removexattr(path string, attr string) (err error) { + // We wrap around and explicitly zero out the options provided to the OS X + // implementation of removexattr, we do so for interoperability with the + // linux variant. + return removexattr(path, attr, 0) +} + +func Lremovexattr(link string, attr string) (err error) { + return removexattr(link, attr, XATTR_NOFOLLOW) +} + +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + +//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) + +func Listxattr(path string, dest []byte) (sz int, err error) { + return listxattr(path, xattrPointer(dest), len(dest), 0) +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) +} + +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + func setattrlistTimes(path string, times []Timespec, flags int) error { _p0, err := BytePtrFromString(path) if err != nil { @@ -231,11 +337,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -447,14 +553,6 @@ func Uname(uname *Utsname) error { // Watchevent // Waitevent // Modwatch -// Getxattr -// Fgetxattr -// Setxattr -// Fsetxattr -// Removexattr -// Fremovexattr -// Listxattr -// Flistxattr // Fsctl // Initgroups // Posix_spawn diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index b5072de2..79d125b3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -87,7 +87,7 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { if len > SizeofSockaddrAny { panic("RawSockaddrAny too small") } - sa, err = anyToSockaddr(&rsa) + sa, err = anyToSockaddr(fd, &rsa) if err != nil { Close(nfd) nfd = 0 @@ -143,11 +143,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index ba9df4ac..77a634c7 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -13,7 +13,6 @@ package unix import ( - "strings" "unsafe" ) @@ -58,14 +57,21 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -//sysnb pipe() (r int, w int, err error) - func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { if len(p) != 2 { return EINVAL } - p[0], p[1], err = pipe() - return + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err } func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { @@ -89,7 +95,7 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { if len > SizeofSockaddrAny { panic("RawSockaddrAny too small") } - sa, err = anyToSockaddr(&rsa) + sa, err = anyToSockaddr(fd, &rsa) if err != nil { Close(nfd) nfd = 0 @@ -134,225 +140,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { return ENOSYS } -// Derive extattr namespace and attribute name - -func xattrnamespace(fullattr string) (ns int, attr string, err error) { - s := strings.IndexByte(fullattr, '.') - if s == -1 { - return -1, "", ENOATTR - } - - namespace := fullattr[0:s] - attr = fullattr[s+1:] - - switch namespace { - case "user": - return EXTATTR_NAMESPACE_USER, attr, nil - case "system": - return EXTATTR_NAMESPACE_SYSTEM, attr, nil - default: - return -1, "", ENOATTR - } -} - -func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { - if len(dest) > idx { - return unsafe.Pointer(&dest[idx]) - } else { - return unsafe.Pointer(_zero) - } -} - -// FreeBSD implements its own syscalls to handle extended attributes - -func Getxattr(file string, attr string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsize := len(dest) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return -1, err - } - - return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) -} - -func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsize := len(dest) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return -1, err - } - - return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) -} - -func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsize := len(dest) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return -1, err - } - - return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) -} - -// flags are unused on FreeBSD - -func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { - d := unsafe.Pointer(&data[0]) - datasiz := len(data) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) - return -} - -func Setxattr(file string, attr string, data []byte, flags int) (err error) { - d := unsafe.Pointer(&data[0]) - datasiz := len(data) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) - return -} - -func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { - d := unsafe.Pointer(&data[0]) - datasiz := len(data) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) - return -} - -func Removexattr(file string, attr string) (err error) { - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - err = ExtattrDeleteFile(file, nsid, a) - return -} - -func Fremovexattr(fd int, attr string) (err error) { - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - err = ExtattrDeleteFd(fd, nsid, a) - return -} - -func Lremovexattr(link string, attr string) (err error) { - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - err = ExtattrDeleteLink(link, nsid, a) - return -} - -func Listxattr(file string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsiz := len(dest) - - // FreeBSD won't allow you to list xattrs from multiple namespaces - s := 0 - for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) - - /* Errors accessing system attrs are ignored so that - * we can implement the Linux-like behavior of omitting errors that - * we don't have read permissions on - * - * Linux will still error if we ask for user attributes on a file that - * we don't have read permissions on, so don't ignore those errors - */ - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { - return s, e - } - - s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 - } - d = initxattrdest(dest, s) - } - - return s, nil -} - -func Flistxattr(fd int, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsiz := len(dest) - - s := 0 - for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { - return s, e - } - - s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 - } - d = initxattrdest(dest, s) - } - - return s, nil -} - -func Llistxattr(link string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsiz := len(dest) - - s := 0 - for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { - return s, e - } - - s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 - } - d = initxattrdest(dest, s) - } - - return s, nil -} - //sys ioctl(fd int, req uint, arg uintptr) (err error) // ioctl itself should not be exposed directly, but additional get/set @@ -364,11 +151,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -602,14 +389,6 @@ func Uname(uname *Utsname) error { // Watchevent // Waitevent // Modwatch -// Getxattr -// Fgetxattr -// Setxattr -// Fsetxattr -// Removexattr -// Fremovexattr -// Listxattr -// Flistxattr // Fsctl // Initgroups // Posix_spawn diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 04f38c53..eb633540 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -61,11 +61,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -148,8 +148,6 @@ func Unlink(path string) error { //sys Unlinkat(dirfd int, path string, flags int) (err error) -//sys utimes(path string, times *[2]Timeval) (err error) - func Utimes(path string, tv []Timeval) error { if tv == nil { err := utimensat(AT_FDCWD, path, nil, 0) @@ -207,20 +205,14 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) } -//sys futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) - func Futimesat(dirfd int, path string, tv []Timeval) error { - pathp, err := BytePtrFromString(path) - if err != nil { - return err - } if tv == nil { - return futimesat(dirfd, pathp, nil) + return futimesat(dirfd, path, nil) } if len(tv) != 2 { return EINVAL } - return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) + return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } func Futimes(fd int, tv []Timeval) (err error) { @@ -497,6 +489,47 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil } +// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the RFCOMM protocol. +// +// Server example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) +// +// Client example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) +type SockaddrRFCOMM struct { + // Addr represents a bluetooth address, byte ordering is little-endian. + Addr [6]uint8 + + // Channel is a designated bluetooth channel, only 1-30 are available for use. + // Since Linux 2.6.7 and further zero value is the first available channel. + Channel uint8 + + raw RawSockaddrRFCOMM +} + +func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Channel = sa.Channel + sa.raw.Bdaddr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil +} + // SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. // The RxID and TxID fields are used for transport protocol addressing in // (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with @@ -659,7 +692,7 @@ func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil } -func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_NETLINK: pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa)) @@ -736,6 +769,30 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { Port: pp.Port, } return sa, nil + case AF_BLUETOOTH: + proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + if err != nil { + return nil, err + } + // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections + switch proto { + case BTPROTO_L2CAP: + pp := (*RawSockaddrL2)(unsafe.Pointer(rsa)) + sa := &SockaddrL2{ + PSM: pp.Psm, + CID: pp.Cid, + Addr: pp.Bdaddr, + AddrType: pp.Bdaddr_type, + } + return sa, nil + case BTPROTO_RFCOMM: + pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa)) + sa := &SockaddrRFCOMM{ + Channel: pp.Channel, + Addr: pp.Bdaddr, + } + return sa, nil + } } return nil, EAFNOSUPPORT } @@ -747,7 +804,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { if err != nil { return } - sa, err = anyToSockaddr(&rsa) + sa, err = anyToSockaddr(fd, &rsa) if err != nil { Close(nfd) nfd = 0 @@ -765,7 +822,7 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { if len > SizeofSockaddrAny { panic("RawSockaddrAny too small") } - sa, err = anyToSockaddr(&rsa) + sa, err = anyToSockaddr(fd, &rsa) if err != nil { Close(nfd) nfd = 0 @@ -779,7 +836,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) { if err = getsockname(fd, &rsa, &len); err != nil { return } - return anyToSockaddr(&rsa) + return anyToSockaddr(fd, &rsa) } func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { @@ -968,7 +1025,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from recvflags = int(msg.Flags) // source address is only specified if the socket is unconnected if rsa.Addr.Family != AF_UNSPEC { - from, err = anyToSockaddr(&rsa) + from, err = anyToSockaddr(fd, &rsa) } return } @@ -1221,19 +1278,21 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri //sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys Dup(oldfd int) (fd int, err error) //sys Dup3(oldfd int, newfd int, flags int) (err error) -//sysnb EpollCreate(size int) (fd int, err error) //sysnb EpollCreate1(flag int) (fd int, err error) //sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) //sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 //sys Exit(code int) = SYS_EXIT_GROUP -//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) //sys Fchdir(fd int) (err error) //sys Fchmod(fd int, mode uint32) (err error) //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys fcntl(fd int, cmd int, arg int) (val int, err error) //sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) //sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) //sys Fsync(fd int) (err error) //sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 //sysnb Getpgid(pid int) (pgid int, err error) @@ -1272,6 +1331,7 @@ func Getpgrp() (pid int) { //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) //sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) //sys Setdomainname(p []byte) (err error) //sys Sethostname(p []byte) (err error) @@ -1306,7 +1366,6 @@ func Setgid(uid int) (err error) { //sysnb Uname(buf *Utsname) (err error) //sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2 //sys Unshare(flags int) (err error) -//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys write(fd int, p []byte) (n int, err error) //sys exitThread(code int) (err error) = SYS_EXIT //sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ @@ -1356,6 +1415,77 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { return int(n), nil } +//sys faccessat(dirfd int, path string, mode uint32) (err error) + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { + return EINVAL + } + + // The Linux kernel faccessat system call does not take any flags. + // The glibc faccessat implements the flags itself; see + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD + // Because people naturally expect syscall.Faccessat to act + // like C faccessat, we do the same. + + if flags == 0 { + return faccessat(dirfd, path, mode) + } + + var st Stat_t + if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil { + return err + } + + mode &= 7 + if mode == 0 { + return nil + } + + var uid int + if flags&AT_EACCESS != 0 { + uid = Geteuid() + } else { + uid = Getuid() + } + + if uid == 0 { + if mode&1 == 0 { + // Root can read and write any file. + return nil + } + if st.Mode&0111 != 0 { + // Root can execute any file that anybody can execute. + return nil + } + return EACCES + } + + var fmode uint32 + if uint32(uid) == st.Uid { + fmode = (st.Mode >> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES +} + /* * Unimplemented */ @@ -1375,11 +1505,7 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { // EpollPwait // EpollWaitOld // Execve -// Fgetxattr -// Flistxattr // Fork -// Fremovexattr -// Fsetxattr // Futex // GetKernelSyms // GetMempolicy diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index bb8e4fbd..74bc098c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -10,7 +10,6 @@ package unix import ( - "syscall" "unsafe" ) @@ -51,6 +50,8 @@ func Pipe2(p []int, flags int) (err error) { // 64-bit file system and 32-bit uid calls // (386 default is 32-bit file system and 16-bit uid). //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 @@ -78,12 +79,12 @@ func Pipe2(p []int, flags int) (err error) { //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 //sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT //sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) -//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Pause() (err error) func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { @@ -157,10 +158,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { return setrlimit(resource, &rl) } -// Underlying system call writes to newoffset via pointer. -// Implemented in assembly to avoid allocation. -func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) - func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { newoffset, errno := seek(fd, offset, whence) if errno != 0 { @@ -169,11 +166,11 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return newoffset, nil } -// Vsyscalls on amd64. +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Time(t *Time_t) (tt Time_t, err error) - //sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) // On x86 Linux, all the socket calls go through an extra indirection, // I think because the 5-register system call interface can't handle @@ -206,9 +203,6 @@ const ( _SENDMMSG = 20 ) -func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) -func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) - func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) if e != 0 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index d1211063..5f9b2454 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -7,6 +7,7 @@ package unix //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) @@ -57,6 +58,7 @@ func Stat(path string, stat *Stat_t) (err error) { //sys Statfs(path string, buf *Statfs_t) (err error) //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) @@ -75,6 +77,8 @@ func Stat(path string, stat *Stat_t) (err error) { //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) + func Gettimeofday(tv *Timeval) (err error) { errno := gettimeofday(tv) if errno != 0 { @@ -96,6 +100,7 @@ func Time(t *Time_t) (tt Time_t, err error) { } //sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index c59f8588..3ec7a932 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -75,6 +75,8 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // 64-bit file system and 32-bit uid calls // (16-bit uid calls are not always supported in newer kernels) //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 //sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 @@ -86,6 +88,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { //sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 //sys Listen(s int, n int) (err error) //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT //sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 @@ -97,11 +100,10 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) -// Vsyscalls on amd64. +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) -//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) -//sys Pause() (err error) func Time(t *Time_t) (Time_t, error) { var tv Timeval @@ -123,6 +125,8 @@ func Utime(path string, buf *Utimbuf) error { return Utimes(path, tv) } +//sys utimes(path string, times *[2]Timeval) (err error) + //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index a1e8a609..646f295a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -6,6 +6,15 @@ package unix +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) @@ -57,6 +66,11 @@ func Lstat(path string, stat *Stat_t) (err error) { //sys Statfs(path string, buf *Statfs_t) (err error) //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) @@ -85,6 +99,18 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: sec, Usec: usec} } +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + func Time(t *Time_t) (Time_t, error) { var tv Timeval err := Gettimeofday(&tv) @@ -105,6 +131,18 @@ func Utime(path string, buf *Utimbuf) error { return Utimes(path, tv) } +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL @@ -161,22 +199,6 @@ func Pause() (err error) { return } -// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove -// these when the deprecated syscalls that the syscall package relies on -// are removed. -const ( - SYS_GETPGRP = 1060 - SYS_UTIMES = 1037 - SYS_FUTIMESAT = 1066 - SYS_PAUSE = 1061 - SYS_USTAT = 1070 - SYS_UTIME = 1063 - SYS_LCHOWN = 1032 - SYS_TIME = 1062 - SYS_EPOLL_CREATE = 1042 - SYS_EPOLL_WAIT = 1069 -) - func Poll(fds []PollFd, timeout int) (n int, err error) { var ts *Timespec if timeout >= 0 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go new file mode 100644 index 00000000..070bd389 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo,386 + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go new file mode 100644 index 00000000..308eb7ae --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} + +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go similarity index 53% rename from vendor/golang.org/x/sys/unix/syscall_linux_gccgo.go rename to vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go index df9c1237..aa7fc9e1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -2,9 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build linux -// +build gccgo -// +build 386 arm +// +build linux,gccgo,arm package unix @@ -13,9 +11,10 @@ import ( "unsafe" ) -func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) { +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 offsetLow := uint32(offset & 0xffffffff) offsetHigh := uint32((offset >> 32) & 0xffffffff) - _, _, err = Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) return newoffset, err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 090ed404..ad991031 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -8,6 +8,7 @@ package unix //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) @@ -47,6 +48,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys Statfs(path string, buf *Statfs_t) (err error) //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) @@ -65,6 +67,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) func Time(t *Time_t) (tt Time_t, err error) { @@ -80,6 +83,7 @@ func Time(t *Time_t) (tt Time_t, err error) { } //sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index 9e16cc9d..99e0e999 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -15,6 +15,8 @@ import ( func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 @@ -33,13 +35,12 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sysnb Setregid(rgid int, egid int) (err error) //sysnb Setresgid(rgid int, egid int, sgid int) (err error) //sysnb Setresuid(ruid int, euid int, suid int) (err error) - //sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) - //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) @@ -61,16 +62,17 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys Ioperm(from int, num int, on int) (err error) //sys Iopl(level int) (err error) +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 //sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 -//sys Utime(path string, buf *Utimbuf) (err error) -//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Pause() (err error) func Fstatfs(fd int, buf *Statfs_t) (err error) { @@ -122,14 +124,13 @@ func Pipe2(p []int, flags int) (err error) { return } +//sysnb pipe() (p1 int, p2 int, err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL } - var pp [2]_C_int - err = pipe2(&pp, 0) - p[0] = int(pp[0]) - p[1] = int(pp[1]) + p[0], p[1], err = pipe() return } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 6fb8733d..8c6720f7 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -7,8 +7,9 @@ package unix -//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) @@ -45,6 +46,7 @@ package unix //sys Statfs(path string, buf *Statfs_t) (err error) //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE2 //sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) @@ -63,10 +65,11 @@ package unix //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Time(t *Time_t) (tt Time_t, err error) - //sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index c0d86e72..6e4ee0cf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -11,6 +11,7 @@ import ( ) //sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) @@ -44,9 +45,11 @@ import ( //sys Statfs(path string, buf *Statfs_t) (err error) //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) //sysnb setgroups(n int, list *_Gid_t) (err error) +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) func Time(t *Time_t) (tt Time_t, err error) { @@ -62,6 +65,7 @@ func Time(t *Time_t) (tt Time_t, err error) { } //sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index 78c1e0df..72e64187 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -68,6 +68,7 @@ func Iopl(level int) (err error) { return ENOSYS } +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) //sysnb Gettimeofday(tv *Timeval) (err error) func Time(t *Time_t) (tt Time_t, err error) { @@ -83,6 +84,7 @@ func Time(t *Time_t) (tt Time_t, err error) { } //sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index e1a3baa2..6f8ebde3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -145,11 +145,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -233,6 +233,19 @@ func Uname(uname *Utsname) error { //sys Dup(fd int) (nfd int, err error) //sys Dup2(from int, to int) (err error) //sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE //sys Fchdir(fd int) (err error) //sys Fchflags(fd int, flags int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 614fcf04..07e6669c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -113,11 +113,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -201,6 +201,7 @@ func Uname(uname *Utsname) error { //sys Dup(fd int) (nfd int, err error) //sys Dup2(from int, to int) (err error) //sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchdir(fd int) (err error) //sys Fchflags(fd int, flags int) (err error) //sys Fchmod(fd int, mode uint32) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index 649e67fc..9a35334c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -31,3 +31,7 @@ func (msghdr *Msghdr) SetControllen(length int) { func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index b7629529..53b80782 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -112,7 +112,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) { if err = getsockname(fd, &rsa, &len); err != nil { return } - return anyToSockaddr(&rsa) + return anyToSockaddr(fd, &rsa) } // GetsockoptString returns the string value of the socket option opt for the @@ -314,7 +314,11 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { // FcntlInt performs a fcntl syscall on fd with the provided command and argument. func FcntlInt(fd uintptr, cmd, arg int) (int, error) { - valptr, _, err := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + var err error + if errno != 0 { + err = errno + } return int(valptr), err } @@ -356,7 +360,7 @@ func Futimes(fd int, tv []Timeval) error { return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } -func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_UNIX: pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) @@ -407,7 +411,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { if nfd == -1 { return } - sa, err = anyToSockaddr(&rsa) + sa, err = anyToSockaddr(fd, &rsa) if err != nil { Close(nfd) nfd = 0 @@ -444,7 +448,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from oobn = int(msg.Accrightslen) // source address is only specified if the socket is unconnected if rsa.Addr.Family != AF_UNSPEC { - from, err = anyToSockaddr(&rsa) + from, err = anyToSockaddr(fd, &rsa) } return } @@ -536,11 +540,11 @@ func IoctlSetInt(fd int, req uint, value int) (err error) { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) (err error) { +func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) (err error) { +func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -595,6 +599,7 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { //sys Dup(fd int) (nfd int, err error) //sys Dup2(oldfd int, newfd int) (err error) //sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchdir(fd int) (err error) //sys Fchmod(fd int, mode uint32) (err error) //sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 262dc520..13956b79 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -2,13 +2,14 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix import ( "bytes" "runtime" + "sort" "sync" "syscall" "unsafe" @@ -51,6 +52,28 @@ func errnoErr(e syscall.Errno) error { return e } +// ErrnoName returns the error name for error number e. +func ErrnoName(e syscall.Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + // clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. func clen(n []byte) int { i := bytes.IndexByte(n, 0) @@ -196,7 +219,7 @@ func Getpeername(fd int) (sa Sockaddr, err error) { if err = getpeername(fd, &rsa, &len); err != nil { return } - return anyToSockaddr(&rsa) + return anyToSockaddr(fd, &rsa) } func GetsockoptByte(fd, level, opt int) (value byte, err error) { @@ -268,7 +291,7 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { return } if rsa.Addr.Family != AF_UNSPEC { - from, err = anyToSockaddr(&rsa) + from, err = anyToSockaddr(fd, &rsa) } return } diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 47b9011e..4a672f56 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/types_aix.go b/vendor/golang.org/x/sys/unix/types_aix.go new file mode 100644 index 00000000..355ad6cf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_aix.go @@ -0,0 +1,229 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore +// +build aix + +/* +Input to cgo -godefs. See also mkerrors.sh and mkall.sh +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + + +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics; for internal use. + +const ( + sizeofPtr = C.sizeofPtr + sizeofShort = C.sizeof_short + sizeofInt = C.sizeof_int + sizeofLong = C.sizeof_long + sizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +type off64 C.off64_t +type off C.off_t +type Mode_t C.mode_t + +// Time + +type Timespec C.struct_timespec + +type StTimespec C.struct_st_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +type Timex C.struct_timex + +type Time_t C.time_t + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +type Timezone C.struct_timezone + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit64 + +type Pid_t C.pid_t + +type _Gid_t C.gid_t + +type dev_t C.dev_t + +// Files + +type Stat_t C.struct_stat + +type StatxTimestamp C.struct_statx_timestamp + +type Statx_t C.struct_statx + +type Dirent C.struct_dirent + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Cmsghdr C.struct_cmsghdr + +type ICMPv6Filter C.struct_icmp6_filter + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type Linger C.struct_linger + +type Msghdr C.struct_msghdr + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr +) + +type IfMsgHdr C.struct_if_msghdr + +// Misc + +type FdSet C.fd_set + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +type Sigset_t C.sigset_t + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// Terminal handling + +type Termios C.struct_termios + +type Termio C.struct_termio + +type Winsize C.struct_winsize + +//poll + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +//flock_t + +type Flock_t C.struct_flock64 + +// Statfs + +type Statfs_t C.struct_statfs + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go index 0c633048..386d5f89 100644 --- a/vendor/golang.org/x/sys/unix/types_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go @@ -100,23 +100,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat type Statfs_t C.struct_statfs diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go index 4eb02cd4..e84a892d 100644 --- a/vendor/golang.org/x/sys/unix/types_freebsd.go +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -189,23 +189,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat8 type Statfs_t C.struct_statfs diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go index 649e5599..8f2fe704 100644 --- a/vendor/golang.org/x/sys/unix/types_openbsd.go +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -101,23 +101,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat type Statfs_t C.struct_statfs diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go index f7771554..8cef71bd 100644 --- a/vendor/golang.org/x/sys/unix/types_solaris.go +++ b/vendor/golang.org/x/sys/unix/types_solaris.go @@ -118,23 +118,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat type Flock_t C.struct_flock diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 00000000..93049932 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,231 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } else { + return unsafe.Pointer(_zero) + } +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + d := unsafe.Pointer(&data[0]) + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + d := unsafe.Pointer(&data[0]) + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + d := unsafe.Pointer(&data[0]) + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 00000000..17c1537f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1360 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 00000000..fdfd25cc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1361 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index dcba8842..3b39d740 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -1473,6 +1473,12 @@ const ( WORDSIZE = 0x20 WSTOPPED = 0x8 WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 ) // Errors @@ -1624,146 +1630,154 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "resource busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "device power is off", - 83: "device error", - 84: "value too large to be stored in data type", - 85: "bad executable (or shared library)", - 86: "bad CPU type in executable", - 87: "shared library version mismatch", - 88: "malformed Mach-o file", - 89: "operation canceled", - 90: "identifier removed", - 91: "no message of desired type", - 92: "illegal byte sequence", - 93: "attribute not found", - 94: "bad message", - 95: "EMULTIHOP (Reserved)", - 96: "no message available on STREAM", - 97: "ENOLINK (Reserved)", - 98: "no STREAM resources", - 99: "not a STREAM", - 100: "protocol error", - 101: "STREAM ioctl timeout", - 102: "operation not supported on socket", - 103: "policy not found", - 104: "state not recoverable", - 105: "previous owner died", - 106: "interface output queue is full", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 1a51c963..8fe55477 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -1473,6 +1473,12 @@ const ( WORDSIZE = 0x40 WSTOPPED = 0x8 WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 ) // Errors @@ -1624,146 +1630,154 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "resource busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "device power is off", - 83: "device error", - 84: "value too large to be stored in data type", - 85: "bad executable (or shared library)", - 86: "bad CPU type in executable", - 87: "shared library version mismatch", - 88: "malformed Mach-o file", - 89: "operation canceled", - 90: "identifier removed", - 91: "no message of desired type", - 92: "illegal byte sequence", - 93: "attribute not found", - 94: "bad message", - 95: "EMULTIHOP (Reserved)", - 96: "no message available on STREAM", - 97: "ENOLINK (Reserved)", - 98: "no STREAM resources", - 99: "not a STREAM", - 100: "protocol error", - 101: "STREAM ioctl timeout", - 102: "operation not supported on socket", - 103: "policy not found", - 104: "state not recoverable", - 105: "previous owner died", - 106: "interface output queue is full", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index fa135b17..7a977770 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -1473,6 +1473,12 @@ const ( WORDSIZE = 0x40 WSTOPPED = 0x8 WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 ) // Errors @@ -1624,146 +1630,154 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "resource busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "device power is off", - 83: "device error", - 84: "value too large to be stored in data type", - 85: "bad executable (or shared library)", - 86: "bad CPU type in executable", - 87: "shared library version mismatch", - 88: "malformed Mach-o file", - 89: "operation canceled", - 90: "identifier removed", - 91: "no message of desired type", - 92: "illegal byte sequence", - 93: "attribute not found", - 94: "bad message", - 95: "EMULTIHOP (Reserved)", - 96: "no message available on STREAM", - 97: "ENOLINK (Reserved)", - 98: "no STREAM resources", - 99: "not a STREAM", - 100: "protocol error", - 101: "STREAM ioctl timeout", - 102: "operation not supported on socket", - 103: "policy not found", - 104: "state not recoverable", - 105: "previous owner died", - 106: "interface output queue is full", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index 6419c65e..6d56d8a0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -1473,6 +1473,12 @@ const ( WORDSIZE = 0x40 WSTOPPED = 0x8 WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 ) // Errors @@ -1624,146 +1630,154 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "resource busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "device power is off", - 83: "device error", - 84: "value too large to be stored in data type", - 85: "bad executable (or shared library)", - 86: "bad CPU type in executable", - 87: "shared library version mismatch", - 88: "malformed Mach-o file", - 89: "operation canceled", - 90: "identifier removed", - 91: "no message of desired type", - 92: "illegal byte sequence", - 93: "attribute not found", - 94: "bad message", - 95: "EMULTIHOP (Reserved)", - 96: "no message available on STREAM", - 97: "ENOLINK (Reserved)", - 98: "no STREAM resources", - 99: "not a STREAM", - 100: "protocol error", - 101: "STREAM ioctl timeout", - 102: "operation not supported on socket", - 103: "policy not found", - 104: "state not recoverable", - 105: "previous owner died", - 106: "interface output queue is full", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index 474441b8..1de69989 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -3,7 +3,7 @@ // +build amd64,dragonfly -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1168,6 +1168,36 @@ const ( SO_TIMESTAMP = 0x400 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFF = 0x3 TCIOFLUSH = 0x3 @@ -1437,142 +1467,150 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "operation canceled", - 86: "illegal byte sequence", - 87: "attribute not found", - 88: "programming error", - 89: "bad message", - 90: "multihop attempted", - 91: "link has been severed", - 92: "protocol error", - 93: "no medium found", - 94: "unknown error: 94", - 95: "unknown error: 95", - 96: "unknown error: 96", - 97: "unknown error: 97", - 98: "unknown error: 98", - 99: "unknown error: 99", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOMEDIUM", "no medium found"}, + {94, "EUNUSED94", "unknown error: 94"}, + {95, "EUNUSED95", "unknown error: 95"}, + {96, "EUNUSED96", "unknown error: 96"}, + {97, "EUNUSED97", "unknown error: 97"}, + {98, "EUNUSED98", "unknown error: 98"}, + {99, "ELAST", "unknown error: 99"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "thread Scheduler", - 33: "checkPoint", - 34: "checkPointExit", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread Scheduler"}, + {33, "SIGCKPT", "checkPoint"}, + {34, "SIGCKPTEXIT", "checkPointExit"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index a8b05878..d2bbaabc 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -1345,6 +1345,35 @@ const ( SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB3 = 0x4 TABDLY = 0x4 @@ -1619,138 +1648,146 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "operation canceled", - 86: "illegal byte sequence", - 87: "attribute not found", - 88: "programming error", - 89: "bad message", - 90: "multihop attempted", - 91: "link has been severed", - 92: "protocol error", - 93: "capabilities insufficient", - 94: "not permitted in capability mode", - 95: "state not recoverable", - 96: "previous owner died", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "unknown signal", - 33: "unknown signal", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index cf5f0126..4f8db783 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -1346,6 +1346,35 @@ const ( SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB3 = 0x4 TABDLY = 0x4 @@ -1620,138 +1649,146 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "operation canceled", - 86: "illegal byte sequence", - 87: "attribute not found", - 88: "programming error", - 89: "bad message", - 90: "multihop attempted", - 91: "link has been severed", - 92: "protocol error", - 93: "capabilities insufficient", - 94: "not permitted in capability mode", - 95: "state not recoverable", - 96: "previous owner died", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "unknown signal", - 33: "unknown signal", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 9bbb90ad..53e5de60 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -1354,6 +1354,35 @@ const ( SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB3 = 0x4 TABDLY = 0x4 @@ -1628,138 +1657,146 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "operation timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "operation canceled", - 86: "illegal byte sequence", - 87: "attribute not found", - 88: "programming error", - 89: "bad message", - 90: "multihop attempted", - 91: "link has been severed", - 92: "protocol error", - 93: "capabilities insufficient", - 94: "not permitted in capability mode", - 95: "state not recoverable", - 96: "previous owner died", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "suspended (signal)", - 18: "suspended", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "unknown signal", - 33: "unknown signal", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 51454e1e..a1699fb7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -3,7 +3,7 @@ // +build 386,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x80041270 BLKBSZSET = 0x40041271 BLKFLSBUF = 0x1261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -463,6 +491,7 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 @@ -470,6 +499,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -483,6 +514,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +616,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +638,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +765,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +870,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -921,6 +959,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -931,14 +970,22 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -998,7 +1045,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1033,6 +1082,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1065,6 +1147,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1072,7 +1156,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1157,6 +1243,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x2401 PERF_EVENT_IOC_ENABLE = 0x2400 PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 PERF_EVENT_IOC_PERIOD = 0x40082404 PERF_EVENT_IOC_QUERY_BPF = 0xc004240a @@ -1165,9 +1252,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40042406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1210,6 +1299,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1255,11 +1345,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1273,6 +1370,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1332,6 +1430,14 @@ const ( PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1374,13 +1480,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1483,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1517,6 +1655,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1601,6 +1741,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1615,6 +1756,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1725,6 +1868,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1746,6 +1891,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1808,6 +1954,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1927,7 +2075,27 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 @@ -1955,9 +2123,27 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -2085,10 +2271,13 @@ const ( WORDSIZE = 0x20 WSTOPPED = 0x2 WUNTRACED = 0x2 + X86_FXSR_MAGIC = 0x0 XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2268,171 +2457,179 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index c3bad0ca..8653d860 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -3,7 +3,7 @@ // +build amd64,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x80081270 BLKBSZSET = 0x40081271 BLKFLSBUF = 0x1261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -463,6 +491,7 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 @@ -470,6 +499,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -483,6 +514,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +616,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +638,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +765,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +870,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -921,6 +959,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -931,14 +970,22 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -998,7 +1045,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1033,6 +1082,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1065,6 +1147,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1072,7 +1156,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1157,6 +1243,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x2401 PERF_EVENT_IOC_ENABLE = 0x2400 PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 PERF_EVENT_IOC_PERIOD = 0x40082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1165,9 +1252,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40082406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1210,6 +1299,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1255,11 +1345,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1273,6 +1370,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ARCH_PRCTL = 0x1e PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 @@ -1333,6 +1431,14 @@ const ( PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1375,13 +1481,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1484,17 +1617,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1518,6 +1656,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1602,6 +1742,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1616,6 +1757,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1726,6 +1869,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1747,6 +1892,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1809,6 +1955,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1928,7 +2076,27 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 @@ -1956,9 +2124,27 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -2089,7 +2275,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2269,171 +2457,179 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 8218df14..e1595b3e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -3,7 +3,7 @@ // +build arm,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x80041270 BLKBSZSET = 0x40041271 BLKFLSBUF = 0x1261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -930,14 +968,22 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -997,7 +1043,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1032,6 +1080,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1064,6 +1145,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1071,7 +1154,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1156,6 +1241,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x2401 PERF_EVENT_IOC_ENABLE = 0x2400 PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 PERF_EVENT_IOC_PERIOD = 0x40082404 PERF_EVENT_IOC_QUERY_BPF = 0xc004240a @@ -1164,9 +1250,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40042406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1209,6 +1297,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1254,11 +1343,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1272,6 +1368,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1340,6 +1437,14 @@ const ( PT_DATA_ADDR = 0x10004 PT_TEXT_ADDR = 0x10000 PT_TEXT_END_ADDR = 0x10008 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1382,13 +1487,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1491,17 +1623,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1525,6 +1662,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1609,6 +1748,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1623,6 +1763,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1733,6 +1875,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1754,6 +1898,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1816,6 +1961,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1935,7 +2082,27 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 @@ -1963,9 +2130,27 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -2096,7 +2281,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2276,171 +2463,179 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 5ce50c5c..fe43d179 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -3,7 +3,7 @@ // +build arm64,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x80081270 BLKBSZSET = 0x40081271 BLKFLSBUF = 0x1261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -427,6 +450,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -448,10 +472,14 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 EXTRA_MAGIC = 0x45585401 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -465,6 +493,7 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FPSIMD_MAGIC = 0x46508001 FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 @@ -472,6 +501,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -485,6 +516,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -586,6 +618,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -605,7 +640,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -732,6 +767,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -836,12 +872,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -922,6 +960,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -932,14 +971,22 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -999,7 +1046,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1034,6 +1083,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1066,6 +1148,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1073,7 +1157,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1158,6 +1244,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x2401 PERF_EVENT_IOC_ENABLE = 0x2400 PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 PERF_EVENT_IOC_PERIOD = 0x40082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1166,9 +1253,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40082406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1211,6 +1300,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1256,11 +1346,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1274,6 +1371,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1323,6 +1421,14 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1365,13 +1471,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1474,17 +1607,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1508,6 +1646,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1592,6 +1732,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1606,6 +1747,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1716,6 +1859,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1737,6 +1882,8 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SVE_MAGIC = 0x53564501 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1799,6 +1946,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1918,7 +2067,27 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 @@ -1946,9 +2115,27 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -2079,7 +2266,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2259,171 +2448,179 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 6cfe6187..845c0497 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -3,7 +3,7 @@ // +build mips,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x40041270 BLKBSZSET = 0x80041271 BLKFLSBUF = 0x20001261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -931,14 +969,21 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -998,7 +1043,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1033,6 +1080,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1065,6 +1145,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1072,7 +1154,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x8 O_ASYNC = 0x1000 @@ -1157,6 +1241,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x20002401 PERF_EVENT_IOC_ENABLE = 0x20002400 PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 PERF_EVENT_IOC_PERIOD = 0x80082404 PERF_EVENT_IOC_QUERY_BPF = 0xc004240a @@ -1165,9 +1250,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x80042408 PERF_EVENT_IOC_SET_FILTER = 0x80042406 PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1210,6 +1297,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1255,11 +1343,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1273,6 +1368,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1334,6 +1430,14 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1376,13 +1480,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1485,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1519,6 +1655,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1603,6 +1741,7 @@ const ( SIOCSPGRP = 0x80047308 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1617,6 +1756,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x1 @@ -1728,6 +1869,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1749,6 +1892,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1810,6 +1954,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1931,7 +2077,27 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 @@ -1959,9 +2125,27 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -2093,7 +2277,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2275,174 +2461,182 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "no message of desired type", - 36: "identifier removed", - 37: "channel number out of range", - 38: "level 2 not synchronized", - 39: "level 3 halted", - 40: "level 3 reset", - 41: "link number out of range", - 42: "protocol driver not attached", - 43: "no CSI structure available", - 44: "level 2 halted", - 45: "resource deadlock avoided", - 46: "no locks available", - 50: "invalid exchange", - 51: "invalid request descriptor", - 52: "exchange full", - 53: "no anode", - 54: "invalid request code", - 55: "invalid slot", - 56: "file locking deadlock error", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 73: "RFS specific error", - 74: "multihop attempted", - 77: "bad message", - 78: "file name too long", - 79: "value too large for defined data type", - 80: "name not unique on network", - 81: "file descriptor in bad state", - 82: "remote address changed", - 83: "can not access a needed shared library", - 84: "accessing a corrupted shared library", - 85: ".lib section in a.out corrupted", - 86: "attempting to link in too many shared libraries", - 87: "cannot exec a shared library directly", - 88: "invalid or incomplete multibyte or wide character", - 89: "function not implemented", - 90: "too many levels of symbolic links", - 91: "interrupted system call should be restarted", - 92: "streams pipe error", - 93: "directory not empty", - 94: "too many users", - 95: "socket operation on non-socket", - 96: "destination address required", - 97: "message too long", - 98: "protocol wrong type for socket", - 99: "protocol not available", - 120: "protocol not supported", - 121: "socket type not supported", - 122: "operation not supported", - 123: "protocol family not supported", - 124: "address family not supported by protocol", - 125: "address already in use", - 126: "cannot assign requested address", - 127: "network is down", - 128: "network is unreachable", - 129: "network dropped connection on reset", - 130: "software caused connection abort", - 131: "connection reset by peer", - 132: "no buffer space available", - 133: "transport endpoint is already connected", - 134: "transport endpoint is not connected", - 135: "structure needs cleaning", - 137: "not a XENIX named type file", - 138: "no XENIX semaphores available", - 139: "is a named type file", - 140: "remote I/O error", - 141: "unknown error 141", - 142: "unknown error 142", - 143: "cannot send after transport endpoint shutdown", - 144: "too many references: cannot splice", - 145: "connection timed out", - 146: "connection refused", - 147: "host is down", - 148: "no route to host", - 149: "operation already in progress", - 150: "operation now in progress", - 151: "stale file handle", - 158: "operation canceled", - 159: "no medium found", - 160: "wrong medium type", - 161: "required key not available", - 162: "key has expired", - 163: "key has been revoked", - 164: "key was rejected by service", - 165: "owner died", - 166: "state not recoverable", - 167: "operation not possible due to RF-kill", - 168: "memory page has hardware error", - 1133: "disk quota exceeded", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "user defined signal 1", - 17: "user defined signal 2", - 18: "child exited", - 19: "power failure", - 20: "window changed", - 21: "urgent I/O condition", - 22: "I/O possible", - 23: "stopped (signal)", - 24: "stopped", - 25: "continued", - 26: "stopped (tty input)", - 27: "stopped (tty output)", - 28: "virtual timer expired", - 29: "profiling timer expired", - 30: "CPU time limit exceeded", - 31: "file size limit exceeded", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index bad6332a..b791d869 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -3,7 +3,7 @@ // +build mips64,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x40081270 BLKBSZSET = 0x80081271 BLKFLSBUF = 0x20001261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -931,14 +969,21 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -998,7 +1043,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1033,6 +1080,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1065,6 +1145,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1072,7 +1154,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x8 O_ASYNC = 0x1000 @@ -1157,6 +1241,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x20002401 PERF_EVENT_IOC_ENABLE = 0x20002400 PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 PERF_EVENT_IOC_PERIOD = 0x80082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1165,9 +1250,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x80042408 PERF_EVENT_IOC_SET_FILTER = 0x80082406 PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1210,6 +1297,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1255,11 +1343,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1273,6 +1368,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1334,6 +1430,14 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1376,13 +1480,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1485,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1519,6 +1655,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1603,6 +1741,7 @@ const ( SIOCSPGRP = 0x80047308 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1617,6 +1756,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x1 @@ -1728,6 +1869,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1749,6 +1892,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1810,6 +1954,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1931,7 +2077,27 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 @@ -1959,9 +2125,27 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -2093,7 +2277,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2275,174 +2461,182 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "no message of desired type", - 36: "identifier removed", - 37: "channel number out of range", - 38: "level 2 not synchronized", - 39: "level 3 halted", - 40: "level 3 reset", - 41: "link number out of range", - 42: "protocol driver not attached", - 43: "no CSI structure available", - 44: "level 2 halted", - 45: "resource deadlock avoided", - 46: "no locks available", - 50: "invalid exchange", - 51: "invalid request descriptor", - 52: "exchange full", - 53: "no anode", - 54: "invalid request code", - 55: "invalid slot", - 56: "file locking deadlock error", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 73: "RFS specific error", - 74: "multihop attempted", - 77: "bad message", - 78: "file name too long", - 79: "value too large for defined data type", - 80: "name not unique on network", - 81: "file descriptor in bad state", - 82: "remote address changed", - 83: "can not access a needed shared library", - 84: "accessing a corrupted shared library", - 85: ".lib section in a.out corrupted", - 86: "attempting to link in too many shared libraries", - 87: "cannot exec a shared library directly", - 88: "invalid or incomplete multibyte or wide character", - 89: "function not implemented", - 90: "too many levels of symbolic links", - 91: "interrupted system call should be restarted", - 92: "streams pipe error", - 93: "directory not empty", - 94: "too many users", - 95: "socket operation on non-socket", - 96: "destination address required", - 97: "message too long", - 98: "protocol wrong type for socket", - 99: "protocol not available", - 120: "protocol not supported", - 121: "socket type not supported", - 122: "operation not supported", - 123: "protocol family not supported", - 124: "address family not supported by protocol", - 125: "address already in use", - 126: "cannot assign requested address", - 127: "network is down", - 128: "network is unreachable", - 129: "network dropped connection on reset", - 130: "software caused connection abort", - 131: "connection reset by peer", - 132: "no buffer space available", - 133: "transport endpoint is already connected", - 134: "transport endpoint is not connected", - 135: "structure needs cleaning", - 137: "not a XENIX named type file", - 138: "no XENIX semaphores available", - 139: "is a named type file", - 140: "remote I/O error", - 141: "unknown error 141", - 142: "unknown error 142", - 143: "cannot send after transport endpoint shutdown", - 144: "too many references: cannot splice", - 145: "connection timed out", - 146: "connection refused", - 147: "host is down", - 148: "no route to host", - 149: "operation already in progress", - 150: "operation now in progress", - 151: "stale file handle", - 158: "operation canceled", - 159: "no medium found", - 160: "wrong medium type", - 161: "required key not available", - 162: "key has expired", - 163: "key has been revoked", - 164: "key was rejected by service", - 165: "owner died", - 166: "state not recoverable", - 167: "operation not possible due to RF-kill", - 168: "memory page has hardware error", - 1133: "disk quota exceeded", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "user defined signal 1", - 17: "user defined signal 2", - 18: "child exited", - 19: "power failure", - 20: "window changed", - 21: "urgent I/O condition", - 22: "I/O possible", - 23: "stopped (signal)", - 24: "stopped", - 25: "continued", - 26: "stopped (tty input)", - 27: "stopped (tty output)", - 28: "virtual timer expired", - 29: "profiling timer expired", - 30: "CPU time limit exceeded", - 31: "file size limit exceeded", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index af30fde7..d1b95684 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -3,7 +3,7 @@ // +build mips64le,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x40081270 BLKBSZSET = 0x80081271 BLKFLSBUF = 0x20001261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -931,14 +969,21 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -998,7 +1043,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1033,6 +1080,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1065,6 +1145,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1072,7 +1154,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x8 O_ASYNC = 0x1000 @@ -1157,6 +1241,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x20002401 PERF_EVENT_IOC_ENABLE = 0x20002400 PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 PERF_EVENT_IOC_PERIOD = 0x80082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1165,9 +1250,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x80042408 PERF_EVENT_IOC_SET_FILTER = 0x80082406 PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1210,6 +1297,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1255,11 +1343,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1273,6 +1368,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1334,6 +1430,14 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1376,13 +1480,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1485,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1519,6 +1655,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1603,6 +1741,7 @@ const ( SIOCSPGRP = 0x80047308 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1617,6 +1756,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x1 @@ -1728,6 +1869,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1749,6 +1892,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1810,6 +1954,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1931,7 +2077,27 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 @@ -1959,9 +2125,27 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -2093,7 +2277,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2275,174 +2461,182 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "no message of desired type", - 36: "identifier removed", - 37: "channel number out of range", - 38: "level 2 not synchronized", - 39: "level 3 halted", - 40: "level 3 reset", - 41: "link number out of range", - 42: "protocol driver not attached", - 43: "no CSI structure available", - 44: "level 2 halted", - 45: "resource deadlock avoided", - 46: "no locks available", - 50: "invalid exchange", - 51: "invalid request descriptor", - 52: "exchange full", - 53: "no anode", - 54: "invalid request code", - 55: "invalid slot", - 56: "file locking deadlock error", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 73: "RFS specific error", - 74: "multihop attempted", - 77: "bad message", - 78: "file name too long", - 79: "value too large for defined data type", - 80: "name not unique on network", - 81: "file descriptor in bad state", - 82: "remote address changed", - 83: "can not access a needed shared library", - 84: "accessing a corrupted shared library", - 85: ".lib section in a.out corrupted", - 86: "attempting to link in too many shared libraries", - 87: "cannot exec a shared library directly", - 88: "invalid or incomplete multibyte or wide character", - 89: "function not implemented", - 90: "too many levels of symbolic links", - 91: "interrupted system call should be restarted", - 92: "streams pipe error", - 93: "directory not empty", - 94: "too many users", - 95: "socket operation on non-socket", - 96: "destination address required", - 97: "message too long", - 98: "protocol wrong type for socket", - 99: "protocol not available", - 120: "protocol not supported", - 121: "socket type not supported", - 122: "operation not supported", - 123: "protocol family not supported", - 124: "address family not supported by protocol", - 125: "address already in use", - 126: "cannot assign requested address", - 127: "network is down", - 128: "network is unreachable", - 129: "network dropped connection on reset", - 130: "software caused connection abort", - 131: "connection reset by peer", - 132: "no buffer space available", - 133: "transport endpoint is already connected", - 134: "transport endpoint is not connected", - 135: "structure needs cleaning", - 137: "not a XENIX named type file", - 138: "no XENIX semaphores available", - 139: "is a named type file", - 140: "remote I/O error", - 141: "unknown error 141", - 142: "unknown error 142", - 143: "cannot send after transport endpoint shutdown", - 144: "too many references: cannot splice", - 145: "connection timed out", - 146: "connection refused", - 147: "host is down", - 148: "no route to host", - 149: "operation already in progress", - 150: "operation now in progress", - 151: "stale file handle", - 158: "operation canceled", - 159: "no medium found", - 160: "wrong medium type", - 161: "required key not available", - 162: "key has expired", - 163: "key has been revoked", - 164: "key was rejected by service", - 165: "owner died", - 166: "state not recoverable", - 167: "operation not possible due to RF-kill", - 168: "memory page has hardware error", - 1133: "disk quota exceeded", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "user defined signal 1", - 17: "user defined signal 2", - 18: "child exited", - 19: "power failure", - 20: "window changed", - 21: "urgent I/O condition", - 22: "I/O possible", - 23: "stopped (signal)", - 24: "stopped", - 25: "continued", - 26: "stopped (tty input)", - 27: "stopped (tty output)", - 28: "virtual timer expired", - 29: "profiling timer expired", - 30: "CPU time limit exceeded", - 31: "file size limit exceeded", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index db3baed9..2735466d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -3,7 +3,7 @@ // +build mipsle,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x40041270 BLKBSZSET = 0x80041271 BLKFLSBUF = 0x20001261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -931,14 +969,21 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -998,7 +1043,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1033,6 +1080,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1065,6 +1145,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1072,7 +1154,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x8 O_ASYNC = 0x1000 @@ -1157,6 +1241,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x20002401 PERF_EVENT_IOC_ENABLE = 0x20002400 PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 PERF_EVENT_IOC_PERIOD = 0x80082404 PERF_EVENT_IOC_QUERY_BPF = 0xc004240a @@ -1165,9 +1250,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x80042408 PERF_EVENT_IOC_SET_FILTER = 0x80042406 PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1210,6 +1297,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1255,11 +1343,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1273,6 +1368,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1334,6 +1430,14 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1376,13 +1480,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1485,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1519,6 +1655,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1603,6 +1741,7 @@ const ( SIOCSPGRP = 0x80047308 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1617,6 +1756,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x1 @@ -1728,6 +1869,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1749,6 +1892,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1810,6 +1954,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1931,7 +2077,27 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 @@ -1959,9 +2125,27 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -2093,7 +2277,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2275,174 +2461,182 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "no message of desired type", - 36: "identifier removed", - 37: "channel number out of range", - 38: "level 2 not synchronized", - 39: "level 3 halted", - 40: "level 3 reset", - 41: "link number out of range", - 42: "protocol driver not attached", - 43: "no CSI structure available", - 44: "level 2 halted", - 45: "resource deadlock avoided", - 46: "no locks available", - 50: "invalid exchange", - 51: "invalid request descriptor", - 52: "exchange full", - 53: "no anode", - 54: "invalid request code", - 55: "invalid slot", - 56: "file locking deadlock error", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 73: "RFS specific error", - 74: "multihop attempted", - 77: "bad message", - 78: "file name too long", - 79: "value too large for defined data type", - 80: "name not unique on network", - 81: "file descriptor in bad state", - 82: "remote address changed", - 83: "can not access a needed shared library", - 84: "accessing a corrupted shared library", - 85: ".lib section in a.out corrupted", - 86: "attempting to link in too many shared libraries", - 87: "cannot exec a shared library directly", - 88: "invalid or incomplete multibyte or wide character", - 89: "function not implemented", - 90: "too many levels of symbolic links", - 91: "interrupted system call should be restarted", - 92: "streams pipe error", - 93: "directory not empty", - 94: "too many users", - 95: "socket operation on non-socket", - 96: "destination address required", - 97: "message too long", - 98: "protocol wrong type for socket", - 99: "protocol not available", - 120: "protocol not supported", - 121: "socket type not supported", - 122: "operation not supported", - 123: "protocol family not supported", - 124: "address family not supported by protocol", - 125: "address already in use", - 126: "cannot assign requested address", - 127: "network is down", - 128: "network is unreachable", - 129: "network dropped connection on reset", - 130: "software caused connection abort", - 131: "connection reset by peer", - 132: "no buffer space available", - 133: "transport endpoint is already connected", - 134: "transport endpoint is not connected", - 135: "structure needs cleaning", - 137: "not a XENIX named type file", - 138: "no XENIX semaphores available", - 139: "is a named type file", - 140: "remote I/O error", - 141: "unknown error 141", - 142: "unknown error 142", - 143: "cannot send after transport endpoint shutdown", - 144: "too many references: cannot splice", - 145: "connection timed out", - 146: "connection refused", - 147: "host is down", - 148: "no route to host", - 149: "operation already in progress", - 150: "operation now in progress", - 151: "stale file handle", - 158: "operation canceled", - 159: "no medium found", - 160: "wrong medium type", - 161: "required key not available", - 162: "key has expired", - 163: "key has been revoked", - 164: "key was rejected by service", - 165: "owner died", - 166: "state not recoverable", - 167: "operation not possible due to RF-kill", - 168: "memory page has hardware error", - 1133: "disk quota exceeded", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "user defined signal 1", - 17: "user defined signal 2", - 18: "child exited", - 19: "power failure", - 20: "window changed", - 21: "urgent I/O condition", - 22: "I/O possible", - 23: "stopped (signal)", - 24: "stopped", - 25: "continued", - 26: "stopped (tty input)", - 27: "stopped (tty output)", - 28: "virtual timer expired", - 29: "profiling timer expired", - 30: "CPU time limit exceeded", - 31: "file size limit exceeded", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 2d74bd48..506ba258 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -3,7 +3,7 @@ // +build ppc64,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x17 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x16 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x40081270 BLKBSZSET = 0x80081271 BLKFLSBUF = 0x20001261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x8000 BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0xff CBAUDEX = 0x0 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0xff0000 CLOCAL = 0x8000 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x1000 CR2 = 0x2000 CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x3000 CREAD = 0x800 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x1 ECHONL = 0x10 ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x4000 IBSHIFT = 0x10 ICANON = 0x100 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x1000 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -930,14 +968,21 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -997,7 +1042,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1032,6 +1079,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 @@ -1066,6 +1146,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1073,7 +1155,9 @@ const ( ONLCR = 0x2 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1158,6 +1242,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x20002401 PERF_EVENT_IOC_ENABLE = 0x20002400 PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 PERF_EVENT_IOC_PERIOD = 0x80082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1166,9 +1251,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x80042408 PERF_EVENT_IOC_SET_FILTER = 0x80082406 PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1212,6 +1299,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1257,11 +1345,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1275,6 +1370,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1390,6 +1486,14 @@ const ( PT_VSR0 = 0x96 PT_VSR31 = 0xd4 PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1432,13 +1536,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1541,17 +1672,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1575,6 +1711,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1659,6 +1797,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1673,6 +1812,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1783,6 +1924,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1804,6 +1947,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1864,6 +2008,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1989,7 +2135,27 @@ const ( TIOCSTOP = 0x2000746f TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 @@ -2017,9 +2183,27 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0x10 VEOF = 0x4 VEOL = 0x6 @@ -2150,7 +2334,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4000 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2330,172 +2516,180 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 58: "file locking deadlock error", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 822f94ba..b480cd10 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -3,7 +3,7 @@ // +build ppc64le,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x17 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x16 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x40081270 BLKBSZSET = 0x80081271 BLKFLSBUF = 0x20001261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x8000 BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0xff CBAUDEX = 0x0 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0xff0000 CLOCAL = 0x8000 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x1000 CR2 = 0x2000 CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x3000 CREAD = 0x800 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x1 ECHONL = 0x10 ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x4000 IBSHIFT = 0x10 ICANON = 0x100 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x1000 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -930,14 +968,21 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -997,7 +1042,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1032,6 +1079,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 @@ -1066,6 +1146,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1073,7 +1155,9 @@ const ( ONLCR = 0x2 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1158,6 +1242,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x20002401 PERF_EVENT_IOC_ENABLE = 0x20002400 PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 PERF_EVENT_IOC_PERIOD = 0x80082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1166,9 +1251,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x80042408 PERF_EVENT_IOC_SET_FILTER = 0x80082406 PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1212,6 +1299,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1257,11 +1345,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1275,6 +1370,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1390,6 +1486,14 @@ const ( PT_VSR0 = 0x96 PT_VSR31 = 0xd4 PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1432,13 +1536,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1541,17 +1672,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1575,6 +1711,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1659,6 +1797,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1673,6 +1812,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1783,6 +1924,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1804,6 +1947,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1864,6 +2008,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1989,7 +2135,27 @@ const ( TIOCSTOP = 0x2000746f TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 @@ -2017,9 +2183,27 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0x10 VEOF = 0x4 VEOL = 0x6 @@ -2150,7 +2334,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4000 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2330,172 +2516,180 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 58: "file locking deadlock error", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index beb9aa31..fba68b8d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -3,7 +3,7 @@ // +build s390x,linux -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go package unix @@ -11,6 +11,11 @@ package unix import "syscall" const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f AF_ALG = 0x26 AF_APPLETALK = 0x5 AF_ASH = 0x12 @@ -66,6 +71,7 @@ const ( ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 ARPHRD_6LOWPAN = 0x339 ARPHRD_ADAPT = 0x108 ARPHRD_APPLETLK = 0x8 @@ -133,6 +139,7 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B1000000 = 0x1008 B110 = 0x3 @@ -164,6 +171,9 @@ const ( B75 = 0x2 B921600 = 0x1007 B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d BLKBSZGET = 0x80081270 BLKBSZSET = 0x40081271 BLKFLSBUF = 0x1261 @@ -188,6 +198,7 @@ const ( BPF_AND = 0x50 BPF_B = 0x10 BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -229,6 +240,8 @@ const ( BS0 = 0x0 BS1 = 0x2000 BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -252,6 +265,8 @@ const ( CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb CIBAUD = 0x100f0000 CLOCAL = 0x800 CLOCK_BOOTTIME = 0x7 @@ -294,10 +309,12 @@ const ( CLONE_VFORK = 0x4000 CLONE_VM = 0x100 CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 CR0 = 0x0 CR1 = 0x200 CR2 = 0x400 CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 @@ -312,6 +329,9 @@ const ( CSTOP = 0x13 CSTOPB = 0x40 CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -328,9 +348,12 @@ const ( ECHOKE = 0x800 ECHONL = 0x40 ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -426,6 +449,7 @@ const ( ETH_P_PPP_DISC = 0x8863 ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -447,9 +471,13 @@ const ( ETH_P_X25 = 0x805 ETH_P_XDSA = 0xf8 EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -470,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -483,6 +513,7 @@ const ( FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 @@ -584,6 +615,9 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 HUPCL = 0x400 IBSHIFT = 0x10 ICANON = 0x2 @@ -603,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -730,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -834,12 +869,14 @@ const ( IP_UNICAST_IF = 0x32 IP_XFRM_POLICY = 0x11 ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 IUCLC = 0x200 IUTF8 = 0x4000 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 @@ -920,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -930,14 +968,22 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 MSG_BATCH = 0x40000 MSG_CMSG_CLOEXEC = 0x40000000 MSG_CONFIRM = 0x800 @@ -997,7 +1043,9 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 NETLINK_BROADCAST_ERROR = 0x4 @@ -1032,6 +1080,39 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 NLA_ALIGNTO = 0x4 @@ -1064,6 +1145,8 @@ const ( NLM_F_REQUEST = 0x1 NLM_F_ROOT = 0x100 NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 @@ -1071,7 +1154,9 @@ const ( ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 O_ACCMODE = 0x3 O_APPEND = 0x400 O_ASYNC = 0x2000 @@ -1156,6 +1241,7 @@ const ( PERF_EVENT_IOC_DISABLE = 0x2401 PERF_EVENT_IOC_ENABLE = 0x2400 PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 PERF_EVENT_IOC_PERIOD = 0x40082404 PERF_EVENT_IOC_QUERY_BPF = 0xc008240a @@ -1164,9 +1250,11 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40082406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 PROT_GROWSUP = 0x2000000 @@ -1209,6 +1297,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 PR_GET_THP_DISABLE = 0x2a PR_GET_TID_ADDRESS = 0x28 PR_GET_TIMERSLACK = 0x1e @@ -1254,11 +1343,18 @@ const ( PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 PR_SVE_GET_VL = 0x33 PR_SVE_SET_VL = 0x32 PR_SVE_SET_VL_ONEXEC = 0x40000 @@ -1272,6 +1368,7 @@ const ( PR_TSC_SIGSEGV = 0x2 PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -1394,6 +1491,14 @@ const ( PT_ORIGGPR2 = 0xd0 PT_PSWADDR = 0x8 PT_PSWMASK = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1436,13 +1541,40 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 RTCF_MASQ = 0x400000 RTCF_NAT = 0x800000 RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f RTF_ADDRCLASSMASK = 0xf8000000 RTF_ADDRCONF = 0x40000 RTF_ALLONLINK = 0x20000 @@ -1545,17 +1677,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1579,6 +1716,8 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 @@ -1663,6 +1802,7 @@ const ( SIOCSPGRP = 0x8902 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb SMART_DISABLE = 0xd9 @@ -1677,6 +1817,8 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b SOCK_CLOEXEC = 0x80000 SOCK_DCCP = 0x6 SOCK_DGRAM = 0x2 @@ -1787,6 +1929,8 @@ const ( SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d STATX_ALL = 0xfff STATX_ATIME = 0x20 STATX_ATTR_APPEND = 0x20 @@ -1808,6 +1952,7 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1870,6 +2015,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1989,7 +2136,27 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 @@ -2017,9 +2184,27 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 UTIME_NOW = 0x3fffffff UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -2150,7 +2335,9 @@ const ( XATTR_CREATE = 0x1 XATTR_REPLACE = 0x2 XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 ) // Errors @@ -2330,171 +2517,179 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "no such device or address", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device or resource busy", - 17: "file exists", - 18: "invalid cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "numerical result out of range", - 35: "resource deadlock avoided", - 36: "file name too long", - 37: "no locks available", - 38: "function not implemented", - 39: "directory not empty", - 40: "too many levels of symbolic links", - 42: "no message of desired type", - 43: "identifier removed", - 44: "channel number out of range", - 45: "level 2 not synchronized", - 46: "level 3 halted", - 47: "level 3 reset", - 48: "link number out of range", - 49: "protocol driver not attached", - 50: "no CSI structure available", - 51: "level 2 halted", - 52: "invalid exchange", - 53: "invalid request descriptor", - 54: "exchange full", - 55: "no anode", - 56: "invalid request code", - 57: "invalid slot", - 59: "bad font file format", - 60: "device not a stream", - 61: "no data available", - 62: "timer expired", - 63: "out of streams resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "multihop attempted", - 73: "RFS specific error", - 74: "bad message", - 75: "value too large for defined data type", - 76: "name not unique on network", - 77: "file descriptor in bad state", - 78: "remote address changed", - 79: "can not access a needed shared library", - 80: "accessing a corrupted shared library", - 81: ".lib section in a.out corrupted", - 82: "attempting to link in too many shared libraries", - 83: "cannot exec a shared library directly", - 84: "invalid or incomplete multibyte or wide character", - 85: "interrupted system call should be restarted", - 86: "streams pipe error", - 87: "too many users", - 88: "socket operation on non-socket", - 89: "destination address required", - 90: "message too long", - 91: "protocol wrong type for socket", - 92: "protocol not available", - 93: "protocol not supported", - 94: "socket type not supported", - 95: "operation not supported", - 96: "protocol family not supported", - 97: "address family not supported by protocol", - 98: "address already in use", - 99: "cannot assign requested address", - 100: "network is down", - 101: "network is unreachable", - 102: "network dropped connection on reset", - 103: "software caused connection abort", - 104: "connection reset by peer", - 105: "no buffer space available", - 106: "transport endpoint is already connected", - 107: "transport endpoint is not connected", - 108: "cannot send after transport endpoint shutdown", - 109: "too many references: cannot splice", - 110: "connection timed out", - 111: "connection refused", - 112: "host is down", - 113: "no route to host", - 114: "operation already in progress", - 115: "operation now in progress", - 116: "stale file handle", - 117: "structure needs cleaning", - 118: "not a XENIX named type file", - 119: "no XENIX semaphores available", - 120: "is a named type file", - 121: "remote I/O error", - 122: "disk quota exceeded", - 123: "no medium found", - 124: "wrong medium type", - 125: "operation canceled", - 126: "required key not available", - 127: "key has expired", - 128: "key has been revoked", - 129: "key was rejected by service", - 130: "owner died", - 131: "state not recoverable", - 132: "operation not possible due to RF-kill", - 133: "memory page has hardware error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "stack fault", - 17: "child exited", - 18: "continued", - 19: "stopped (signal)", - 20: "stopped", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "urgent I/O condition", - 24: "CPU time limit exceeded", - 25: "file size limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window changed", - 29: "I/O possible", - 30: "power failure", - 31: "bad system call", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 95de199f..7fdc85b1 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -1,5 +1,5 @@ // mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build sparc64,linux diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index 3eef63f5..19316b1d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -550,6 +550,10 @@ const ( EV_ONESHOT = 0x10 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 @@ -1584,137 +1588,145 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large or too small", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol option not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "connection timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "illegal byte sequence", - 86: "not supported", - 87: "operation Canceled", - 88: "bad or Corrupt message", - 89: "no message available", - 90: "no STREAM resources", - 91: "not a STREAM", - 92: "STREAM ioctl timeout", - 93: "attribute not found", - 94: "multihop attempted", - 95: "link has been severed", - 96: "protocol error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "stopped (signal)", - 18: "stopped", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "power fail/restart", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 40c870be..f2cf500f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -540,6 +540,10 @@ const ( EV_ONESHOT = 0x10 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 @@ -1574,137 +1578,145 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large or too small", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol option not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "connection timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "illegal byte sequence", - 86: "not supported", - 87: "operation Canceled", - 88: "bad or Corrupt message", - 89: "no message available", - 90: "no STREAM resources", - 91: "not a STREAM", - 92: "STREAM ioctl timeout", - 93: "attribute not found", - 94: "multihop attempted", - 95: "link has been severed", - 96: "protocol error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "stopped (signal)", - 18: "stopped", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "power fail/restart", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index 43c4add5..858e2999 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -532,6 +532,10 @@ const ( EV_ONESHOT = 0x10 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 @@ -1563,137 +1567,145 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large or too small", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol option not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "connection timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "identifier removed", - 83: "no message of desired type", - 84: "value too large to be stored in data type", - 85: "illegal byte sequence", - 86: "not supported", - 87: "operation Canceled", - 88: "bad or Corrupt message", - 89: "no message available", - 90: "no STREAM resources", - 91: "not a STREAM", - 92: "STREAM ioctl timeout", - 93: "attribute not found", - 94: "multihop attempted", - 95: "link has been severed", - 96: "protocol error", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "stopped (signal)", - 18: "stopped", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "power fail/restart", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index f47536dc..7d92f2c5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -1218,6 +1218,34 @@ const ( SO_TIMESTAMP = 0x800 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFLUSH = 0x3 TCOFLUSH = 0x2 @@ -1461,132 +1489,140 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "connection timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "IPsec processing failure", - 83: "attribute not found", - 84: "illegal byte sequence", - 85: "no medium found", - 86: "wrong medium type", - 87: "value too large to be stored in data type", - 88: "operation canceled", - 89: "identifier removed", - 90: "no message of desired type", - 91: "not supported", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "stopped (signal)", - 18: "stopped", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "thread AST", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index c96ca653..b0a7ebaf 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -45,6 +45,7 @@ const ( AF_SNA = 0xb AF_UNIX = 0x1 AF_UNSPEC = 0x0 + ALTWERASE = 0x200 ARPHRD_ETHER = 0x1 ARPHRD_FRELAY = 0xf ARPHRD_IEEE1394 = 0x18 @@ -146,6 +147,12 @@ const ( BRKINT = 0x2 CFLUSH = 0xf CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 CREAD = 0x800 CRTSCTS = 0x10000 CS5 = 0x0 @@ -178,6 +185,7 @@ const ( DLT_LOOP = 0xc DLT_MPLS = 0xdb DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b DLT_PFLOG = 0x75 DLT_PFSYNC = 0x12 DLT_PPP = 0x9 @@ -188,6 +196,23 @@ const ( DLT_RAW = 0xe DLT_SLIP = 0x8 DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -401,27 +426,38 @@ const ( ETHER_CRC_POLY_LE = 0xedb88320 ETHER_HDR_LEN = 0xe ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b ETHER_MAX_LEN = 0x5ee ETHER_MIN_LEN = 0x40 ETHER_TYPE_LEN = 0x2 ETHER_VLAN_ENCAP_LEN = 0x4 EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0x7 + EVFILT_SYSCOUNT = 0x8 EVFILT_TIMER = -0x7 EVFILT_VNODE = -0x4 EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 EV_ADD = 0x1 EV_CLEAR = 0x20 EV_DELETE = 0x2 EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 EV_ENABLE = 0x4 EV_EOF = 0x8000 EV_ERROR = 0x4000 EV_FLAG1 = 0x2000 EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 EXTB = 0x9600 @@ -435,6 +471,7 @@ const ( F_GETFL = 0x3 F_GETLK = 0x7 F_GETOWN = 0x5 + F_ISATTY = 0xb F_OK = 0x0 F_RDLCK = 0x1 F_SETFD = 0x2 @@ -452,7 +489,6 @@ const ( IEXTEN = 0x400 IFAN_ARRIVAL = 0x0 IFAN_DEPARTURE = 0x1 - IFA_ROUTE = 0x1 IFF_ALLMULTI = 0x200 IFF_BROADCAST = 0x2 IFF_CANTCHANGE = 0x8e52 @@ -463,12 +499,12 @@ const ( IFF_LOOPBACK = 0x8 IFF_MULTICAST = 0x8000 IFF_NOARP = 0x80 - IFF_NOTRAILERS = 0x20 IFF_OACTIVE = 0x400 IFF_POINTOPOINT = 0x10 IFF_PROMISC = 0x100 IFF_RUNNING = 0x40 IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 IFF_UP = 0x1 IFNAMSIZ = 0x10 IFT_1822 = 0x2 @@ -597,6 +633,7 @@ const ( IFT_LINEGROUP = 0xd2 IFT_LOCALTALK = 0x2a IFT_LOOP = 0x18 + IFT_MBIM = 0xfa IFT_MEDIAMAILOVERIP = 0x8b IFT_MFSIGLINK = 0xa7 IFT_MIOX25 = 0x26 @@ -721,8 +758,6 @@ const ( IPPROTO_AH = 0x33 IPPROTO_CARP = 0x70 IPPROTO_DIVERT = 0x102 - IPPROTO_DIVERT_INIT = 0x2 - IPPROTO_DIVERT_RESP = 0x1 IPPROTO_DONE = 0x101 IPPROTO_DSTOPTS = 0x3c IPPROTO_EGP = 0x8 @@ -779,6 +814,7 @@ const ( IPV6_LEAVE_GROUP = 0xd IPV6_MAXHLIM = 0xff IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 IPV6_MMTU = 0x500 IPV6_MULTICAST_HOPS = 0xa IPV6_MULTICAST_IF = 0x9 @@ -818,12 +854,12 @@ const ( IP_DEFAULT_MULTICAST_LOOP = 0x1 IP_DEFAULT_MULTICAST_TTL = 0x1 IP_DF = 0x4000 - IP_DIVERTFL = 0x1022 IP_DROP_MEMBERSHIP = 0xd IP_ESP_NETWORK_LEVEL = 0x16 IP_ESP_TRANS_LEVEL = 0x15 IP_HDRINCL = 0x2 IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 IP_IPSECFLOWINFO = 0x24 IP_IPSEC_LOCAL_AUTH = 0x1b IP_IPSEC_LOCAL_CRED = 0x19 @@ -857,10 +893,12 @@ const ( IP_RETOPTS = 0x8 IP_RF = 0x8000 IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 IP_TOS = 0x3 IP_TTL = 0x4 ISIG = 0x80 ISTRIP = 0x20 + IUCLC = 0x1000 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -881,25 +919,28 @@ const ( MADV_SPACEAVAIL = 0x5 MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 - MAP_COPY = 0x4 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x1ff7 - MAP_HASSEMAPHORE = 0x200 - MAP_INHERIT = 0x80 + MAP_FLAGMASK = 0x7ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 - MAP_INHERIT_DONATE_COPY = 0x3 MAP_INHERIT_NONE = 0x2 MAP_INHERIT_SHARE = 0x0 - MAP_NOEXTEND = 0x100 - MAP_NORESERVE = 0x40 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 MAP_PRIVATE = 0x2 - MAP_RENAME = 0x20 + MAP_RENAME = 0x0 MAP_SHARED = 0x1 - MAP_TRYFIXED = 0x400 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 MSG_DONTWAIT = 0x80 @@ -917,11 +958,14 @@ const ( NET_RT_DUMP = 0x1 NET_RT_FLAGS = 0x2 NET_RT_IFLIST = 0x3 - NET_RT_MAXID = 0x6 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 NOTE_CHILD = 0x4 NOTE_DELETE = 0x1 NOTE_EOF = 0x2 @@ -940,11 +984,13 @@ const ( NOTE_TRUNCATE = 0x80 NOTE_WRITE = 0x2 OCRNL = 0x10 + OLCUC = 0x20 ONLCR = 0x2 ONLRET = 0x80 ONOCR = 0x40 ONOEOT = 0x8 OPOST = 0x1 + OXTABS = 0x4 O_ACCMODE = 0x3 O_APPEND = 0x8 O_ASYNC = 0x40 @@ -982,23 +1028,32 @@ const ( RLIMIT_CPU = 0x0 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb RTAX_BRD = 0x7 + RTAX_DNS = 0xc RTAX_DST = 0x0 RTAX_GATEWAY = 0x1 RTAX_GENMASK = 0x3 RTAX_IFA = 0x5 RTAX_IFP = 0x4 RTAX_LABEL = 0xa - RTAX_MAX = 0xb + RTAX_MAX = 0xf RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe RTAX_SRC = 0x8 RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 RTA_BRD = 0x80 + RTA_DNS = 0x1000 RTA_DST = 0x1 RTA_GATEWAY = 0x2 RTA_GENMASK = 0x8 @@ -1006,34 +1061,39 @@ const ( RTA_IFP = 0x10 RTA_LABEL = 0x400 RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 RTA_SRC = 0x100 RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 RTF_CLONED = 0x10000 RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 RTF_DONE = 0x40 RTF_DYNAMIC = 0x10 - RTF_FMASK = 0x10f808 + RTF_FMASK = 0x110fc08 RTF_GATEWAY = 0x2 RTF_HOST = 0x4 RTF_LLINFO = 0x400 - RTF_MASK = 0x80 + RTF_LOCAL = 0x200000 RTF_MODIFIED = 0x20 RTF_MPATH = 0x40000 RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 RTF_PERMANENT_ARP = 0x2000 RTF_PROTO1 = 0x8000 RTF_PROTO2 = 0x4000 RTF_PROTO3 = 0x2000 RTF_REJECT = 0x8 - RTF_SOURCE = 0x20000 RTF_STATIC = 0x800 - RTF_TUNNEL = 0x100000 RTF_UP = 0x1 RTF_USETRAILERS = 0x8000 - RTF_XRESOLVE = 0x200 RTM_ADD = 0x1 + RTM_BFD = 0x12 RTM_CHANGE = 0x3 RTM_DELADDR = 0xd RTM_DELETE = 0x2 @@ -1041,11 +1101,13 @@ const ( RTM_GET = 0x4 RTM_IFANNOUNCE = 0xf RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 RTM_LOCK = 0x8 RTM_LOSING = 0x5 RTM_MAXSIZE = 0x800 RTM_MISS = 0x7 RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 RTM_REDIRECT = 0x6 RTM_RESOLVE = 0xb RTM_RTTUNIT = 0xf4240 @@ -1058,6 +1120,8 @@ const ( RTV_RTTVAR = 0x80 RTV_SPIPE = 0x10 RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff RT_TABLEID_MAX = 0xff RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 @@ -1070,55 +1134,55 @@ const ( SIOCADDMULTI = 0x80206931 SIOCAIFADDR = 0x8040691a SIOCAIFGROUP = 0x80286987 - SIOCALIFADDR = 0x8218691c SIOCATMARK = 0x40047307 - SIOCBRDGADD = 0x8058693c - SIOCBRDGADDS = 0x80586941 - SIOCBRDGARL = 0x806e694d + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d SIOCBRDGDADDR = 0x81286947 - SIOCBRDGDEL = 0x8058693d - SIOCBRDGDELS = 0x80586942 - SIOCBRDGFLUSH = 0x80586948 - SIOCBRDGFRL = 0x806e694e - SIOCBRDGGCACHE = 0xc0146941 - SIOCBRDGGFD = 0xc0146952 - SIOCBRDGGHT = 0xc0146951 - SIOCBRDGGIFFLGS = 0xc058693e - SIOCBRDGGMA = 0xc0146953 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 SIOCBRDGGPARAM = 0xc0406958 - SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGPRI = 0xc0186950 SIOCBRDGGRL = 0xc030694f - SIOCBRDGGSIFS = 0xc058693c - SIOCBRDGGTO = 0xc0146946 - SIOCBRDGIFS = 0xc0586942 + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 SIOCBRDGRTS = 0xc0206943 SIOCBRDGSADDR = 0xc1286944 - SIOCBRDGSCACHE = 0x80146940 - SIOCBRDGSFD = 0x80146952 - SIOCBRDGSHT = 0x80146951 - SIOCBRDGSIFCOST = 0x80586955 - SIOCBRDGSIFFLGS = 0x8058693f - SIOCBRDGSIFPRIO = 0x80586954 - SIOCBRDGSMA = 0x80146953 - SIOCBRDGSPRI = 0x80146950 - SIOCBRDGSPROTO = 0x8014695a - SIOCBRDGSTO = 0x80146945 - SIOCBRDGSTXHC = 0x80146959 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 SIOCDELMULTI = 0x80206932 SIOCDIFADDR = 0x80206919 SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 SIOCDIFPHYADDR = 0x80206949 - SIOCDLIFADDR = 0x8218691e + SIOCDVNETID = 0x802069af SIOCGETKALIVE = 0xc01869a4 SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae SIOCGETPFLOW = 0xc02069fe SIOCGETPFSYNC = 0xc02069f8 SIOCGETSGCNT = 0xc0207534 SIOCGETVIFCNT = 0xc0287533 SIOCGETVLAN = 0xc0206990 - SIOCGHIWAT = 0x40047301 SIOCGIFADDR = 0xc0206921 - SIOCGIFASYNCMAP = 0xc020697c SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCONF = 0xc0106924 SIOCGIFDATA = 0xc020691b @@ -1130,37 +1194,41 @@ const ( SIOCGIFGMEMB = 0xc028698a SIOCGIFGROUP = 0xc0286988 SIOCGIFHARDMTU = 0xc02069a5 - SIOCGIFMEDIA = 0xc0306936 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 SIOCGIFMETRIC = 0xc0206917 SIOCGIFMTU = 0xc020697e SIOCGIFNETMASK = 0xc0206925 - SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 SIOCGIFPRIORITY = 0xc020699c - SIOCGIFPSRCADDR = 0xc0206947 SIOCGIFRDOMAIN = 0xc02069a0 SIOCGIFRTLABEL = 0xc0206983 - SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFRXR = 0x802069aa SIOCGIFXFLAGS = 0xc020699e - SIOCGLIFADDR = 0xc218691d SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 SIOCGLIFPHYRTABLE = 0xc02069a2 SIOCGLIFPHYTTL = 0xc02069a9 - SIOCGLOWAT = 0x40047303 SIOCGPGRP = 0x40047309 SIOCGSPPPPARAMS = 0xc0206994 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac SIOCIFCREATE = 0x8020697a SIOCIFDESTROY = 0x80206979 SIOCIFGCLONERS = 0xc0106978 SIOCSETKALIVE = 0x801869a3 SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad SIOCSETPFLOW = 0x802069fd SIOCSETPFSYNC = 0x802069f7 SIOCSETVLAN = 0x8020698f - SIOCSHIWAT = 0x80047300 SIOCSIFADDR = 0x8020690c - SIOCSIFASYNCMAP = 0x8020697d SIOCSIFBRDADDR = 0x80206913 SIOCSIFDESCR = 0x80206980 SIOCSIFDSTADDR = 0x8020690e @@ -1168,25 +1236,36 @@ const ( SIOCSIFGATTR = 0x8028698c SIOCSIFGENERIC = 0x80206939 SIOCSIFLLADDR = 0x8020691f - SIOCSIFMEDIA = 0xc0206935 + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 SIOCSIFMETRIC = 0x80206918 SIOCSIFMTU = 0x8020697f SIOCSIFNETMASK = 0x80206916 - SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 SIOCSIFPRIORITY = 0x8020699b SIOCSIFRDOMAIN = 0x8020699f SIOCSIFRTLABEL = 0x80206982 - SIOCSIFTIMESLOT = 0x80206985 SIOCSIFXFLAGS = 0x8020699d SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 SIOCSLIFPHYRTABLE = 0x802069a1 SIOCSLIFPHYTTL = 0x802069a8 - SIOCSLOWAT = 0x80047302 SIOCSPGRP = 0x80047308 SIOCSSPPPPARAMS = 0x80206993 + SIOCSUMBPARAM = 0x802069bf SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 SOCK_RAW = 0x3 SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 @@ -1217,9 +1296,42 @@ const ( SO_TIMESTAMP = 0x800 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 + TCIOFF = 0x3 TCIOFLUSH = 0x3 + TCION = 0x4 TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 TCP_MAXBURST = 0x4 TCP_MAXSEG = 0x2 TCP_MAXWIN = 0xffff @@ -1229,11 +1341,12 @@ const ( TCP_MSS = 0x200 TCP_NODELAY = 0x1 TCP_NOPUSH = 0x10 - TCP_NSTATES = 0xb TCP_SACK_ENABLE = 0x8 TCSAFLUSH = 0x2 TIOCCBRK = 0x2000747a TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d TIOCCONS = 0x80047462 TIOCDRAIN = 0x2000745e TIOCEXCL = 0x2000740d @@ -1288,16 +1401,19 @@ const ( TIOCSETAF = 0x802c7416 TIOCSETAW = 0x802c7415 TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c TIOCSFLAGS = 0x8004745c TIOCSIG = 0x8004745f TIOCSPGRP = 0x80047476 TIOCSTART = 0x2000746e - TIOCSTAT = 0x80047465 + TIOCSTAT = 0x20007465 TIOCSTI = 0x80017472 TIOCSTOP = 0x2000746f TIOCSTSTAMP = 0x8008745a TIOCSWINSZ = 0x80087467 TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b TOSTOP = 0x400000 VDISCARD = 0xf VDSUSP = 0xb @@ -1309,6 +1425,18 @@ const ( VKILL = 0x5 VLNEXT = 0xe VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MAXID = 0xc + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 VQUIT = 0x9 VREPRINT = 0x6 VSTART = 0xc @@ -1321,8 +1449,8 @@ const ( WCONTINUED = 0x8 WCOREFLAG = 0x80 WNOHANG = 0x1 - WSTOPPED = 0x7f WUNTRACED = 0x2 + XCASE = 0x1000000 ) // Errors @@ -1336,6 +1464,7 @@ const ( EALREADY = syscall.Errno(0x25) EAUTH = syscall.Errno(0x50) EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) EBADRPC = syscall.Errno(0x48) EBUSY = syscall.Errno(0x10) ECANCELED = syscall.Errno(0x58) @@ -1362,7 +1491,7 @@ const ( EIPSEC = syscall.Errno(0x52) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x5b) + ELAST = syscall.Errno(0x5f) ELOOP = syscall.Errno(0x3e) EMEDIUMTYPE = syscall.Errno(0x56) EMFILE = syscall.Errno(0x18) @@ -1390,12 +1519,14 @@ const ( ENOTCONN = syscall.Errno(0x39) ENOTDIR = syscall.Errno(0x14) ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) ENOTSOCK = syscall.Errno(0x26) ENOTSUP = syscall.Errno(0x5b) ENOTTY = syscall.Errno(0x19) ENXIO = syscall.Errno(0x6) EOPNOTSUPP = syscall.Errno(0x2d) EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) EPERM = syscall.Errno(0x1) EPFNOSUPPORT = syscall.Errno(0x2e) EPIPE = syscall.Errno(0x20) @@ -1403,6 +1534,7 @@ const ( EPROCUNAVAIL = syscall.Errno(0x4c) EPROGMISMATCH = syscall.Errno(0x4b) EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) EPROTONOSUPPORT = syscall.Errno(0x2b) EPROTOTYPE = syscall.Errno(0x29) ERANGE = syscall.Errno(0x22) @@ -1460,132 +1592,144 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "connection timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "IPsec processing failure", - 83: "attribute not found", - 84: "illegal byte sequence", - 85: "no medium found", - 86: "wrong medium type", - 87: "value too large to be stored in data type", - 88: "operation canceled", - 89: "identifier removed", - 90: "no message of desired type", - 91: "not supported", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "stopped (signal)", - 18: "stopped", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "thread AST", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 4c027352..50c1d9f3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1221,6 +1221,34 @@ const ( SO_TIMESTAMP = 0x800 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFLUSH = 0x3 TCOFLUSH = 0x2 @@ -1463,132 +1491,140 @@ const ( ) // Error table -var errors = [...]string{ - 1: "operation not permitted", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "input/output error", - 6: "device not configured", - 7: "argument list too long", - 8: "exec format error", - 9: "bad file descriptor", - 10: "no child processes", - 11: "resource deadlock avoided", - 12: "cannot allocate memory", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "operation not supported by device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "too many open files in system", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "numerical argument out of domain", - 34: "result too large", - 35: "resource temporarily unavailable", - 36: "operation now in progress", - 37: "operation already in progress", - 38: "socket operation on non-socket", - 39: "destination address required", - 40: "message too long", - 41: "protocol wrong type for socket", - 42: "protocol not available", - 43: "protocol not supported", - 44: "socket type not supported", - 45: "operation not supported", - 46: "protocol family not supported", - 47: "address family not supported by protocol family", - 48: "address already in use", - 49: "can't assign requested address", - 50: "network is down", - 51: "network is unreachable", - 52: "network dropped connection on reset", - 53: "software caused connection abort", - 54: "connection reset by peer", - 55: "no buffer space available", - 56: "socket is already connected", - 57: "socket is not connected", - 58: "can't send after socket shutdown", - 59: "too many references: can't splice", - 60: "connection timed out", - 61: "connection refused", - 62: "too many levels of symbolic links", - 63: "file name too long", - 64: "host is down", - 65: "no route to host", - 66: "directory not empty", - 67: "too many processes", - 68: "too many users", - 69: "disc quota exceeded", - 70: "stale NFS file handle", - 71: "too many levels of remote in path", - 72: "RPC struct is bad", - 73: "RPC version wrong", - 74: "RPC prog. not avail", - 75: "program version wrong", - 76: "bad procedure for program", - 77: "no locks available", - 78: "function not implemented", - 79: "inappropriate file type or format", - 80: "authentication error", - 81: "need authenticator", - 82: "IPsec processing failure", - 83: "attribute not found", - 84: "illegal byte sequence", - 85: "no medium found", - 86: "wrong medium type", - 87: "value too large to be stored in data type", - 88: "operation canceled", - 89: "identifier removed", - 90: "no message of desired type", - 91: "not supported", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/BPT trap", - 6: "abort trap", - 7: "EMT trap", - 8: "floating point exception", - 9: "killed", - 10: "bus error", - 11: "segmentation fault", - 12: "bad system call", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", - 16: "urgent I/O condition", - 17: "stopped (signal)", - 18: "stopped", - 19: "continued", - 20: "child exited", - 21: "stopped (tty input)", - 22: "stopped (tty output)", - 23: "I/O possible", - 24: "cputime limit exceeded", - 25: "filesize limit exceeded", - 26: "virtual timer expired", - 27: "profiling timer expired", - 28: "window size changes", - 29: "information request", - 30: "user defined signal 1", - 31: "user defined signal 2", - 32: "thread AST", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, } diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 09eedb00..22569db3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -996,6 +996,39 @@ const ( SO_USELOOPBACK = 0x40 SO_VRRP = 0x1017 SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB1 = 0x800 TAB2 = 0x1000 @@ -1102,6 +1135,8 @@ const ( TIOCSTOP = 0x746f TIOCSWINSZ = 0x5467 TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 VCEOF = 0x8 VCEOL = 0x9 VDISCARD = 0xd @@ -1319,171 +1354,179 @@ const ( ) // Error table -var errors = [...]string{ - 1: "not owner", - 2: "no such file or directory", - 3: "no such process", - 4: "interrupted system call", - 5: "I/O error", - 6: "no such device or address", - 7: "arg list too long", - 8: "exec format error", - 9: "bad file number", - 10: "no child processes", - 11: "resource temporarily unavailable", - 12: "not enough space", - 13: "permission denied", - 14: "bad address", - 15: "block device required", - 16: "device busy", - 17: "file exists", - 18: "cross-device link", - 19: "no such device", - 20: "not a directory", - 21: "is a directory", - 22: "invalid argument", - 23: "file table overflow", - 24: "too many open files", - 25: "inappropriate ioctl for device", - 26: "text file busy", - 27: "file too large", - 28: "no space left on device", - 29: "illegal seek", - 30: "read-only file system", - 31: "too many links", - 32: "broken pipe", - 33: "argument out of domain", - 34: "result too large", - 35: "no message of desired type", - 36: "identifier removed", - 37: "channel number out of range", - 38: "level 2 not synchronized", - 39: "level 3 halted", - 40: "level 3 reset", - 41: "link number out of range", - 42: "protocol driver not attached", - 43: "no CSI structure available", - 44: "level 2 halted", - 45: "deadlock situation detected/avoided", - 46: "no record locks available", - 47: "operation canceled", - 48: "operation not supported", - 49: "disc quota exceeded", - 50: "bad exchange descriptor", - 51: "bad request descriptor", - 52: "message tables full", - 53: "anode table overflow", - 54: "bad request code", - 55: "invalid slot", - 56: "file locking deadlock", - 57: "bad font file format", - 58: "owner of the lock died", - 59: "lock is not recoverable", - 60: "not a stream device", - 61: "no data available", - 62: "timer expired", - 63: "out of stream resources", - 64: "machine is not on the network", - 65: "package not installed", - 66: "object is remote", - 67: "link has been severed", - 68: "advertise error", - 69: "srmount error", - 70: "communication error on send", - 71: "protocol error", - 72: "locked lock was unmapped ", - 73: "facility is not active", - 74: "multihop attempted", - 77: "not a data message", - 78: "file name too long", - 79: "value too large for defined data type", - 80: "name not unique on network", - 81: "file descriptor in bad state", - 82: "remote address changed", - 83: "can not access a needed shared library", - 84: "accessing a corrupted shared library", - 85: ".lib section in a.out corrupted", - 86: "attempting to link in more shared libraries than system limit", - 87: "can not exec a shared library directly", - 88: "illegal byte sequence", - 89: "operation not applicable", - 90: "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS", - 91: "error 91", - 92: "error 92", - 93: "directory not empty", - 94: "too many users", - 95: "socket operation on non-socket", - 96: "destination address required", - 97: "message too long", - 98: "protocol wrong type for socket", - 99: "option not supported by protocol", - 120: "protocol not supported", - 121: "socket type not supported", - 122: "operation not supported on transport endpoint", - 123: "protocol family not supported", - 124: "address family not supported by protocol family", - 125: "address already in use", - 126: "cannot assign requested address", - 127: "network is down", - 128: "network is unreachable", - 129: "network dropped connection because of reset", - 130: "software caused connection abort", - 131: "connection reset by peer", - 132: "no buffer space available", - 133: "transport endpoint is already connected", - 134: "transport endpoint is not connected", - 143: "cannot send after socket shutdown", - 144: "too many references: cannot splice", - 145: "connection timed out", - 146: "connection refused", - 147: "host is down", - 148: "no route to host", - 149: "operation already in progress", - 150: "operation now in progress", - 151: "stale NFS file handle", +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock situation detected/avoided"}, + {46, "ENOLCK", "no record locks available"}, + {47, "ECANCELED", "operation canceled"}, + {48, "ENOTSUP", "operation not supported"}, + {49, "EDQUOT", "disc quota exceeded"}, + {50, "EBADE", "bad exchange descriptor"}, + {51, "EBADR", "bad request descriptor"}, + {52, "EXFULL", "message tables full"}, + {53, "ENOANO", "anode table overflow"}, + {54, "EBADRQC", "bad request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock"}, + {57, "EBFONT", "bad font file format"}, + {58, "EOWNERDEAD", "owner of the lock died"}, + {59, "ENOTRECOVERABLE", "lock is not recoverable"}, + {60, "ENOSTR", "not a stream device"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of stream resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "ELOCKUNMAPPED", "locked lock was unmapped "}, + {73, "ENOTACTIVE", "facility is not active"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "not a data message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"}, + {87, "ELIBEXEC", "can not exec a shared library directly"}, + {88, "EILSEQ", "illegal byte sequence"}, + {89, "ENOSYS", "operation not applicable"}, + {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"}, + {91, "ERESTART", "error 91"}, + {92, "ESTRPIPE", "error 92"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "option not supported by protocol"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "EOPNOTSUPP", "operation not supported on transport endpoint"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection because of reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {143, "ESHUTDOWN", "cannot send after socket shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale NFS file handle"}, } // Signal table -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal Instruction", - 5: "trace/Breakpoint Trap", - 6: "abort", - 7: "emulation Trap", - 8: "arithmetic Exception", - 9: "killed", - 10: "bus Error", - 11: "segmentation Fault", - 12: "bad System Call", - 13: "broken Pipe", - 14: "alarm Clock", - 15: "terminated", - 16: "user Signal 1", - 17: "user Signal 2", - 18: "child Status Changed", - 19: "power-Fail/Restart", - 20: "window Size Change", - 21: "urgent Socket Condition", - 22: "pollable Event", - 23: "stopped (signal)", - 24: "stopped (user)", - 25: "continued", - 26: "stopped (tty input)", - 27: "stopped (tty output)", - 28: "virtual Timer Expired", - 29: "profiling Timer Expired", - 30: "cpu Limit Exceeded", - 31: "file Size Limit Exceeded", - 32: "no runnable lwp", - 33: "inter-lwp signal", - 34: "checkpoint Freeze", - 35: "checkpoint Thaw", - 36: "thread Cancellation", - 37: "resource Lost", - 38: "resource Control Exceeded", - 39: "reserved for JVM 1", - 40: "reserved for JVM 2", - 41: "information Request", +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal Instruction"}, + {5, "SIGTRAP", "trace/Breakpoint Trap"}, + {6, "SIGABRT", "abort"}, + {7, "SIGEMT", "emulation Trap"}, + {8, "SIGFPE", "arithmetic Exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus Error"}, + {11, "SIGSEGV", "segmentation Fault"}, + {12, "SIGSYS", "bad System Call"}, + {13, "SIGPIPE", "broken Pipe"}, + {14, "SIGALRM", "alarm Clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user Signal 1"}, + {17, "SIGUSR2", "user Signal 2"}, + {18, "SIGCHLD", "child Status Changed"}, + {19, "SIGPWR", "power-Fail/Restart"}, + {20, "SIGWINCH", "window Size Change"}, + {21, "SIGURG", "urgent Socket Condition"}, + {22, "SIGIO", "pollable Event"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped (user)"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual Timer Expired"}, + {29, "SIGPROF", "profiling Timer Expired"}, + {30, "SIGXCPU", "cpu Limit Exceeded"}, + {31, "SIGXFSZ", "file Size Limit Exceeded"}, + {32, "SIGWAITING", "no runnable lwp"}, + {33, "SIGLWP", "inter-lwp signal"}, + {34, "SIGFREEZE", "checkpoint Freeze"}, + {35, "SIGTHAW", "checkpoint Thaw"}, + {36, "SIGCANCEL", "thread Cancellation"}, + {37, "SIGLOST", "resource Lost"}, + {38, "SIGXRES", "resource Control Exceeded"}, + {39, "SIGJVM1", "reserved for JVM 1"}, + {40, "SIGJVM2", "reserved for JVM 2"}, + {41, "SIGINFO", "information Request"}, } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 00000000..46d0652f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1495 @@ +// mksyscall_aix.pl -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +int dup3(int, int, int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fallocate(int, unsigned int, long long, long long); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int removexattr(uintptr_t, uintptr_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +long long tee(int, int, int, int); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int unshare(int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int pipe2(uintptr_t, int); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +int getrlimit64(int, uintptr_t); +int setrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + r0, er := C.dup3(C.int(oldfd), C.int(newfd), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + r0, er := C.fallocate(C.int(fd), C.uint(mode), C.longlong(off), C.longlong(len)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + _p1 := uintptr(unsafe.Pointer(C.CString(attr))) + r0, er := C.removexattr(C.uintptr_t(_p0), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, er := C.tee(C.int(rfd), C.int(wfd), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + r0, er := C.unshare(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + r0, er := C.pipe2(C.uintptr_t(uintptr(unsafe.Pointer(p))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 00000000..b33f9ecc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1495 @@ +// mksyscall_aix.pl -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +int dup3(int, int, int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fallocate(int, unsigned int, long long, long long); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int removexattr(uintptr_t, uintptr_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +long long tee(int, int, int, int); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int unshare(int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int pipe2(uintptr_t, int); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +int getrlimit(int, uintptr_t); +int setrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + r0, er := C.dup3(C.int(oldfd), C.int(newfd), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + r0, er := C.fallocate(C.int(fd), C.uint(mode), C.longlong(off), C.longlong(len)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + _p1 := uintptr(unsafe.Pointer(C.CString(attr))) + r0, er := C.removexattr(C.uintptr_t(_p0), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, er := C.tee(C.int(rfd), C.int(wfd), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + r0, er := C.unshare(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + r0, er := C.pipe2(C.uintptr_t(uintptr(unsafe.Pointer(p))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 4c9f7275..9ce06df6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -399,6 +399,140 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 25623777..de992704 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -399,6 +399,140 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index 4ae787e4..81c4f093 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -1,4 +1,4 @@ -// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// mksyscall.pl -l32 -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,arm @@ -399,6 +399,140 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 14ed6886..338c32d4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -399,6 +399,140 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index a86434a7..ad77882b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -377,10 +377,8 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index 040e2f76..d3ba6c46 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -377,10 +377,8 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index cddc5e86..9dfd77b6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -377,10 +377,8 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 433becfd..8e8d427d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -1565,6 +1614,34 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) if e1 != 0 { @@ -1869,6 +1946,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func getgroups(n int, list *_Gid_t) (nn int, err error) { r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) nn = int(r0) @@ -1912,23 +1999,6 @@ func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - var _p0 unsafe.Pointer - if len(events) > 0 { - _p0 = unsafe.Pointer(&events[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Pause() (err error) { _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) if e1 != 0 { @@ -1959,6 +2029,21 @@ func setrlimit(resource int, rlim *rlimit32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -1995,6 +2080,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 33c02b26..2f60780c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { @@ -1545,6 +1594,17 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { @@ -1937,6 +1997,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2127,6 +2197,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Utime(path string, buf *Utimbuf) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2142,6 +2227,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index f91b56c2..d29a11c9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -1734,6 +1783,34 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -1852,6 +1929,16 @@ func Lstat(path string, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) written = int(r0) @@ -1970,6 +2057,31 @@ func Stat(path string, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -1980,25 +2092,13 @@ func Gettimeofday(tv *Timeval) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - var _p0 unsafe.Pointer - if len(events) > 0 { - _p0 = unsafe.Pointer(&events[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pause() (err error) { - _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 52d75952..d03eb296 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 970a5c13..dea09328 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { @@ -1545,6 +1594,34 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0) if e1 != 0 { @@ -1794,6 +1871,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2004,6 +2091,21 @@ func Iopl(level int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -2025,6 +2127,36 @@ func Time(t *Time_t) (tt Time_t, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Lstat(path string, stat *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2080,38 +2212,6 @@ func Stat(path string, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Utime(path string, buf *Utimbuf) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - var _p0 unsafe.Pointer - if len(events) > 0 { - _p0 = unsafe.Pointer(&events[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Pause() (err error) { _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) if e1 != 0 { @@ -2132,6 +2232,18 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) xaddr = uintptr(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index b989d0f2..31bbcff4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { @@ -1545,6 +1594,17 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { @@ -1881,6 +1941,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2071,6 +2141,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -2096,6 +2181,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index 1f8d14ca..e025a33a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { @@ -1545,6 +1594,17 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { @@ -1881,6 +1941,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2071,6 +2141,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -2096,6 +2181,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index a9c7e520..57d7d931 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { @@ -1545,6 +1594,34 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) if e1 != 0 { @@ -1794,6 +1871,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2004,6 +2091,21 @@ func Iopl(level int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -2025,6 +2127,36 @@ func Time(t *Time_t) (tt Time_t, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Lstat(path string, stat *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2080,38 +2212,6 @@ func Stat(path string, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Utime(path string, buf *Utimbuf) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - var _p0 unsafe.Pointer - if len(events) > 0 { - _p0 = unsafe.Pointer(&events[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Pause() (err error) { _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) if e1 != 0 { @@ -2132,6 +2232,18 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) xaddr = uintptr(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 3bb9a209..2f7110d7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,15 +1569,13 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - var _p0 unsafe.Pointer - if len(events) > 0 { - _p0 = unsafe.Pointer(&events[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) - n = int(r0) + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -1562,6 +1594,34 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) if e1 != 0 { @@ -1963,6 +2023,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2153,6 +2223,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -2189,6 +2274,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index 56116623..bb3bd595 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,15 +1569,13 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - var _p0 unsafe.Pointer - if len(events) > 0 { - _p0 = unsafe.Pointer(&events[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) - n = int(r0) + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -1562,6 +1594,34 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) if e1 != 0 { @@ -1963,6 +2023,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) @@ -2153,6 +2223,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -2189,6 +2274,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index 9696a019..c637da95 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -143,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -173,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -494,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -544,21 +508,6 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) if e1 != 0 { @@ -625,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -635,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1114,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1366,16 +1410,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1535,6 +1569,21 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { @@ -1545,6 +1594,17 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { @@ -1923,6 +1983,16 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func getgroups(n int, list *_Gid_t) (nn int, err error) { r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) nn = int(r0) @@ -1944,6 +2014,21 @@ func setgroups(n int, list *_Gid_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -1969,6 +2054,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index c01b3b6b..b26aee95 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -118,21 +143,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func utimes(path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -148,16 +158,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -186,6 +186,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -251,6 +349,33 @@ func Acct(path string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Adjtimex(buf *Timex) (state int, err error) { r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) state = int(r0) @@ -344,17 +469,6 @@ func Dup3(oldfd int, newfd int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func EpollCreate(size int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func EpollCreate1(flag int) (fd int, err error) { r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) fd = int(r0) @@ -376,8 +490,19 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { - Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) return } @@ -428,21 +553,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -528,7 +638,7 @@ func Getpgid(pid int) (pgid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpid() (pid int) { - r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) pid = int(r0) return } @@ -536,7 +646,7 @@ func Getpid() (pid int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getppid() (ppid int) { - r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) ppid = int(r0) return } @@ -593,7 +703,7 @@ func Getsid(pid int) (sid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Gettid() (tid int) { - r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) tid = int(r0) return } @@ -692,6 +802,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -714,6 +851,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -754,6 +959,17 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func PivotRoot(newroot string, putold string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(newroot) @@ -794,6 +1010,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -851,6 +1078,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Setdomainname(p []byte) (err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -960,8 +1213,33 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sync() { - Syscall(SYS_SYNC, 0, 0, 0) + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1010,7 +1288,7 @@ func Times(tms *Tms) (ticks uintptr, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Umask(mask int) (oldmask int) { - r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0) + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) oldmask = int(r0) return } @@ -1052,16 +1330,6 @@ func Unshare(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1169,14 +1437,8 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1185,8 +1447,30 @@ func Munlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1262,6 +1546,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { @@ -1283,7 +1582,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getegid() (egid int) { - r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) egid = int(r0) return } @@ -1291,7 +1590,7 @@ func Getegid() (egid int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Geteuid() (euid int) { - r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) euid = int(r0) return } @@ -1299,7 +1598,7 @@ func Geteuid() (euid int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getgid() (gid int) { - r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) gid = int(r0) return } @@ -1317,7 +1616,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) uid = int(r0) return } @@ -1788,6 +2087,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { @@ -1813,6 +2127,21 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index fb4b9627..f1874d5a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -571,6 +571,235 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index beac82ef..eb802839 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -571,6 +571,235 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 7bd5f60b..7b36499d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -571,6 +571,235 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fadvise(fd int, offset int64, length int64, advice int) (err error) { _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 49b3b5e8..1942049b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -569,6 +569,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index c4c7d854..d351c72c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -569,6 +569,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index 210285b0..617d47f0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -569,6 +569,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 39789630..e2e5fc5e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -41,6 +41,7 @@ import ( //go:cgo_import_dynamic libc_dup dup "libc.so" //go:cgo_import_dynamic libc_dup2 dup2 "libc.so" //go:cgo_import_dynamic libc_exit exit "libc.so" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" //go:cgo_import_dynamic libc_fchdir fchdir "libc.so" //go:cgo_import_dynamic libc_fchmod fchmod "libc.so" //go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" @@ -169,6 +170,7 @@ import ( //go:linkname procDup libc_dup //go:linkname procDup2 libc_dup2 //go:linkname procExit libc_exit +//go:linkname procFaccessat libc_faccessat //go:linkname procFchdir libc_fchdir //go:linkname procFchmod libc_fchmod //go:linkname procFchmodat libc_fchmodat @@ -298,6 +300,7 @@ var ( procDup, procDup2, procExit, + procFaccessat, procFchdir, procFchmod, procFchmodat, @@ -695,6 +698,19 @@ func Exit(code int) { return } +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + func Fchdir(fd int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index 83bb935b..b005031a 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -1,5 +1,5 @@ // mksysctl_openbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index 83bb935b..90c95c2c 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -1,5 +1,7 @@ // mksysctl_openbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. + +// +build amd64,openbsd package unix @@ -14,6 +16,7 @@ var sysctlMib = []mibentry{ {"ddb.max_line", []_C_int{9, 3}}, {"ddb.max_width", []_C_int{9, 2}}, {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, {"ddb.radix", []_C_int{9, 1}}, {"ddb.tab_stop_width", []_C_int{9, 4}}, {"ddb.trigger", []_C_int{9, 8}}, @@ -29,6 +32,7 @@ var sysctlMib = []mibentry{ {"hw.ncpu", []_C_int{6, 3}}, {"hw.ncpufound", []_C_int{6, 21}}, {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, {"hw.physmem", []_C_int{6, 19}}, {"hw.product", []_C_int{6, 15}}, {"hw.serialno", []_C_int{6, 17}}, @@ -37,7 +41,7 @@ var sysctlMib = []mibentry{ {"hw.uuid", []_C_int{6, 18}}, {"hw.vendor", []_C_int{6, 14}}, {"hw.version", []_C_int{6, 16}}, - {"kern.arandom", []_C_int{1, 37}}, + {"kern.allowkmem", []_C_int{1, 52}}, {"kern.argmax", []_C_int{1, 8}}, {"kern.boottime", []_C_int{1, 21}}, {"kern.bufcachepercent", []_C_int{1, 72}}, @@ -46,12 +50,13 @@ var sysctlMib = []mibentry{ {"kern.consdev", []_C_int{1, 75}}, {"kern.cp_time", []_C_int{1, 40}}, {"kern.cp_time2", []_C_int{1, 71}}, - {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.dnsjackport", []_C_int{1, 13}}, {"kern.domainname", []_C_int{1, 22}}, {"kern.file", []_C_int{1, 73}}, {"kern.forkstat", []_C_int{1, 42}}, {"kern.fscale", []_C_int{1, 46}}, {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, {"kern.hostid", []_C_int{1, 11}}, {"kern.hostname", []_C_int{1, 10}}, {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, @@ -84,7 +89,6 @@ var sysctlMib = []mibentry{ {"kern.pool_debug", []_C_int{1, 77}}, {"kern.posix1version", []_C_int{1, 17}}, {"kern.proc", []_C_int{1, 66}}, - {"kern.random", []_C_int{1, 31}}, {"kern.rawpartition", []_C_int{1, 24}}, {"kern.saved_ids", []_C_int{1, 20}}, {"kern.securelevel", []_C_int{1, 9}}, @@ -102,21 +106,16 @@ var sysctlMib = []mibentry{ {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, {"kern.timecounter.tick", []_C_int{1, 69, 1}}, {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, - {"kern.tty.maxptys", []_C_int{1, 44, 6}}, - {"kern.tty.nptys", []_C_int{1, 44, 7}}, {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, {"kern.ttycount", []_C_int{1, 57}}, - {"kern.userasymcrypto", []_C_int{1, 60}}, - {"kern.usercrypto", []_C_int{1, 52}}, - {"kern.usermount", []_C_int{1, 30}}, {"kern.version", []_C_int{1, 4}}, - {"kern.vnode", []_C_int{1, 13}}, {"kern.watchdog.auto", []_C_int{1, 64, 2}}, {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.wxabort", []_C_int{1, 74}}, {"net.bpf.bufsize", []_C_int{4, 31, 1}}, {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, @@ -144,7 +143,9 @@ var sysctlMib = []mibentry{ {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, @@ -153,8 +154,10 @@ var sysctlMib = []mibentry{ {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, @@ -173,7 +176,6 @@ var sysctlMib = []mibentry{ {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, - {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, @@ -187,6 +189,7 @@ var sysctlMib = []mibentry{ {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, @@ -194,9 +197,12 @@ var sysctlMib = []mibentry{ {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, @@ -209,13 +215,8 @@ var sysctlMib = []mibentry{ {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, - {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, - {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, - {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, - {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, - {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, @@ -228,20 +229,19 @@ var sysctlMib = []mibentry{ {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, - {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, - {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, - {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, - {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, {"net.key.sadb_dump", []_C_int{4, 30, 1}}, {"net.key.spd_dump", []_C_int{4, 30, 2}}, {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, @@ -254,17 +254,4 @@ var sysctlMib = []mibentry{ {"net.mpls.ttl", []_C_int{4, 33, 2}}, {"net.pflow.stats", []_C_int{4, 34, 1}}, {"net.pipex.enable", []_C_int{4, 35, 1}}, - {"vm.anonmin", []_C_int{2, 7}}, - {"vm.loadavg", []_C_int{2, 2}}, - {"vm.maxslp", []_C_int{2, 10}}, - {"vm.nkmempages", []_C_int{2, 6}}, - {"vm.psstrings", []_C_int{2, 3}}, - {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, - {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, - {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, - {"vm.uspace", []_C_int{2, 11}}, - {"vm.uvmexp", []_C_int{2, 4}}, - {"vm.vmmeter", []_C_int{2, 1}}, - {"vm.vnodemin", []_C_int{2, 9}}, - {"vm.vtextmin", []_C_int{2, 8}}, } diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index 83bb935b..b005031a 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -1,5 +1,5 @@ // mksysctl_openbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index b64a8122..1ab8780c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -7,347 +7,397 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 81722ac9..b66f900d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -7,347 +7,397 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 44883141..d61941ba 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -7,347 +7,397 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 95ab1290..8f33ece7 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -387,4 +387,6 @@ const ( SYS_PKEY_FREE = 382 SYS_STATX = 383 SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index c5dabf2e..70c1a2c1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -339,4 +339,6 @@ const ( SYS_PKEY_ALLOC = 330 SYS_PKEY_FREE = 331 SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index ab7fa5fd..a1db143f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -359,4 +359,5 @@ const ( SYS_PKEY_ALLOC = 395 SYS_PKEY_FREE = 396 SYS_STATX = 397 + SYS_RSEQ = 398 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index b1c6b4bd..2e4cee70 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -283,4 +283,5 @@ const ( SYS_PKEY_ALLOC = 289 SYS_PKEY_FREE = 290 SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 2e9aa7a3..16714491 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -372,4 +372,6 @@ const ( SYS_PKEY_ALLOC = 4364 SYS_PKEY_FREE = 4365 SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 92827635..1270a1c9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -332,4 +332,6 @@ const ( SYS_PKEY_ALLOC = 5324 SYS_PKEY_FREE = 5325 SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 45bd3fd6..93980be1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -332,4 +332,6 @@ const ( SYS_PKEY_ALLOC = 5324 SYS_PKEY_FREE = 5325 SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 62ccac4b..0fc77261 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -372,4 +372,6 @@ const ( SYS_PKEY_ALLOC = 4364 SYS_PKEY_FREE = 4365 SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 384d49bf..a5c5f3de 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -370,4 +370,6 @@ const ( SYS_PKEY_ALLOC = 384 SYS_PKEY_FREE = 385 SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 9623248a..5470eadb 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -370,4 +370,6 @@ const ( SYS_PKEY_ALLOC = 384 SYS_PKEY_FREE = 385 SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index ed92409d..de0245a9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -331,4 +331,7 @@ const ( SYS_S390_GUARDED_STORAGE = 378 SYS_STATX = 379 SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index c9c129dc..2d099367 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -1,5 +1,5 @@ // mksysnum_linux.pl -Ilinux/usr/include -m64 -D__arch64__ linux/usr/include/asm/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build sparc64,linux diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go index 8afda9c4..f0daa05a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -1,5 +1,5 @@ // mksysnum_netbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build 386,netbsd diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go index aea8dbec..ddb25b94 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -1,5 +1,5 @@ // mksysnum_netbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build amd64,netbsd diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go index c6158a7e..315bd63f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -1,5 +1,5 @@ // mksysnum_netbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build arm,netbsd diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go index 3e8ce2a1..07787301 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -1,5 +1,5 @@ // mksysnum_openbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build 386,openbsd diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go index bd28146d..bc7fa579 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -1,5 +1,5 @@ // mksysnum_openbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,openbsd @@ -12,6 +12,7 @@ const ( SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \ SYS_OPEN = 5 // { int sys_open(const char *path, \ SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \ SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } SYS_UNLINK = 10 // { int sys_unlink(const char *path); } @@ -37,11 +38,10 @@ const ( SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \ - SYS_ACCESS = 33 // { int sys_access(const char *path, int flags); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } SYS_SYNC = 36 // { void sys_sync(void); } - SYS_KILL = 37 // { int sys_kill(int pid, int signum); } SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } SYS_GETPPID = 39 // { pid_t sys_getppid(void); } SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } @@ -53,7 +53,6 @@ const ( SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \ SYS_GETGID = 47 // { gid_t sys_getgid(void); } SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } - SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); } SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } SYS_ACCT = 51 // { int sys_acct(const char *path); } SYS_SIGPENDING = 52 // { int sys_sigpending(void); } @@ -62,7 +61,7 @@ const ( SYS_REBOOT = 55 // { int sys_reboot(int opt); } SYS_REVOKE = 56 // { int sys_revoke(const char *path); } SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \ - SYS_READLINK = 58 // { int sys_readlink(const char *path, char *buf, \ + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, \ SYS_EXECVE = 59 // { int sys_execve(const char *path, \ SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } SYS_CHROOT = 61 // { int sys_chroot(const char *path); } @@ -86,15 +85,18 @@ const ( SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \ SYS_GETPGRP = 81 // { int sys_getpgrp(void); } - SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, int pgid); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, \ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \ + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, \ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \ SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \ SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, \ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \ SYS_FSYNC = 95 // { int sys_fsync(int fd); } SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } @@ -102,16 +104,24 @@ const ( SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \ SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \ SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, \ + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, \ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \ SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, \ + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, \ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \ + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } SYS_READV = 120 // { ssize_t sys_readv(int fd, \ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \ + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } @@ -125,6 +135,7 @@ const ( SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \ + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } SYS_SETSID = 147 // { int sys_setsid(void); } SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \ SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } @@ -144,7 +155,7 @@ const ( SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \ SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } - SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \ + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, \ SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go index 32653e53..7a1693ac 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -1,5 +1,5 @@ // mksysnum_openbsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; DO NOT EDIT. // +build arm,openbsd diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 00000000..ee455365 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,306 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +package unix + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type StTimespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct{} + +type Winsize struct{} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Statfs_t struct{} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 00000000..cdb1699d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,313 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +package unix + +const ( + sizeofPtr = 0x8 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type StTimespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + _ [4]byte + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct{} + +type Winsize struct{} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Statfs_t struct{} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 315a553b..c01ae670 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Ino uint64 Nlink uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 878a21ad..8006c563 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint32 Ino uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 8408af12..716774de 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint32 Ino uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 4b2d9a48..92e07b00 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -58,23 +58,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint32 Ino uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index a805313f..cb3729ea 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -116,21 +116,6 @@ type Stat_t struct { Ino uint64 } -type Statfs_t struct { - Type int32 - Bsize int32 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen int32 - Frsize int32 - Flags int32 - Spare [4]int32 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -263,6 +248,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -416,6 +408,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -448,6 +441,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -720,6 +714,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1244,3 +1240,645 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 98aa9237..0f3c0fb5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -116,21 +116,6 @@ type Stat_t struct { _ [3]int64 } -type Statfs_t struct { - Type int64 - Bsize int64 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen int64 - Frsize int64 - Flags int64 - Spare [4]int64 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -265,6 +250,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -420,6 +412,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -452,6 +445,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -738,6 +732,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1263,3 +1259,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index ead8f252..bd534da8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -117,22 +117,6 @@ type Stat_t struct { Ino uint64 } -type Statfs_t struct { - Type int32 - Bsize int32 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen int32 - Frsize int32 - Flags int32 - Spare [4]int32 - _ [4]byte -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -267,6 +251,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -420,6 +411,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -452,6 +444,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -709,6 +702,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1233,3 +1228,647 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 8c32c3bf..3a72fd9f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -117,21 +117,6 @@ type Stat_t struct { _ [2]int32 } -type Statfs_t struct { - Type int64 - Bsize int64 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen int64 - Frsize int64 - Flags int64 - Spare [4]int64 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -266,6 +251,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -421,6 +413,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -453,6 +446,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -717,6 +711,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1242,3 +1238,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index af291d94..cd360b27 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -115,23 +115,6 @@ type Stat_t struct { Pad5 [14]int32 } -type Statfs_t struct { - Type int32 - Bsize int32 - Frsize int32 - _ [4]byte - Blocks uint64 - Bfree uint64 - Files uint64 - Ffree uint64 - Bavail uint64 - Fsid Fsid - Namelen int32 - Flags int32 - Spare [5]int32 - _ [4]byte -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -266,6 +249,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -419,6 +409,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -451,6 +442,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -714,6 +706,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1238,3 +1232,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 324ee16f..d35ec602 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -117,21 +117,6 @@ type Stat_t struct { Blocks int64 } -type Statfs_t struct { - Type int64 - Bsize int64 - Frsize int64 - Blocks uint64 - Bfree uint64 - Files uint64 - Ffree uint64 - Bavail uint64 - Fsid Fsid - Namelen int64 - Flags int64 - Spare [5]int64 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -266,6 +251,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -421,6 +413,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -453,6 +446,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -719,6 +713,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1244,3 +1240,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 08849df8..0f499302 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -117,21 +117,6 @@ type Stat_t struct { Blocks int64 } -type Statfs_t struct { - Type int64 - Bsize int64 - Frsize int64 - Blocks uint64 - Bfree uint64 - Files uint64 - Ffree uint64 - Bavail uint64 - Fsid Fsid - Namelen int64 - Flags int64 - Spare [5]int64 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -266,6 +251,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -421,6 +413,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -453,6 +446,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -719,6 +713,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1244,3 +1240,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index 3682beb6..55f97c5c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -115,23 +115,6 @@ type Stat_t struct { Pad5 [14]int32 } -type Statfs_t struct { - Type int32 - Bsize int32 - Frsize int32 - _ [4]byte - Blocks uint64 - Bfree uint64 - Files uint64 - Ffree uint64 - Bavail uint64 - Fsid Fsid - Namelen int32 - Flags int32 - Spare [5]int32 - _ [4]byte -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -266,6 +249,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -419,6 +409,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -451,6 +442,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -714,6 +706,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1238,3 +1232,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index bfa39ec9..f1d42644 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -118,21 +118,6 @@ type Stat_t struct { _ uint64 } -type Statfs_t struct { - Type int64 - Bsize int64 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen int64 - Frsize int64 - Flags int64 - Spare [4]int64 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -267,6 +252,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -422,6 +414,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -454,6 +447,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -727,6 +721,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1252,3 +1248,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 72eab3d8..90ab1f7a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -118,21 +118,6 @@ type Stat_t struct { _ uint64 } -type Statfs_t struct { - Type int64 - Bsize int64 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen int64 - Frsize int64 - Flags int64 - Spare [4]int64 -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -267,6 +252,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -422,6 +414,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -454,6 +447,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -727,6 +721,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1252,3 +1248,648 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index c7935b76..898ac451 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -116,22 +116,6 @@ type Stat_t struct { _ [3]int64 } -type Statfs_t struct { - Type uint32 - Bsize uint32 - Blocks uint64 - Bfree uint64 - Bavail uint64 - Files uint64 - Ffree uint64 - Fsid Fsid - Namelen uint32 - Frsize uint32 - Flags uint32 - Spare [4]uint32 - _ [4]byte -} - type StatxTimestamp struct { Sec int64 Nsec uint32 @@ -266,6 +250,13 @@ type RawSockaddrL2 struct { _ [1]byte } +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + type RawSockaddrCAN struct { Family uint16 _ [2]byte @@ -421,6 +412,7 @@ const ( SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 SizeofSockaddrVM = 0x10 @@ -453,6 +445,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -744,6 +737,8 @@ const ( AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 ) type PollFd struct { @@ -1269,3 +1264,649 @@ type HDDriveID struct { Words206_254 [49]uint16 Integrity_word uint16 } + +type Statfs_t struct { + Type uint32 + Bsize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen uint32 + Frsize uint32 + Flags uint32 + Spare [4]uint32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index d5a2d75d..231f4e8e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Mode uint32 Dev int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index d5314108..bb2c4488 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -56,48 +56,31 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { - Mode uint32 - Dev int32 - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Rdev int32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Pad_cgo_0 [4]byte - X__st_birthtim Timespec + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec } type Statfs_t struct { F_flags uint32 F_bsize uint32 F_iosize uint32 - Pad_cgo_0 [4]byte + _ [4]byte F_blocks uint64 F_bfree uint64 F_bavail int64 @@ -116,7 +99,7 @@ type Statfs_t struct { F_mntonname [90]int8 F_mntfromname [90]int8 F_mntfromspec [90]int8 - Pad_cgo_1 [2]byte + _ [2]byte Mount_info [160]byte } @@ -129,13 +112,13 @@ type Flock_t struct { } type Dirent struct { - Fileno uint64 - Off int64 - Reclen uint16 - Type uint8 - Namlen uint8 - X__d_padding [4]uint8 - Name [256]int8 + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 } type Fsid struct { @@ -216,10 +199,10 @@ type IPv6Mreq struct { type Msghdr struct { Name *byte Namelen uint32 - Pad_cgo_0 [4]byte + _ [4]byte Iov *Iovec Iovlen uint32 - Pad_cgo_1 [4]byte + _ [4]byte Control *byte Controllen uint32 Flags int32 @@ -281,8 +264,8 @@ type FdSet struct { } const ( - SizeofIfMsghdr = 0xf8 - SizeofIfData = 0xe0 + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 SizeofIfaMsghdr = 0x18 SizeofIfAnnounceMsghdr = 0x1a SizeofRtMsghdr = 0x60 @@ -311,7 +294,7 @@ type IfData struct { Link_state uint8 Mtu uint32 Metric uint32 - Pad uint32 + Rdomain uint32 Baudrate uint64 Ipackets uint64 Ierrors uint64 @@ -323,12 +306,11 @@ type IfData struct { Imcasts uint64 Omcasts uint64 Iqdrops uint64 + Oqdrops uint64 Noproto uint64 Capabilities uint32 - Pad_cgo_0 [4]byte + _ [4]byte Lastchange Timeval - Mclpool [7]Mclpool - Pad_cgo_1 [4]byte } type IfaMsghdr struct { @@ -389,13 +371,7 @@ type RtMetrics struct { Pad uint32 } -type Mclpool struct { - Grown int32 - Alive uint16 - Hwm uint16 - Cwm uint16 - Lwm uint16 -} +type Mclpool struct{} const ( SizeofBpfVersion = 0x4 @@ -416,9 +392,9 @@ type BpfStat struct { } type BpfProgram struct { - Len uint32 - Pad_cgo_0 [4]byte - Insns *BpfInsn + Len uint32 + _ [4]byte + Insns *BpfInsn } type BpfInsn struct { @@ -429,11 +405,11 @@ type BpfInsn struct { } type BpfHdr struct { - Tstamp BpfTimeval - Caplen uint32 - Datalen uint32 - Hdrlen uint16 - Pad_cgo_0 [2]byte + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte } type BpfTimeval struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index e35b13b6..941367ca 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Mode uint32 Dev int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 2248598d..0543e1a4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -75,23 +75,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint64 Ino uint64 diff --git a/vendor/gopkg.in/square/go-jose.v1/README.md b/vendor/gopkg.in/square/go-jose.v1/README.md deleted file mode 100644 index 60293ffa..00000000 --- a/vendor/gopkg.in/square/go-jose.v1/README.md +++ /dev/null @@ -1,212 +0,0 @@ -# Go JOSE - -[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v1) [![license](http://img.shields.io/badge/license-apache_2.0-blue.svg?style=flat)](https://raw.githubusercontent.com/square/go-jose/master/LICENSE) -[![release](https://img.shields.io/github/release/square/go-jose.svg?style=flat)](https://github.com/square/go-jose/releases) -[![build](https://travis-ci.org/square/go-jose.svg?branch=master)](https://travis-ci.org/square/go-jose) -[![coverage](https://coveralls.io/repos/github/square/go-jose/badge.svg?branch=master)](https://coveralls.io/r/square/go-jose) - -Package jose aims to provide an implementation of the Javascript Object Signing -and Encryption set of standards. For the moment, it mainly focuses on encryption -and signing based on the JSON Web Encryption and JSON Web Signature standards. - -**Disclaimer**: This library contains encryption software that is subject to -the U.S. Export Administration Regulations. You may not export, re-export, -transfer or download this code or any part of it in violation of any United -States law, directive or regulation. In particular this software may not be -exported or re-exported in any form or on any media to Iran, North Sudan, -Syria, Cuba, or North Korea, or to denied persons or entities mentioned on any -US maintained blocked list. - -## Overview - -The implementation follows the -[JSON Web Encryption](http://dx.doi.org/10.17487/RFC7516) -standard (RFC 7516) and -[JSON Web Signature](http://dx.doi.org/10.17487/RFC7515) -standard (RFC 7515). Tables of supported algorithms are shown below. -The library supports both the compact and full serialization formats, and has -optional support for multiple recipients. It also comes with a small -command-line utility -([`jose-util`](https://github.com/square/go-jose/tree/master/jose-util)) -for dealing with JOSE messages in a shell. - -**Note**: We use a forked version of the `encoding/json` package from the Go -standard library which uses case-sensitive matching for member names (instead -of [case-insensitive matching](https://www.ietf.org/mail-archive/web/json/current/msg03763.html)). -This is to avoid differences in interpretation of messages between go-jose and -libraries in other languages. If you do not like this behavior, you can use the -`std_json` build tag to disable it (though we do not recommend doing so). - -### Versions - -We use [gopkg.in](https://gopkg.in) for versioning. - -[Version 1](https://gopkg.in/square/go-jose.v1) is the current stable version: - - import "gopkg.in/square/go-jose.v1" - -The interface for [go-jose.v1](https://gopkg.in/square/go-jose.v1) will remain -backwards compatible. We're currently sketching out ideas for a new version, to -clean up the interface a bit. If you have ideas or feature requests [please let -us know](https://github.com/square/go-jose/issues/64)! - -### Supported algorithms - -See below for a table of supported algorithms. Algorithm identifiers match -the names in the -[JSON Web Algorithms](http://dx.doi.org/10.17487/RFC7518) -standard where possible. The -[Godoc reference](https://godoc.org/github.com/square/go-jose#pkg-constants) -has a list of constants. - - Key encryption | Algorithm identifier(s) - :------------------------- | :------------------------------ - RSA-PKCS#1v1.5 | RSA1_5 - RSA-OAEP | RSA-OAEP, RSA-OAEP-256 - AES key wrap | A128KW, A192KW, A256KW - AES-GCM key wrap | A128GCMKW, A192GCMKW, A256GCMKW - ECDH-ES + AES key wrap | ECDH-ES+A128KW, ECDH-ES+A192KW, ECDH-ES+A256KW - ECDH-ES (direct) | ECDH-ES1 - Direct encryption | dir1 - -1. Not supported in multi-recipient mode - - Signing / MAC | Algorithm identifier(s) - :------------------------- | :------------------------------ - RSASSA-PKCS#1v1.5 | RS256, RS384, RS512 - RSASSA-PSS | PS256, PS384, PS512 - HMAC | HS256, HS384, HS512 - ECDSA | ES256, ES384, ES512 - - Content encryption | Algorithm identifier(s) - :------------------------- | :------------------------------ - AES-CBC+HMAC | A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 - AES-GCM | A128GCM, A192GCM, A256GCM - - Compression | Algorithm identifiers(s) - :------------------------- | ------------------------------- - DEFLATE (RFC 1951) | DEF - -### Supported key types - -See below for a table of supported key types. These are understood by the -library, and can be passed to corresponding functions such as `NewEncrypter` or -`NewSigner`. Note that if you are creating a new encrypter or signer with a -JsonWebKey, the key id of the JsonWebKey (if present) will be added to any -resulting messages. - - Algorithm(s) | Corresponding types - :------------------------- | ------------------------------- - RSA | *[rsa.PublicKey](http://golang.org/pkg/crypto/rsa/#PublicKey), *[rsa.PrivateKey](http://golang.org/pkg/crypto/rsa/#PrivateKey), *[jose.JsonWebKey](https://godoc.org/github.com/square/go-jose#JsonWebKey) - ECDH, ECDSA | *[ecdsa.PublicKey](http://golang.org/pkg/crypto/ecdsa/#PublicKey), *[ecdsa.PrivateKey](http://golang.org/pkg/crypto/ecdsa/#PrivateKey), *[jose.JsonWebKey](https://godoc.org/github.com/square/go-jose#JsonWebKey) - AES, HMAC | []byte, *[jose.JsonWebKey](https://godoc.org/github.com/square/go-jose#JsonWebKey) - -## Examples - -Encryption/decryption example using RSA: - -```Go -// Generate a public/private key pair to use for this example. The library -// also provides two utility functions (LoadPublicKey and LoadPrivateKey) -// that can be used to load keys from PEM/DER-encoded data. -privateKey, err := rsa.GenerateKey(rand.Reader, 2048) -if err != nil { - panic(err) -} - -// Instantiate an encrypter using RSA-OAEP with AES128-GCM. An error would -// indicate that the selected algorithm(s) are not currently supported. -publicKey := &privateKey.PublicKey -encrypter, err := NewEncrypter(RSA_OAEP, A128GCM, publicKey) -if err != nil { - panic(err) -} - -// Encrypt a sample plaintext. Calling the encrypter returns an encrypted -// JWE object, which can then be serialized for output afterwards. An error -// would indicate a problem in an underlying cryptographic primitive. -var plaintext = []byte("Lorem ipsum dolor sit amet") -object, err := encrypter.Encrypt(plaintext) -if err != nil { - panic(err) -} - -// Serialize the encrypted object using the full serialization format. -// Alternatively you can also use the compact format here by calling -// object.CompactSerialize() instead. -serialized := object.FullSerialize() - -// Parse the serialized, encrypted JWE object. An error would indicate that -// the given input did not represent a valid message. -object, err = ParseEncrypted(serialized) -if err != nil { - panic(err) -} - -// Now we can decrypt and get back our original plaintext. An error here -// would indicate the the message failed to decrypt, e.g. because the auth -// tag was broken or the message was tampered with. -decrypted, err := object.Decrypt(privateKey) -if err != nil { - panic(err) -} - -fmt.Printf(string(decrypted)) -// output: Lorem ipsum dolor sit amet -``` - -Signing/verification example using RSA: - -```Go -// Generate a public/private key pair to use for this example. The library -// also provides two utility functions (LoadPublicKey and LoadPrivateKey) -// that can be used to load keys from PEM/DER-encoded data. -privateKey, err := rsa.GenerateKey(rand.Reader, 2048) -if err != nil { - panic(err) -} - -// Instantiate a signer using RSASSA-PSS (SHA512) with the given private key. -signer, err := NewSigner(PS512, privateKey) -if err != nil { - panic(err) -} - -// Sign a sample payload. Calling the signer returns a protected JWS object, -// which can then be serialized for output afterwards. An error would -// indicate a problem in an underlying cryptographic primitive. -var payload = []byte("Lorem ipsum dolor sit amet") -object, err := signer.Sign(payload) -if err != nil { - panic(err) -} - -// Serialize the encrypted object using the full serialization format. -// Alternatively you can also use the compact format here by calling -// object.CompactSerialize() instead. -serialized := object.FullSerialize() - -// Parse the serialized, protected JWS object. An error would indicate that -// the given input did not represent a valid message. -object, err = ParseSigned(serialized) -if err != nil { - panic(err) -} - -// Now we can verify the signature on the payload. An error here would -// indicate the the message failed to verify, e.g. because the signature was -// broken or the message was tampered with. -output, err := object.Verify(&privateKey.PublicKey) -if err != nil { - panic(err) -} - -fmt.Printf(string(output)) -// output: Lorem ipsum dolor sit amet -``` - -More examples can be found in the [Godoc -reference](https://godoc.org/github.com/square/go-jose) for this package. The -[`jose-util`](https://github.com/square/go-jose/tree/master/jose-util) -subdirectory also contains a small command-line utility which might -be useful as an example. diff --git a/vendor/gopkg.in/square/go-jose.v1/shared.go b/vendor/gopkg.in/square/go-jose.v1/shared.go deleted file mode 100644 index 9d895a91..00000000 --- a/vendor/gopkg.in/square/go-jose.v1/shared.go +++ /dev/null @@ -1,224 +0,0 @@ -/*- - * Copyright 2014 Square Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package jose - -import ( - "crypto/elliptic" - "errors" - "fmt" -) - -// KeyAlgorithm represents a key management algorithm. -type KeyAlgorithm string - -// SignatureAlgorithm represents a signature (or MAC) algorithm. -type SignatureAlgorithm string - -// ContentEncryption represents a content encryption algorithm. -type ContentEncryption string - -// CompressionAlgorithm represents an algorithm used for plaintext compression. -type CompressionAlgorithm string - -var ( - // ErrCryptoFailure represents an error in cryptographic primitive. This - // occurs when, for example, a message had an invalid authentication tag or - // could not be decrypted. - ErrCryptoFailure = errors.New("square/go-jose: error in cryptographic primitive") - - // ErrUnsupportedAlgorithm indicates that a selected algorithm is not - // supported. This occurs when trying to instantiate an encrypter for an - // algorithm that is not yet implemented. - ErrUnsupportedAlgorithm = errors.New("square/go-jose: unknown/unsupported algorithm") - - // ErrUnsupportedKeyType indicates that the given key type/format is not - // supported. This occurs when trying to instantiate an encrypter and passing - // it a key of an unrecognized type or with unsupported parameters, such as - // an RSA private key with more than two primes. - ErrUnsupportedKeyType = errors.New("square/go-jose: unsupported key type/format") - - // ErrNotSupported serialization of object is not supported. This occurs when - // trying to compact-serialize an object which can't be represented in - // compact form. - ErrNotSupported = errors.New("square/go-jose: compact serialization not supported for object") - - // ErrUnprotectedNonce indicates that while parsing a JWS or JWE object, a - // nonce header parameter was included in an unprotected header object. - ErrUnprotectedNonce = errors.New("square/go-jose: Nonce parameter included in unprotected header") -) - -// Key management algorithms -const ( - RSA1_5 = KeyAlgorithm("RSA1_5") // RSA-PKCS1v1.5 - RSA_OAEP = KeyAlgorithm("RSA-OAEP") // RSA-OAEP-SHA1 - RSA_OAEP_256 = KeyAlgorithm("RSA-OAEP-256") // RSA-OAEP-SHA256 - A128KW = KeyAlgorithm("A128KW") // AES key wrap (128) - A192KW = KeyAlgorithm("A192KW") // AES key wrap (192) - A256KW = KeyAlgorithm("A256KW") // AES key wrap (256) - DIRECT = KeyAlgorithm("dir") // Direct encryption - ECDH_ES = KeyAlgorithm("ECDH-ES") // ECDH-ES - ECDH_ES_A128KW = KeyAlgorithm("ECDH-ES+A128KW") // ECDH-ES + AES key wrap (128) - ECDH_ES_A192KW = KeyAlgorithm("ECDH-ES+A192KW") // ECDH-ES + AES key wrap (192) - ECDH_ES_A256KW = KeyAlgorithm("ECDH-ES+A256KW") // ECDH-ES + AES key wrap (256) - A128GCMKW = KeyAlgorithm("A128GCMKW") // AES-GCM key wrap (128) - A192GCMKW = KeyAlgorithm("A192GCMKW") // AES-GCM key wrap (192) - A256GCMKW = KeyAlgorithm("A256GCMKW") // AES-GCM key wrap (256) - PBES2_HS256_A128KW = KeyAlgorithm("PBES2-HS256+A128KW") // PBES2 + HMAC-SHA256 + AES key wrap (128) - PBES2_HS384_A192KW = KeyAlgorithm("PBES2-HS384+A192KW") // PBES2 + HMAC-SHA384 + AES key wrap (192) - PBES2_HS512_A256KW = KeyAlgorithm("PBES2-HS512+A256KW") // PBES2 + HMAC-SHA512 + AES key wrap (256) -) - -// Signature algorithms -const ( - HS256 = SignatureAlgorithm("HS256") // HMAC using SHA-256 - HS384 = SignatureAlgorithm("HS384") // HMAC using SHA-384 - HS512 = SignatureAlgorithm("HS512") // HMAC using SHA-512 - RS256 = SignatureAlgorithm("RS256") // RSASSA-PKCS-v1.5 using SHA-256 - RS384 = SignatureAlgorithm("RS384") // RSASSA-PKCS-v1.5 using SHA-384 - RS512 = SignatureAlgorithm("RS512") // RSASSA-PKCS-v1.5 using SHA-512 - ES256 = SignatureAlgorithm("ES256") // ECDSA using P-256 and SHA-256 - ES384 = SignatureAlgorithm("ES384") // ECDSA using P-384 and SHA-384 - ES512 = SignatureAlgorithm("ES512") // ECDSA using P-521 and SHA-512 - PS256 = SignatureAlgorithm("PS256") // RSASSA-PSS using SHA256 and MGF1-SHA256 - PS384 = SignatureAlgorithm("PS384") // RSASSA-PSS using SHA384 and MGF1-SHA384 - PS512 = SignatureAlgorithm("PS512") // RSASSA-PSS using SHA512 and MGF1-SHA512 -) - -// Content encryption algorithms -const ( - A128CBC_HS256 = ContentEncryption("A128CBC-HS256") // AES-CBC + HMAC-SHA256 (128) - A192CBC_HS384 = ContentEncryption("A192CBC-HS384") // AES-CBC + HMAC-SHA384 (192) - A256CBC_HS512 = ContentEncryption("A256CBC-HS512") // AES-CBC + HMAC-SHA512 (256) - A128GCM = ContentEncryption("A128GCM") // AES-GCM (128) - A192GCM = ContentEncryption("A192GCM") // AES-GCM (192) - A256GCM = ContentEncryption("A256GCM") // AES-GCM (256) -) - -// Compression algorithms -const ( - NONE = CompressionAlgorithm("") // No compression - DEFLATE = CompressionAlgorithm("DEF") // DEFLATE (RFC 1951) -) - -// rawHeader represents the JOSE header for JWE/JWS objects (used for parsing). -type rawHeader struct { - Alg string `json:"alg,omitempty"` - Enc ContentEncryption `json:"enc,omitempty"` - Zip CompressionAlgorithm `json:"zip,omitempty"` - Crit []string `json:"crit,omitempty"` - Apu *byteBuffer `json:"apu,omitempty"` - Apv *byteBuffer `json:"apv,omitempty"` - Epk *JsonWebKey `json:"epk,omitempty"` - Iv *byteBuffer `json:"iv,omitempty"` - Tag *byteBuffer `json:"tag,omitempty"` - Jwk *JsonWebKey `json:"jwk,omitempty"` - Kid string `json:"kid,omitempty"` - Nonce string `json:"nonce,omitempty"` -} - -// JoseHeader represents the read-only JOSE header for JWE/JWS objects. -type JoseHeader struct { - KeyID string - JsonWebKey *JsonWebKey - Algorithm string - Nonce string -} - -// sanitized produces a cleaned-up header object from the raw JSON. -func (parsed rawHeader) sanitized() JoseHeader { - return JoseHeader{ - KeyID: parsed.Kid, - JsonWebKey: parsed.Jwk, - Algorithm: parsed.Alg, - Nonce: parsed.Nonce, - } -} - -// Merge headers from src into dst, giving precedence to headers from l. -func (dst *rawHeader) merge(src *rawHeader) { - if src == nil { - return - } - - if dst.Alg == "" { - dst.Alg = src.Alg - } - if dst.Enc == "" { - dst.Enc = src.Enc - } - if dst.Zip == "" { - dst.Zip = src.Zip - } - if dst.Crit == nil { - dst.Crit = src.Crit - } - if dst.Crit == nil { - dst.Crit = src.Crit - } - if dst.Apu == nil { - dst.Apu = src.Apu - } - if dst.Apv == nil { - dst.Apv = src.Apv - } - if dst.Epk == nil { - dst.Epk = src.Epk - } - if dst.Iv == nil { - dst.Iv = src.Iv - } - if dst.Tag == nil { - dst.Tag = src.Tag - } - if dst.Kid == "" { - dst.Kid = src.Kid - } - if dst.Jwk == nil { - dst.Jwk = src.Jwk - } - if dst.Nonce == "" { - dst.Nonce = src.Nonce - } -} - -// Get JOSE name of curve -func curveName(crv elliptic.Curve) (string, error) { - switch crv { - case elliptic.P256(): - return "P-256", nil - case elliptic.P384(): - return "P-384", nil - case elliptic.P521(): - return "P-521", nil - default: - return "", fmt.Errorf("square/go-jose: unsupported/unknown elliptic curve") - } -} - -// Get size of curve in bytes -func curveSize(crv elliptic.Curve) int { - bits := crv.Params().BitSize - - div := bits / 8 - mod := bits % 8 - - if mod == 0 { - return div - } - - return div + 1 -} diff --git a/vendor/gopkg.in/square/go-jose.v1/signing.go b/vendor/gopkg.in/square/go-jose.v1/signing.go deleted file mode 100644 index e64f8ab8..00000000 --- a/vendor/gopkg.in/square/go-jose.v1/signing.go +++ /dev/null @@ -1,258 +0,0 @@ -/*- - * Copyright 2014 Square Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package jose - -import ( - "crypto/ecdsa" - "crypto/rsa" - "errors" - "fmt" -) - -// NonceSource represents a source of random nonces to go into JWS objects -type NonceSource interface { - Nonce() (string, error) -} - -// Signer represents a signer which takes a payload and produces a signed JWS object. -type Signer interface { - Sign(payload []byte) (*JsonWebSignature, error) - SetNonceSource(source NonceSource) - SetEmbedJwk(embed bool) -} - -// MultiSigner represents a signer which supports multiple recipients. -type MultiSigner interface { - Sign(payload []byte) (*JsonWebSignature, error) - SetNonceSource(source NonceSource) - SetEmbedJwk(embed bool) - AddRecipient(alg SignatureAlgorithm, signingKey interface{}) error -} - -type payloadSigner interface { - signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) -} - -type payloadVerifier interface { - verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error -} - -type genericSigner struct { - recipients []recipientSigInfo - nonceSource NonceSource - embedJwk bool -} - -type recipientSigInfo struct { - sigAlg SignatureAlgorithm - keyID string - publicKey *JsonWebKey - signer payloadSigner -} - -// NewSigner creates an appropriate signer based on the key type -func NewSigner(alg SignatureAlgorithm, signingKey interface{}) (Signer, error) { - // NewMultiSigner never fails (currently) - signer := NewMultiSigner() - - err := signer.AddRecipient(alg, signingKey) - if err != nil { - return nil, err - } - - return signer, nil -} - -// NewMultiSigner creates a signer for multiple recipients -func NewMultiSigner() MultiSigner { - return &genericSigner{ - recipients: []recipientSigInfo{}, - embedJwk: true, - } -} - -// newVerifier creates a verifier based on the key type -func newVerifier(verificationKey interface{}) (payloadVerifier, error) { - switch verificationKey := verificationKey.(type) { - case *rsa.PublicKey: - return &rsaEncrypterVerifier{ - publicKey: verificationKey, - }, nil - case *ecdsa.PublicKey: - return &ecEncrypterVerifier{ - publicKey: verificationKey, - }, nil - case []byte: - return &symmetricMac{ - key: verificationKey, - }, nil - case *JsonWebKey: - return newVerifier(verificationKey.Key) - default: - return nil, ErrUnsupportedKeyType - } -} - -func (ctx *genericSigner) AddRecipient(alg SignatureAlgorithm, signingKey interface{}) error { - recipient, err := makeJWSRecipient(alg, signingKey) - if err != nil { - return err - } - - ctx.recipients = append(ctx.recipients, recipient) - return nil -} - -func makeJWSRecipient(alg SignatureAlgorithm, signingKey interface{}) (recipientSigInfo, error) { - switch signingKey := signingKey.(type) { - case *rsa.PrivateKey: - return newRSASigner(alg, signingKey) - case *ecdsa.PrivateKey: - return newECDSASigner(alg, signingKey) - case []byte: - return newSymmetricSigner(alg, signingKey) - case *JsonWebKey: - recipient, err := makeJWSRecipient(alg, signingKey.Key) - if err != nil { - return recipientSigInfo{}, err - } - recipient.keyID = signingKey.KeyID - return recipient, nil - default: - return recipientSigInfo{}, ErrUnsupportedKeyType - } -} - -func (ctx *genericSigner) Sign(payload []byte) (*JsonWebSignature, error) { - obj := &JsonWebSignature{} - obj.payload = payload - obj.Signatures = make([]Signature, len(ctx.recipients)) - - for i, recipient := range ctx.recipients { - protected := &rawHeader{ - Alg: string(recipient.sigAlg), - } - - if recipient.publicKey != nil && ctx.embedJwk { - protected.Jwk = recipient.publicKey - } - if recipient.keyID != "" { - protected.Kid = recipient.keyID - } - - if ctx.nonceSource != nil { - nonce, err := ctx.nonceSource.Nonce() - if err != nil { - return nil, fmt.Errorf("square/go-jose: Error generating nonce: %v", err) - } - protected.Nonce = nonce - } - - serializedProtected := mustSerializeJSON(protected) - - input := []byte(fmt.Sprintf("%s.%s", - base64URLEncode(serializedProtected), - base64URLEncode(payload))) - - signatureInfo, err := recipient.signer.signPayload(input, recipient.sigAlg) - if err != nil { - return nil, err - } - - signatureInfo.protected = protected - obj.Signatures[i] = signatureInfo - } - - return obj, nil -} - -// SetNonceSource provides or updates a nonce pool to the first recipients. -// After this method is called, the signer will consume one nonce per -// signature, returning an error it is unable to get a nonce. -func (ctx *genericSigner) SetNonceSource(source NonceSource) { - ctx.nonceSource = source -} - -// SetEmbedJwk specifies if the signing key should be embedded in the protected -// header, if any. It defaults to 'true', though that may change in the future. -// Note that the use of embedded JWKs in the signature header can be dangerous, -// as you cannot assume that the key received in a payload is trusted. -func (ctx *genericSigner) SetEmbedJwk(embed bool) { - ctx.embedJwk = embed -} - -// Verify validates the signature on the object and returns the payload. -// This function does not support multi-signature, if you desire multi-sig -// verification use VerifyMulti instead. -// -// Be careful when verifying signatures based on embedded JWKs inside the -// payload header. You cannot assume that the key received in a payload is -// trusted. -func (obj JsonWebSignature) Verify(verificationKey interface{}) ([]byte, error) { - verifier, err := newVerifier(verificationKey) - if err != nil { - return nil, err - } - - if len(obj.Signatures) > 1 { - return nil, errors.New("square/go-jose: too many signatures in payload; expecting only one") - } - - signature := obj.Signatures[0] - headers := signature.mergedHeaders() - if len(headers.Crit) > 0 { - // Unsupported crit header - return nil, ErrCryptoFailure - } - - input := obj.computeAuthData(&signature) - alg := SignatureAlgorithm(headers.Alg) - err = verifier.verifyPayload(input, signature.Signature, alg) - if err == nil { - return obj.payload, nil - } - - return nil, ErrCryptoFailure -} - -// VerifyMulti validates (one of the multiple) signatures on the object and -// returns the index of the signature that was verified, along with the signature -// object and the payload. We return the signature and index to guarantee that -// callers are getting the verified value. -func (obj JsonWebSignature) VerifyMulti(verificationKey interface{}) (int, Signature, []byte, error) { - verifier, err := newVerifier(verificationKey) - if err != nil { - return -1, Signature{}, nil, err - } - - for i, signature := range obj.Signatures { - headers := signature.mergedHeaders() - if len(headers.Crit) > 0 { - // Unsupported crit header - continue - } - - input := obj.computeAuthData(&signature) - alg := SignatureAlgorithm(headers.Alg) - err := verifier.verifyPayload(input, signature.Signature, alg) - if err == nil { - return i, signature, obj.payload, nil - } - } - - return -1, Signature{}, nil, ErrCryptoFailure -} diff --git a/vendor/gopkg.in/square/go-jose.v1/utils.go b/vendor/gopkg.in/square/go-jose.v1/utils.go deleted file mode 100644 index 4ca2bc06..00000000 --- a/vendor/gopkg.in/square/go-jose.v1/utils.go +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * Copyright 2014 Square Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package jose - -import ( - "crypto/x509" - "encoding/pem" - "fmt" -) - -// LoadPublicKey loads a public key from PEM/DER-encoded data. -func LoadPublicKey(data []byte) (interface{}, error) { - input := data - - block, _ := pem.Decode(data) - if block != nil { - input = block.Bytes - } - - // Try to load SubjectPublicKeyInfo - pub, err0 := x509.ParsePKIXPublicKey(input) - if err0 == nil { - return pub, nil - } - - cert, err1 := x509.ParseCertificate(input) - if err1 == nil { - return cert.PublicKey, nil - } - - return nil, fmt.Errorf("square/go-jose: parse error, got '%s' and '%s'", err0, err1) -} - -// LoadPrivateKey loads a private key from PEM/DER-encoded data. -func LoadPrivateKey(data []byte) (interface{}, error) { - input := data - - block, _ := pem.Decode(data) - if block != nil { - input = block.Bytes - } - - var priv interface{} - priv, err0 := x509.ParsePKCS1PrivateKey(input) - if err0 == nil { - return priv, nil - } - - priv, err1 := x509.ParsePKCS8PrivateKey(input) - if err1 == nil { - return priv, nil - } - - priv, err2 := x509.ParseECPrivateKey(input) - if err2 == nil { - return priv, nil - } - - return nil, fmt.Errorf("square/go-jose: parse error, got '%s', '%s' and '%s'", err0, err1, err2) -} diff --git a/vendor/gopkg.in/square/go-jose.v1/.gitcookies.sh.enc b/vendor/gopkg.in/square/go-jose.v2/.gitcookies.sh.enc similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/.gitcookies.sh.enc rename to vendor/gopkg.in/square/go-jose.v2/.gitcookies.sh.enc diff --git a/vendor/gopkg.in/square/go-jose.v1/.gitignore b/vendor/gopkg.in/square/go-jose.v2/.gitignore similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/.gitignore rename to vendor/gopkg.in/square/go-jose.v2/.gitignore diff --git a/vendor/gopkg.in/square/go-jose.v1/.travis.yml b/vendor/gopkg.in/square/go-jose.v2/.travis.yml similarity index 82% rename from vendor/gopkg.in/square/go-jose.v1/.travis.yml rename to vendor/gopkg.in/square/go-jose.v2/.travis.yml index c38cd007..a84e99f7 100644 --- a/vendor/gopkg.in/square/go-jose.v1/.travis.yml +++ b/vendor/gopkg.in/square/go-jose.v2/.travis.yml @@ -8,14 +8,14 @@ matrix: - go: tip go: -- 1.3 -- 1.4 -- 1.5 -- 1.6 -- 1.7 -- tip +- '1.5.x' +- '1.6.x' +- '1.7.x' +- '1.8.x' +- '1.9.x' +- '1.10.x' -go_import_path: gopkg.in/square/go-jose.v1 +go_import_path: gopkg.in/square/go-jose.v2 before_script: - export PATH=$HOME/.local/bin:$PATH @@ -28,13 +28,15 @@ before_install: - bash .gitcookies.sh || true - go get github.com/wadey/gocovmerge - go get github.com/mattn/goveralls +- go get github.com/stretchr/testify/assert - go get golang.org/x/tools/cmd/cover || true - go get code.google.com/p/go.tools/cmd/cover || true -- pip install cram --user `whoami` +- pip install cram --user script: - go test . -v -covermode=count -coverprofile=profile.cov - go test ./cipher -v -covermode=count -coverprofile=cipher/profile.cov +- go test ./jwt -v -covermode=count -coverprofile=jwt/profile.cov - go test ./json -v # no coverage for forked encoding/json package - cd jose-util && go build && PATH=$PWD:$PATH cram -v jose-util.t - cd .. diff --git a/vendor/gopkg.in/square/go-jose.v1/BUG-BOUNTY.md b/vendor/gopkg.in/square/go-jose.v2/BUG-BOUNTY.md similarity index 84% rename from vendor/gopkg.in/square/go-jose.v1/BUG-BOUNTY.md rename to vendor/gopkg.in/square/go-jose.v2/BUG-BOUNTY.md index 97e61dbb..3305db0f 100644 --- a/vendor/gopkg.in/square/go-jose.v1/BUG-BOUNTY.md +++ b/vendor/gopkg.in/square/go-jose.v2/BUG-BOUNTY.md @@ -6,5 +6,5 @@ can make. We therefore encourage reporting security issues with the code contained in this repository. If you believe you have discovered a security vulnerability, please follow the -guidelines at . +guidelines at . diff --git a/vendor/gopkg.in/square/go-jose.v1/CONTRIBUTING.md b/vendor/gopkg.in/square/go-jose.v2/CONTRIBUTING.md similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/CONTRIBUTING.md rename to vendor/gopkg.in/square/go-jose.v2/CONTRIBUTING.md diff --git a/vendor/gopkg.in/square/go-jose.v1/LICENSE b/vendor/gopkg.in/square/go-jose.v2/LICENSE similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/LICENSE rename to vendor/gopkg.in/square/go-jose.v2/LICENSE diff --git a/vendor/gopkg.in/square/go-jose.v2/README.md b/vendor/gopkg.in/square/go-jose.v2/README.md new file mode 100644 index 00000000..1791bfa8 --- /dev/null +++ b/vendor/gopkg.in/square/go-jose.v2/README.md @@ -0,0 +1,118 @@ +# Go JOSE + +[![godoc](http://img.shields.io/badge/godoc-version_1-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v1) +[![godoc](http://img.shields.io/badge/godoc-version_2-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v2) +[![license](http://img.shields.io/badge/license-apache_2.0-blue.svg?style=flat)](https://raw.githubusercontent.com/square/go-jose/master/LICENSE) +[![build](https://travis-ci.org/square/go-jose.svg?branch=v2)](https://travis-ci.org/square/go-jose) +[![coverage](https://coveralls.io/repos/github/square/go-jose/badge.svg?branch=v2)](https://coveralls.io/r/square/go-jose) + +Package jose aims to provide an implementation of the Javascript Object Signing +and Encryption set of standards. This includes support for JSON Web Encryption, +JSON Web Signature, and JSON Web Token standards. + +**Disclaimer**: This library contains encryption software that is subject to +the U.S. Export Administration Regulations. You may not export, re-export, +transfer or download this code or any part of it in violation of any United +States law, directive or regulation. In particular this software may not be +exported or re-exported in any form or on any media to Iran, North Sudan, +Syria, Cuba, or North Korea, or to denied persons or entities mentioned on any +US maintained blocked list. + +## Overview + +The implementation follows the +[JSON Web Encryption](http://dx.doi.org/10.17487/RFC7516) (RFC 7516), +[JSON Web Signature](http://dx.doi.org/10.17487/RFC7515) (RFC 7515), and +[JSON Web Token](http://dx.doi.org/10.17487/RFC7519) (RFC 7519). +Tables of supported algorithms are shown below. The library supports both +the compact and full serialization formats, and has optional support for +multiple recipients. It also comes with a small command-line utility +([`jose-util`](https://github.com/square/go-jose/tree/v2/jose-util)) +for dealing with JOSE messages in a shell. + +**Note**: We use a forked version of the `encoding/json` package from the Go +standard library which uses case-sensitive matching for member names (instead +of [case-insensitive matching](https://www.ietf.org/mail-archive/web/json/current/msg03763.html)). +This is to avoid differences in interpretation of messages between go-jose and +libraries in other languages. + +### Versions + +We use [gopkg.in](https://gopkg.in) for versioning. + +[Version 2](https://gopkg.in/square/go-jose.v2) +([branch](https://github.com/square/go-jose/tree/v2), +[doc](https://godoc.org/gopkg.in/square/go-jose.v2)) is the current version: + + import "gopkg.in/square/go-jose.v2" + +The old `v1` branch ([go-jose.v1](https://gopkg.in/square/go-jose.v1)) will +still receive backported bug fixes and security fixes, but otherwise +development is frozen. All new feature development takes place on the `v2` +branch. Version 2 also contains additional sub-packages such as the +[jwt](https://godoc.org/gopkg.in/square/go-jose.v2/jwt) implementation +contributed by [@shaxbee](https://github.com/shaxbee). + +### Supported algorithms + +See below for a table of supported algorithms. Algorithm identifiers match +the names in the [JSON Web Algorithms](http://dx.doi.org/10.17487/RFC7518) +standard where possible. The Godoc reference has a list of constants. + + Key encryption | Algorithm identifier(s) + :------------------------- | :------------------------------ + RSA-PKCS#1v1.5 | RSA1_5 + RSA-OAEP | RSA-OAEP, RSA-OAEP-256 + AES key wrap | A128KW, A192KW, A256KW + AES-GCM key wrap | A128GCMKW, A192GCMKW, A256GCMKW + ECDH-ES + AES key wrap | ECDH-ES+A128KW, ECDH-ES+A192KW, ECDH-ES+A256KW + ECDH-ES (direct) | ECDH-ES1 + Direct encryption | dir1 + +1. Not supported in multi-recipient mode + + Signing / MAC | Algorithm identifier(s) + :------------------------- | :------------------------------ + RSASSA-PKCS#1v1.5 | RS256, RS384, RS512 + RSASSA-PSS | PS256, PS384, PS512 + HMAC | HS256, HS384, HS512 + ECDSA | ES256, ES384, ES512 + Ed25519 | EdDSA2 + +2. Only available in version 2 of the package + + Content encryption | Algorithm identifier(s) + :------------------------- | :------------------------------ + AES-CBC+HMAC | A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 + AES-GCM | A128GCM, A192GCM, A256GCM + + Compression | Algorithm identifiers(s) + :------------------------- | ------------------------------- + DEFLATE (RFC 1951) | DEF + +### Supported key types + +See below for a table of supported key types. These are understood by the +library, and can be passed to corresponding functions such as `NewEncrypter` or +`NewSigner`. Each of these keys can also be wrapped in a JWK if desired, which +allows attaching a key id. + + Algorithm(s) | Corresponding types + :------------------------- | ------------------------------- + RSA | *[rsa.PublicKey](http://golang.org/pkg/crypto/rsa/#PublicKey), *[rsa.PrivateKey](http://golang.org/pkg/crypto/rsa/#PrivateKey) + ECDH, ECDSA | *[ecdsa.PublicKey](http://golang.org/pkg/crypto/ecdsa/#PublicKey), *[ecdsa.PrivateKey](http://golang.org/pkg/crypto/ecdsa/#PrivateKey) + EdDSA1 | [ed25519.PublicKey](https://godoc.org/golang.org/x/crypto/ed25519#PublicKey), [ed25519.PrivateKey](https://godoc.org/golang.org/x/crypto/ed25519#PrivateKey) + AES, HMAC | []byte + +1. Only available in version 2 of the package + +## Examples + +[![godoc](http://img.shields.io/badge/godoc-version_1-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v1) +[![godoc](http://img.shields.io/badge/godoc-version_2-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v2) + +Examples can be found in the Godoc +reference for this package. The +[`jose-util`](https://github.com/square/go-jose/tree/v2/jose-util) +subdirectory also contains a small command-line utility which might be useful +as an example. diff --git a/vendor/gopkg.in/square/go-jose.v1/asymmetric.go b/vendor/gopkg.in/square/go-jose.v2/asymmetric.go similarity index 83% rename from vendor/gopkg.in/square/go-jose.v1/asymmetric.go rename to vendor/gopkg.in/square/go-jose.v2/asymmetric.go index cd36c21d..5272648f 100644 --- a/vendor/gopkg.in/square/go-jose.v1/asymmetric.go +++ b/vendor/gopkg.in/square/go-jose.v2/asymmetric.go @@ -28,7 +28,9 @@ import ( "fmt" "math/big" - "gopkg.in/square/go-jose.v1/cipher" + "golang.org/x/crypto/ed25519" + "gopkg.in/square/go-jose.v2/cipher" + "gopkg.in/square/go-jose.v2/json" ) // A generic RSA-based encrypter/verifier @@ -46,6 +48,10 @@ type ecEncrypterVerifier struct { publicKey *ecdsa.PublicKey } +type edEncrypterVerifier struct { + publicKey ed25519.PublicKey +} + // A key generator for ECDH-ES type ecKeyGenerator struct { size int @@ -58,6 +64,10 @@ type ecDecrypterSigner struct { privateKey *ecdsa.PrivateKey } +type edDecrypterSigner struct { + privateKey ed25519.PrivateKey +} + // newRSARecipient creates recipientKeyInfo based on the given key. func newRSARecipient(keyAlg KeyAlgorithm, publicKey *rsa.PublicKey) (recipientKeyInfo, error) { // Verify that key management algorithm is supported by this encrypter @@ -94,15 +104,34 @@ func newRSASigner(sigAlg SignatureAlgorithm, privateKey *rsa.PrivateKey) (recipi return recipientSigInfo{ sigAlg: sigAlg, - publicKey: &JsonWebKey{ - Key: &privateKey.PublicKey, - }, + publicKey: staticPublicKey(&JSONWebKey{ + Key: privateKey.Public(), + }), signer: &rsaDecrypterSigner{ privateKey: privateKey, }, }, nil } +func newEd25519Signer(sigAlg SignatureAlgorithm, privateKey ed25519.PrivateKey) (recipientSigInfo, error) { + if sigAlg != EdDSA { + return recipientSigInfo{}, ErrUnsupportedAlgorithm + } + + if privateKey == nil { + return recipientSigInfo{}, errors.New("invalid private key") + } + return recipientSigInfo{ + sigAlg: sigAlg, + publicKey: staticPublicKey(&JSONWebKey{ + Key: privateKey.Public(), + }), + signer: &edDecrypterSigner{ + privateKey: privateKey, + }, + }, nil +} + // newECDHRecipient creates recipientKeyInfo based on the given key. func newECDHRecipient(keyAlg KeyAlgorithm, publicKey *ecdsa.PublicKey) (recipientKeyInfo, error) { // Verify that key management algorithm is supported by this encrypter @@ -139,9 +168,9 @@ func newECDSASigner(sigAlg SignatureAlgorithm, privateKey *ecdsa.PrivateKey) (re return recipientSigInfo{ sigAlg: sigAlg, - publicKey: &JsonWebKey{ - Key: &privateKey.PublicKey, - }, + publicKey: staticPublicKey(&JSONWebKey{ + Key: privateKey.Public(), + }), signer: &ecDecrypterSigner{ privateKey: privateKey, }, @@ -178,7 +207,7 @@ func (ctx rsaEncrypterVerifier) encrypt(cek []byte, alg KeyAlgorithm) ([]byte, e // Decrypt the given payload and return the content encryption key. func (ctx rsaDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) { - return ctx.decrypt(recipient.encryptedKey, KeyAlgorithm(headers.Alg), generator) + return ctx.decrypt(recipient.encryptedKey, headers.getAlgorithm(), generator) } // Decrypt the given payload. Based on the key encryption algorithm, @@ -366,10 +395,15 @@ func (ctx ecKeyGenerator) genKey() ([]byte, rawHeader, error) { out := josecipher.DeriveECDHES(ctx.algID, []byte{}, []byte{}, priv, ctx.publicKey, ctx.size) + b, err := json.Marshal(&JSONWebKey{ + Key: &priv.PublicKey, + }) + if err != nil { + return nil, nil, err + } + headers := rawHeader{ - Epk: &JsonWebKey{ - Key: &priv.PublicKey, - }, + headerEPK: makeRawMessage(b), } return out, headers, nil @@ -377,11 +411,15 @@ func (ctx ecKeyGenerator) genKey() ([]byte, rawHeader, error) { // Decrypt the given payload and return the content encryption key. func (ctx ecDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) { - if headers.Epk == nil { + epk, err := headers.getEPK() + if err != nil { + return nil, errors.New("square/go-jose: invalid epk header") + } + if epk == nil { return nil, errors.New("square/go-jose: missing epk header") } - publicKey, ok := headers.Epk.Key.(*ecdsa.PublicKey) + publicKey, ok := epk.Key.(*ecdsa.PublicKey) if publicKey == nil || !ok { return nil, errors.New("square/go-jose: invalid epk header") } @@ -390,19 +428,26 @@ func (ctx ecDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientI return nil, errors.New("square/go-jose: invalid public key in epk header") } - apuData := headers.Apu.bytes() - apvData := headers.Apv.bytes() + apuData, err := headers.getAPU() + if err != nil { + return nil, errors.New("square/go-jose: invalid apu header") + } + apvData, err := headers.getAPV() + if err != nil { + return nil, errors.New("square/go-jose: invalid apv header") + } deriveKey := func(algID string, size int) []byte { - return josecipher.DeriveECDHES(algID, apuData, apvData, ctx.privateKey, publicKey, size) + return josecipher.DeriveECDHES(algID, apuData.bytes(), apvData.bytes(), ctx.privateKey, publicKey, size) } var keySize int - switch KeyAlgorithm(headers.Alg) { + algorithm := headers.getAlgorithm() + switch algorithm { case ECDH_ES: // ECDH-ES uses direct key agreement, no key unwrapping necessary. - return deriveKey(string(headers.Enc), generator.keySize()), nil + return deriveKey(string(headers.getEncryption()), generator.keySize()), nil case ECDH_ES_A128KW: keySize = 16 case ECDH_ES_A192KW: @@ -413,7 +458,7 @@ func (ctx ecDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientI return nil, ErrUnsupportedAlgorithm } - key := deriveKey(headers.Alg, keySize) + key := deriveKey(string(algorithm), keySize) block, err := aes.NewCipher(key) if err != nil { return nil, err @@ -422,6 +467,33 @@ func (ctx ecDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientI return josecipher.KeyUnwrap(block, recipient.encryptedKey) } +func (ctx edDecrypterSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) { + if alg != EdDSA { + return Signature{}, ErrUnsupportedAlgorithm + } + + sig, err := ctx.privateKey.Sign(randReader, payload, crypto.Hash(0)) + if err != nil { + return Signature{}, err + } + + return Signature{ + Signature: sig, + protected: &rawHeader{}, + }, nil +} + +func (ctx edEncrypterVerifier) verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error { + if alg != EdDSA { + return ErrUnsupportedAlgorithm + } + ok := ed25519.Verify(ctx.publicKey, payload, signature) + if !ok { + return errors.New("square/go-jose: ed25519 signature failed to verify") + } + return nil +} + // Sign the given payload func (ctx ecDecrypterSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) { var expectedBitSize int @@ -457,10 +529,10 @@ func (ctx ecDecrypterSigner) signPayload(payload []byte, alg SignatureAlgorithm) keyBytes := curveBits / 8 if curveBits%8 > 0 { - keyBytes += 1 + keyBytes++ } - // We serialize the outpus (r and s) into big-endian byte arrays and pad + // We serialize the outputs (r and s) into big-endian byte arrays and pad // them with zeros on the left to make sure the sizes work out. Both arrays // must be keyBytes long, and the output must be 2*keyBytes long. rBytes := r.Bytes() diff --git a/vendor/gopkg.in/square/go-jose.v1/cipher/cbc_hmac.go b/vendor/gopkg.in/square/go-jose.v2/cipher/cbc_hmac.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/cipher/cbc_hmac.go rename to vendor/gopkg.in/square/go-jose.v2/cipher/cbc_hmac.go diff --git a/vendor/gopkg.in/square/go-jose.v1/cipher/concat_kdf.go b/vendor/gopkg.in/square/go-jose.v2/cipher/concat_kdf.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/cipher/concat_kdf.go rename to vendor/gopkg.in/square/go-jose.v2/cipher/concat_kdf.go diff --git a/vendor/gopkg.in/square/go-jose.v1/cipher/ecdh_es.go b/vendor/gopkg.in/square/go-jose.v2/cipher/ecdh_es.go similarity index 96% rename from vendor/gopkg.in/square/go-jose.v1/cipher/ecdh_es.go rename to vendor/gopkg.in/square/go-jose.v2/cipher/ecdh_es.go index f23d49e1..c128e327 100644 --- a/vendor/gopkg.in/square/go-jose.v1/cipher/ecdh_es.go +++ b/vendor/gopkg.in/square/go-jose.v2/cipher/ecdh_es.go @@ -28,7 +28,7 @@ import ( // size may be at most 1<<16 bytes (64 KiB). func DeriveECDHES(alg string, apuData, apvData []byte, priv *ecdsa.PrivateKey, pub *ecdsa.PublicKey, size int) []byte { if size > 1<<16 { - panic("ECDH-ES output size too large, must be less than 1<<16") + panic("ECDH-ES output size too large, must be less than or equal to 1<<16") } // algId, partyUInfo, partyVInfo inputs must be prefixed with the length diff --git a/vendor/gopkg.in/square/go-jose.v1/cipher/key_wrap.go b/vendor/gopkg.in/square/go-jose.v2/cipher/key_wrap.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/cipher/key_wrap.go rename to vendor/gopkg.in/square/go-jose.v2/cipher/key_wrap.go diff --git a/vendor/gopkg.in/square/go-jose.v1/crypter.go b/vendor/gopkg.in/square/go-jose.v2/crypter.go similarity index 55% rename from vendor/gopkg.in/square/go-jose.v1/crypter.go rename to vendor/gopkg.in/square/go-jose.v2/crypter.go index b3bdaec8..9ee44f8b 100644 --- a/vendor/gopkg.in/square/go-jose.v1/crypter.go +++ b/vendor/gopkg.in/square/go-jose.v2/crypter.go @@ -22,21 +22,15 @@ import ( "errors" "fmt" "reflect" + + "gopkg.in/square/go-jose.v2/json" ) // Encrypter represents an encrypter which produces an encrypted JWE object. type Encrypter interface { - Encrypt(plaintext []byte) (*JsonWebEncryption, error) - EncryptWithAuthData(plaintext []byte, aad []byte) (*JsonWebEncryption, error) - SetCompression(alg CompressionAlgorithm) -} - -// MultiEncrypter represents an encrypter which supports multiple recipients. -type MultiEncrypter interface { - Encrypt(plaintext []byte) (*JsonWebEncryption, error) - EncryptWithAuthData(plaintext []byte, aad []byte) (*JsonWebEncryption, error) - SetCompression(alg CompressionAlgorithm) - AddRecipient(alg KeyAlgorithm, encryptionKey interface{}) error + Encrypt(plaintext []byte) (*JSONWebEncryption, error) + EncryptWithAuthData(plaintext []byte, aad []byte) (*JSONWebEncryption, error) + Options() EncrypterOptions } // A generic content cipher @@ -69,6 +63,7 @@ type genericEncrypter struct { cipher contentCipher recipients []recipientKeyInfo keyGenerator keyGenerator + extraHeaders map[HeaderKey]interface{} } type recipientKeyInfo struct { @@ -77,18 +72,62 @@ type recipientKeyInfo struct { keyEncrypter keyEncrypter } -// SetCompression sets a compression algorithm to be applied before encryption. -func (ctx *genericEncrypter) SetCompression(compressionAlg CompressionAlgorithm) { - ctx.compressionAlg = compressionAlg +// EncrypterOptions represents options that can be set on new encrypters. +type EncrypterOptions struct { + Compression CompressionAlgorithm + + // Optional map of additional keys to be inserted into the protected header + // of a JWS object. Some specifications which make use of JWS like to insert + // additional values here. All values must be JSON-serializable. + ExtraHeaders map[HeaderKey]interface{} +} + +// WithHeader adds an arbitrary value to the ExtraHeaders map, initializing it +// if necessary. It returns itself and so can be used in a fluent style. +func (eo *EncrypterOptions) WithHeader(k HeaderKey, v interface{}) *EncrypterOptions { + if eo.ExtraHeaders == nil { + eo.ExtraHeaders = map[HeaderKey]interface{}{} + } + eo.ExtraHeaders[k] = v + return eo +} + +// WithContentType adds a content type ("cty") header and returns the updated +// EncrypterOptions. +func (eo *EncrypterOptions) WithContentType(contentType ContentType) *EncrypterOptions { + return eo.WithHeader(HeaderContentType, contentType) +} + +// WithType adds a type ("typ") header and returns the updated EncrypterOptions. +func (eo *EncrypterOptions) WithType(typ ContentType) *EncrypterOptions { + return eo.WithHeader(HeaderType, typ) +} + +// Recipient represents an algorithm/key to encrypt messages to. +// +// PBES2Count and PBES2Salt correspond with the "p2c" and "p2s" headers used +// on the password-based encryption algorithms PBES2-HS256+A128KW, +// PBES2-HS384+A192KW, and PBES2-HS512+A256KW. If they are not provided a safe +// default of 100000 will be used for the count and a 128-bit random salt will +// be generated. +type Recipient struct { + Algorithm KeyAlgorithm + Key interface{} + KeyID string + PBES2Count int + PBES2Salt []byte } // NewEncrypter creates an appropriate encrypter based on the key type -func NewEncrypter(alg KeyAlgorithm, enc ContentEncryption, encryptionKey interface{}) (Encrypter, error) { +func NewEncrypter(enc ContentEncryption, rcpt Recipient, opts *EncrypterOptions) (Encrypter, error) { encrypter := &genericEncrypter{ - contentAlg: enc, - compressionAlg: NONE, - recipients: []recipientKeyInfo{}, - cipher: getContentCipher(enc), + contentAlg: enc, + recipients: []recipientKeyInfo{}, + cipher: getContentCipher(enc), + } + if opts != nil { + encrypter.compressionAlg = opts.Compression + encrypter.extraHeaders = opts.ExtraHeaders } if encrypter.cipher == nil { @@ -97,15 +136,16 @@ func NewEncrypter(alg KeyAlgorithm, enc ContentEncryption, encryptionKey interfa var keyID string var rawKey interface{} - switch encryptionKey := encryptionKey.(type) { - case *JsonWebKey: - keyID = encryptionKey.KeyID - rawKey = encryptionKey.Key + switch encryptionKey := rcpt.Key.(type) { + case JSONWebKey: + keyID, rawKey = encryptionKey.KeyID, encryptionKey.Key + case *JSONWebKey: + keyID, rawKey = encryptionKey.KeyID, encryptionKey.Key default: rawKey = encryptionKey } - switch alg { + switch rcpt.Algorithm { case DIRECT: // Direct encryption mode must be treated differently if reflect.TypeOf(rawKey) != reflect.TypeOf([]byte{}) { @@ -114,11 +154,12 @@ func NewEncrypter(alg KeyAlgorithm, enc ContentEncryption, encryptionKey interfa encrypter.keyGenerator = staticKeyGenerator{ key: rawKey.([]byte), } - recipient, _ := newSymmetricRecipient(alg, rawKey.([]byte)) - if keyID != "" { - recipient.keyID = keyID + recipientInfo, _ := newSymmetricRecipient(rcpt.Algorithm, rawKey.([]byte)) + recipientInfo.keyID = keyID + if rcpt.KeyID != "" { + recipientInfo.keyID = rcpt.KeyID } - encrypter.recipients = []recipientKeyInfo{recipient} + encrypter.recipients = []recipientKeyInfo{recipientInfo} return encrypter, nil case ECDH_ES: // ECDH-ES (w/o key wrapping) is similar to DIRECT mode @@ -131,55 +172,80 @@ func NewEncrypter(alg KeyAlgorithm, enc ContentEncryption, encryptionKey interfa algID: string(enc), publicKey: rawKey.(*ecdsa.PublicKey), } - recipient, _ := newECDHRecipient(alg, rawKey.(*ecdsa.PublicKey)) - if keyID != "" { - recipient.keyID = keyID + recipientInfo, _ := newECDHRecipient(rcpt.Algorithm, rawKey.(*ecdsa.PublicKey)) + recipientInfo.keyID = keyID + if rcpt.KeyID != "" { + recipientInfo.keyID = rcpt.KeyID } - encrypter.recipients = []recipientKeyInfo{recipient} + encrypter.recipients = []recipientKeyInfo{recipientInfo} return encrypter, nil default: // Can just add a standard recipient encrypter.keyGenerator = randomKeyGenerator{ size: encrypter.cipher.keySize(), } - err := encrypter.AddRecipient(alg, encryptionKey) + err := encrypter.addRecipient(rcpt) return encrypter, err } } // NewMultiEncrypter creates a multi-encrypter based on the given parameters -func NewMultiEncrypter(enc ContentEncryption) (MultiEncrypter, error) { +func NewMultiEncrypter(enc ContentEncryption, rcpts []Recipient, opts *EncrypterOptions) (Encrypter, error) { cipher := getContentCipher(enc) if cipher == nil { return nil, ErrUnsupportedAlgorithm } + if rcpts == nil || len(rcpts) == 0 { + return nil, fmt.Errorf("square/go-jose: recipients is nil or empty") + } encrypter := &genericEncrypter{ - contentAlg: enc, - compressionAlg: NONE, - recipients: []recipientKeyInfo{}, - cipher: cipher, + contentAlg: enc, + recipients: []recipientKeyInfo{}, + cipher: cipher, keyGenerator: randomKeyGenerator{ size: cipher.keySize(), }, } + if opts != nil { + encrypter.compressionAlg = opts.Compression + } + + for _, recipient := range rcpts { + err := encrypter.addRecipient(recipient) + if err != nil { + return nil, err + } + } + return encrypter, nil } -func (ctx *genericEncrypter) AddRecipient(alg KeyAlgorithm, encryptionKey interface{}) (err error) { - var recipient recipientKeyInfo +func (ctx *genericEncrypter) addRecipient(recipient Recipient) (err error) { + var recipientInfo recipientKeyInfo - switch alg { + switch recipient.Algorithm { case DIRECT, ECDH_ES: - return fmt.Errorf("square/go-jose: key algorithm '%s' not supported in multi-recipient mode", alg) + return fmt.Errorf("square/go-jose: key algorithm '%s' not supported in multi-recipient mode", recipient.Algorithm) } - recipient, err = makeJWERecipient(alg, encryptionKey) + recipientInfo, err = makeJWERecipient(recipient.Algorithm, recipient.Key) + if recipient.KeyID != "" { + recipientInfo.keyID = recipient.KeyID + } + + switch recipient.Algorithm { + case PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW: + if sr, ok := recipientInfo.keyEncrypter.(*symmetricKeyCipher); ok { + sr.p2c = recipient.PBES2Count + sr.p2s = recipient.PBES2Salt + } + } if err == nil { - ctx.recipients = append(ctx.recipients, recipient) + ctx.recipients = append(ctx.recipients, recipientInfo) } return err } @@ -192,11 +258,11 @@ func makeJWERecipient(alg KeyAlgorithm, encryptionKey interface{}) (recipientKey return newECDHRecipient(alg, encryptionKey) case []byte: return newSymmetricRecipient(alg, encryptionKey) - case *JsonWebKey: + case string: + return newSymmetricRecipient(alg, []byte(encryptionKey)) + case *JSONWebKey: recipient, err := makeJWERecipient(alg, encryptionKey.Key) - if err == nil && encryptionKey.KeyID != "" { - recipient.keyID = encryptionKey.KeyID - } + recipient.keyID = encryptionKey.KeyID return recipient, err default: return recipientKeyInfo{}, ErrUnsupportedKeyType @@ -218,7 +284,13 @@ func newDecrypter(decryptionKey interface{}) (keyDecrypter, error) { return &symmetricKeyCipher{ key: decryptionKey, }, nil - case *JsonWebKey: + case string: + return &symmetricKeyCipher{ + key: []byte(decryptionKey), + }, nil + case JSONWebKey: + return newDecrypter(decryptionKey.Key) + case *JSONWebKey: return newDecrypter(decryptionKey.Key) default: return nil, ErrUnsupportedKeyType @@ -226,18 +298,21 @@ func newDecrypter(decryptionKey interface{}) (keyDecrypter, error) { } // Implementation of encrypt method producing a JWE object. -func (ctx *genericEncrypter) Encrypt(plaintext []byte) (*JsonWebEncryption, error) { +func (ctx *genericEncrypter) Encrypt(plaintext []byte) (*JSONWebEncryption, error) { return ctx.EncryptWithAuthData(plaintext, nil) } // Implementation of encrypt method producing a JWE object. -func (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JsonWebEncryption, error) { - obj := &JsonWebEncryption{} +func (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JSONWebEncryption, error) { + obj := &JSONWebEncryption{} obj.aad = aad - obj.protected = &rawHeader{ - Enc: ctx.contentAlg, + obj.protected = &rawHeader{} + err := obj.protected.set(headerEncryption, ctx.contentAlg) + if err != nil { + return nil, err } + obj.recipients = make([]recipientInfo, len(ctx.recipients)) if len(ctx.recipients) == 0 { @@ -257,9 +332,16 @@ func (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JsonWe return nil, err } - recipient.header.Alg = string(info.keyAlg) + err = recipient.header.set(headerAlgorithm, info.keyAlg) + if err != nil { + return nil, err + } + if info.keyID != "" { - recipient.header.Kid = info.keyID + err = recipient.header.set(headerKeyID, info.keyID) + if err != nil { + return nil, err + } } obj.recipients[i] = recipient } @@ -277,7 +359,18 @@ func (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JsonWe return nil, err } - obj.protected.Zip = ctx.compressionAlg + err = obj.protected.set(headerCompression, ctx.compressionAlg) + if err != nil { + return nil, err + } + } + + for k, v := range ctx.extraHeaders { + b, err := json.Marshal(v) + if err != nil { + return nil, err + } + (*obj.protected)[k] = makeRawMessage(b) } authData := obj.computeAuthData() @@ -293,17 +386,29 @@ func (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JsonWe return obj, nil } +func (ctx *genericEncrypter) Options() EncrypterOptions { + return EncrypterOptions{ + Compression: ctx.compressionAlg, + ExtraHeaders: ctx.extraHeaders, + } +} + // Decrypt and validate the object and return the plaintext. Note that this // function does not support multi-recipient, if you desire multi-recipient // decryption use DecryptMulti instead. -func (obj JsonWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) { +func (obj JSONWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) { headers := obj.mergedHeaders(nil) if len(obj.recipients) > 1 { return nil, errors.New("square/go-jose: too many recipients in payload; expecting only one") } - if len(headers.Crit) > 0 { + critical, err := headers.getCritical() + if err != nil { + return nil, fmt.Errorf("square/go-jose: invalid crit header") + } + + if len(critical) > 0 { return nil, fmt.Errorf("square/go-jose: unsupported crit header") } @@ -312,9 +417,9 @@ func (obj JsonWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) return nil, err } - cipher := getContentCipher(headers.Enc) + cipher := getContentCipher(headers.getEncryption()) if cipher == nil { - return nil, fmt.Errorf("square/go-jose: unsupported enc value '%s'", string(headers.Enc)) + return nil, fmt.Errorf("square/go-jose: unsupported enc value '%s'", string(headers.getEncryption())) } generator := randomKeyGenerator{ @@ -344,8 +449,8 @@ func (obj JsonWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) } // The "zip" header parameter may only be present in the protected header. - if obj.protected.Zip != "" { - plaintext, err = decompress(obj.protected.Zip, plaintext) + if comp := obj.protected.getCompression(); comp != "" { + plaintext, err = decompress(comp, plaintext) } return plaintext, err @@ -355,21 +460,27 @@ func (obj JsonWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) // with support for multiple recipients. It returns the index of the recipient // for which the decryption was successful, the merged headers for that recipient, // and the plaintext. -func (obj JsonWebEncryption) DecryptMulti(decryptionKey interface{}) (int, JoseHeader, []byte, error) { +func (obj JSONWebEncryption) DecryptMulti(decryptionKey interface{}) (int, Header, []byte, error) { globalHeaders := obj.mergedHeaders(nil) - if len(globalHeaders.Crit) > 0 { - return -1, JoseHeader{}, nil, fmt.Errorf("square/go-jose: unsupported crit header") + critical, err := globalHeaders.getCritical() + if err != nil { + return -1, Header{}, nil, fmt.Errorf("square/go-jose: invalid crit header") + } + + if len(critical) > 0 { + return -1, Header{}, nil, fmt.Errorf("square/go-jose: unsupported crit header") } decrypter, err := newDecrypter(decryptionKey) if err != nil { - return -1, JoseHeader{}, nil, err + return -1, Header{}, nil, err } - cipher := getContentCipher(globalHeaders.Enc) + encryption := globalHeaders.getEncryption() + cipher := getContentCipher(encryption) if cipher == nil { - return -1, JoseHeader{}, nil, fmt.Errorf("square/go-jose: unsupported enc value '%s'", string(globalHeaders.Enc)) + return -1, Header{}, nil, fmt.Errorf("square/go-jose: unsupported enc value '%s'", string(encryption)) } generator := randomKeyGenerator{ @@ -404,13 +515,18 @@ func (obj JsonWebEncryption) DecryptMulti(decryptionKey interface{}) (int, JoseH } if plaintext == nil || err != nil { - return -1, JoseHeader{}, nil, ErrCryptoFailure + return -1, Header{}, nil, ErrCryptoFailure } // The "zip" header parameter may only be present in the protected header. - if obj.protected.Zip != "" { - plaintext, err = decompress(obj.protected.Zip, plaintext) + if comp := obj.protected.getCompression(); comp != "" { + plaintext, err = decompress(comp, plaintext) } - return index, headers.sanitized(), plaintext, err + sanitized, err := headers.sanitized() + if err != nil { + return -1, Header{}, nil, fmt.Errorf("square/go-jose: failed to sanitize header: %v", err) + } + + return index, sanitized, plaintext, err } diff --git a/vendor/gopkg.in/square/go-jose.v1/doc.go b/vendor/gopkg.in/square/go-jose.v2/doc.go similarity index 67% rename from vendor/gopkg.in/square/go-jose.v1/doc.go rename to vendor/gopkg.in/square/go-jose.v2/doc.go index b4cd1e98..dd1387f3 100644 --- a/vendor/gopkg.in/square/go-jose.v1/doc.go +++ b/vendor/gopkg.in/square/go-jose.v2/doc.go @@ -17,10 +17,11 @@ /* Package jose aims to provide an implementation of the Javascript Object Signing -and Encryption set of standards. For the moment, it mainly focuses on -encryption and signing based on the JSON Web Encryption and JSON Web Signature -standards. The library supports both the compact and full serialization -formats, and has optional support for multiple recipients. +and Encryption set of standards. It implements encryption and signing based on +the JSON Web Encryption and JSON Web Signature standards, with optional JSON +Web Token support available in a sub-package. The library supports both the +compact and full serialization formats, and has optional support for multiple +recipients. */ -package jose // import "gopkg.in/square/go-jose.v1" +package jose diff --git a/vendor/gopkg.in/square/go-jose.v1/encoding.go b/vendor/gopkg.in/square/go-jose.v2/encoding.go similarity index 89% rename from vendor/gopkg.in/square/go-jose.v1/encoding.go rename to vendor/gopkg.in/square/go-jose.v2/encoding.go index dde0a42d..b9687c64 100644 --- a/vendor/gopkg.in/square/go-jose.v1/encoding.go +++ b/vendor/gopkg.in/square/go-jose.v2/encoding.go @@ -24,26 +24,12 @@ import ( "io" "math/big" "regexp" - "strings" - "gopkg.in/square/go-jose.v1/json" + "gopkg.in/square/go-jose.v2/json" ) var stripWhitespaceRegex = regexp.MustCompile("\\s") -// Url-safe base64 encode that strips padding -func base64URLEncode(data []byte) string { - var result = base64.URLEncoding.EncodeToString(data) - return strings.TrimRight(result, "=") -} - -// Url-safe base64 decoder that adds padding -func base64URLDecode(data string) ([]byte, error) { - var missing = (4 - len(data)%4) % 4 - data += strings.Repeat("=", missing) - return base64.URLEncoding.DecodeString(data) -} - // Helper function to serialize known-good objects. // Precondition: value is not a nil pointer. func mustSerializeJSON(value interface{}) []byte { @@ -162,7 +148,7 @@ func (b *byteBuffer) UnmarshalJSON(data []byte) error { return nil } - decoded, err := base64URLDecode(encoded) + decoded, err := base64.RawURLEncoding.DecodeString(encoded) if err != nil { return err } @@ -173,7 +159,7 @@ func (b *byteBuffer) UnmarshalJSON(data []byte) error { } func (b *byteBuffer) base64() string { - return base64URLEncode(b.data) + return base64.RawURLEncoding.EncodeToString(b.data) } func (b *byteBuffer) bytes() []byte { diff --git a/vendor/gopkg.in/square/go-jose.v1/json/LICENSE b/vendor/gopkg.in/square/go-jose.v2/json/LICENSE similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/LICENSE rename to vendor/gopkg.in/square/go-jose.v2/json/LICENSE diff --git a/vendor/gopkg.in/square/go-jose.v1/json/README.md b/vendor/gopkg.in/square/go-jose.v2/json/README.md similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/README.md rename to vendor/gopkg.in/square/go-jose.v2/json/README.md diff --git a/vendor/gopkg.in/square/go-jose.v1/json/decode.go b/vendor/gopkg.in/square/go-jose.v2/json/decode.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/decode.go rename to vendor/gopkg.in/square/go-jose.v2/json/decode.go diff --git a/vendor/gopkg.in/square/go-jose.v1/json/encode.go b/vendor/gopkg.in/square/go-jose.v2/json/encode.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/encode.go rename to vendor/gopkg.in/square/go-jose.v2/json/encode.go diff --git a/vendor/gopkg.in/square/go-jose.v1/json/indent.go b/vendor/gopkg.in/square/go-jose.v2/json/indent.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/indent.go rename to vendor/gopkg.in/square/go-jose.v2/json/indent.go diff --git a/vendor/gopkg.in/square/go-jose.v1/json/scanner.go b/vendor/gopkg.in/square/go-jose.v2/json/scanner.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/scanner.go rename to vendor/gopkg.in/square/go-jose.v2/json/scanner.go diff --git a/vendor/gopkg.in/square/go-jose.v1/json/stream.go b/vendor/gopkg.in/square/go-jose.v2/json/stream.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/stream.go rename to vendor/gopkg.in/square/go-jose.v2/json/stream.go diff --git a/vendor/gopkg.in/square/go-jose.v1/json/tags.go b/vendor/gopkg.in/square/go-jose.v2/json/tags.go similarity index 100% rename from vendor/gopkg.in/square/go-jose.v1/json/tags.go rename to vendor/gopkg.in/square/go-jose.v2/json/tags.go diff --git a/vendor/gopkg.in/square/go-jose.v1/jwe.go b/vendor/gopkg.in/square/go-jose.v2/jwe.go similarity index 69% rename from vendor/gopkg.in/square/go-jose.v1/jwe.go rename to vendor/gopkg.in/square/go-jose.v2/jwe.go index 7eb8956d..b5a6dcdf 100644 --- a/vendor/gopkg.in/square/go-jose.v1/jwe.go +++ b/vendor/gopkg.in/square/go-jose.v2/jwe.go @@ -17,14 +17,15 @@ package jose import ( + "encoding/base64" "fmt" "strings" - "gopkg.in/square/go-jose.v1/json" + "gopkg.in/square/go-jose.v2/json" ) -// rawJsonWebEncryption represents a raw JWE JSON object. Used for parsing/serializing. -type rawJsonWebEncryption struct { +// rawJSONWebEncryption represents a raw JWE JSON object. Used for parsing/serializing. +type rawJSONWebEncryption struct { Protected *byteBuffer `json:"protected,omitempty"` Unprotected *rawHeader `json:"unprotected,omitempty"` Header *rawHeader `json:"header,omitempty"` @@ -42,13 +43,13 @@ type rawRecipientInfo struct { EncryptedKey string `json:"encrypted_key,omitempty"` } -// JsonWebEncryption represents an encrypted JWE object after parsing. -type JsonWebEncryption struct { - Header JoseHeader +// JSONWebEncryption represents an encrypted JWE object after parsing. +type JSONWebEncryption struct { + Header Header protected, unprotected *rawHeader recipients []recipientInfo aad, iv, ciphertext, tag []byte - original *rawJsonWebEncryption + original *rawJSONWebEncryption } // recipientInfo represents a raw JWE Per-Recipient header JSON object after parsing. @@ -58,7 +59,7 @@ type recipientInfo struct { } // GetAuthData retrieves the (optional) authenticated data attached to the object. -func (obj JsonWebEncryption) GetAuthData() []byte { +func (obj JSONWebEncryption) GetAuthData() []byte { if obj.aad != nil { out := make([]byte, len(obj.aad)) copy(out, obj.aad) @@ -69,7 +70,7 @@ func (obj JsonWebEncryption) GetAuthData() []byte { } // Get the merged header values -func (obj JsonWebEncryption) mergedHeaders(recipient *recipientInfo) rawHeader { +func (obj JSONWebEncryption) mergedHeaders(recipient *recipientInfo) rawHeader { out := rawHeader{} out.merge(obj.protected) out.merge(obj.unprotected) @@ -82,26 +83,28 @@ func (obj JsonWebEncryption) mergedHeaders(recipient *recipientInfo) rawHeader { } // Get the additional authenticated data from a JWE object. -func (obj JsonWebEncryption) computeAuthData() []byte { +func (obj JSONWebEncryption) computeAuthData() []byte { var protected string - if obj.original != nil { + if obj.original != nil && obj.original.Protected != nil { protected = obj.original.Protected.base64() + } else if obj.protected != nil { + protected = base64.RawURLEncoding.EncodeToString(mustSerializeJSON((obj.protected))) } else { - protected = base64URLEncode(mustSerializeJSON((obj.protected))) + protected = "" } output := []byte(protected) if obj.aad != nil { output = append(output, '.') - output = append(output, []byte(base64URLEncode(obj.aad))...) + output = append(output, []byte(base64.RawURLEncoding.EncodeToString(obj.aad))...) } return output } // ParseEncrypted parses an encrypted message in compact or full serialization format. -func ParseEncrypted(input string) (*JsonWebEncryption, error) { +func ParseEncrypted(input string) (*JSONWebEncryption, error) { input = stripWhitespace(input) if strings.HasPrefix(input, "{") { return parseEncryptedFull(input) @@ -111,8 +114,8 @@ func ParseEncrypted(input string) (*JsonWebEncryption, error) { } // parseEncryptedFull parses a message in compact format. -func parseEncryptedFull(input string) (*JsonWebEncryption, error) { - var parsed rawJsonWebEncryption +func parseEncryptedFull(input string) (*JSONWebEncryption, error) { + var parsed rawJSONWebEncryption err := json.Unmarshal([]byte(input), &parsed) if err != nil { return nil, err @@ -122,16 +125,22 @@ func parseEncryptedFull(input string) (*JsonWebEncryption, error) { } // sanitized produces a cleaned-up JWE object from the raw JSON. -func (parsed *rawJsonWebEncryption) sanitized() (*JsonWebEncryption, error) { - obj := &JsonWebEncryption{ +func (parsed *rawJSONWebEncryption) sanitized() (*JSONWebEncryption, error) { + obj := &JSONWebEncryption{ original: parsed, unprotected: parsed.Unprotected, } // Check that there is not a nonce in the unprotected headers - if (parsed.Unprotected != nil && parsed.Unprotected.Nonce != "") || - (parsed.Header != nil && parsed.Header.Nonce != "") { - return nil, ErrUnprotectedNonce + if parsed.Unprotected != nil { + if nonce := parsed.Unprotected.getNonce(); nonce != "" { + return nil, ErrUnprotectedNonce + } + } + if parsed.Header != nil { + if nonce := parsed.Header.getNonce(); nonce != "" { + return nil, ErrUnprotectedNonce + } } if parsed.Protected != nil && len(parsed.Protected.bytes()) > 0 { @@ -143,11 +152,16 @@ func (parsed *rawJsonWebEncryption) sanitized() (*JsonWebEncryption, error) { // Note: this must be called _after_ we parse the protected header, // otherwise fields from the protected header will not get picked up. - obj.Header = obj.mergedHeaders(nil).sanitized() + var err error + mergedHeaders := obj.mergedHeaders(nil) + obj.Header, err = mergedHeaders.sanitized() + if err != nil { + return nil, fmt.Errorf("square/go-jose: cannot sanitize merged headers: %v (%v)", err, mergedHeaders) + } if len(parsed.Recipients) == 0 { obj.recipients = []recipientInfo{ - recipientInfo{ + { header: parsed.Header, encryptedKey: parsed.EncryptedKey.bytes(), }, @@ -155,13 +169,13 @@ func (parsed *rawJsonWebEncryption) sanitized() (*JsonWebEncryption, error) { } else { obj.recipients = make([]recipientInfo, len(parsed.Recipients)) for r := range parsed.Recipients { - encryptedKey, err := base64URLDecode(parsed.Recipients[r].EncryptedKey) + encryptedKey, err := base64.RawURLEncoding.DecodeString(parsed.Recipients[r].EncryptedKey) if err != nil { return nil, err } // Check that there is not a nonce in the unprotected header - if parsed.Recipients[r].Header != nil && parsed.Recipients[r].Header.Nonce != "" { + if parsed.Recipients[r].Header != nil && parsed.Recipients[r].Header.getNonce() != "" { return nil, ErrUnprotectedNonce } @@ -172,7 +186,7 @@ func (parsed *rawJsonWebEncryption) sanitized() (*JsonWebEncryption, error) { for _, recipient := range obj.recipients { headers := obj.mergedHeaders(&recipient) - if headers.Alg == "" || headers.Enc == "" { + if headers.getAlgorithm() == "" || headers.getEncryption() == "" { return nil, fmt.Errorf("square/go-jose: message is missing alg/enc headers") } } @@ -186,38 +200,38 @@ func (parsed *rawJsonWebEncryption) sanitized() (*JsonWebEncryption, error) { } // parseEncryptedCompact parses a message in compact format. -func parseEncryptedCompact(input string) (*JsonWebEncryption, error) { +func parseEncryptedCompact(input string) (*JSONWebEncryption, error) { parts := strings.Split(input, ".") if len(parts) != 5 { return nil, fmt.Errorf("square/go-jose: compact JWE format must have five parts") } - rawProtected, err := base64URLDecode(parts[0]) + rawProtected, err := base64.RawURLEncoding.DecodeString(parts[0]) if err != nil { return nil, err } - encryptedKey, err := base64URLDecode(parts[1]) + encryptedKey, err := base64.RawURLEncoding.DecodeString(parts[1]) if err != nil { return nil, err } - iv, err := base64URLDecode(parts[2]) + iv, err := base64.RawURLEncoding.DecodeString(parts[2]) if err != nil { return nil, err } - ciphertext, err := base64URLDecode(parts[3]) + ciphertext, err := base64.RawURLEncoding.DecodeString(parts[3]) if err != nil { return nil, err } - tag, err := base64URLDecode(parts[4]) + tag, err := base64.RawURLEncoding.DecodeString(parts[4]) if err != nil { return nil, err } - raw := &rawJsonWebEncryption{ + raw := &rawJSONWebEncryption{ Protected: newBuffer(rawProtected), EncryptedKey: newBuffer(encryptedKey), Iv: newBuffer(iv), @@ -229,7 +243,7 @@ func parseEncryptedCompact(input string) (*JsonWebEncryption, error) { } // CompactSerialize serializes an object using the compact serialization format. -func (obj JsonWebEncryption) CompactSerialize() (string, error) { +func (obj JSONWebEncryption) CompactSerialize() (string, error) { if len(obj.recipients) != 1 || obj.unprotected != nil || obj.protected == nil || obj.recipients[0].header != nil { return "", ErrNotSupported @@ -239,16 +253,16 @@ func (obj JsonWebEncryption) CompactSerialize() (string, error) { return fmt.Sprintf( "%s.%s.%s.%s.%s", - base64URLEncode(serializedProtected), - base64URLEncode(obj.recipients[0].encryptedKey), - base64URLEncode(obj.iv), - base64URLEncode(obj.ciphertext), - base64URLEncode(obj.tag)), nil + base64.RawURLEncoding.EncodeToString(serializedProtected), + base64.RawURLEncoding.EncodeToString(obj.recipients[0].encryptedKey), + base64.RawURLEncoding.EncodeToString(obj.iv), + base64.RawURLEncoding.EncodeToString(obj.ciphertext), + base64.RawURLEncoding.EncodeToString(obj.tag)), nil } // FullSerialize serializes an object using the full JSON serialization format. -func (obj JsonWebEncryption) FullSerialize() string { - raw := rawJsonWebEncryption{ +func (obj JSONWebEncryption) FullSerialize() string { + raw := rawJSONWebEncryption{ Unprotected: obj.unprotected, Iv: newBuffer(obj.iv), Ciphertext: newBuffer(obj.ciphertext), @@ -262,7 +276,7 @@ func (obj JsonWebEncryption) FullSerialize() string { for _, recipient := range obj.recipients { info := rawRecipientInfo{ Header: recipient.header, - EncryptedKey: base64URLEncode(recipient.encryptedKey), + EncryptedKey: base64.RawURLEncoding.EncodeToString(recipient.encryptedKey), } raw.Recipients = append(raw.Recipients, info) } diff --git a/vendor/gopkg.in/square/go-jose.v1/jwk.go b/vendor/gopkg.in/square/go-jose.v2/jwk.go similarity index 67% rename from vendor/gopkg.in/square/go-jose.v1/jwk.go rename to vendor/gopkg.in/square/go-jose.v2/jwk.go index 505dd700..8081d5ad 100644 --- a/vendor/gopkg.in/square/go-jose.v1/jwk.go +++ b/vendor/gopkg.in/square/go-jose.v2/jwk.go @@ -29,11 +29,13 @@ import ( "reflect" "strings" - "gopkg.in/square/go-jose.v1/json" + "golang.org/x/crypto/ed25519" + + "gopkg.in/square/go-jose.v2/json" ) -// rawJsonWebKey represents a public or private key in JWK format, used for parsing/serializing. -type rawJsonWebKey struct { +// rawJSONWebKey represents a public or private key in JWK format, used for parsing/serializing. +type rawJSONWebKey struct { Use string `json:"use,omitempty"` Kty string `json:"kty,omitempty"` Kid string `json:"kid,omitempty"` @@ -58,8 +60,8 @@ type rawJsonWebKey struct { X5c []string `json:"x5c,omitempty"` } -// JsonWebKey represents a public or private key in JWK format. -type JsonWebKey struct { +// JSONWebKey represents a public or private key in JWK format. +type JSONWebKey struct { Key interface{} Certificates []*x509.Certificate KeyID string @@ -68,15 +70,19 @@ type JsonWebKey struct { } // MarshalJSON serializes the given key to its JSON representation. -func (k JsonWebKey) MarshalJSON() ([]byte, error) { - var raw *rawJsonWebKey +func (k JSONWebKey) MarshalJSON() ([]byte, error) { + var raw *rawJSONWebKey var err error switch key := k.Key.(type) { + case ed25519.PublicKey: + raw = fromEdPublicKey(key) case *ecdsa.PublicKey: raw, err = fromEcPublicKey(key) case *rsa.PublicKey: raw = fromRsaPublicKey(key) + case ed25519.PrivateKey: + raw, err = fromEdPrivateKey(key) case *ecdsa.PrivateKey: raw, err = fromEcPrivateKey(key) case *rsa.PrivateKey: @@ -103,8 +109,8 @@ func (k JsonWebKey) MarshalJSON() ([]byte, error) { } // UnmarshalJSON reads a key from its JSON representation. -func (k *JsonWebKey) UnmarshalJSON(data []byte) (err error) { - var raw rawJsonWebKey +func (k *JSONWebKey) UnmarshalJSON(data []byte) (err error) { + var raw rawJSONWebKey err = json.Unmarshal(data, &raw) if err != nil { return err @@ -126,40 +132,43 @@ func (k *JsonWebKey) UnmarshalJSON(data []byte) (err error) { } case "oct": key, err = raw.symmetricKey() + case "OKP": + if raw.Crv == "Ed25519" && raw.X != nil { + if raw.D != nil { + key, err = raw.edPrivateKey() + } else { + key, err = raw.edPublicKey() + } + } else { + err = fmt.Errorf("square/go-jose: unknown curve %s'", raw.Crv) + } default: err = fmt.Errorf("square/go-jose: unknown json web key type '%s'", raw.Kty) } if err == nil { - *k = JsonWebKey{Key: key, KeyID: raw.Kid, Algorithm: raw.Alg, Use: raw.Use} - } + *k = JSONWebKey{Key: key, KeyID: raw.Kid, Algorithm: raw.Alg, Use: raw.Use} - k.Certificates = make([]*x509.Certificate, len(raw.X5c)) - for i, cert := range raw.X5c { - raw, err := base64.StdEncoding.DecodeString(cert) + k.Certificates, err = parseCertificateChain(raw.X5c) if err != nil { - return err - } - k.Certificates[i], err = x509.ParseCertificate(raw) - if err != nil { - return err + return fmt.Errorf("failed to unmarshal x5c field: %s", err) } } return } -// JsonWebKeySet represents a JWK Set object. -type JsonWebKeySet struct { - Keys []JsonWebKey `json:"keys"` +// JSONWebKeySet represents a JWK Set object. +type JSONWebKeySet struct { + Keys []JSONWebKey `json:"keys"` } // Key convenience method returns keys by key ID. Specification states // that a JWK Set "SHOULD" use distinct key IDs, but allows for some // cases where they are not distinct. Hence method returns a slice -// of JsonWebKeys. -func (s *JsonWebKeySet) Key(kid string) []JsonWebKey { - var keys []JsonWebKey +// of JSONWebKeys. +func (s *JSONWebKeySet) Key(kid string) []JSONWebKey { + var keys []JSONWebKey for _, key := range s.Keys { if key.KeyID == kid { keys = append(keys, key) @@ -171,6 +180,7 @@ func (s *JsonWebKeySet) Key(kid string) []JsonWebKey { const rsaThumbprintTemplate = `{"e":"%s","kty":"RSA","n":"%s"}` const ecThumbprintTemplate = `{"crv":"%s","kty":"EC","x":"%s","y":"%s"}` +const edThumbprintTemplate = `{"crv":"%s","kty":"OKP",x":"%s"}` func ecThumbprintInput(curve elliptic.Curve, x, y *big.Int) (string, error) { coordLength := curveSize(curve) @@ -179,6 +189,10 @@ func ecThumbprintInput(curve elliptic.Curve, x, y *big.Int) (string, error) { return "", err } + if len(x.Bytes()) > coordLength || len(y.Bytes()) > coordLength { + return "", errors.New("square/go-jose: invalid elliptic key (too large)") + } + return fmt.Sprintf(ecThumbprintTemplate, crv, newFixedSizeBuffer(x.Bytes(), coordLength).base64(), newFixedSizeBuffer(y.Bytes(), coordLength).base64()), nil @@ -190,12 +204,23 @@ func rsaThumbprintInput(n *big.Int, e int) (string, error) { newBuffer(n.Bytes()).base64()), nil } +func edThumbprintInput(ed ed25519.PublicKey) (string, error) { + crv := "Ed25519" + if len(ed) > 32 { + return "", errors.New("square/go-jose: invalid elliptic key (too large)") + } + return fmt.Sprintf(edThumbprintTemplate, crv, + newFixedSizeBuffer(ed, 32).base64()), nil +} + // Thumbprint computes the JWK Thumbprint of a key using the // indicated hash algorithm. -func (k *JsonWebKey) Thumbprint(hash crypto.Hash) ([]byte, error) { +func (k *JSONWebKey) Thumbprint(hash crypto.Hash) ([]byte, error) { var input string var err error switch key := k.Key.(type) { + case ed25519.PublicKey: + input, err = edThumbprintInput(key) case *ecdsa.PublicKey: input, err = ecThumbprintInput(key.Curve, key.X, key.Y) case *ecdsa.PrivateKey: @@ -204,6 +229,8 @@ func (k *JsonWebKey) Thumbprint(hash crypto.Hash) ([]byte, error) { input, err = rsaThumbprintInput(key.N, key.E) case *rsa.PrivateKey: input, err = rsaThumbprintInput(key.N, key.E) + case ed25519.PrivateKey: + input, err = edThumbprintInput(ed25519.PublicKey(key[0:32])) default: return nil, fmt.Errorf("square/go-jose: unknown key type '%s'", reflect.TypeOf(key)) } @@ -218,17 +245,36 @@ func (k *JsonWebKey) Thumbprint(hash crypto.Hash) ([]byte, error) { } // IsPublic returns true if the JWK represents a public key (not symmetric, not private). -func (k *JsonWebKey) IsPublic() bool { +func (k *JSONWebKey) IsPublic() bool { switch k.Key.(type) { - case *ecdsa.PublicKey, *rsa.PublicKey: + case *ecdsa.PublicKey, *rsa.PublicKey, ed25519.PublicKey: return true default: return false } } +// Public creates JSONWebKey with corresponding publik key if JWK represents asymmetric private key. +func (k *JSONWebKey) Public() JSONWebKey { + if k.IsPublic() { + return *k + } + ret := *k + switch key := k.Key.(type) { + case *ecdsa.PrivateKey: + ret.Key = key.Public() + case *rsa.PrivateKey: + ret.Key = key.Public() + case ed25519.PrivateKey: + ret.Key = key.Public() + default: + return JSONWebKey{} // returning invalid key + } + return ret +} + // Valid checks that the key contains the expected parameters. -func (k *JsonWebKey) Valid() bool { +func (k *JSONWebKey) Valid() bool { if k.Key == nil { return false } @@ -249,13 +295,21 @@ func (k *JsonWebKey) Valid() bool { if key.N == nil || key.E == 0 || key.D == nil || len(key.Primes) < 2 { return false } + case ed25519.PublicKey: + if len(key) != 32 { + return false + } + case ed25519.PrivateKey: + if len(key) != 64 { + return false + } default: return false } return true } -func (key rawJsonWebKey) rsaPublicKey() (*rsa.PublicKey, error) { +func (key rawJSONWebKey) rsaPublicKey() (*rsa.PublicKey, error) { if key.N == nil || key.E == nil { return nil, fmt.Errorf("square/go-jose: invalid RSA key, missing n/e values") } @@ -266,15 +320,23 @@ func (key rawJsonWebKey) rsaPublicKey() (*rsa.PublicKey, error) { }, nil } -func fromRsaPublicKey(pub *rsa.PublicKey) *rawJsonWebKey { - return &rawJsonWebKey{ +func fromEdPublicKey(pub ed25519.PublicKey) *rawJSONWebKey { + return &rawJSONWebKey{ + Kty: "OKP", + Crv: "Ed25519", + X: newBuffer(pub), + } +} + +func fromRsaPublicKey(pub *rsa.PublicKey) *rawJSONWebKey { + return &rawJSONWebKey{ Kty: "RSA", N: newBuffer(pub.N.Bytes()), E: newBufferFromInt(uint64(pub.E)), } } -func (key rawJsonWebKey) ecPublicKey() (*ecdsa.PublicKey, error) { +func (key rawJSONWebKey) ecPublicKey() (*ecdsa.PublicKey, error) { var curve elliptic.Curve switch key.Crv { case "P-256": @@ -305,7 +367,7 @@ func (key rawJsonWebKey) ecPublicKey() (*ecdsa.PublicKey, error) { }, nil } -func fromEcPublicKey(pub *ecdsa.PublicKey) (*rawJsonWebKey, error) { +func fromEcPublicKey(pub *ecdsa.PublicKey) (*rawJSONWebKey, error) { if pub == nil || pub.X == nil || pub.Y == nil { return nil, fmt.Errorf("square/go-jose: invalid EC key (nil, or X/Y missing)") } @@ -324,7 +386,7 @@ func fromEcPublicKey(pub *ecdsa.PublicKey) (*rawJsonWebKey, error) { return nil, fmt.Errorf("square/go-jose: invalid EC key (X/Y too large)") } - key := &rawJsonWebKey{ + key := &rawJSONWebKey{ Kty: "EC", Crv: name, X: newFixedSizeBuffer(xBytes, size), @@ -334,7 +396,37 @@ func fromEcPublicKey(pub *ecdsa.PublicKey) (*rawJsonWebKey, error) { return key, nil } -func (key rawJsonWebKey) rsaPrivateKey() (*rsa.PrivateKey, error) { +func (key rawJSONWebKey) edPrivateKey() (ed25519.PrivateKey, error) { + var missing []string + switch { + case key.D == nil: + missing = append(missing, "D") + case key.X == nil: + missing = append(missing, "X") + } + + if len(missing) > 0 { + return nil, fmt.Errorf("square/go-jose: invalid Ed25519 private key, missing %s value(s)", strings.Join(missing, ", ")) + } + + privateKey := make([]byte, ed25519.PrivateKeySize) + copy(privateKey[0:32], key.X.bytes()) + copy(privateKey[32:], key.D.bytes()) + rv := ed25519.PrivateKey(privateKey) + return rv, nil +} + +func (key rawJSONWebKey) edPublicKey() (ed25519.PublicKey, error) { + if key.X == nil { + return nil, fmt.Errorf("square/go-jose: invalid Ed key, missing x value") + } + publicKey := make([]byte, ed25519.PublicKeySize) + copy(publicKey[0:32], key.X.bytes()) + rv := ed25519.PublicKey(publicKey) + return rv, nil +} + +func (key rawJSONWebKey) rsaPrivateKey() (*rsa.PrivateKey, error) { var missing []string switch { case key.N == nil: @@ -379,7 +471,14 @@ func (key rawJsonWebKey) rsaPrivateKey() (*rsa.PrivateKey, error) { return rv, err } -func fromRsaPrivateKey(rsa *rsa.PrivateKey) (*rawJsonWebKey, error) { +func fromEdPrivateKey(ed ed25519.PrivateKey) (*rawJSONWebKey, error) { + raw := fromEdPublicKey(ed25519.PublicKey(ed[0:32])) + + raw.D = newBuffer(ed[32:]) + return raw, nil +} + +func fromRsaPrivateKey(rsa *rsa.PrivateKey) (*rawJSONWebKey, error) { if len(rsa.Primes) != 2 { return nil, ErrUnsupportedKeyType } @@ -393,7 +492,7 @@ func fromRsaPrivateKey(rsa *rsa.PrivateKey) (*rawJsonWebKey, error) { return raw, nil } -func (key rawJsonWebKey) ecPrivateKey() (*ecdsa.PrivateKey, error) { +func (key rawJSONWebKey) ecPrivateKey() (*ecdsa.PrivateKey, error) { var curve elliptic.Curve switch key.Crv { case "P-256": @@ -427,7 +526,7 @@ func (key rawJsonWebKey) ecPrivateKey() (*ecdsa.PrivateKey, error) { }, nil } -func fromEcPrivateKey(ec *ecdsa.PrivateKey) (*rawJsonWebKey, error) { +func fromEcPrivateKey(ec *ecdsa.PrivateKey) (*rawJSONWebKey, error) { raw, err := fromEcPublicKey(&ec.PublicKey) if err != nil { return nil, err @@ -442,14 +541,14 @@ func fromEcPrivateKey(ec *ecdsa.PrivateKey) (*rawJsonWebKey, error) { return raw, nil } -func fromSymmetricKey(key []byte) (*rawJsonWebKey, error) { - return &rawJsonWebKey{ +func fromSymmetricKey(key []byte) (*rawJSONWebKey, error) { + return &rawJSONWebKey{ Kty: "oct", K: newBuffer(key), }, nil } -func (key rawJsonWebKey) symmetricKey() ([]byte, error) { +func (key rawJSONWebKey) symmetricKey() ([]byte, error) { if key.K == nil { return nil, fmt.Errorf("square/go-jose: invalid OCT (symmetric) key, missing k value") } diff --git a/vendor/gopkg.in/square/go-jose.v1/jws.go b/vendor/gopkg.in/square/go-jose.v2/jws.go similarity index 70% rename from vendor/gopkg.in/square/go-jose.v1/jws.go rename to vendor/gopkg.in/square/go-jose.v2/jws.go index 04a2a153..8b59b6ab 100644 --- a/vendor/gopkg.in/square/go-jose.v1/jws.go +++ b/vendor/gopkg.in/square/go-jose.v2/jws.go @@ -17,15 +17,16 @@ package jose import ( + "encoding/base64" "errors" "fmt" "strings" - "gopkg.in/square/go-jose.v1/json" + "gopkg.in/square/go-jose.v2/json" ) -// rawJsonWebSignature represents a raw JWS JSON object. Used for parsing/serializing. -type rawJsonWebSignature struct { +// rawJSONWebSignature represents a raw JWS JSON object. Used for parsing/serializing. +type rawJSONWebSignature struct { Payload *byteBuffer `json:"payload,omitempty"` Signatures []rawSignatureInfo `json:"signatures,omitempty"` Protected *byteBuffer `json:"protected,omitempty"` @@ -40,8 +41,8 @@ type rawSignatureInfo struct { Signature *byteBuffer `json:"signature,omitempty"` } -// JsonWebSignature represents a signed JWS object after parsing. -type JsonWebSignature struct { +// JSONWebSignature represents a signed JWS object after parsing. +type JSONWebSignature struct { payload []byte // Signatures attached to this object (may be more than one for multi-sig). // Be careful about accessing these directly, prefer to use Verify() or @@ -51,8 +52,19 @@ type JsonWebSignature struct { // Signature represents a single signature over the JWS payload and protected header. type Signature struct { - // Header fields, such as the signature algorithm - Header JoseHeader + // Merged header fields. Contains both protected and unprotected header + // values. Prefer using Protected and Unprotected fields instead of this. + // Values in this header may or may not have been signed and in general + // should not be trusted. + Header Header + + // Protected header. Values in this header were signed and + // will be verified as part of the signature verification process. + Protected Header + + // Unprotected header. Values in this header were not signed + // and in general should not be trusted. + Unprotected Header // The actual signature value Signature []byte @@ -63,7 +75,7 @@ type Signature struct { } // ParseSigned parses a signed message in compact or full serialization format. -func ParseSigned(input string) (*JsonWebSignature, error) { +func ParseSigned(input string) (*JSONWebSignature, error) { input = stripWhitespace(input) if strings.HasPrefix(input, "{") { return parseSignedFull(input) @@ -81,25 +93,25 @@ func (sig Signature) mergedHeaders() rawHeader { } // Compute data to be signed -func (obj JsonWebSignature) computeAuthData(signature *Signature) []byte { +func (obj JSONWebSignature) computeAuthData(payload []byte, signature *Signature) []byte { var serializedProtected string if signature.original != nil && signature.original.Protected != nil { serializedProtected = signature.original.Protected.base64() } else if signature.protected != nil { - serializedProtected = base64URLEncode(mustSerializeJSON(signature.protected)) + serializedProtected = base64.RawURLEncoding.EncodeToString(mustSerializeJSON(signature.protected)) } else { serializedProtected = "" } return []byte(fmt.Sprintf("%s.%s", serializedProtected, - base64URLEncode(obj.payload))) + base64.RawURLEncoding.EncodeToString(payload))) } // parseSignedFull parses a message in full format. -func parseSignedFull(input string) (*JsonWebSignature, error) { - var parsed rawJsonWebSignature +func parseSignedFull(input string) (*JSONWebSignature, error) { + var parsed rawJSONWebSignature err := json.Unmarshal([]byte(input), &parsed) if err != nil { return nil, err @@ -109,12 +121,12 @@ func parseSignedFull(input string) (*JsonWebSignature, error) { } // sanitized produces a cleaned-up JWS object from the raw JSON. -func (parsed *rawJsonWebSignature) sanitized() (*JsonWebSignature, error) { +func (parsed *rawJSONWebSignature) sanitized() (*JSONWebSignature, error) { if parsed.Payload == nil { return nil, fmt.Errorf("square/go-jose: missing payload in JWS message") } - obj := &JsonWebSignature{ + obj := &JSONWebSignature{ payload: parsed.Payload.bytes(), Signatures: make([]Signature, len(parsed.Signatures)), } @@ -131,7 +143,7 @@ func (parsed *rawJsonWebSignature) sanitized() (*JsonWebSignature, error) { } // Check that there is not a nonce in the unprotected header - if parsed.Header != nil && parsed.Header.Nonce != "" { + if parsed.Header != nil && parsed.Header.getNonce() != "" { return nil, ErrUnprotectedNonce } @@ -152,10 +164,28 @@ func (parsed *rawJsonWebSignature) sanitized() (*JsonWebSignature, error) { Signature: parsed.Signature, } - signature.Header = signature.mergedHeaders().sanitized() + var err error + signature.Header, err = signature.mergedHeaders().sanitized() + if err != nil { + return nil, err + } + + if signature.header != nil { + signature.Unprotected, err = signature.header.sanitized() + if err != nil { + return nil, err + } + } + + if signature.protected != nil { + signature.Protected, err = signature.protected.sanitized() + if err != nil { + return nil, err + } + } // As per RFC 7515 Section 4.1.3, only public keys are allowed to be embedded. - jwk := signature.Header.JsonWebKey + jwk := signature.Header.JSONWebKey if jwk != nil && (!jwk.Valid() || !jwk.IsPublic()) { return nil, errors.New("square/go-jose: invalid embedded jwk, must be public key") } @@ -173,15 +203,34 @@ func (parsed *rawJsonWebSignature) sanitized() (*JsonWebSignature, error) { } // Check that there is not a nonce in the unprotected header - if sig.Header != nil && sig.Header.Nonce != "" { + if sig.Header != nil && sig.Header.getNonce() != "" { return nil, ErrUnprotectedNonce } - obj.Signatures[i].Header = obj.Signatures[i].mergedHeaders().sanitized() + var err error + obj.Signatures[i].Header, err = obj.Signatures[i].mergedHeaders().sanitized() + if err != nil { + return nil, err + } + + if obj.Signatures[i].header != nil { + obj.Signatures[i].Unprotected, err = obj.Signatures[i].header.sanitized() + if err != nil { + return nil, err + } + } + + if obj.Signatures[i].protected != nil { + obj.Signatures[i].Protected, err = obj.Signatures[i].protected.sanitized() + if err != nil { + return nil, err + } + } + obj.Signatures[i].Signature = sig.Signature.bytes() // As per RFC 7515 Section 4.1.3, only public keys are allowed to be embedded. - jwk := obj.Signatures[i].Header.JsonWebKey + jwk := obj.Signatures[i].Header.JSONWebKey if jwk != nil && (!jwk.Valid() || !jwk.IsPublic()) { return nil, errors.New("square/go-jose: invalid embedded jwk, must be public key") } @@ -197,28 +246,28 @@ func (parsed *rawJsonWebSignature) sanitized() (*JsonWebSignature, error) { } // parseSignedCompact parses a message in compact format. -func parseSignedCompact(input string) (*JsonWebSignature, error) { +func parseSignedCompact(input string) (*JSONWebSignature, error) { parts := strings.Split(input, ".") if len(parts) != 3 { return nil, fmt.Errorf("square/go-jose: compact JWS format must have three parts") } - rawProtected, err := base64URLDecode(parts[0]) + rawProtected, err := base64.RawURLEncoding.DecodeString(parts[0]) if err != nil { return nil, err } - payload, err := base64URLDecode(parts[1]) + payload, err := base64.RawURLEncoding.DecodeString(parts[1]) if err != nil { return nil, err } - signature, err := base64URLDecode(parts[2]) + signature, err := base64.RawURLEncoding.DecodeString(parts[2]) if err != nil { return nil, err } - raw := &rawJsonWebSignature{ + raw := &rawJSONWebSignature{ Payload: newBuffer(payload), Protected: newBuffer(rawProtected), Signature: newBuffer(signature), @@ -227,7 +276,7 @@ func parseSignedCompact(input string) (*JsonWebSignature, error) { } // CompactSerialize serializes an object using the compact serialization format. -func (obj JsonWebSignature) CompactSerialize() (string, error) { +func (obj JSONWebSignature) CompactSerialize() (string, error) { if len(obj.Signatures) != 1 || obj.Signatures[0].header != nil || obj.Signatures[0].protected == nil { return "", ErrNotSupported } @@ -236,14 +285,14 @@ func (obj JsonWebSignature) CompactSerialize() (string, error) { return fmt.Sprintf( "%s.%s.%s", - base64URLEncode(serializedProtected), - base64URLEncode(obj.payload), - base64URLEncode(obj.Signatures[0].Signature)), nil + base64.RawURLEncoding.EncodeToString(serializedProtected), + base64.RawURLEncoding.EncodeToString(obj.payload), + base64.RawURLEncoding.EncodeToString(obj.Signatures[0].Signature)), nil } // FullSerialize serializes an object using the full JSON serialization format. -func (obj JsonWebSignature) FullSerialize() string { - raw := rawJsonWebSignature{ +func (obj JSONWebSignature) FullSerialize() string { + raw := rawJSONWebSignature{ Payload: newBuffer(obj.payload), } diff --git a/vendor/gopkg.in/square/go-jose.v2/opaque.go b/vendor/gopkg.in/square/go-jose.v2/opaque.go new file mode 100644 index 00000000..4a8bd8f3 --- /dev/null +++ b/vendor/gopkg.in/square/go-jose.v2/opaque.go @@ -0,0 +1,83 @@ +/*- + * Copyright 2018 Square Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jose + +// OpaqueSigner is an interface that supports signing payloads with opaque +// private key(s). Private key operations preformed by implementors may, for +// example, occur in a hardware module. An OpaqueSigner may rotate signing keys +// transparently to the user of this interface. +type OpaqueSigner interface { + // Public returns the public key of the current signing key. + Public() *JSONWebKey + // Algs returns a list of supported signing algorithms. + Algs() []SignatureAlgorithm + // SignPayload signs a payload with the current signing key using the given + // algorithm. + SignPayload(payload []byte, alg SignatureAlgorithm) ([]byte, error) +} + +type opaqueSigner struct { + signer OpaqueSigner +} + +func newOpaqueSigner(alg SignatureAlgorithm, signer OpaqueSigner) (recipientSigInfo, error) { + var algSupported bool + for _, salg := range signer.Algs() { + if alg == salg { + algSupported = true + break + } + } + if !algSupported { + return recipientSigInfo{}, ErrUnsupportedAlgorithm + } + + return recipientSigInfo{ + sigAlg: alg, + publicKey: signer.Public, + signer: &opaqueSigner{ + signer: signer, + }, + }, nil +} + +func (o *opaqueSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) { + out, err := o.signer.SignPayload(payload, alg) + if err != nil { + return Signature{}, err + } + + return Signature{ + Signature: out, + protected: &rawHeader{}, + }, nil +} + +// OpaqueVerifier is an interface that supports verifying payloads with opaque +// public key(s). An OpaqueSigner may rotate signing keys transparently to the +// user of this interface. +type OpaqueVerifier interface { + VerifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error +} + +type opaqueVerifier struct { + verifier OpaqueVerifier +} + +func (o *opaqueVerifier) verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error { + return o.verifier.VerifyPayload(payload, signature, alg) +} diff --git a/vendor/gopkg.in/square/go-jose.v2/shared.go b/vendor/gopkg.in/square/go-jose.v2/shared.go new file mode 100644 index 00000000..b3ac932b --- /dev/null +++ b/vendor/gopkg.in/square/go-jose.v2/shared.go @@ -0,0 +1,494 @@ +/*- + * Copyright 2014 Square Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jose + +import ( + "crypto/elliptic" + "crypto/x509" + "encoding/base64" + "errors" + "fmt" + + "gopkg.in/square/go-jose.v2/json" +) + +// KeyAlgorithm represents a key management algorithm. +type KeyAlgorithm string + +// SignatureAlgorithm represents a signature (or MAC) algorithm. +type SignatureAlgorithm string + +// ContentEncryption represents a content encryption algorithm. +type ContentEncryption string + +// CompressionAlgorithm represents an algorithm used for plaintext compression. +type CompressionAlgorithm string + +// ContentType represents type of the contained data. +type ContentType string + +var ( + // ErrCryptoFailure represents an error in cryptographic primitive. This + // occurs when, for example, a message had an invalid authentication tag or + // could not be decrypted. + ErrCryptoFailure = errors.New("square/go-jose: error in cryptographic primitive") + + // ErrUnsupportedAlgorithm indicates that a selected algorithm is not + // supported. This occurs when trying to instantiate an encrypter for an + // algorithm that is not yet implemented. + ErrUnsupportedAlgorithm = errors.New("square/go-jose: unknown/unsupported algorithm") + + // ErrUnsupportedKeyType indicates that the given key type/format is not + // supported. This occurs when trying to instantiate an encrypter and passing + // it a key of an unrecognized type or with unsupported parameters, such as + // an RSA private key with more than two primes. + ErrUnsupportedKeyType = errors.New("square/go-jose: unsupported key type/format") + + // ErrNotSupported serialization of object is not supported. This occurs when + // trying to compact-serialize an object which can't be represented in + // compact form. + ErrNotSupported = errors.New("square/go-jose: compact serialization not supported for object") + + // ErrUnprotectedNonce indicates that while parsing a JWS or JWE object, a + // nonce header parameter was included in an unprotected header object. + ErrUnprotectedNonce = errors.New("square/go-jose: Nonce parameter included in unprotected header") +) + +// Key management algorithms +const ( + ED25519 = KeyAlgorithm("ED25519") + RSA1_5 = KeyAlgorithm("RSA1_5") // RSA-PKCS1v1.5 + RSA_OAEP = KeyAlgorithm("RSA-OAEP") // RSA-OAEP-SHA1 + RSA_OAEP_256 = KeyAlgorithm("RSA-OAEP-256") // RSA-OAEP-SHA256 + A128KW = KeyAlgorithm("A128KW") // AES key wrap (128) + A192KW = KeyAlgorithm("A192KW") // AES key wrap (192) + A256KW = KeyAlgorithm("A256KW") // AES key wrap (256) + DIRECT = KeyAlgorithm("dir") // Direct encryption + ECDH_ES = KeyAlgorithm("ECDH-ES") // ECDH-ES + ECDH_ES_A128KW = KeyAlgorithm("ECDH-ES+A128KW") // ECDH-ES + AES key wrap (128) + ECDH_ES_A192KW = KeyAlgorithm("ECDH-ES+A192KW") // ECDH-ES + AES key wrap (192) + ECDH_ES_A256KW = KeyAlgorithm("ECDH-ES+A256KW") // ECDH-ES + AES key wrap (256) + A128GCMKW = KeyAlgorithm("A128GCMKW") // AES-GCM key wrap (128) + A192GCMKW = KeyAlgorithm("A192GCMKW") // AES-GCM key wrap (192) + A256GCMKW = KeyAlgorithm("A256GCMKW") // AES-GCM key wrap (256) + PBES2_HS256_A128KW = KeyAlgorithm("PBES2-HS256+A128KW") // PBES2 + HMAC-SHA256 + AES key wrap (128) + PBES2_HS384_A192KW = KeyAlgorithm("PBES2-HS384+A192KW") // PBES2 + HMAC-SHA384 + AES key wrap (192) + PBES2_HS512_A256KW = KeyAlgorithm("PBES2-HS512+A256KW") // PBES2 + HMAC-SHA512 + AES key wrap (256) +) + +// Signature algorithms +const ( + EdDSA = SignatureAlgorithm("EdDSA") + HS256 = SignatureAlgorithm("HS256") // HMAC using SHA-256 + HS384 = SignatureAlgorithm("HS384") // HMAC using SHA-384 + HS512 = SignatureAlgorithm("HS512") // HMAC using SHA-512 + RS256 = SignatureAlgorithm("RS256") // RSASSA-PKCS-v1.5 using SHA-256 + RS384 = SignatureAlgorithm("RS384") // RSASSA-PKCS-v1.5 using SHA-384 + RS512 = SignatureAlgorithm("RS512") // RSASSA-PKCS-v1.5 using SHA-512 + ES256 = SignatureAlgorithm("ES256") // ECDSA using P-256 and SHA-256 + ES384 = SignatureAlgorithm("ES384") // ECDSA using P-384 and SHA-384 + ES512 = SignatureAlgorithm("ES512") // ECDSA using P-521 and SHA-512 + PS256 = SignatureAlgorithm("PS256") // RSASSA-PSS using SHA256 and MGF1-SHA256 + PS384 = SignatureAlgorithm("PS384") // RSASSA-PSS using SHA384 and MGF1-SHA384 + PS512 = SignatureAlgorithm("PS512") // RSASSA-PSS using SHA512 and MGF1-SHA512 +) + +// Content encryption algorithms +const ( + A128CBC_HS256 = ContentEncryption("A128CBC-HS256") // AES-CBC + HMAC-SHA256 (128) + A192CBC_HS384 = ContentEncryption("A192CBC-HS384") // AES-CBC + HMAC-SHA384 (192) + A256CBC_HS512 = ContentEncryption("A256CBC-HS512") // AES-CBC + HMAC-SHA512 (256) + A128GCM = ContentEncryption("A128GCM") // AES-GCM (128) + A192GCM = ContentEncryption("A192GCM") // AES-GCM (192) + A256GCM = ContentEncryption("A256GCM") // AES-GCM (256) +) + +// Compression algorithms +const ( + NONE = CompressionAlgorithm("") // No compression + DEFLATE = CompressionAlgorithm("DEF") // DEFLATE (RFC 1951) +) + +// A key in the protected header of a JWS object. Use of the Header... +// constants is preferred to enhance type safety. +type HeaderKey string + +const ( + HeaderType HeaderKey = "typ" // string + HeaderContentType = "cty" // string + + // These are set by go-jose and shouldn't need to be set by consumers of the + // library. + headerAlgorithm = "alg" // string + headerEncryption = "enc" // ContentEncryption + headerCompression = "zip" // CompressionAlgorithm + headerCritical = "crit" // []string + + headerAPU = "apu" // *byteBuffer + headerAPV = "apv" // *byteBuffer + headerEPK = "epk" // *JSONWebKey + headerIV = "iv" // *byteBuffer + headerTag = "tag" // *byteBuffer + headerX5c = "x5c" // []*x509.Certificate + + headerJWK = "jwk" // *JSONWebKey + headerKeyID = "kid" // string + headerNonce = "nonce" // string + + headerP2C = "p2c" // *byteBuffer (int) + headerP2S = "p2s" // *byteBuffer ([]byte) + +) + +// rawHeader represents the JOSE header for JWE/JWS objects (used for parsing). +// +// The decoding of the constituent items is deferred because we want to marshal +// some members into particular structs rather than generic maps, but at the +// same time we need to receive any extra fields unhandled by this library to +// pass through to consuming code in case it wants to examine them. +type rawHeader map[HeaderKey]*json.RawMessage + +// Header represents the read-only JOSE header for JWE/JWS objects. +type Header struct { + KeyID string + JSONWebKey *JSONWebKey + Algorithm string + Nonce string + + // Unverified certificate chain parsed from x5c header. + certificates []*x509.Certificate + + // Any headers not recognised above get unmarshaled + // from JSON in a generic manner and placed in this map. + ExtraHeaders map[HeaderKey]interface{} +} + +// Certificates verifies & returns the certificate chain present +// in the x5c header field of a message, if one was present. Returns +// an error if there was no x5c header present or the chain could +// not be validated with the given verify options. +func (h Header) Certificates(opts x509.VerifyOptions) ([][]*x509.Certificate, error) { + if len(h.certificates) == 0 { + return nil, errors.New("square/go-jose: no x5c header present in message") + } + + leaf := h.certificates[0] + if opts.Intermediates == nil { + opts.Intermediates = x509.NewCertPool() + for _, intermediate := range h.certificates[1:] { + opts.Intermediates.AddCert(intermediate) + } + } + + return leaf.Verify(opts) +} + +func (parsed rawHeader) set(k HeaderKey, v interface{}) error { + b, err := json.Marshal(v) + if err != nil { + return err + } + + parsed[k] = makeRawMessage(b) + return nil +} + +// getString gets a string from the raw JSON, defaulting to "". +func (parsed rawHeader) getString(k HeaderKey) string { + v, ok := parsed[k] + if !ok || v == nil { + return "" + } + var s string + err := json.Unmarshal(*v, &s) + if err != nil { + return "" + } + return s +} + +// getByteBuffer gets a byte buffer from the raw JSON. Returns (nil, nil) if +// not specified. +func (parsed rawHeader) getByteBuffer(k HeaderKey) (*byteBuffer, error) { + v := parsed[k] + if v == nil { + return nil, nil + } + var bb *byteBuffer + err := json.Unmarshal(*v, &bb) + if err != nil { + return nil, err + } + return bb, nil +} + +// getAlgorithm extracts parsed "alg" from the raw JSON as a KeyAlgorithm. +func (parsed rawHeader) getAlgorithm() KeyAlgorithm { + return KeyAlgorithm(parsed.getString(headerAlgorithm)) +} + +// getSignatureAlgorithm extracts parsed "alg" from the raw JSON as a SignatureAlgorithm. +func (parsed rawHeader) getSignatureAlgorithm() SignatureAlgorithm { + return SignatureAlgorithm(parsed.getString(headerAlgorithm)) +} + +// getEncryption extracts parsed "enc" from the raw JSON. +func (parsed rawHeader) getEncryption() ContentEncryption { + return ContentEncryption(parsed.getString(headerEncryption)) +} + +// getCompression extracts parsed "zip" from the raw JSON. +func (parsed rawHeader) getCompression() CompressionAlgorithm { + return CompressionAlgorithm(parsed.getString(headerCompression)) +} + +func (parsed rawHeader) getNonce() string { + return parsed.getString(headerNonce) +} + +// getEPK extracts parsed "epk" from the raw JSON. +func (parsed rawHeader) getEPK() (*JSONWebKey, error) { + v := parsed[headerEPK] + if v == nil { + return nil, nil + } + var epk *JSONWebKey + err := json.Unmarshal(*v, &epk) + if err != nil { + return nil, err + } + return epk, nil +} + +// getAPU extracts parsed "apu" from the raw JSON. +func (parsed rawHeader) getAPU() (*byteBuffer, error) { + return parsed.getByteBuffer(headerAPU) +} + +// getAPV extracts parsed "apv" from the raw JSON. +func (parsed rawHeader) getAPV() (*byteBuffer, error) { + return parsed.getByteBuffer(headerAPV) +} + +// getIV extracts parsed "iv" frpom the raw JSON. +func (parsed rawHeader) getIV() (*byteBuffer, error) { + return parsed.getByteBuffer(headerIV) +} + +// getTag extracts parsed "tag" frpom the raw JSON. +func (parsed rawHeader) getTag() (*byteBuffer, error) { + return parsed.getByteBuffer(headerTag) +} + +// getJWK extracts parsed "jwk" from the raw JSON. +func (parsed rawHeader) getJWK() (*JSONWebKey, error) { + v := parsed[headerJWK] + if v == nil { + return nil, nil + } + var jwk *JSONWebKey + err := json.Unmarshal(*v, &jwk) + if err != nil { + return nil, err + } + return jwk, nil +} + +// getCritical extracts parsed "crit" from the raw JSON. If omitted, it +// returns an empty slice. +func (parsed rawHeader) getCritical() ([]string, error) { + v := parsed[headerCritical] + if v == nil { + return nil, nil + } + + var q []string + err := json.Unmarshal(*v, &q) + if err != nil { + return nil, err + } + return q, nil +} + +// getS2C extracts parsed "p2c" from the raw JSON. +func (parsed rawHeader) getP2C() (int, error) { + v := parsed[headerP2C] + if v == nil { + return 0, nil + } + + var p2c int + err := json.Unmarshal(*v, &p2c) + if err != nil { + return 0, err + } + return p2c, nil +} + +// getS2S extracts parsed "p2s" from the raw JSON. +func (parsed rawHeader) getP2S() (*byteBuffer, error) { + return parsed.getByteBuffer(headerP2S) +} + +// sanitized produces a cleaned-up header object from the raw JSON. +func (parsed rawHeader) sanitized() (h Header, err error) { + for k, v := range parsed { + if v == nil { + continue + } + switch k { + case headerJWK: + var jwk *JSONWebKey + err = json.Unmarshal(*v, &jwk) + if err != nil { + err = fmt.Errorf("failed to unmarshal JWK: %v: %#v", err, string(*v)) + return + } + h.JSONWebKey = jwk + case headerKeyID: + var s string + err = json.Unmarshal(*v, &s) + if err != nil { + err = fmt.Errorf("failed to unmarshal key ID: %v: %#v", err, string(*v)) + return + } + h.KeyID = s + case headerAlgorithm: + var s string + err = json.Unmarshal(*v, &s) + if err != nil { + err = fmt.Errorf("failed to unmarshal algorithm: %v: %#v", err, string(*v)) + return + } + h.Algorithm = s + case headerNonce: + var s string + err = json.Unmarshal(*v, &s) + if err != nil { + err = fmt.Errorf("failed to unmarshal nonce: %v: %#v", err, string(*v)) + return + } + h.Nonce = s + case headerX5c: + c := []string{} + err = json.Unmarshal(*v, &c) + if err != nil { + err = fmt.Errorf("failed to unmarshal x5c header: %v: %#v", err, string(*v)) + return + } + h.certificates, err = parseCertificateChain(c) + if err != nil { + err = fmt.Errorf("failed to unmarshal x5c header: %v: %#v", err, string(*v)) + return + } + default: + if h.ExtraHeaders == nil { + h.ExtraHeaders = map[HeaderKey]interface{}{} + } + var v2 interface{} + err = json.Unmarshal(*v, &v2) + if err != nil { + err = fmt.Errorf("failed to unmarshal value: %v: %#v", err, string(*v)) + return + } + h.ExtraHeaders[k] = v2 + } + } + return +} + +func parseCertificateChain(chain []string) ([]*x509.Certificate, error) { + out := make([]*x509.Certificate, len(chain)) + for i, cert := range chain { + raw, err := base64.StdEncoding.DecodeString(cert) + if err != nil { + return nil, err + } + out[i], err = x509.ParseCertificate(raw) + if err != nil { + return nil, err + } + } + return out, nil +} + +func (dst rawHeader) isSet(k HeaderKey) bool { + dvr := dst[k] + if dvr == nil { + return false + } + + var dv interface{} + err := json.Unmarshal(*dvr, &dv) + if err != nil { + return true + } + + if dvStr, ok := dv.(string); ok { + return dvStr != "" + } + + return true +} + +// Merge headers from src into dst, giving precedence to headers from l. +func (dst rawHeader) merge(src *rawHeader) { + if src == nil { + return + } + + for k, v := range *src { + if dst.isSet(k) { + continue + } + + dst[k] = v + } +} + +// Get JOSE name of curve +func curveName(crv elliptic.Curve) (string, error) { + switch crv { + case elliptic.P256(): + return "P-256", nil + case elliptic.P384(): + return "P-384", nil + case elliptic.P521(): + return "P-521", nil + default: + return "", fmt.Errorf("square/go-jose: unsupported/unknown elliptic curve") + } +} + +// Get size of curve in bytes +func curveSize(crv elliptic.Curve) int { + bits := crv.Params().BitSize + + div := bits / 8 + mod := bits % 8 + + if mod == 0 { + return div + } + + return div + 1 +} + +func makeRawMessage(b []byte) *json.RawMessage { + rm := json.RawMessage(b) + return &rm +} diff --git a/vendor/gopkg.in/square/go-jose.v2/signing.go b/vendor/gopkg.in/square/go-jose.v2/signing.go new file mode 100644 index 00000000..be6cf048 --- /dev/null +++ b/vendor/gopkg.in/square/go-jose.v2/signing.go @@ -0,0 +1,389 @@ +/*- + * Copyright 2014 Square Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jose + +import ( + "crypto/ecdsa" + "crypto/rsa" + "encoding/base64" + "errors" + "fmt" + + "golang.org/x/crypto/ed25519" + + "gopkg.in/square/go-jose.v2/json" +) + +// NonceSource represents a source of random nonces to go into JWS objects +type NonceSource interface { + Nonce() (string, error) +} + +// Signer represents a signer which takes a payload and produces a signed JWS object. +type Signer interface { + Sign(payload []byte) (*JSONWebSignature, error) + Options() SignerOptions +} + +// SigningKey represents an algorithm/key used to sign a message. +type SigningKey struct { + Algorithm SignatureAlgorithm + Key interface{} +} + +// SignerOptions represents options that can be set when creating signers. +type SignerOptions struct { + NonceSource NonceSource + EmbedJWK bool + + // Optional map of additional keys to be inserted into the protected header + // of a JWS object. Some specifications which make use of JWS like to insert + // additional values here. All values must be JSON-serializable. + ExtraHeaders map[HeaderKey]interface{} +} + +// WithHeader adds an arbitrary value to the ExtraHeaders map, initializing it +// if necessary. It returns itself and so can be used in a fluent style. +func (so *SignerOptions) WithHeader(k HeaderKey, v interface{}) *SignerOptions { + if so.ExtraHeaders == nil { + so.ExtraHeaders = map[HeaderKey]interface{}{} + } + so.ExtraHeaders[k] = v + return so +} + +// WithContentType adds a content type ("cty") header and returns the updated +// SignerOptions. +func (so *SignerOptions) WithContentType(contentType ContentType) *SignerOptions { + return so.WithHeader(HeaderContentType, contentType) +} + +// WithType adds a type ("typ") header and returns the updated SignerOptions. +func (so *SignerOptions) WithType(typ ContentType) *SignerOptions { + return so.WithHeader(HeaderType, typ) +} + +type payloadSigner interface { + signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) +} + +type payloadVerifier interface { + verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error +} + +type genericSigner struct { + recipients []recipientSigInfo + nonceSource NonceSource + embedJWK bool + extraHeaders map[HeaderKey]interface{} +} + +type recipientSigInfo struct { + sigAlg SignatureAlgorithm + publicKey func() *JSONWebKey + signer payloadSigner +} + +func staticPublicKey(jwk *JSONWebKey) func() *JSONWebKey { + return func() *JSONWebKey { + return jwk + } +} + +// NewSigner creates an appropriate signer based on the key type +func NewSigner(sig SigningKey, opts *SignerOptions) (Signer, error) { + return NewMultiSigner([]SigningKey{sig}, opts) +} + +// NewMultiSigner creates a signer for multiple recipients +func NewMultiSigner(sigs []SigningKey, opts *SignerOptions) (Signer, error) { + signer := &genericSigner{recipients: []recipientSigInfo{}} + + if opts != nil { + signer.nonceSource = opts.NonceSource + signer.embedJWK = opts.EmbedJWK + signer.extraHeaders = opts.ExtraHeaders + } + + for _, sig := range sigs { + err := signer.addRecipient(sig.Algorithm, sig.Key) + if err != nil { + return nil, err + } + } + + return signer, nil +} + +// newVerifier creates a verifier based on the key type +func newVerifier(verificationKey interface{}) (payloadVerifier, error) { + switch verificationKey := verificationKey.(type) { + case ed25519.PublicKey: + return &edEncrypterVerifier{ + publicKey: verificationKey, + }, nil + case *rsa.PublicKey: + return &rsaEncrypterVerifier{ + publicKey: verificationKey, + }, nil + case *ecdsa.PublicKey: + return &ecEncrypterVerifier{ + publicKey: verificationKey, + }, nil + case []byte: + return &symmetricMac{ + key: verificationKey, + }, nil + case JSONWebKey: + return newVerifier(verificationKey.Key) + case *JSONWebKey: + return newVerifier(verificationKey.Key) + } + if ov, ok := verificationKey.(OpaqueVerifier); ok { + return &opaqueVerifier{verifier: ov}, nil + } + return nil, ErrUnsupportedKeyType +} + +func (ctx *genericSigner) addRecipient(alg SignatureAlgorithm, signingKey interface{}) error { + recipient, err := makeJWSRecipient(alg, signingKey) + if err != nil { + return err + } + + ctx.recipients = append(ctx.recipients, recipient) + return nil +} + +func makeJWSRecipient(alg SignatureAlgorithm, signingKey interface{}) (recipientSigInfo, error) { + switch signingKey := signingKey.(type) { + case ed25519.PrivateKey: + return newEd25519Signer(alg, signingKey) + case *rsa.PrivateKey: + return newRSASigner(alg, signingKey) + case *ecdsa.PrivateKey: + return newECDSASigner(alg, signingKey) + case []byte: + return newSymmetricSigner(alg, signingKey) + case JSONWebKey: + return newJWKSigner(alg, signingKey) + case *JSONWebKey: + return newJWKSigner(alg, *signingKey) + } + if signer, ok := signingKey.(OpaqueSigner); ok { + return newOpaqueSigner(alg, signer) + } + return recipientSigInfo{}, ErrUnsupportedKeyType +} + +func newJWKSigner(alg SignatureAlgorithm, signingKey JSONWebKey) (recipientSigInfo, error) { + recipient, err := makeJWSRecipient(alg, signingKey.Key) + if err != nil { + return recipientSigInfo{}, err + } + if recipient.publicKey != nil && recipient.publicKey() != nil { + // recipient.publicKey is a JWK synthesized for embedding when recipientSigInfo + // was created for the inner key (such as a RSA or ECDSA public key). It contains + // the pub key for embedding, but doesn't have extra params like key id. + publicKey := signingKey + publicKey.Key = recipient.publicKey().Key + recipient.publicKey = staticPublicKey(&publicKey) + + // This should be impossible, but let's check anyway. + if !recipient.publicKey().IsPublic() { + return recipientSigInfo{}, errors.New("square/go-jose: public key was unexpectedly not public") + } + } + return recipient, nil +} + +func (ctx *genericSigner) Sign(payload []byte) (*JSONWebSignature, error) { + obj := &JSONWebSignature{} + obj.payload = payload + obj.Signatures = make([]Signature, len(ctx.recipients)) + + for i, recipient := range ctx.recipients { + protected := map[HeaderKey]interface{}{ + headerAlgorithm: string(recipient.sigAlg), + } + + if recipient.publicKey != nil && recipient.publicKey() != nil { + // We want to embed the JWK or set the kid header, but not both. Having a protected + // header that contains an embedded JWK while also simultaneously containing the kid + // header is confusing, and at least in ACME the two are considered to be mutually + // exclusive. The fact that both can exist at the same time is a somewhat unfortunate + // result of the JOSE spec. We've decided that this library will only include one or + // the other to avoid this confusion. + // + // See https://github.com/square/go-jose/issues/157 for more context. + if ctx.embedJWK { + protected[headerJWK] = recipient.publicKey() + } else { + protected[headerKeyID] = recipient.publicKey().KeyID + } + } + + if ctx.nonceSource != nil { + nonce, err := ctx.nonceSource.Nonce() + if err != nil { + return nil, fmt.Errorf("square/go-jose: Error generating nonce: %v", err) + } + protected[headerNonce] = nonce + } + + for k, v := range ctx.extraHeaders { + protected[k] = v + } + + serializedProtected := mustSerializeJSON(protected) + + input := []byte(fmt.Sprintf("%s.%s", + base64.RawURLEncoding.EncodeToString(serializedProtected), + base64.RawURLEncoding.EncodeToString(payload))) + + signatureInfo, err := recipient.signer.signPayload(input, recipient.sigAlg) + if err != nil { + return nil, err + } + + signatureInfo.protected = &rawHeader{} + for k, v := range protected { + b, err := json.Marshal(v) + if err != nil { + return nil, fmt.Errorf("square/go-jose: Error marshalling item %#v: %v", k, err) + } + (*signatureInfo.protected)[k] = makeRawMessage(b) + } + obj.Signatures[i] = signatureInfo + } + + return obj, nil +} + +func (ctx *genericSigner) Options() SignerOptions { + return SignerOptions{ + NonceSource: ctx.nonceSource, + EmbedJWK: ctx.embedJWK, + ExtraHeaders: ctx.extraHeaders, + } +} + +// Verify validates the signature on the object and returns the payload. +// This function does not support multi-signature, if you desire multi-sig +// verification use VerifyMulti instead. +// +// Be careful when verifying signatures based on embedded JWKs inside the +// payload header. You cannot assume that the key received in a payload is +// trusted. +func (obj JSONWebSignature) Verify(verificationKey interface{}) ([]byte, error) { + err := obj.DetachedVerify(obj.payload, verificationKey) + if err != nil { + return nil, err + } + return obj.payload, nil +} + +// UnsafePayloadWithoutVerification returns the payload without +// verifying it. The content returned from this function cannot be +// trusted. +func (obj JSONWebSignature) UnsafePayloadWithoutVerification() []byte { + return obj.payload +} + +// DetachedVerify validates a detached signature on the given payload. In +// most cases, you will probably want to use Verify instead. DetachedVerify +// is only useful if you have a payload and signature that are separated from +// each other. +func (obj JSONWebSignature) DetachedVerify(payload []byte, verificationKey interface{}) error { + verifier, err := newVerifier(verificationKey) + if err != nil { + return err + } + + if len(obj.Signatures) > 1 { + return errors.New("square/go-jose: too many signatures in payload; expecting only one") + } + + signature := obj.Signatures[0] + headers := signature.mergedHeaders() + critical, err := headers.getCritical() + if err != nil { + return err + } + if len(critical) > 0 { + // Unsupported crit header + return ErrCryptoFailure + } + + input := obj.computeAuthData(payload, &signature) + alg := headers.getSignatureAlgorithm() + err = verifier.verifyPayload(input, signature.Signature, alg) + if err == nil { + return nil + } + + return ErrCryptoFailure +} + +// VerifyMulti validates (one of the multiple) signatures on the object and +// returns the index of the signature that was verified, along with the signature +// object and the payload. We return the signature and index to guarantee that +// callers are getting the verified value. +func (obj JSONWebSignature) VerifyMulti(verificationKey interface{}) (int, Signature, []byte, error) { + idx, sig, err := obj.DetachedVerifyMulti(obj.payload, verificationKey) + if err != nil { + return -1, Signature{}, nil, err + } + return idx, sig, obj.payload, nil +} + +// DetachedVerifyMulti validates a detached signature on the given payload with +// a signature/object that has potentially multiple signers. This returns the index +// of the signature that was verified, along with the signature object. We return +// the signature and index to guarantee that callers are getting the verified value. +// +// In most cases, you will probably want to use Verify or VerifyMulti instead. +// DetachedVerifyMulti is only useful if you have a payload and signature that are +// separated from each other, and the signature can have multiple signers at the +// same time. +func (obj JSONWebSignature) DetachedVerifyMulti(payload []byte, verificationKey interface{}) (int, Signature, error) { + verifier, err := newVerifier(verificationKey) + if err != nil { + return -1, Signature{}, err + } + + for i, signature := range obj.Signatures { + headers := signature.mergedHeaders() + critical, err := headers.getCritical() + if err != nil { + continue + } + if len(critical) > 0 { + // Unsupported crit header + continue + } + + input := obj.computeAuthData(payload, &signature) + alg := headers.getSignatureAlgorithm() + err = verifier.verifyPayload(input, signature.Signature, alg) + if err == nil { + return i, signature, nil + } + } + + return -1, Signature{}, ErrCryptoFailure +} diff --git a/vendor/gopkg.in/square/go-jose.v1/symmetric.go b/vendor/gopkg.in/square/go-jose.v2/symmetric.go similarity index 68% rename from vendor/gopkg.in/square/go-jose.v1/symmetric.go rename to vendor/gopkg.in/square/go-jose.v2/symmetric.go index 51f8cb39..09b63cef 100644 --- a/vendor/gopkg.in/square/go-jose.v1/symmetric.go +++ b/vendor/gopkg.in/square/go-jose.v2/symmetric.go @@ -17,6 +17,7 @@ package jose import ( + "bytes" "crypto/aes" "crypto/cipher" "crypto/hmac" @@ -25,18 +26,34 @@ import ( "crypto/sha512" "crypto/subtle" "errors" + "fmt" "hash" "io" - "gopkg.in/square/go-jose.v1/cipher" + "golang.org/x/crypto/pbkdf2" + "gopkg.in/square/go-jose.v2/cipher" ) // Random reader (stubbed out in tests) var randReader = rand.Reader +const ( + // RFC7518 recommends a minimum of 1,000 iterations: + // https://tools.ietf.org/html/rfc7518#section-4.8.1.2 + // NIST recommends a minimum of 10,000: + // https://pages.nist.gov/800-63-3/sp800-63b.html + // 1Password uses 100,000: + // https://support.1password.com/pbkdf2/ + defaultP2C = 100000 + // Default salt size: 128 bits + defaultP2SSize = 16 +) + // Dummy key cipher for shared symmetric key mode type symmetricKeyCipher struct { key []byte // Pre-shared content-encryption key + p2c int // PBES2 Count + p2s []byte // PBES2 Salt Input } // Signer/verifier for MAC modes @@ -113,10 +130,37 @@ func getContentCipher(alg ContentEncryption) contentCipher { } } +// getPbkdf2Params returns the key length and hash function used in +// pbkdf2.Key. +func getPbkdf2Params(alg KeyAlgorithm) (int, func() hash.Hash) { + switch alg { + case PBES2_HS256_A128KW: + return 16, sha256.New + case PBES2_HS384_A192KW: + return 24, sha512.New384 + case PBES2_HS512_A256KW: + return 32, sha512.New + default: + panic("invalid algorithm") + } +} + +// getRandomSalt generates a new salt of the given size. +func getRandomSalt(size int) ([]byte, error) { + salt := make([]byte, size) + _, err := io.ReadFull(randReader, salt) + if err != nil { + return nil, err + } + + return salt, nil +} + // newSymmetricRecipient creates a JWE encrypter based on AES-GCM key wrap. func newSymmetricRecipient(keyAlg KeyAlgorithm, key []byte) (recipientKeyInfo, error) { switch keyAlg { case DIRECT, A128GCMKW, A192GCMKW, A256GCMKW, A128KW, A192KW, A256KW: + case PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW: default: return recipientKeyInfo{}, ErrUnsupportedAlgorithm } @@ -211,6 +255,10 @@ func (ctx aeadContentCipher) decrypt(key, aad []byte, parts *aeadParts) ([]byte, return nil, err } + if len(parts.iv) != aead.NonceSize() || len(parts.tag) < ctx.authtagBytes { + return nil, ErrCryptoFailure + } + return aead.Open(nil, parts.iv, append(parts.ciphertext, parts.tag...), aad) } @@ -229,11 +277,12 @@ func (ctx *symmetricKeyCipher) encryptKey(cek []byte, alg KeyAlgorithm) (recipie return recipientInfo{}, err } + header := &rawHeader{} + header.set(headerIV, newBuffer(parts.iv)) + header.set(headerTag, newBuffer(parts.tag)) + return recipientInfo{ - header: &rawHeader{ - Iv: newBuffer(parts.iv), - Tag: newBuffer(parts.tag), - }, + header: header, encryptedKey: parts.ciphertext, }, nil case A128KW, A192KW, A256KW: @@ -251,6 +300,45 @@ func (ctx *symmetricKeyCipher) encryptKey(cek []byte, alg KeyAlgorithm) (recipie encryptedKey: jek, header: &rawHeader{}, }, nil + case PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW: + if len(ctx.p2s) == 0 { + salt, err := getRandomSalt(defaultP2SSize) + if err != nil { + return recipientInfo{}, err + } + ctx.p2s = salt + } + + if ctx.p2c <= 0 { + ctx.p2c = defaultP2C + } + + // salt is UTF8(Alg) || 0x00 || Salt Input + salt := bytes.Join([][]byte{[]byte(alg), ctx.p2s}, []byte{0x00}) + + // derive key + keyLen, h := getPbkdf2Params(alg) + key := pbkdf2.Key(ctx.key, salt, ctx.p2c, keyLen, h) + + // use AES cipher with derived key + block, err := aes.NewCipher(key) + if err != nil { + return recipientInfo{}, err + } + + jek, err := josecipher.KeyWrap(block, cek) + if err != nil { + return recipientInfo{}, err + } + + header := &rawHeader{} + header.set(headerP2C, ctx.p2c) + header.set(headerP2S, newBuffer(ctx.p2s)) + + return recipientInfo{ + encryptedKey: jek, + header: header, + }, nil } return recipientInfo{}, ErrUnsupportedAlgorithm @@ -258,7 +346,7 @@ func (ctx *symmetricKeyCipher) encryptKey(cek []byte, alg KeyAlgorithm) (recipie // Decrypt the content encryption key. func (ctx *symmetricKeyCipher) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) { - switch KeyAlgorithm(headers.Alg) { + switch headers.getAlgorithm() { case DIRECT: cek := make([]byte, len(ctx.key)) copy(cek, ctx.key) @@ -266,10 +354,19 @@ func (ctx *symmetricKeyCipher) decryptKey(headers rawHeader, recipient *recipien case A128GCMKW, A192GCMKW, A256GCMKW: aead := newAESGCM(len(ctx.key)) + iv, err := headers.getIV() + if err != nil { + return nil, fmt.Errorf("square/go-jose: invalid IV: %v", err) + } + tag, err := headers.getTag() + if err != nil { + return nil, fmt.Errorf("square/go-jose: invalid tag: %v", err) + } + parts := &aeadParts{ - iv: headers.Iv.bytes(), + iv: iv.bytes(), ciphertext: recipient.encryptedKey, - tag: headers.Tag.bytes(), + tag: tag.bytes(), } cek, err := aead.decrypt(ctx.key, []byte{}, parts) @@ -284,6 +381,42 @@ func (ctx *symmetricKeyCipher) decryptKey(headers rawHeader, recipient *recipien return nil, err } + cek, err := josecipher.KeyUnwrap(block, recipient.encryptedKey) + if err != nil { + return nil, err + } + return cek, nil + case PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW: + p2s, err := headers.getP2S() + if err != nil { + return nil, fmt.Errorf("square/go-jose: invalid P2S: %v", err) + } + if p2s == nil || len(p2s.data) == 0 { + return nil, fmt.Errorf("square/go-jose: invalid P2S: must be present") + } + + p2c, err := headers.getP2C() + if err != nil { + return nil, fmt.Errorf("square/go-jose: invalid P2C: %v", err) + } + if p2c <= 0 { + return nil, fmt.Errorf("square/go-jose: invalid P2C: must be a positive integer") + } + + // salt is UTF8(Alg) || 0x00 || Salt Input + alg := headers.getAlgorithm() + salt := bytes.Join([][]byte{[]byte(alg), p2s.bytes()}, []byte{0x00}) + + // derive key + keyLen, h := getPbkdf2Params(alg) + key := pbkdf2.Key(ctx.key, salt, p2c, keyLen, h) + + // use AES cipher with derived key + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + cek, err := josecipher.KeyUnwrap(block, recipient.encryptedKey) if err != nil { return nil, err diff --git a/vendor/modules.txt b/vendor/modules.txt index cdfccba8..a50939fb 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# github.com/RoaringBitmap/roaring v0.0.0-20180423145726-e4aafc3cbc16 +# github.com/RoaringBitmap/roaring v0.4.16 github.com/RoaringBitmap/roaring # github.com/blevesearch/bleve v0.0.0-20180525174403-1d6d47ed3ad9 github.com/blevesearch/bleve @@ -45,28 +45,30 @@ github.com/blevesearch/go-porterstemmer github.com/blevesearch/segment # github.com/boltdb/bolt v0.0.0-20180302180052-fd01fc79c553 github.com/boltdb/bolt -# github.com/couchbase/vellum v0.0.0-20180427141700-eb6ae3743b3f +# github.com/couchbase/vellum v0.0.0-20180822133609-0ceea4a37442 github.com/couchbase/vellum github.com/couchbase/vellum/levenshtein github.com/couchbase/vellum/regexp github.com/couchbase/vellum/utf8 -# github.com/davecgh/go-spew v1.1.0 +# github.com/davecgh/go-spew v1.1.1 github.com/davecgh/go-spew/spew -# github.com/dsnet/compress v0.0.0-20160704023633-b9aab3c6a04e +# github.com/dsnet/compress v0.0.0-20171208185109-cc9eb1d7ad76 github.com/dsnet/compress/brotli +github.com/dsnet/compress/internal +github.com/dsnet/compress/internal/errors # github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 github.com/edsrzf/mmap-go # github.com/fsnotify/fsnotify v1.4.7 github.com/fsnotify/fsnotify # github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd github.com/glycerine/go-unsnap-stream -# github.com/golang/protobuf v1.1.0 +# github.com/golang/protobuf v1.2.0 github.com/golang/protobuf/proto -# github.com/golang/snappy v0.0.0-20170215233205-553a64147049 +# github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db github.com/golang/snappy -# github.com/gorilla/websocket v0.0.0-20180420171612-21ab95fa12b9 +# github.com/gorilla/websocket v1.3.0 github.com/gorilla/websocket -# github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce +# github.com/hashicorp/hcl v1.0.0 github.com/hashicorp/hcl github.com/hashicorp/hcl/hcl/printer github.com/hashicorp/hcl/hcl/ast @@ -79,59 +81,61 @@ github.com/hashicorp/hcl/json/scanner github.com/hashicorp/hcl/json/token # github.com/inconshreveable/mousetrap v1.0.0 github.com/inconshreveable/mousetrap -# github.com/jpillora/backoff v0.0.0-20170222002228-06c7a16c845d +# github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d github.com/jpillora/backoff -# github.com/kjk/betterguid v0.0.0-20150214055115-c70aca50d858 +# github.com/kjk/betterguid v0.0.0-20170621091430-c442874ba63a github.com/kjk/betterguid -# github.com/magiconair/properties v0.0.0-20180217134545-2c9e95027885 +# github.com/magiconair/properties v1.8.0 github.com/magiconair/properties -# github.com/mailru/easyjson v0.0.0-20180323154445-8b799c424f57 +# github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 github.com/mailru/easyjson github.com/mailru/easyjson/jlexer github.com/mailru/easyjson/jwriter github.com/mailru/easyjson/buffer -# github.com/miekg/dns v0.0.0-20180406150955-01d59357d468 +# github.com/miekg/dns v1.0.8 github.com/miekg/dns -# github.com/mitchellh/go-homedir v0.0.0-20161203194507-b8bc1bf76747 +# github.com/mitchellh/go-homedir v1.0.0 github.com/mitchellh/go-homedir -# github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238 +# github.com/mitchellh/mapstructure v1.0.0 github.com/mitchellh/mapstructure # github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae github.com/mschoch/smat -# github.com/pelletier/go-toml v0.0.0-20180323185243-66540cf1fcd2 +# github.com/pelletier/go-toml v1.2.0 github.com/pelletier/go-toml # github.com/philhofer/fwd v1.0.0 github.com/philhofer/fwd # github.com/pmezard/go-difflib v1.0.0 github.com/pmezard/go-difflib/difflib -# github.com/spf13/afero v1.1.0 +# github.com/spf13/afero v1.1.1 github.com/spf13/afero github.com/spf13/afero/mem # github.com/spf13/cast v1.2.0 github.com/spf13/cast # github.com/spf13/cobra v0.0.3 github.com/spf13/cobra -# github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec +# github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834 github.com/spf13/jwalterweatherman -# github.com/spf13/pflag v1.0.1 +# github.com/spf13/pflag v1.0.2 github.com/spf13/pflag -# github.com/spf13/viper v0.0.0-20180404183325-8dc2790b029d +# github.com/spf13/viper v1.1.0 github.com/spf13/viper # github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 github.com/steveyen/gtreap -# github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1 +# github.com/stretchr/testify v1.2.2 github.com/stretchr/testify/assert # github.com/tinylib/msgp v0.0.0-20180215042507-3b5c87ab5fb0 github.com/tinylib/msgp/msgp # github.com/willf/bitset v1.1.9 github.com/willf/bitset -# github.com/xenolf/lego v0.0.0-20180425151241-8e9c5ac3e6bf +# github.com/xenolf/lego v1.0.1 github.com/xenolf/lego/acme -# golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307 +github.com/xenolf/lego/log +# golang.org/x/crypto v0.0.0-20180830192347-182538f80094 golang.org/x/crypto/ocsp golang.org/x/crypto/ed25519 +golang.org/x/crypto/pbkdf2 golang.org/x/crypto/ed25519/internal/edwards25519 -# golang.org/x/net v0.0.0-20180420171651-5f9ae10d9af5 +# golang.org/x/net v0.0.0-20180826012351-8a410e7b638d golang.org/x/net/html golang.org/x/net/html/atom golang.org/x/net/ipv4 @@ -139,14 +143,14 @@ golang.org/x/net/ipv6 golang.org/x/net/bpf golang.org/x/net/internal/iana golang.org/x/net/internal/socket -# golang.org/x/sys v0.0.0-20180501092740-78d5f264b493 +# golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 golang.org/x/sys/unix # golang.org/x/text v0.0.0-20180410181320-7922cc490dd5 golang.org/x/text/transform golang.org/x/text/unicode/norm -# gopkg.in/square/go-jose.v1 v1.1.0 -gopkg.in/square/go-jose.v1 -gopkg.in/square/go-jose.v1/cipher -gopkg.in/square/go-jose.v1/json +# gopkg.in/square/go-jose.v2 v2.1.8 +gopkg.in/square/go-jose.v2 +gopkg.in/square/go-jose.v2/cipher +gopkg.in/square/go-jose.v2/json # gopkg.in/yaml.v2 v2.2.1 gopkg.in/yaml.v2