├── LICENSE.md ├── README.md ├── broadlink.go ├── broadlink_home.jpg ├── broadlink_learn.jpg ├── broadlinkgo.service ├── build.sh ├── cmd ├── httpassets │ ├── css │ │ ├── bootstrap-grid.css │ │ ├── bootstrap-grid.css.map │ │ ├── bootstrap-grid.min.css │ │ ├── bootstrap-grid.min.css.map │ │ ├── bootstrap-reboot.css │ │ ├── bootstrap-reboot.css.map │ │ ├── bootstrap-reboot.min.css │ │ ├── bootstrap-reboot.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ ├── open-iconic-bootstrap.css │ │ ├── open-iconic-bootstrap.less │ │ ├── open-iconic-bootstrap.min.css │ │ ├── open-iconic-bootstrap.scss │ │ ├── open-iconic-bootstrap.styl │ │ ├── open-iconic-foundation.css │ │ ├── open-iconic-foundation.less │ │ ├── open-iconic-foundation.min.css │ │ ├── open-iconic-foundation.scss │ │ ├── open-iconic-foundation.styl │ │ ├── open-iconic.css │ │ ├── open-iconic.less │ │ ├── open-iconic.min.css │ │ ├── open-iconic.scss │ │ ├── open-iconic.styl │ │ └── sticky-footer-navbar.css │ ├── fonts │ │ ├── open-iconic.eot │ │ ├── open-iconic.otf │ │ ├── open-iconic.svg │ │ ├── open-iconic.ttf │ │ └── open-iconic.woff │ ├── js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ ├── bootstrap.min.js.map │ │ └── vendor │ │ │ └── jquery.min.js │ └── tmpl │ │ ├── index.html │ │ └── learn.html ├── main.go └── rice-box.go ├── device.go ├── go.mod ├── go.sum └── knowndevices.go /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | ----------- 3 | 4 | Copyright (c) 2019 rob121 5 | 6 | Permission is hereby granted, free of charge, to any person 7 | obtaining a copy of this software and associated documentation 8 | files (the "Software"), to deal in the Software without 9 | restriction, including without limitation the rights to use, 10 | copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following 13 | conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Broadlinkgo 2 | 3 | Broadlink golang http server api 4 | 5 | ## Overview 6 | 7 | This api allows access to the Broadlink family of devices for IR/RM control via an http api. There is a web portal for basic management as well. 8 | 9 | 10 | ![Image of Home](broadlink_home.jpg?raw=true) 11 | 12 | 13 | ## Getting Started 14 | 15 | Start the program 16 | 17 | ``` 18 | broadlinkgo --port=8000 --cmdpath=./ 19 | ``` 20 | 21 | Cmdpath is the location where a "commands" folder exists (it will be created if not present) this is where learned codes will be placed. 22 | 23 | For linux/systemd systems a service file is included, the default command dir is "/etc/broadlinkgo" and the systemd unit file is looking for the binary in /usr/local/bin 24 | 25 | 26 | The program will look for devices on the network and then once found start the server listening on the port. It will continually scan for devices so if more are added later they will be auto added without needing to re-start 27 | 28 | ## Building from source 29 | 30 | The program uses rice (https://github.com/GeertJohan/go.rice) to embed html 31 | 32 | Once you have the rice tool build: 33 | 34 | ``` 35 | cd cmd 36 | rice embed-go 37 | go build -o broadlinkgo 38 | ``` 39 | 40 | This will package up everything into a binary "broadlinkgo". I've included a few popular build types binaries in releases. 41 | 42 | 43 | ## Web Interface 44 | 45 | This page gives overall status and ability to manage learned commands, the web interface is available on the host running the software at the port you started with (default port is 8000) 46 | 47 | ### Adding Devices 48 | 49 | Add the Broadlink devices to your network per the manufacturer instructions, once the broadlinkgo software is started it will find them on the network using a discovery process and make them available in the web interface. 50 | 51 | Sometimes a network has issues doing self discover, there is a manual mode for that. Restart the software with the manual mode flag and you can add a device using the ip and mac address directly 52 | 53 | ``` 54 | broadlinkgo --port=8000 --cmdpath=./ --mode=manual 55 | ``` 56 | 57 | A button will appear on the interface allowing you to add a device manually skipping the discovery step. Special care should be taken to make sure you pick the correct device type to connect to when using this mode. 58 | 59 | ### Learning 60 | 61 | Learning is super simple, just go to /learn via the home page and you'll get prompted for what to do. 62 | 63 | ![Image of Home](broadlink_learn.jpg?raw=true) 64 | 65 | 66 | 67 | # Api 68 | 69 | After learning codes the commands to use the api are dead simple 70 | 71 | ## Sending a command 72 | 73 | ``` 74 | GET /cmd/{name} 75 | ``` 76 | 77 | Sends a command using the name from learn, so if you did tv_on in learn then you would trigger it by using 78 | 79 | ``` 80 | GET /cmd/tv_on 81 | ``` 82 | 83 | ## Sending a command that repeats 84 | 85 | ``` 86 | GET /cmd/{name}:repeatn 87 | ``` 88 | 89 | For some buttons like volume, you will want to repeat them so you can use :N to repeat N times 90 | 91 | ``` 92 | GET /cmd/tv_volup:5 93 | ``` 94 | 95 | This will repeat the tv_volup command 5 times 96 | 97 | ## Sending multiple commands as a macro 98 | 99 | ``` 100 | GET /macro/{name}:repeat/{name}:repeat 101 | ``` 102 | 103 | You may also want to turn up the volume and say change source, so do that with the macro end point 104 | 105 | ``` 106 | GET /macro/tv_power/tv_volup:5/tv_source/tv_source_hdmi1 107 | ``` 108 | 109 | There is also a magic "delay" command (1s) that will put in a delay for devices that can't handle the default 10ms break 110 | 111 | ``` 112 | GET /macro/tv_power/tv_volup:5/tv_source/delay/delay/tv_source_hdmi1 113 | ``` 114 | 115 | Add a 2 second delay in the macro 116 | 117 | ## App Status 118 | 119 | ``` 120 | GET /status 121 | ``` 122 | 123 | Returns json for devices and commands that are configured 124 | 125 | ## Sending a command to a specific device 126 | 127 | You can send to a specific device by using the mac enumerated in the web page under devices 128 | 129 | ``` 130 | GET /device/{MAC}/cmd/.... 131 | GET /device/{MAC}/macro/.... 132 | ``` 133 | 134 | For example, send tv_on to device 8f:47:4E:I9 135 | 136 | ``` 137 | GET /device/8f:47:4E:I9/cmd/tv_on 138 | ``` 139 | 140 | 141 | ## Removing a command 142 | 143 | ``` 144 | POST /remove/{name} 145 | ``` 146 | 147 | Removing the volup command for a vizio tv 148 | 149 | ``` 150 | POST /remove/vizio_volup 151 | ``` 152 | 153 | 154 | ## Sending command to a specifc device 155 | 156 | Using the mac address listed in devices on the web portal you can send the above commands to a specific device 157 | 158 | 159 | 160 | # Credit 161 | 162 | This builds upon the work of a few other projects most notably https://github.com/kwkoo/golang_broadlink_rm 163 | -------------------------------------------------------------------------------- /broadlink.go: -------------------------------------------------------------------------------- 1 | package broadlinkgo 2 | 3 | import ( 4 | "encoding/hex" 5 | "fmt" 6 | "log" 7 | "net" 8 | "strconv" 9 | "strings" 10 | "time" 11 | "sort" 12 | "os" 13 | ) 14 | 15 | var Logger *log.Logger 16 | 17 | 18 | 19 | func init() { 20 | Logger = log.New(os.Stderr, "xxx: ", log.Ldate | log.Ltime | log.Lshortfile) 21 | } 22 | 23 | 24 | const defaultTimeout = 5 // seconds 25 | 26 | // Broadlink keeps a track of all the devices and sockets. 27 | type Broadlink struct { 28 | timeout int // in seconds 29 | devices []*device 30 | lookup map[string]*device 31 | } 32 | 33 | // NewBroadlink creates and initializes a new Broadlink struct. 34 | func NewBroadlink() Broadlink { 35 | b := Broadlink{ 36 | timeout: defaultTimeout, 37 | lookup: make(map[string]*device), 38 | } 39 | return b 40 | } 41 | 42 | // WithTimeout sets the timeout for all subsequent read operations. 43 | func (b *Broadlink) WithTimeout(t int) *Broadlink { 44 | b.timeout = t 45 | return b 46 | } 47 | 48 | // Count returns the number of devices that were discovered. 49 | func (b Broadlink) Count() int { 50 | return len(b.devices) 51 | } 52 | 53 | func (b Broadlink) DeviceTypes() map[int]string { 54 | 55 | var kd = make(map[int]string) 56 | for _, d := range knownDevices { 57 | 58 | if d.Supported == true { 59 | 60 | kd[d.DeviceType] = d.Name 61 | 62 | } 63 | 64 | } 65 | 66 | return kd 67 | } 68 | 69 | // Discover will populate the Broadlink struct with a device. 70 | func (b *Broadlink) DiscoverHost(host string) error { 71 | conn, err := net.ListenPacket("udp4", "") 72 | if err != nil { 73 | return fmt.Errorf("could not bind UDP listener: %v", err) 74 | } 75 | defer conn.Close() 76 | 77 | err = sendHelloPacketToHost(conn, host) 78 | if err != nil { 79 | return fmt.Errorf("error sending broadcast packet: %v", err) 80 | } 81 | b.readPacket(conn) 82 | 83 | return nil 84 | } 85 | 86 | // Discover will populate the Broadlink struct with a slice of Devices. 87 | func (b *Broadlink) Discover() error { 88 | conn, err := net.ListenPacket("udp4", "") 89 | if err != nil { 90 | return fmt.Errorf("could not bind UDP listener: %v", err) 91 | } 92 | defer conn.Close() 93 | 94 | log.Printf("Listening to address %v", conn.LocalAddr().String()) 95 | err = sendBroadcastPacket(conn) 96 | if err != nil { 97 | return fmt.Errorf("error sending broadcast packet: %v", err) 98 | } 99 | b.readPacket(conn) 100 | 101 | return nil 102 | } 103 | 104 | 105 | // Learn sends a learn command to the specified device. If id is an empty string it selects the first device. 106 | func (b *Broadlink) Learn(id string) (string, error) { 107 | d, err := b.deviceIsCapableOfIR(id) 108 | if err != nil { 109 | return "", err 110 | } 111 | 112 | resp, err := d.learn() 113 | if err != nil { 114 | return "", fmt.Errorf("error while calling learn: %v", err) 115 | } 116 | 117 | log.Print("Learn successful") 118 | return hex.EncodeToString(resp.Data), nil 119 | } 120 | 121 | // LearnRF sends an RF Sweep command to the specified device. If id is an empty string it selects the first device. 122 | func (b *Broadlink) LearnRF(id string) (string, error) { 123 | d, err := b.deviceIsCapableOfRF(id) 124 | if err != nil { 125 | return "", err 126 | } 127 | 128 | resp, err := d.learnRF() 129 | if err != nil { 130 | return "", fmt.Errorf("error while calling learn RF: %v", err) 131 | } 132 | 133 | log.Print("Learn RF successful") 134 | return hex.EncodeToString(resp.Data), nil 135 | } 136 | 137 | // Execute looks at the device type and decides if it should call send() or 138 | // setPowerState(). 139 | func (b *Broadlink) Execute(id, s string) error { 140 | d, err := b.deviceExistsAndIsKnown(id) 141 | if err != nil { 142 | return err 143 | } 144 | devChar := isKnownDevice(d.deviceType) 145 | if devChar.power { 146 | l := len(s) 147 | if l != 1 && l != 2 { 148 | return fmt.Errorf("device %v is a power outlet and can only accept the data of 0, 00, 1, or 01 - got %v instead", d.mac.String(), s) 149 | } 150 | return d.setPowerState(s) 151 | } 152 | if devChar.ir || devChar.rf { 153 | return d.sendString(s) 154 | } 155 | return fmt.Errorf("device %v device type %v (0x%04x) is not capable of power control, IR, and RF", d.mac.String(), d.deviceType, d.deviceType) 156 | } 157 | 158 | // GetPowerState queries a WiFi-enabled power outlet and returns its state (on or off). 159 | func (b *Broadlink) GetPowerState(id string) (bool, error) { 160 | d, err := b.deviceIsCapableOfPowerControl(id) 161 | if err != nil { 162 | return false, err 163 | } 164 | return d.getPowerState() 165 | } 166 | 167 | func (b *Broadlink) AddManualDevice(ip string, macs string, deviceType int) error { 168 | 169 | mac, err := net.ParseMAC(macs) 170 | 171 | if err != nil { 172 | 173 | } 174 | 175 | devChar := isKnownDevice(deviceType) 176 | if !devChar.supported { 177 | return fmt.Errorf("device type %v (0x%04x) is not supported", deviceType, deviceType) 178 | } 179 | d, err := newDevice(ip, mac, b.timeout, devChar) 180 | if err != nil { 181 | return err 182 | } 183 | if b.getDevice(d.remoteAddr) != nil { 184 | log.Printf("A device with IP %v already exists - skipping manual add", d.remoteAddr) 185 | return nil 186 | } 187 | hw := d.mac.String() 188 | if (len(hw) > 0) && (b.getDevice(hw) != nil) { 189 | log.Printf("A device with MAC %v already exists - skipping manual add", hw) 190 | } 191 | b.devices = append(b.devices, d) 192 | 193 | if len(hw) > 0 { 194 | b.lookup[strings.ToLower(hw)] = d 195 | }else{ 196 | 197 | b.lookup[d.remoteAddr] = d 198 | 199 | 200 | } 201 | 202 | return nil 203 | } 204 | 205 | func (b Broadlink) DeviceExists(id string) bool { 206 | 207 | d := b.getDevice(id) 208 | 209 | if(d!=nil){ 210 | 211 | return true 212 | 213 | } 214 | 215 | return false 216 | 217 | 218 | } 219 | 220 | func (b Broadlink) getDevice(id string) *device { 221 | d, ok := b.lookup[strings.ToLower(id)] 222 | if !ok { 223 | return nil 224 | } 225 | return d 226 | } 227 | 228 | func SortMapStringSlice(m map[string][]string) map[string][]string { 229 | 230 | out := make(map[string][]string) 231 | 232 | keys := make([]string, 0, len(m)) 233 | 234 | for k := range m { 235 | keys = append(keys, k) 236 | } 237 | 238 | sort.Strings(keys) 239 | 240 | for _, k := range keys { 241 | 242 | 243 | out[k]=m[k] 244 | } 245 | 246 | 247 | return out 248 | 249 | } 250 | 251 | func (b Broadlink) DeviceIds() map[string][]string { 252 | 253 | var lkp = make(map[string][]string) 254 | 255 | for k, v := range b.lookup { 256 | 257 | typ := strconv.Itoa(v.deviceType) 258 | 259 | lkp[k] = []string{v.remoteAddr,typ} 260 | 261 | } 262 | 263 | lkp = SortMapStringSlice(lkp) 264 | 265 | return lkp 266 | 267 | } 268 | 269 | func (b *Broadlink) readPacket(conn net.PacketConn) { 270 | var buf [1024]byte 271 | if b.timeout <= 0 { 272 | b.timeout = defaultTimeout 273 | } 274 | for { 275 | conn.SetReadDeadline(time.Now().Add(time.Duration(b.timeout) * time.Second)) 276 | plen, remote, err := conn.ReadFrom(buf[:]) 277 | if err != nil { 278 | e, ok := err.(net.Error) 279 | if ok && e.Timeout() { 280 | break 281 | } 282 | log.Printf("Error reading UDP packet: %v", err) 283 | } 284 | 285 | if plen < 0x40 { 286 | log.Print("Ignoring packet because it is too short") 287 | return 288 | } 289 | var mac net.HardwareAddr 290 | mac = append(mac, buf[0x3f]) 291 | mac = append(mac, buf[0x3e]) 292 | mac = append(mac, buf[0x3d]) 293 | mac = append(mac, buf[0x3c]) 294 | mac = append(mac, buf[0x3b]) 295 | mac = append(mac, buf[0x3a]) 296 | 297 | deviceType := (int)(buf[0x34]) | ((int)(buf[0x35]) << 8) 298 | 299 | b.addDevice(remote, mac, deviceType) 300 | } 301 | } 302 | 303 | func (b *Broadlink) addDevice(remote net.Addr, mac net.HardwareAddr, deviceType int) { 304 | remoteAddr := remote.String() 305 | if strings.Contains(remoteAddr, ":") { 306 | remoteAddr = remoteAddr[:strings.Index(remoteAddr, ":")] 307 | } 308 | devChar := isKnownDevice(deviceType) 309 | if !devChar.known { 310 | log.Printf("Unknown device (0x%04x) at address %v, MAC %v", deviceType, remoteAddr, mac.String()) 311 | return 312 | } 313 | if !devChar.supported { 314 | log.Printf("Unsupported %v (0x%04x) found at address %v, MAC %v", devChar.name, deviceType, remoteAddr, mac.String()) 315 | } 316 | 317 | _, ipOK := b.lookup[strings.ToLower(remoteAddr)] 318 | _, macOK := b.lookup[strings.ToLower(mac.String())] 319 | if ipOK || macOK { 320 | log.Printf("We already know about %v, MAC %v - skipping", remoteAddr, mac.String()) 321 | return 322 | } 323 | 324 | dev, err := newDevice(remoteAddr, mac, b.timeout, devChar) 325 | if err != nil { 326 | log.Printf("Error creating new device: %v", err) 327 | return 328 | } 329 | b.devices = append(b.devices, dev) 330 | 331 | // one device lookup is fine 332 | b.lookup[strings.ToLower(mac.String())] = dev 333 | } 334 | 335 | func (b *Broadlink) RemoveDevice(key string){ 336 | 337 | 338 | delete(b.lookup,key) 339 | 340 | 341 | } 342 | 343 | func sendHelloPacketToHost(conn net.PacketConn, host string) error { 344 | ip, port, err := parseIPAndPort(conn.LocalAddr().String()) 345 | if err != nil { 346 | return err 347 | } 348 | 349 | var packet [0x30]byte 350 | 351 | t := currentTime() 352 | copy(packet[0x08:], t[:]) 353 | copy(packet[0x18:], ip[:]) 354 | copy(packet[0x1c:], port[:]) 355 | packet[0x26] = 6 356 | checksum := calculateChecksum(packet[:]) 357 | copy(packet[0x20:], checksum[:]) 358 | 359 | return sendPacket(packet[:], conn, fmt.Sprintf("%s:80", host)) 360 | } 361 | 362 | func sendBroadcastPacket(conn net.PacketConn) error { 363 | return sendHelloPacketToHost(conn, "255.255.255.255") 364 | } 365 | 366 | func sendPacket(p []byte, conn net.PacketConn, dest string) error { 367 | destAddr, err := net.ResolveUDPAddr("udp", dest) 368 | if err != nil { 369 | return fmt.Errorf("could not resolve broadcast address: %v", err) 370 | } 371 | 372 | _, err = conn.WriteTo(p, destAddr) 373 | if err != nil { 374 | return fmt.Errorf("error while writing broadcast message: %v", err) 375 | } 376 | 377 | return nil 378 | } 379 | 380 | func parseIPAndPort(address string) ([4]byte, [2]byte, error) { 381 | 382 | var ip [4]byte 383 | var port [2]byte 384 | 385 | if !strings.Contains(address, ":") { 386 | return ip, port, fmt.Errorf("%v is not of the form XXX.XXX.XXX.XXX:XXX", address) 387 | } 388 | 389 | index := strings.Index(address, ":") 390 | p, err := strconv.Atoi(address[index+1:]) 391 | if err != nil { 392 | return [4]byte{}, [2]byte{}, 393 | 394 | fmt.Errorf("could not parse port number %v", address[index+1:]) 395 | } 396 | port[0] = (byte)(p & 0xff) 397 | port[1] = (byte)(p >> 8) 398 | 399 | components := strings.Split(address[:index], ".") 400 | if len(components) != 4 { 401 | return ip, port, fmt.Errorf("%v is not of the form XXX.XXX.XXX.XXX", address[:index]) 402 | } 403 | 404 | for i := 0; i < 4; i++ { 405 | tmp, err := strconv.Atoi(components[i]) 406 | if err != nil || tmp < 0 || tmp > 255 { 407 | return ip, port, fmt.Errorf("%v is not a valid IP address", address[:index]) 408 | } 409 | ip[i] = (byte)(tmp) 410 | } 411 | 412 | return ip, port, nil 413 | } 414 | 415 | func currentTime() [12]byte { 416 | var b [12]byte 417 | 418 | now := time.Now() 419 | _, offset := now.Local().Zone() 420 | offset = offset / 3600 421 | 422 | if offset < 0 { 423 | b[0] = (byte)(0xff + offset - 1) 424 | b[1] = 0xff 425 | b[2] = 0xff 426 | b[3] = 0xff 427 | } else { 428 | b[0] = (byte)(offset) 429 | b[1] = 0 430 | b[2] = 0 431 | b[3] = 0 432 | } 433 | 434 | year := now.Year() 435 | b[4] = (byte)(year & 0xff) 436 | b[5] = (byte)(year >> 8) 437 | b[6] = (byte)(now.Minute()) 438 | b[7] = (byte)(now.Hour()) 439 | b[8] = (byte)(year % 100) 440 | b[9] = (byte)(now.Weekday()) 441 | b[10] = (byte)(now.Day()) 442 | b[11] = (byte)(now.Month()) 443 | 444 | return b 445 | } 446 | 447 | func calculateChecksum(p []byte) [2]byte { 448 | checksum := 0xbeaf 449 | 450 | for _, v := range p { 451 | checksum += (int)(v) 452 | } 453 | 454 | checksum = checksum & 0xffff 455 | 456 | return [2]byte{(byte)(checksum & 0xff), (byte)(checksum >> 8)} 457 | } 458 | 459 | func (b Broadlink) deviceExistsAndIsKnown(id string) (*device, error) { 460 | if len(b.devices) == 0 { 461 | return nil, fmt.Errorf("no devices") 462 | } 463 | var d *device 464 | if len(id) == 0 { 465 | d = b.devices[0] 466 | } else { 467 | d = b.getDevice(id) 468 | if d == nil { 469 | return nil, fmt.Errorf("%v is not a known device", id) 470 | } 471 | } 472 | return d, nil 473 | } 474 | 475 | func (b Broadlink) deviceIsCapableOfIR(id string) (*device, error) { 476 | d, err := b.deviceExistsAndIsKnown(id) 477 | if err != nil { 478 | return nil, err 479 | } 480 | 481 | devChar := isKnownDevice(d.deviceType) 482 | if !devChar.ir { 483 | return d, fmt.Errorf("device %v is of device type %v (0x%04x) and is not capable of sending and receiving IR", d.mac.String(), d.deviceType, d.deviceType) 484 | } 485 | return d, nil 486 | } 487 | 488 | func (b Broadlink) deviceIsCapableOfRF(id string) (*device, error) { 489 | d, err := b.deviceExistsAndIsKnown(id) 490 | if err != nil { 491 | return nil, err 492 | } 493 | 494 | devChar := isKnownDevice(d.deviceType) 495 | if !devChar.rf { 496 | return d, fmt.Errorf("device %v is of device type %v (0x%04x) and is not capable of sending and receiving RF", d.mac.String(), d.deviceType, d.deviceType) 497 | } 498 | return d, nil 499 | } 500 | 501 | func (b Broadlink) deviceIsCapableOfPowerControl(id string) (*device, error) { 502 | d, err := b.deviceExistsAndIsKnown(id) 503 | if err != nil { 504 | return nil, err 505 | } 506 | 507 | devChar := isKnownDevice(d.deviceType) 508 | if !devChar.power { 509 | return d, fmt.Errorf("device %v is of device type %v (0x%04x) and is not capable of power control", d.mac.String(), d.deviceType, d.deviceType) 510 | } 511 | return d, nil 512 | } 513 | -------------------------------------------------------------------------------- /broadlink_home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rob121/broadlinkgo/7c58e6a86bd08d4d36cf898e2517e9e14784dd7d/broadlink_home.jpg -------------------------------------------------------------------------------- /broadlink_learn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rob121/broadlinkgo/7c58e6a86bd08d4d36cf898e2517e9e14784dd7d/broadlink_learn.jpg -------------------------------------------------------------------------------- /broadlinkgo.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Broadlink device server 3 | After=syslog.target network.target remote-fs.target nss-lookup.target 4 | 5 | [Service] 6 | Type=simple 7 | PIDFile=/run/broadlink.pid 8 | ExecStart=/usr/local/bin/broadlinkgo 9 | ExecStop=/bin/kill -s QUIT $MAINPID 10 | Restart=always 11 | RestartSec=3 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | 4 | cd cmd 5 | 6 | rice embed-go 7 | env GOOS=linux GOARCH=amd64 go build -o $1broadlinkgo-linux-amd64 8 | env GOOS=linux GOARCH=arm GOARM=5 go build -o $1broadlinkgo-linux-arm5-raspi 9 | env GOOS=linux GOARCH=arm GOARM=6 go build -o $1broadlinkgo-linux-arm6-raspi 10 | env GOOS=linux GOARCH=arm GOARM=7 go build -o $1broadlinkgo-linux-arm7-raspi 11 | env GOOS=linux GOARCH=arm64 go build -o $1broadlinkgo-linux-arm8-raspi4 12 | env GOOS=windows GOARCH=amd64 go build -o $1broadlinkgo-windows-amd64.exe 13 | env GOOS=darwin GOARCH=amd64 go build -o $1broadlinkgo-darwin-amd64 14 | -------------------------------------------------------------------------------- /cmd/httpassets/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 The Bootstrap Authors 4 | * Copyright 2011-2019 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | *, 9 | *::before, 10 | *::after { 11 | box-sizing: border-box; 12 | } 13 | 14 | html { 15 | font-family: sans-serif; 16 | line-height: 1.15; 17 | -webkit-text-size-adjust: 100%; 18 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 19 | } 20 | 21 | article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { 22 | display: block; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 28 | font-size: 1rem; 29 | font-weight: 400; 30 | line-height: 1.5; 31 | color: #212529; 32 | text-align: left; 33 | background-color: #fff; 34 | } 35 | 36 | [tabindex="-1"]:focus { 37 | outline: 0 !important; 38 | } 39 | 40 | hr { 41 | box-sizing: content-box; 42 | height: 0; 43 | overflow: visible; 44 | } 45 | 46 | h1, h2, h3, h4, h5, h6 { 47 | margin-top: 0; 48 | margin-bottom: 0.5rem; 49 | } 50 | 51 | p { 52 | margin-top: 0; 53 | margin-bottom: 1rem; 54 | } 55 | 56 | abbr[title], 57 | abbr[data-original-title] { 58 | text-decoration: underline; 59 | -webkit-text-decoration: underline dotted; 60 | text-decoration: underline dotted; 61 | cursor: help; 62 | border-bottom: 0; 63 | -webkit-text-decoration-skip-ink: none; 64 | text-decoration-skip-ink: none; 65 | } 66 | 67 | address { 68 | margin-bottom: 1rem; 69 | font-style: normal; 70 | line-height: inherit; 71 | } 72 | 73 | ol, 74 | ul, 75 | dl { 76 | margin-top: 0; 77 | margin-bottom: 1rem; 78 | } 79 | 80 | ol ol, 81 | ul ul, 82 | ol ul, 83 | ul ol { 84 | margin-bottom: 0; 85 | } 86 | 87 | dt { 88 | font-weight: 700; 89 | } 90 | 91 | dd { 92 | margin-bottom: .5rem; 93 | margin-left: 0; 94 | } 95 | 96 | blockquote { 97 | margin: 0 0 1rem; 98 | } 99 | 100 | b, 101 | strong { 102 | font-weight: bolder; 103 | } 104 | 105 | small { 106 | font-size: 80%; 107 | } 108 | 109 | sub, 110 | sup { 111 | position: relative; 112 | font-size: 75%; 113 | line-height: 0; 114 | vertical-align: baseline; 115 | } 116 | 117 | sub { 118 | bottom: -.25em; 119 | } 120 | 121 | sup { 122 | top: -.5em; 123 | } 124 | 125 | a { 126 | color: #007bff; 127 | text-decoration: none; 128 | background-color: transparent; 129 | } 130 | 131 | a:hover { 132 | color: #0056b3; 133 | text-decoration: underline; 134 | } 135 | 136 | a:not([href]):not([tabindex]) { 137 | color: inherit; 138 | text-decoration: none; 139 | } 140 | 141 | a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { 142 | color: inherit; 143 | text-decoration: none; 144 | } 145 | 146 | a:not([href]):not([tabindex]):focus { 147 | outline: 0; 148 | } 149 | 150 | pre, 151 | code, 152 | kbd, 153 | samp { 154 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 155 | font-size: 1em; 156 | } 157 | 158 | pre { 159 | margin-top: 0; 160 | margin-bottom: 1rem; 161 | overflow: auto; 162 | } 163 | 164 | figure { 165 | margin: 0 0 1rem; 166 | } 167 | 168 | img { 169 | vertical-align: middle; 170 | border-style: none; 171 | } 172 | 173 | svg { 174 | overflow: hidden; 175 | vertical-align: middle; 176 | } 177 | 178 | table { 179 | border-collapse: collapse; 180 | } 181 | 182 | caption { 183 | padding-top: 0.75rem; 184 | padding-bottom: 0.75rem; 185 | color: #6c757d; 186 | text-align: left; 187 | caption-side: bottom; 188 | } 189 | 190 | th { 191 | text-align: inherit; 192 | } 193 | 194 | label { 195 | display: inline-block; 196 | margin-bottom: 0.5rem; 197 | } 198 | 199 | button { 200 | border-radius: 0; 201 | } 202 | 203 | button:focus { 204 | outline: 1px dotted; 205 | outline: 5px auto -webkit-focus-ring-color; 206 | } 207 | 208 | input, 209 | button, 210 | select, 211 | optgroup, 212 | textarea { 213 | margin: 0; 214 | font-family: inherit; 215 | font-size: inherit; 216 | line-height: inherit; 217 | } 218 | 219 | button, 220 | input { 221 | overflow: visible; 222 | } 223 | 224 | button, 225 | select { 226 | text-transform: none; 227 | } 228 | 229 | select { 230 | word-wrap: normal; 231 | } 232 | 233 | button, 234 | [type="button"], 235 | [type="reset"], 236 | [type="submit"] { 237 | -webkit-appearance: button; 238 | } 239 | 240 | button:not(:disabled), 241 | [type="button"]:not(:disabled), 242 | [type="reset"]:not(:disabled), 243 | [type="submit"]:not(:disabled) { 244 | cursor: pointer; 245 | } 246 | 247 | button::-moz-focus-inner, 248 | [type="button"]::-moz-focus-inner, 249 | [type="reset"]::-moz-focus-inner, 250 | [type="submit"]::-moz-focus-inner { 251 | padding: 0; 252 | border-style: none; 253 | } 254 | 255 | input[type="radio"], 256 | input[type="checkbox"] { 257 | box-sizing: border-box; 258 | padding: 0; 259 | } 260 | 261 | input[type="date"], 262 | input[type="time"], 263 | input[type="datetime-local"], 264 | input[type="month"] { 265 | -webkit-appearance: listbox; 266 | } 267 | 268 | textarea { 269 | overflow: auto; 270 | resize: vertical; 271 | } 272 | 273 | fieldset { 274 | min-width: 0; 275 | padding: 0; 276 | margin: 0; 277 | border: 0; 278 | } 279 | 280 | legend { 281 | display: block; 282 | width: 100%; 283 | max-width: 100%; 284 | padding: 0; 285 | margin-bottom: .5rem; 286 | font-size: 1.5rem; 287 | line-height: inherit; 288 | color: inherit; 289 | white-space: normal; 290 | } 291 | 292 | progress { 293 | vertical-align: baseline; 294 | } 295 | 296 | [type="number"]::-webkit-inner-spin-button, 297 | [type="number"]::-webkit-outer-spin-button { 298 | height: auto; 299 | } 300 | 301 | [type="search"] { 302 | outline-offset: -2px; 303 | -webkit-appearance: none; 304 | } 305 | 306 | [type="search"]::-webkit-search-decoration { 307 | -webkit-appearance: none; 308 | } 309 | 310 | ::-webkit-file-upload-button { 311 | font: inherit; 312 | -webkit-appearance: button; 313 | } 314 | 315 | output { 316 | display: inline-block; 317 | } 318 | 319 | summary { 320 | display: list-item; 321 | cursor: pointer; 322 | } 323 | 324 | template { 325 | display: none; 326 | } 327 | 328 | [hidden] { 329 | display: none !important; 330 | } 331 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /cmd/httpassets/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 The Bootstrap Authors 4 | * Copyright 2011-2019 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic-bootstrap.css: -------------------------------------------------------------------------------- 1 | /* Bootstrap */ 2 | 3 | @font-face { 4 | font-family: 'Icons'; 5 | src: url('../fonts/open-iconic.eot'); 6 | src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | .oi { 12 | position: relative; 13 | top: 1px; 14 | display: inline-block; 15 | speak:none; 16 | font-family: 'Icons'; 17 | font-style: normal; 18 | font-weight: normal; 19 | line-height: 1; 20 | -webkit-font-smoothing: antialiased; 21 | -moz-osx-font-smoothing: grayscale; 22 | } 23 | 24 | .oi:empty:before { 25 | width: 1em; 26 | text-align: center; 27 | box-sizing: content-box; 28 | } 29 | 30 | .oi.oi-align-center:before { 31 | text-align: center; 32 | } 33 | 34 | .oi.oi-align-left:before { 35 | text-align: left; 36 | } 37 | 38 | .oi.oi-align-right:before { 39 | text-align: right; 40 | } 41 | 42 | 43 | .oi.oi-flip-horizontal:before { 44 | -webkit-transform: scale(-1, 1); 45 | -ms-transform: scale(-1, 1); 46 | transform: scale(-1, 1); 47 | } 48 | 49 | .oi.oi-flip-vertical:before { 50 | -webkit-transform: scale(1, -1); 51 | -ms-transform: scale(-1, 1); 52 | transform: scale(1, -1); 53 | } 54 | 55 | .oi.oi-flip-horizontal-vertical:before { 56 | -webkit-transform: scale(-1, -1); 57 | -ms-transform: scale(-1, 1); 58 | transform: scale(-1, -1); 59 | } 60 | 61 | 62 | .oi-account-login:before { 63 | content:'\e000'; 64 | } 65 | 66 | .oi-account-logout:before { 67 | content:'\e001'; 68 | } 69 | 70 | .oi-action-redo:before { 71 | content:'\e002'; 72 | } 73 | 74 | .oi-action-undo:before { 75 | content:'\e003'; 76 | } 77 | 78 | .oi-align-center:before { 79 | content:'\e004'; 80 | } 81 | 82 | .oi-align-left:before { 83 | content:'\e005'; 84 | } 85 | 86 | .oi-align-right:before { 87 | content:'\e006'; 88 | } 89 | 90 | .oi-aperture:before { 91 | content:'\e007'; 92 | } 93 | 94 | .oi-arrow-bottom:before { 95 | content:'\e008'; 96 | } 97 | 98 | .oi-arrow-circle-bottom:before { 99 | content:'\e009'; 100 | } 101 | 102 | .oi-arrow-circle-left:before { 103 | content:'\e00a'; 104 | } 105 | 106 | .oi-arrow-circle-right:before { 107 | content:'\e00b'; 108 | } 109 | 110 | .oi-arrow-circle-top:before { 111 | content:'\e00c'; 112 | } 113 | 114 | .oi-arrow-left:before { 115 | content:'\e00d'; 116 | } 117 | 118 | .oi-arrow-right:before { 119 | content:'\e00e'; 120 | } 121 | 122 | .oi-arrow-thick-bottom:before { 123 | content:'\e00f'; 124 | } 125 | 126 | .oi-arrow-thick-left:before { 127 | content:'\e010'; 128 | } 129 | 130 | .oi-arrow-thick-right:before { 131 | content:'\e011'; 132 | } 133 | 134 | .oi-arrow-thick-top:before { 135 | content:'\e012'; 136 | } 137 | 138 | .oi-arrow-top:before { 139 | content:'\e013'; 140 | } 141 | 142 | .oi-audio-spectrum:before { 143 | content:'\e014'; 144 | } 145 | 146 | .oi-audio:before { 147 | content:'\e015'; 148 | } 149 | 150 | .oi-badge:before { 151 | content:'\e016'; 152 | } 153 | 154 | .oi-ban:before { 155 | content:'\e017'; 156 | } 157 | 158 | .oi-bar-chart:before { 159 | content:'\e018'; 160 | } 161 | 162 | .oi-basket:before { 163 | content:'\e019'; 164 | } 165 | 166 | .oi-battery-empty:before { 167 | content:'\e01a'; 168 | } 169 | 170 | .oi-battery-full:before { 171 | content:'\e01b'; 172 | } 173 | 174 | .oi-beaker:before { 175 | content:'\e01c'; 176 | } 177 | 178 | .oi-bell:before { 179 | content:'\e01d'; 180 | } 181 | 182 | .oi-bluetooth:before { 183 | content:'\e01e'; 184 | } 185 | 186 | .oi-bold:before { 187 | content:'\e01f'; 188 | } 189 | 190 | .oi-bolt:before { 191 | content:'\e020'; 192 | } 193 | 194 | .oi-book:before { 195 | content:'\e021'; 196 | } 197 | 198 | .oi-bookmark:before { 199 | content:'\e022'; 200 | } 201 | 202 | .oi-box:before { 203 | content:'\e023'; 204 | } 205 | 206 | .oi-briefcase:before { 207 | content:'\e024'; 208 | } 209 | 210 | .oi-british-pound:before { 211 | content:'\e025'; 212 | } 213 | 214 | .oi-browser:before { 215 | content:'\e026'; 216 | } 217 | 218 | .oi-brush:before { 219 | content:'\e027'; 220 | } 221 | 222 | .oi-bug:before { 223 | content:'\e028'; 224 | } 225 | 226 | .oi-bullhorn:before { 227 | content:'\e029'; 228 | } 229 | 230 | .oi-calculator:before { 231 | content:'\e02a'; 232 | } 233 | 234 | .oi-calendar:before { 235 | content:'\e02b'; 236 | } 237 | 238 | .oi-camera-slr:before { 239 | content:'\e02c'; 240 | } 241 | 242 | .oi-caret-bottom:before { 243 | content:'\e02d'; 244 | } 245 | 246 | .oi-caret-left:before { 247 | content:'\e02e'; 248 | } 249 | 250 | .oi-caret-right:before { 251 | content:'\e02f'; 252 | } 253 | 254 | .oi-caret-top:before { 255 | content:'\e030'; 256 | } 257 | 258 | .oi-cart:before { 259 | content:'\e031'; 260 | } 261 | 262 | .oi-chat:before { 263 | content:'\e032'; 264 | } 265 | 266 | .oi-check:before { 267 | content:'\e033'; 268 | } 269 | 270 | .oi-chevron-bottom:before { 271 | content:'\e034'; 272 | } 273 | 274 | .oi-chevron-left:before { 275 | content:'\e035'; 276 | } 277 | 278 | .oi-chevron-right:before { 279 | content:'\e036'; 280 | } 281 | 282 | .oi-chevron-top:before { 283 | content:'\e037'; 284 | } 285 | 286 | .oi-circle-check:before { 287 | content:'\e038'; 288 | } 289 | 290 | .oi-circle-x:before { 291 | content:'\e039'; 292 | } 293 | 294 | .oi-clipboard:before { 295 | content:'\e03a'; 296 | } 297 | 298 | .oi-clock:before { 299 | content:'\e03b'; 300 | } 301 | 302 | .oi-cloud-download:before { 303 | content:'\e03c'; 304 | } 305 | 306 | .oi-cloud-upload:before { 307 | content:'\e03d'; 308 | } 309 | 310 | .oi-cloud:before { 311 | content:'\e03e'; 312 | } 313 | 314 | .oi-cloudy:before { 315 | content:'\e03f'; 316 | } 317 | 318 | .oi-code:before { 319 | content:'\e040'; 320 | } 321 | 322 | .oi-cog:before { 323 | content:'\e041'; 324 | } 325 | 326 | .oi-collapse-down:before { 327 | content:'\e042'; 328 | } 329 | 330 | .oi-collapse-left:before { 331 | content:'\e043'; 332 | } 333 | 334 | .oi-collapse-right:before { 335 | content:'\e044'; 336 | } 337 | 338 | .oi-collapse-up:before { 339 | content:'\e045'; 340 | } 341 | 342 | .oi-command:before { 343 | content:'\e046'; 344 | } 345 | 346 | .oi-comment-square:before { 347 | content:'\e047'; 348 | } 349 | 350 | .oi-compass:before { 351 | content:'\e048'; 352 | } 353 | 354 | .oi-contrast:before { 355 | content:'\e049'; 356 | } 357 | 358 | .oi-copywriting:before { 359 | content:'\e04a'; 360 | } 361 | 362 | .oi-credit-card:before { 363 | content:'\e04b'; 364 | } 365 | 366 | .oi-crop:before { 367 | content:'\e04c'; 368 | } 369 | 370 | .oi-dashboard:before { 371 | content:'\e04d'; 372 | } 373 | 374 | .oi-data-transfer-download:before { 375 | content:'\e04e'; 376 | } 377 | 378 | .oi-data-transfer-upload:before { 379 | content:'\e04f'; 380 | } 381 | 382 | .oi-delete:before { 383 | content:'\e050'; 384 | } 385 | 386 | .oi-dial:before { 387 | content:'\e051'; 388 | } 389 | 390 | .oi-document:before { 391 | content:'\e052'; 392 | } 393 | 394 | .oi-dollar:before { 395 | content:'\e053'; 396 | } 397 | 398 | .oi-double-quote-sans-left:before { 399 | content:'\e054'; 400 | } 401 | 402 | .oi-double-quote-sans-right:before { 403 | content:'\e055'; 404 | } 405 | 406 | .oi-double-quote-serif-left:before { 407 | content:'\e056'; 408 | } 409 | 410 | .oi-double-quote-serif-right:before { 411 | content:'\e057'; 412 | } 413 | 414 | .oi-droplet:before { 415 | content:'\e058'; 416 | } 417 | 418 | .oi-eject:before { 419 | content:'\e059'; 420 | } 421 | 422 | .oi-elevator:before { 423 | content:'\e05a'; 424 | } 425 | 426 | .oi-ellipses:before { 427 | content:'\e05b'; 428 | } 429 | 430 | .oi-envelope-closed:before { 431 | content:'\e05c'; 432 | } 433 | 434 | .oi-envelope-open:before { 435 | content:'\e05d'; 436 | } 437 | 438 | .oi-euro:before { 439 | content:'\e05e'; 440 | } 441 | 442 | .oi-excerpt:before { 443 | content:'\e05f'; 444 | } 445 | 446 | .oi-expand-down:before { 447 | content:'\e060'; 448 | } 449 | 450 | .oi-expand-left:before { 451 | content:'\e061'; 452 | } 453 | 454 | .oi-expand-right:before { 455 | content:'\e062'; 456 | } 457 | 458 | .oi-expand-up:before { 459 | content:'\e063'; 460 | } 461 | 462 | .oi-external-link:before { 463 | content:'\e064'; 464 | } 465 | 466 | .oi-eye:before { 467 | content:'\e065'; 468 | } 469 | 470 | .oi-eyedropper:before { 471 | content:'\e066'; 472 | } 473 | 474 | .oi-file:before { 475 | content:'\e067'; 476 | } 477 | 478 | .oi-fire:before { 479 | content:'\e068'; 480 | } 481 | 482 | .oi-flag:before { 483 | content:'\e069'; 484 | } 485 | 486 | .oi-flash:before { 487 | content:'\e06a'; 488 | } 489 | 490 | .oi-folder:before { 491 | content:'\e06b'; 492 | } 493 | 494 | .oi-fork:before { 495 | content:'\e06c'; 496 | } 497 | 498 | .oi-fullscreen-enter:before { 499 | content:'\e06d'; 500 | } 501 | 502 | .oi-fullscreen-exit:before { 503 | content:'\e06e'; 504 | } 505 | 506 | .oi-globe:before { 507 | content:'\e06f'; 508 | } 509 | 510 | .oi-graph:before { 511 | content:'\e070'; 512 | } 513 | 514 | .oi-grid-four-up:before { 515 | content:'\e071'; 516 | } 517 | 518 | .oi-grid-three-up:before { 519 | content:'\e072'; 520 | } 521 | 522 | .oi-grid-two-up:before { 523 | content:'\e073'; 524 | } 525 | 526 | .oi-hard-drive:before { 527 | content:'\e074'; 528 | } 529 | 530 | .oi-header:before { 531 | content:'\e075'; 532 | } 533 | 534 | .oi-headphones:before { 535 | content:'\e076'; 536 | } 537 | 538 | .oi-heart:before { 539 | content:'\e077'; 540 | } 541 | 542 | .oi-home:before { 543 | content:'\e078'; 544 | } 545 | 546 | .oi-image:before { 547 | content:'\e079'; 548 | } 549 | 550 | .oi-inbox:before { 551 | content:'\e07a'; 552 | } 553 | 554 | .oi-infinity:before { 555 | content:'\e07b'; 556 | } 557 | 558 | .oi-info:before { 559 | content:'\e07c'; 560 | } 561 | 562 | .oi-italic:before { 563 | content:'\e07d'; 564 | } 565 | 566 | .oi-justify-center:before { 567 | content:'\e07e'; 568 | } 569 | 570 | .oi-justify-left:before { 571 | content:'\e07f'; 572 | } 573 | 574 | .oi-justify-right:before { 575 | content:'\e080'; 576 | } 577 | 578 | .oi-key:before { 579 | content:'\e081'; 580 | } 581 | 582 | .oi-laptop:before { 583 | content:'\e082'; 584 | } 585 | 586 | .oi-layers:before { 587 | content:'\e083'; 588 | } 589 | 590 | .oi-lightbulb:before { 591 | content:'\e084'; 592 | } 593 | 594 | .oi-link-broken:before { 595 | content:'\e085'; 596 | } 597 | 598 | .oi-link-intact:before { 599 | content:'\e086'; 600 | } 601 | 602 | .oi-list-rich:before { 603 | content:'\e087'; 604 | } 605 | 606 | .oi-list:before { 607 | content:'\e088'; 608 | } 609 | 610 | .oi-location:before { 611 | content:'\e089'; 612 | } 613 | 614 | .oi-lock-locked:before { 615 | content:'\e08a'; 616 | } 617 | 618 | .oi-lock-unlocked:before { 619 | content:'\e08b'; 620 | } 621 | 622 | .oi-loop-circular:before { 623 | content:'\e08c'; 624 | } 625 | 626 | .oi-loop-square:before { 627 | content:'\e08d'; 628 | } 629 | 630 | .oi-loop:before { 631 | content:'\e08e'; 632 | } 633 | 634 | .oi-magnifying-glass:before { 635 | content:'\e08f'; 636 | } 637 | 638 | .oi-map-marker:before { 639 | content:'\e090'; 640 | } 641 | 642 | .oi-map:before { 643 | content:'\e091'; 644 | } 645 | 646 | .oi-media-pause:before { 647 | content:'\e092'; 648 | } 649 | 650 | .oi-media-play:before { 651 | content:'\e093'; 652 | } 653 | 654 | .oi-media-record:before { 655 | content:'\e094'; 656 | } 657 | 658 | .oi-media-skip-backward:before { 659 | content:'\e095'; 660 | } 661 | 662 | .oi-media-skip-forward:before { 663 | content:'\e096'; 664 | } 665 | 666 | .oi-media-step-backward:before { 667 | content:'\e097'; 668 | } 669 | 670 | .oi-media-step-forward:before { 671 | content:'\e098'; 672 | } 673 | 674 | .oi-media-stop:before { 675 | content:'\e099'; 676 | } 677 | 678 | .oi-medical-cross:before { 679 | content:'\e09a'; 680 | } 681 | 682 | .oi-menu:before { 683 | content:'\e09b'; 684 | } 685 | 686 | .oi-microphone:before { 687 | content:'\e09c'; 688 | } 689 | 690 | .oi-minus:before { 691 | content:'\e09d'; 692 | } 693 | 694 | .oi-monitor:before { 695 | content:'\e09e'; 696 | } 697 | 698 | .oi-moon:before { 699 | content:'\e09f'; 700 | } 701 | 702 | .oi-move:before { 703 | content:'\e0a0'; 704 | } 705 | 706 | .oi-musical-note:before { 707 | content:'\e0a1'; 708 | } 709 | 710 | .oi-paperclip:before { 711 | content:'\e0a2'; 712 | } 713 | 714 | .oi-pencil:before { 715 | content:'\e0a3'; 716 | } 717 | 718 | .oi-people:before { 719 | content:'\e0a4'; 720 | } 721 | 722 | .oi-person:before { 723 | content:'\e0a5'; 724 | } 725 | 726 | .oi-phone:before { 727 | content:'\e0a6'; 728 | } 729 | 730 | .oi-pie-chart:before { 731 | content:'\e0a7'; 732 | } 733 | 734 | .oi-pin:before { 735 | content:'\e0a8'; 736 | } 737 | 738 | .oi-play-circle:before { 739 | content:'\e0a9'; 740 | } 741 | 742 | .oi-plus:before { 743 | content:'\e0aa'; 744 | } 745 | 746 | .oi-power-standby:before { 747 | content:'\e0ab'; 748 | } 749 | 750 | .oi-print:before { 751 | content:'\e0ac'; 752 | } 753 | 754 | .oi-project:before { 755 | content:'\e0ad'; 756 | } 757 | 758 | .oi-pulse:before { 759 | content:'\e0ae'; 760 | } 761 | 762 | .oi-puzzle-piece:before { 763 | content:'\e0af'; 764 | } 765 | 766 | .oi-question-mark:before { 767 | content:'\e0b0'; 768 | } 769 | 770 | .oi-rain:before { 771 | content:'\e0b1'; 772 | } 773 | 774 | .oi-random:before { 775 | content:'\e0b2'; 776 | } 777 | 778 | .oi-reload:before { 779 | content:'\e0b3'; 780 | } 781 | 782 | .oi-resize-both:before { 783 | content:'\e0b4'; 784 | } 785 | 786 | .oi-resize-height:before { 787 | content:'\e0b5'; 788 | } 789 | 790 | .oi-resize-width:before { 791 | content:'\e0b6'; 792 | } 793 | 794 | .oi-rss-alt:before { 795 | content:'\e0b7'; 796 | } 797 | 798 | .oi-rss:before { 799 | content:'\e0b8'; 800 | } 801 | 802 | .oi-script:before { 803 | content:'\e0b9'; 804 | } 805 | 806 | .oi-share-boxed:before { 807 | content:'\e0ba'; 808 | } 809 | 810 | .oi-share:before { 811 | content:'\e0bb'; 812 | } 813 | 814 | .oi-shield:before { 815 | content:'\e0bc'; 816 | } 817 | 818 | .oi-signal:before { 819 | content:'\e0bd'; 820 | } 821 | 822 | .oi-signpost:before { 823 | content:'\e0be'; 824 | } 825 | 826 | .oi-sort-ascending:before { 827 | content:'\e0bf'; 828 | } 829 | 830 | .oi-sort-descending:before { 831 | content:'\e0c0'; 832 | } 833 | 834 | .oi-spreadsheet:before { 835 | content:'\e0c1'; 836 | } 837 | 838 | .oi-star:before { 839 | content:'\e0c2'; 840 | } 841 | 842 | .oi-sun:before { 843 | content:'\e0c3'; 844 | } 845 | 846 | .oi-tablet:before { 847 | content:'\e0c4'; 848 | } 849 | 850 | .oi-tag:before { 851 | content:'\e0c5'; 852 | } 853 | 854 | .oi-tags:before { 855 | content:'\e0c6'; 856 | } 857 | 858 | .oi-target:before { 859 | content:'\e0c7'; 860 | } 861 | 862 | .oi-task:before { 863 | content:'\e0c8'; 864 | } 865 | 866 | .oi-terminal:before { 867 | content:'\e0c9'; 868 | } 869 | 870 | .oi-text:before { 871 | content:'\e0ca'; 872 | } 873 | 874 | .oi-thumb-down:before { 875 | content:'\e0cb'; 876 | } 877 | 878 | .oi-thumb-up:before { 879 | content:'\e0cc'; 880 | } 881 | 882 | .oi-timer:before { 883 | content:'\e0cd'; 884 | } 885 | 886 | .oi-transfer:before { 887 | content:'\e0ce'; 888 | } 889 | 890 | .oi-trash:before { 891 | content:'\e0cf'; 892 | } 893 | 894 | .oi-underline:before { 895 | content:'\e0d0'; 896 | } 897 | 898 | .oi-vertical-align-bottom:before { 899 | content:'\e0d1'; 900 | } 901 | 902 | .oi-vertical-align-center:before { 903 | content:'\e0d2'; 904 | } 905 | 906 | .oi-vertical-align-top:before { 907 | content:'\e0d3'; 908 | } 909 | 910 | .oi-video:before { 911 | content:'\e0d4'; 912 | } 913 | 914 | .oi-volume-high:before { 915 | content:'\e0d5'; 916 | } 917 | 918 | .oi-volume-low:before { 919 | content:'\e0d6'; 920 | } 921 | 922 | .oi-volume-off:before { 923 | content:'\e0d7'; 924 | } 925 | 926 | .oi-warning:before { 927 | content:'\e0d8'; 928 | } 929 | 930 | .oi-wifi:before { 931 | content:'\e0d9'; 932 | } 933 | 934 | .oi-wrench:before { 935 | content:'\e0da'; 936 | } 937 | 938 | .oi-x:before { 939 | content:'\e0db'; 940 | } 941 | 942 | .oi-yen:before { 943 | content:'\e0dc'; 944 | } 945 | 946 | .oi-zoom-in:before { 947 | content:'\e0dd'; 948 | } 949 | 950 | .oi-zoom-out:before { 951 | content:'\e0de'; 952 | } 953 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic-bootstrap.less: -------------------------------------------------------------------------------- 1 | /* Bootstrap */ 2 | 3 | /* Override Bootstrap default variable */ 4 | //@icon-font-path: "../fonts/"; 5 | 6 | @font-face { 7 | font-family: 'Icons'; 8 | src: ~"url('@{icon-font-path}open-iconic.eot')"; 9 | src: ~"url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype')", 10 | ~"url('@{icon-font-path}open-iconic.woff') format('woff')", 11 | ~"url('@{icon-font-path}open-iconic.ttf') format('truetype')", 12 | ~"url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg')"; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | // Catchall baseclass 18 | .oi { 19 | position: relative; 20 | top: 1px; 21 | display: inline-block; 22 | font-family: 'Icons'; 23 | font-style: normal; 24 | font-weight: normal; 25 | line-height: 1; 26 | -webkit-font-smoothing: antialiased; 27 | -moz-osx-font-smoothing: grayscale; 28 | 29 | &:empty:before { 30 | width: 1em; 31 | text-align: center; 32 | box-sizing: content-box; 33 | } 34 | 35 | &.oi-align-center:before { 36 | text-align: center; 37 | } 38 | 39 | &.oi-align-left:before { 40 | text-align: left; 41 | } 42 | 43 | &.oi-align-right:before { 44 | text-align: right; 45 | } 46 | 47 | 48 | &.oi-flip-horizontal:before { 49 | -webkit-transform: scale(-1, 1); 50 | -ms-transform: scale(-1, 1); 51 | transform: scale(-1, 1); 52 | } 53 | 54 | &.oi-flip-vertical:before { 55 | -webkit-transform: scale(1, -1); 56 | -ms-transform: scale(-1, 1); 57 | transform: scale(1, -1); 58 | } 59 | 60 | &.oi-flip-horizontal-vertical:before { 61 | -webkit-transform: scale(-1, -1); 62 | -ms-transform: scale(-1, 1); 63 | transform: scale(-1, -1); 64 | } 65 | } 66 | 67 | 68 | 69 | .oi-account-login:before { 70 | content:"\e000"; 71 | } 72 | 73 | .oi-account-logout:before { 74 | content:"\e001"; 75 | } 76 | 77 | .oi-action-redo:before { 78 | content:"\e002"; 79 | } 80 | 81 | .oi-action-undo:before { 82 | content:"\e003"; 83 | } 84 | 85 | .oi-align-center:before { 86 | content:"\e004"; 87 | } 88 | 89 | .oi-align-left:before { 90 | content:"\e005"; 91 | } 92 | 93 | .oi-align-right:before { 94 | content:"\e006"; 95 | } 96 | 97 | .oi-aperture:before { 98 | content:"\e007"; 99 | } 100 | 101 | .oi-arrow-bottom:before { 102 | content:"\e008"; 103 | } 104 | 105 | .oi-arrow-circle-bottom:before { 106 | content:"\e009"; 107 | } 108 | 109 | .oi-arrow-circle-left:before { 110 | content:"\e00a"; 111 | } 112 | 113 | .oi-arrow-circle-right:before { 114 | content:"\e00b"; 115 | } 116 | 117 | .oi-arrow-circle-top:before { 118 | content:"\e00c"; 119 | } 120 | 121 | .oi-arrow-left:before { 122 | content:"\e00d"; 123 | } 124 | 125 | .oi-arrow-right:before { 126 | content:"\e00e"; 127 | } 128 | 129 | .oi-arrow-thick-bottom:before { 130 | content:"\e00f"; 131 | } 132 | 133 | .oi-arrow-thick-left:before { 134 | content:"\e010"; 135 | } 136 | 137 | .oi-arrow-thick-right:before { 138 | content:"\e011"; 139 | } 140 | 141 | .oi-arrow-thick-top:before { 142 | content:"\e012"; 143 | } 144 | 145 | .oi-arrow-top:before { 146 | content:"\e013"; 147 | } 148 | 149 | .oi-audio-spectrum:before { 150 | content:"\e014"; 151 | } 152 | 153 | .oi-audio:before { 154 | content:"\e015"; 155 | } 156 | 157 | .oi-badge:before { 158 | content:"\e016"; 159 | } 160 | 161 | .oi-ban:before { 162 | content:"\e017"; 163 | } 164 | 165 | .oi-bar-chart:before { 166 | content:"\e018"; 167 | } 168 | 169 | .oi-basket:before { 170 | content:"\e019"; 171 | } 172 | 173 | .oi-battery-empty:before { 174 | content:"\e01a"; 175 | } 176 | 177 | .oi-battery-full:before { 178 | content:"\e01b"; 179 | } 180 | 181 | .oi-beaker:before { 182 | content:"\e01c"; 183 | } 184 | 185 | .oi-bell:before { 186 | content:"\e01d"; 187 | } 188 | 189 | .oi-bluetooth:before { 190 | content:"\e01e"; 191 | } 192 | 193 | .oi-bold:before { 194 | content:"\e01f"; 195 | } 196 | 197 | .oi-bolt:before { 198 | content:"\e020"; 199 | } 200 | 201 | .oi-book:before { 202 | content:"\e021"; 203 | } 204 | 205 | .oi-bookmark:before { 206 | content:"\e022"; 207 | } 208 | 209 | .oi-box:before { 210 | content:"\e023"; 211 | } 212 | 213 | .oi-briefcase:before { 214 | content:"\e024"; 215 | } 216 | 217 | .oi-british-pound:before { 218 | content:"\e025"; 219 | } 220 | 221 | .oi-browser:before { 222 | content:"\e026"; 223 | } 224 | 225 | .oi-brush:before { 226 | content:"\e027"; 227 | } 228 | 229 | .oi-bug:before { 230 | content:"\e028"; 231 | } 232 | 233 | .oi-bullhorn:before { 234 | content:"\e029"; 235 | } 236 | 237 | .oi-calculator:before { 238 | content:"\e02a"; 239 | } 240 | 241 | .oi-calendar:before { 242 | content:"\e02b"; 243 | } 244 | 245 | .oi-camera-slr:before { 246 | content:"\e02c"; 247 | } 248 | 249 | .oi-caret-bottom:before { 250 | content:"\e02d"; 251 | } 252 | 253 | .oi-caret-left:before { 254 | content:"\e02e"; 255 | } 256 | 257 | .oi-caret-right:before { 258 | content:"\e02f"; 259 | } 260 | 261 | .oi-caret-top:before { 262 | content:"\e030"; 263 | } 264 | 265 | .oi-cart:before { 266 | content:"\e031"; 267 | } 268 | 269 | .oi-chat:before { 270 | content:"\e032"; 271 | } 272 | 273 | .oi-check:before { 274 | content:"\e033"; 275 | } 276 | 277 | .oi-chevron-bottom:before { 278 | content:"\e034"; 279 | } 280 | 281 | .oi-chevron-left:before { 282 | content:"\e035"; 283 | } 284 | 285 | .oi-chevron-right:before { 286 | content:"\e036"; 287 | } 288 | 289 | .oi-chevron-top:before { 290 | content:"\e037"; 291 | } 292 | 293 | .oi-circle-check:before { 294 | content:"\e038"; 295 | } 296 | 297 | .oi-circle-x:before { 298 | content:"\e039"; 299 | } 300 | 301 | .oi-clipboard:before { 302 | content:"\e03a"; 303 | } 304 | 305 | .oi-clock:before { 306 | content:"\e03b"; 307 | } 308 | 309 | .oi-cloud-download:before { 310 | content:"\e03c"; 311 | } 312 | 313 | .oi-cloud-upload:before { 314 | content:"\e03d"; 315 | } 316 | 317 | .oi-cloud:before { 318 | content:"\e03e"; 319 | } 320 | 321 | .oi-cloudy:before { 322 | content:"\e03f"; 323 | } 324 | 325 | .oi-code:before { 326 | content:"\e040"; 327 | } 328 | 329 | .oi-cog:before { 330 | content:"\e041"; 331 | } 332 | 333 | .oi-collapse-down:before { 334 | content:"\e042"; 335 | } 336 | 337 | .oi-collapse-left:before { 338 | content:"\e043"; 339 | } 340 | 341 | .oi-collapse-right:before { 342 | content:"\e044"; 343 | } 344 | 345 | .oi-collapse-up:before { 346 | content:"\e045"; 347 | } 348 | 349 | .oi-command:before { 350 | content:"\e046"; 351 | } 352 | 353 | .oi-comment-square:before { 354 | content:"\e047"; 355 | } 356 | 357 | .oi-compass:before { 358 | content:"\e048"; 359 | } 360 | 361 | .oi-contrast:before { 362 | content:"\e049"; 363 | } 364 | 365 | .oi-copywriting:before { 366 | content:"\e04a"; 367 | } 368 | 369 | .oi-credit-card:before { 370 | content:"\e04b"; 371 | } 372 | 373 | .oi-crop:before { 374 | content:"\e04c"; 375 | } 376 | 377 | .oi-dashboard:before { 378 | content:"\e04d"; 379 | } 380 | 381 | .oi-data-transfer-download:before { 382 | content:"\e04e"; 383 | } 384 | 385 | .oi-data-transfer-upload:before { 386 | content:"\e04f"; 387 | } 388 | 389 | .oi-delete:before { 390 | content:"\e050"; 391 | } 392 | 393 | .oi-dial:before { 394 | content:"\e051"; 395 | } 396 | 397 | .oi-document:before { 398 | content:"\e052"; 399 | } 400 | 401 | .oi-dollar:before { 402 | content:"\e053"; 403 | } 404 | 405 | .oi-double-quote-sans-left:before { 406 | content:"\e054"; 407 | } 408 | 409 | .oi-double-quote-sans-right:before { 410 | content:"\e055"; 411 | } 412 | 413 | .oi-double-quote-serif-left:before { 414 | content:"\e056"; 415 | } 416 | 417 | .oi-double-quote-serif-right:before { 418 | content:"\e057"; 419 | } 420 | 421 | .oi-droplet:before { 422 | content:"\e058"; 423 | } 424 | 425 | .oi-eject:before { 426 | content:"\e059"; 427 | } 428 | 429 | .oi-elevator:before { 430 | content:"\e05a"; 431 | } 432 | 433 | .oi-ellipses:before { 434 | content:"\e05b"; 435 | } 436 | 437 | .oi-envelope-closed:before { 438 | content:"\e05c"; 439 | } 440 | 441 | .oi-envelope-open:before { 442 | content:"\e05d"; 443 | } 444 | 445 | .oi-euro:before { 446 | content:"\e05e"; 447 | } 448 | 449 | .oi-excerpt:before { 450 | content:"\e05f"; 451 | } 452 | 453 | .oi-expand-down:before { 454 | content:"\e060"; 455 | } 456 | 457 | .oi-expand-left:before { 458 | content:"\e061"; 459 | } 460 | 461 | .oi-expand-right:before { 462 | content:"\e062"; 463 | } 464 | 465 | .oi-expand-up:before { 466 | content:"\e063"; 467 | } 468 | 469 | .oi-external-link:before { 470 | content:"\e064"; 471 | } 472 | 473 | .oi-eye:before { 474 | content:"\e065"; 475 | } 476 | 477 | .oi-eyedropper:before { 478 | content:"\e066"; 479 | } 480 | 481 | .oi-file:before { 482 | content:"\e067"; 483 | } 484 | 485 | .oi-fire:before { 486 | content:"\e068"; 487 | } 488 | 489 | .oi-flag:before { 490 | content:"\e069"; 491 | } 492 | 493 | .oi-flash:before { 494 | content:"\e06a"; 495 | } 496 | 497 | .oi-folder:before { 498 | content:"\e06b"; 499 | } 500 | 501 | .oi-fork:before { 502 | content:"\e06c"; 503 | } 504 | 505 | .oi-fullscreen-enter:before { 506 | content:"\e06d"; 507 | } 508 | 509 | .oi-fullscreen-exit:before { 510 | content:"\e06e"; 511 | } 512 | 513 | .oi-globe:before { 514 | content:"\e06f"; 515 | } 516 | 517 | .oi-graph:before { 518 | content:"\e070"; 519 | } 520 | 521 | .oi-grid-four-up:before { 522 | content:"\e071"; 523 | } 524 | 525 | .oi-grid-three-up:before { 526 | content:"\e072"; 527 | } 528 | 529 | .oi-grid-two-up:before { 530 | content:"\e073"; 531 | } 532 | 533 | .oi-hard-drive:before { 534 | content:"\e074"; 535 | } 536 | 537 | .oi-header:before { 538 | content:"\e075"; 539 | } 540 | 541 | .oi-headphones:before { 542 | content:"\e076"; 543 | } 544 | 545 | .oi-heart:before { 546 | content:"\e077"; 547 | } 548 | 549 | .oi-home:before { 550 | content:"\e078"; 551 | } 552 | 553 | .oi-image:before { 554 | content:"\e079"; 555 | } 556 | 557 | .oi-inbox:before { 558 | content:"\e07a"; 559 | } 560 | 561 | .oi-infinity:before { 562 | content:"\e07b"; 563 | } 564 | 565 | .oi-info:before { 566 | content:"\e07c"; 567 | } 568 | 569 | .oi-italic:before { 570 | content:"\e07d"; 571 | } 572 | 573 | .oi-justify-center:before { 574 | content:"\e07e"; 575 | } 576 | 577 | .oi-justify-left:before { 578 | content:"\e07f"; 579 | } 580 | 581 | .oi-justify-right:before { 582 | content:"\e080"; 583 | } 584 | 585 | .oi-key:before { 586 | content:"\e081"; 587 | } 588 | 589 | .oi-laptop:before { 590 | content:"\e082"; 591 | } 592 | 593 | .oi-layers:before { 594 | content:"\e083"; 595 | } 596 | 597 | .oi-lightbulb:before { 598 | content:"\e084"; 599 | } 600 | 601 | .oi-link-broken:before { 602 | content:"\e085"; 603 | } 604 | 605 | .oi-link-intact:before { 606 | content:"\e086"; 607 | } 608 | 609 | .oi-list-rich:before { 610 | content:"\e087"; 611 | } 612 | 613 | .oi-list:before { 614 | content:"\e088"; 615 | } 616 | 617 | .oi-location:before { 618 | content:"\e089"; 619 | } 620 | 621 | .oi-lock-locked:before { 622 | content:"\e08a"; 623 | } 624 | 625 | .oi-lock-unlocked:before { 626 | content:"\e08b"; 627 | } 628 | 629 | .oi-loop-circular:before { 630 | content:"\e08c"; 631 | } 632 | 633 | .oi-loop-square:before { 634 | content:"\e08d"; 635 | } 636 | 637 | .oi-loop:before { 638 | content:"\e08e"; 639 | } 640 | 641 | .oi-magnifying-glass:before { 642 | content:"\e08f"; 643 | } 644 | 645 | .oi-map-marker:before { 646 | content:"\e090"; 647 | } 648 | 649 | .oi-map:before { 650 | content:"\e091"; 651 | } 652 | 653 | .oi-media-pause:before { 654 | content:"\e092"; 655 | } 656 | 657 | .oi-media-play:before { 658 | content:"\e093"; 659 | } 660 | 661 | .oi-media-record:before { 662 | content:"\e094"; 663 | } 664 | 665 | .oi-media-skip-backward:before { 666 | content:"\e095"; 667 | } 668 | 669 | .oi-media-skip-forward:before { 670 | content:"\e096"; 671 | } 672 | 673 | .oi-media-step-backward:before { 674 | content:"\e097"; 675 | } 676 | 677 | .oi-media-step-forward:before { 678 | content:"\e098"; 679 | } 680 | 681 | .oi-media-stop:before { 682 | content:"\e099"; 683 | } 684 | 685 | .oi-medical-cross:before { 686 | content:"\e09a"; 687 | } 688 | 689 | .oi-menu:before { 690 | content:"\e09b"; 691 | } 692 | 693 | .oi-microphone:before { 694 | content:"\e09c"; 695 | } 696 | 697 | .oi-minus:before { 698 | content:"\e09d"; 699 | } 700 | 701 | .oi-monitor:before { 702 | content:"\e09e"; 703 | } 704 | 705 | .oi-moon:before { 706 | content:"\e09f"; 707 | } 708 | 709 | .oi-move:before { 710 | content:"\e0a0"; 711 | } 712 | 713 | .oi-musical-note:before { 714 | content:"\e0a1"; 715 | } 716 | 717 | .oi-paperclip:before { 718 | content:"\e0a2"; 719 | } 720 | 721 | .oi-pencil:before { 722 | content:"\e0a3"; 723 | } 724 | 725 | .oi-people:before { 726 | content:"\e0a4"; 727 | } 728 | 729 | .oi-person:before { 730 | content:"\e0a5"; 731 | } 732 | 733 | .oi-phone:before { 734 | content:"\e0a6"; 735 | } 736 | 737 | .oi-pie-chart:before { 738 | content:"\e0a7"; 739 | } 740 | 741 | .oi-pin:before { 742 | content:"\e0a8"; 743 | } 744 | 745 | .oi-play-circle:before { 746 | content:"\e0a9"; 747 | } 748 | 749 | .oi-plus:before { 750 | content:"\e0aa"; 751 | } 752 | 753 | .oi-power-standby:before { 754 | content:"\e0ab"; 755 | } 756 | 757 | .oi-print:before { 758 | content:"\e0ac"; 759 | } 760 | 761 | .oi-project:before { 762 | content:"\e0ad"; 763 | } 764 | 765 | .oi-pulse:before { 766 | content:"\e0ae"; 767 | } 768 | 769 | .oi-puzzle-piece:before { 770 | content:"\e0af"; 771 | } 772 | 773 | .oi-question-mark:before { 774 | content:"\e0b0"; 775 | } 776 | 777 | .oi-rain:before { 778 | content:"\e0b1"; 779 | } 780 | 781 | .oi-random:before { 782 | content:"\e0b2"; 783 | } 784 | 785 | .oi-reload:before { 786 | content:"\e0b3"; 787 | } 788 | 789 | .oi-resize-both:before { 790 | content:"\e0b4"; 791 | } 792 | 793 | .oi-resize-height:before { 794 | content:"\e0b5"; 795 | } 796 | 797 | .oi-resize-width:before { 798 | content:"\e0b6"; 799 | } 800 | 801 | .oi-rss-alt:before { 802 | content:"\e0b7"; 803 | } 804 | 805 | .oi-rss:before { 806 | content:"\e0b8"; 807 | } 808 | 809 | .oi-script:before { 810 | content:"\e0b9"; 811 | } 812 | 813 | .oi-share-boxed:before { 814 | content:"\e0ba"; 815 | } 816 | 817 | .oi-share:before { 818 | content:"\e0bb"; 819 | } 820 | 821 | .oi-shield:before { 822 | content:"\e0bc"; 823 | } 824 | 825 | .oi-signal:before { 826 | content:"\e0bd"; 827 | } 828 | 829 | .oi-signpost:before { 830 | content:"\e0be"; 831 | } 832 | 833 | .oi-sort-ascending:before { 834 | content:"\e0bf"; 835 | } 836 | 837 | .oi-sort-descending:before { 838 | content:"\e0c0"; 839 | } 840 | 841 | .oi-spreadsheet:before { 842 | content:"\e0c1"; 843 | } 844 | 845 | .oi-star:before { 846 | content:"\e0c2"; 847 | } 848 | 849 | .oi-sun:before { 850 | content:"\e0c3"; 851 | } 852 | 853 | .oi-tablet:before { 854 | content:"\e0c4"; 855 | } 856 | 857 | .oi-tag:before { 858 | content:"\e0c5"; 859 | } 860 | 861 | .oi-tags:before { 862 | content:"\e0c6"; 863 | } 864 | 865 | .oi-target:before { 866 | content:"\e0c7"; 867 | } 868 | 869 | .oi-task:before { 870 | content:"\e0c8"; 871 | } 872 | 873 | .oi-terminal:before { 874 | content:"\e0c9"; 875 | } 876 | 877 | .oi-text:before { 878 | content:"\e0ca"; 879 | } 880 | 881 | .oi-thumb-down:before { 882 | content:"\e0cb"; 883 | } 884 | 885 | .oi-thumb-up:before { 886 | content:"\e0cc"; 887 | } 888 | 889 | .oi-timer:before { 890 | content:"\e0cd"; 891 | } 892 | 893 | .oi-transfer:before { 894 | content:"\e0ce"; 895 | } 896 | 897 | .oi-trash:before { 898 | content:"\e0cf"; 899 | } 900 | 901 | .oi-underline:before { 902 | content:"\e0d0"; 903 | } 904 | 905 | .oi-vertical-align-bottom:before { 906 | content:"\e0d1"; 907 | } 908 | 909 | .oi-vertical-align-center:before { 910 | content:"\e0d2"; 911 | } 912 | 913 | .oi-vertical-align-top:before { 914 | content:"\e0d3"; 915 | } 916 | 917 | .oi-video:before { 918 | content:"\e0d4"; 919 | } 920 | 921 | .oi-volume-high:before { 922 | content:"\e0d5"; 923 | } 924 | 925 | .oi-volume-low:before { 926 | content:"\e0d6"; 927 | } 928 | 929 | .oi-volume-off:before { 930 | content:"\e0d7"; 931 | } 932 | 933 | .oi-warning:before { 934 | content:"\e0d8"; 935 | } 936 | 937 | .oi-wifi:before { 938 | content:"\e0d9"; 939 | } 940 | 941 | .oi-wrench:before { 942 | content:"\e0da"; 943 | } 944 | 945 | .oi-x:before { 946 | content:"\e0db"; 947 | } 948 | 949 | .oi-yen:before { 950 | content:"\e0dc"; 951 | } 952 | 953 | .oi-zoom-in:before { 954 | content:"\e0dd"; 955 | } 956 | 957 | .oi-zoom-out:before { 958 | content:"\e0de"; 959 | } 960 | 961 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic-bootstrap.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'} -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic-bootstrap.scss: -------------------------------------------------------------------------------- 1 | /* Bootstrap */ 2 | 3 | /* Override Bootstrap default variable */ 4 | $icon-font-path: '../fonts/' !default; 5 | 6 | @font-face { 7 | font-family: 'Icons'; 8 | src: url('#{$icon-font-path}open-iconic.eot'); 9 | src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg'); 10 | font-weight: normal; 11 | font-style: normal; 12 | } 13 | 14 | // Catchall baseclass 15 | .oi { 16 | position: relative; 17 | top: 1px; 18 | display: inline-block; 19 | font-family: 'Icons'; 20 | font-style: normal; 21 | font-weight: normal; 22 | line-height: 1; 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | 26 | 27 | &:empty:before { 28 | width: 1em; 29 | text-align: center; 30 | box-sizing: content-box; 31 | } 32 | 33 | &.oi-align-center:before { 34 | text-align: center; 35 | } 36 | 37 | &.oi-align-left:before { 38 | text-align: left; 39 | } 40 | 41 | &.oi-align-right:before { 42 | text-align: right; 43 | } 44 | 45 | 46 | &.oi-flip-horizontal:before { 47 | -webkit-transform: scale(-1, 1); 48 | -ms-transform: scale(-1, 1); 49 | transform: scale(-1, 1); 50 | } 51 | 52 | &.oi-flip-vertical:before { 53 | -webkit-transform: scale(1, -1); 54 | -ms-transform: scale(-1, 1); 55 | transform: scale(1, -1); 56 | } 57 | 58 | &.oi-flip-horizontal-vertical:before { 59 | -webkit-transform: scale(-1, -1); 60 | -ms-transform: scale(-1, 1); 61 | transform: scale(-1, -1); 62 | } 63 | } 64 | 65 | 66 | 67 | .oi-account-login:before { 68 | content:'\e000'; 69 | } 70 | 71 | .oi-account-logout:before { 72 | content:'\e001'; 73 | } 74 | 75 | .oi-action-redo:before { 76 | content:'\e002'; 77 | } 78 | 79 | .oi-action-undo:before { 80 | content:'\e003'; 81 | } 82 | 83 | .oi-align-center:before { 84 | content:'\e004'; 85 | } 86 | 87 | .oi-align-left:before { 88 | content:'\e005'; 89 | } 90 | 91 | .oi-align-right:before { 92 | content:'\e006'; 93 | } 94 | 95 | .oi-aperture:before { 96 | content:'\e007'; 97 | } 98 | 99 | .oi-arrow-bottom:before { 100 | content:'\e008'; 101 | } 102 | 103 | .oi-arrow-circle-bottom:before { 104 | content:'\e009'; 105 | } 106 | 107 | .oi-arrow-circle-left:before { 108 | content:'\e00a'; 109 | } 110 | 111 | .oi-arrow-circle-right:before { 112 | content:'\e00b'; 113 | } 114 | 115 | .oi-arrow-circle-top:before { 116 | content:'\e00c'; 117 | } 118 | 119 | .oi-arrow-left:before { 120 | content:'\e00d'; 121 | } 122 | 123 | .oi-arrow-right:before { 124 | content:'\e00e'; 125 | } 126 | 127 | .oi-arrow-thick-bottom:before { 128 | content:'\e00f'; 129 | } 130 | 131 | .oi-arrow-thick-left:before { 132 | content:'\e010'; 133 | } 134 | 135 | .oi-arrow-thick-right:before { 136 | content:'\e011'; 137 | } 138 | 139 | .oi-arrow-thick-top:before { 140 | content:'\e012'; 141 | } 142 | 143 | .oi-arrow-top:before { 144 | content:'\e013'; 145 | } 146 | 147 | .oi-audio-spectrum:before { 148 | content:'\e014'; 149 | } 150 | 151 | .oi-audio:before { 152 | content:'\e015'; 153 | } 154 | 155 | .oi-badge:before { 156 | content:'\e016'; 157 | } 158 | 159 | .oi-ban:before { 160 | content:'\e017'; 161 | } 162 | 163 | .oi-bar-chart:before { 164 | content:'\e018'; 165 | } 166 | 167 | .oi-basket:before { 168 | content:'\e019'; 169 | } 170 | 171 | .oi-battery-empty:before { 172 | content:'\e01a'; 173 | } 174 | 175 | .oi-battery-full:before { 176 | content:'\e01b'; 177 | } 178 | 179 | .oi-beaker:before { 180 | content:'\e01c'; 181 | } 182 | 183 | .oi-bell:before { 184 | content:'\e01d'; 185 | } 186 | 187 | .oi-bluetooth:before { 188 | content:'\e01e'; 189 | } 190 | 191 | .oi-bold:before { 192 | content:'\e01f'; 193 | } 194 | 195 | .oi-bolt:before { 196 | content:'\e020'; 197 | } 198 | 199 | .oi-book:before { 200 | content:'\e021'; 201 | } 202 | 203 | .oi-bookmark:before { 204 | content:'\e022'; 205 | } 206 | 207 | .oi-box:before { 208 | content:'\e023'; 209 | } 210 | 211 | .oi-briefcase:before { 212 | content:'\e024'; 213 | } 214 | 215 | .oi-british-pound:before { 216 | content:'\e025'; 217 | } 218 | 219 | .oi-browser:before { 220 | content:'\e026'; 221 | } 222 | 223 | .oi-brush:before { 224 | content:'\e027'; 225 | } 226 | 227 | .oi-bug:before { 228 | content:'\e028'; 229 | } 230 | 231 | .oi-bullhorn:before { 232 | content:'\e029'; 233 | } 234 | 235 | .oi-calculator:before { 236 | content:'\e02a'; 237 | } 238 | 239 | .oi-calendar:before { 240 | content:'\e02b'; 241 | } 242 | 243 | .oi-camera-slr:before { 244 | content:'\e02c'; 245 | } 246 | 247 | .oi-caret-bottom:before { 248 | content:'\e02d'; 249 | } 250 | 251 | .oi-caret-left:before { 252 | content:'\e02e'; 253 | } 254 | 255 | .oi-caret-right:before { 256 | content:'\e02f'; 257 | } 258 | 259 | .oi-caret-top:before { 260 | content:'\e030'; 261 | } 262 | 263 | .oi-cart:before { 264 | content:'\e031'; 265 | } 266 | 267 | .oi-chat:before { 268 | content:'\e032'; 269 | } 270 | 271 | .oi-check:before { 272 | content:'\e033'; 273 | } 274 | 275 | .oi-chevron-bottom:before { 276 | content:'\e034'; 277 | } 278 | 279 | .oi-chevron-left:before { 280 | content:'\e035'; 281 | } 282 | 283 | .oi-chevron-right:before { 284 | content:'\e036'; 285 | } 286 | 287 | .oi-chevron-top:before { 288 | content:'\e037'; 289 | } 290 | 291 | .oi-circle-check:before { 292 | content:'\e038'; 293 | } 294 | 295 | .oi-circle-x:before { 296 | content:'\e039'; 297 | } 298 | 299 | .oi-clipboard:before { 300 | content:'\e03a'; 301 | } 302 | 303 | .oi-clock:before { 304 | content:'\e03b'; 305 | } 306 | 307 | .oi-cloud-download:before { 308 | content:'\e03c'; 309 | } 310 | 311 | .oi-cloud-upload:before { 312 | content:'\e03d'; 313 | } 314 | 315 | .oi-cloud:before { 316 | content:'\e03e'; 317 | } 318 | 319 | .oi-cloudy:before { 320 | content:'\e03f'; 321 | } 322 | 323 | .oi-code:before { 324 | content:'\e040'; 325 | } 326 | 327 | .oi-cog:before { 328 | content:'\e041'; 329 | } 330 | 331 | .oi-collapse-down:before { 332 | content:'\e042'; 333 | } 334 | 335 | .oi-collapse-left:before { 336 | content:'\e043'; 337 | } 338 | 339 | .oi-collapse-right:before { 340 | content:'\e044'; 341 | } 342 | 343 | .oi-collapse-up:before { 344 | content:'\e045'; 345 | } 346 | 347 | .oi-command:before { 348 | content:'\e046'; 349 | } 350 | 351 | .oi-comment-square:before { 352 | content:'\e047'; 353 | } 354 | 355 | .oi-compass:before { 356 | content:'\e048'; 357 | } 358 | 359 | .oi-contrast:before { 360 | content:'\e049'; 361 | } 362 | 363 | .oi-copywriting:before { 364 | content:'\e04a'; 365 | } 366 | 367 | .oi-credit-card:before { 368 | content:'\e04b'; 369 | } 370 | 371 | .oi-crop:before { 372 | content:'\e04c'; 373 | } 374 | 375 | .oi-dashboard:before { 376 | content:'\e04d'; 377 | } 378 | 379 | .oi-data-transfer-download:before { 380 | content:'\e04e'; 381 | } 382 | 383 | .oi-data-transfer-upload:before { 384 | content:'\e04f'; 385 | } 386 | 387 | .oi-delete:before { 388 | content:'\e050'; 389 | } 390 | 391 | .oi-dial:before { 392 | content:'\e051'; 393 | } 394 | 395 | .oi-document:before { 396 | content:'\e052'; 397 | } 398 | 399 | .oi-dollar:before { 400 | content:'\e053'; 401 | } 402 | 403 | .oi-double-quote-sans-left:before { 404 | content:'\e054'; 405 | } 406 | 407 | .oi-double-quote-sans-right:before { 408 | content:'\e055'; 409 | } 410 | 411 | .oi-double-quote-serif-left:before { 412 | content:'\e056'; 413 | } 414 | 415 | .oi-double-quote-serif-right:before { 416 | content:'\e057'; 417 | } 418 | 419 | .oi-droplet:before { 420 | content:'\e058'; 421 | } 422 | 423 | .oi-eject:before { 424 | content:'\e059'; 425 | } 426 | 427 | .oi-elevator:before { 428 | content:'\e05a'; 429 | } 430 | 431 | .oi-ellipses:before { 432 | content:'\e05b'; 433 | } 434 | 435 | .oi-envelope-closed:before { 436 | content:'\e05c'; 437 | } 438 | 439 | .oi-envelope-open:before { 440 | content:'\e05d'; 441 | } 442 | 443 | .oi-euro:before { 444 | content:'\e05e'; 445 | } 446 | 447 | .oi-excerpt:before { 448 | content:'\e05f'; 449 | } 450 | 451 | .oi-expand-down:before { 452 | content:'\e060'; 453 | } 454 | 455 | .oi-expand-left:before { 456 | content:'\e061'; 457 | } 458 | 459 | .oi-expand-right:before { 460 | content:'\e062'; 461 | } 462 | 463 | .oi-expand-up:before { 464 | content:'\e063'; 465 | } 466 | 467 | .oi-external-link:before { 468 | content:'\e064'; 469 | } 470 | 471 | .oi-eye:before { 472 | content:'\e065'; 473 | } 474 | 475 | .oi-eyedropper:before { 476 | content:'\e066'; 477 | } 478 | 479 | .oi-file:before { 480 | content:'\e067'; 481 | } 482 | 483 | .oi-fire:before { 484 | content:'\e068'; 485 | } 486 | 487 | .oi-flag:before { 488 | content:'\e069'; 489 | } 490 | 491 | .oi-flash:before { 492 | content:'\e06a'; 493 | } 494 | 495 | .oi-folder:before { 496 | content:'\e06b'; 497 | } 498 | 499 | .oi-fork:before { 500 | content:'\e06c'; 501 | } 502 | 503 | .oi-fullscreen-enter:before { 504 | content:'\e06d'; 505 | } 506 | 507 | .oi-fullscreen-exit:before { 508 | content:'\e06e'; 509 | } 510 | 511 | .oi-globe:before { 512 | content:'\e06f'; 513 | } 514 | 515 | .oi-graph:before { 516 | content:'\e070'; 517 | } 518 | 519 | .oi-grid-four-up:before { 520 | content:'\e071'; 521 | } 522 | 523 | .oi-grid-three-up:before { 524 | content:'\e072'; 525 | } 526 | 527 | .oi-grid-two-up:before { 528 | content:'\e073'; 529 | } 530 | 531 | .oi-hard-drive:before { 532 | content:'\e074'; 533 | } 534 | 535 | .oi-header:before { 536 | content:'\e075'; 537 | } 538 | 539 | .oi-headphones:before { 540 | content:'\e076'; 541 | } 542 | 543 | .oi-heart:before { 544 | content:'\e077'; 545 | } 546 | 547 | .oi-home:before { 548 | content:'\e078'; 549 | } 550 | 551 | .oi-image:before { 552 | content:'\e079'; 553 | } 554 | 555 | .oi-inbox:before { 556 | content:'\e07a'; 557 | } 558 | 559 | .oi-infinity:before { 560 | content:'\e07b'; 561 | } 562 | 563 | .oi-info:before { 564 | content:'\e07c'; 565 | } 566 | 567 | .oi-italic:before { 568 | content:'\e07d'; 569 | } 570 | 571 | .oi-justify-center:before { 572 | content:'\e07e'; 573 | } 574 | 575 | .oi-justify-left:before { 576 | content:'\e07f'; 577 | } 578 | 579 | .oi-justify-right:before { 580 | content:'\e080'; 581 | } 582 | 583 | .oi-key:before { 584 | content:'\e081'; 585 | } 586 | 587 | .oi-laptop:before { 588 | content:'\e082'; 589 | } 590 | 591 | .oi-layers:before { 592 | content:'\e083'; 593 | } 594 | 595 | .oi-lightbulb:before { 596 | content:'\e084'; 597 | } 598 | 599 | .oi-link-broken:before { 600 | content:'\e085'; 601 | } 602 | 603 | .oi-link-intact:before { 604 | content:'\e086'; 605 | } 606 | 607 | .oi-list-rich:before { 608 | content:'\e087'; 609 | } 610 | 611 | .oi-list:before { 612 | content:'\e088'; 613 | } 614 | 615 | .oi-location:before { 616 | content:'\e089'; 617 | } 618 | 619 | .oi-lock-locked:before { 620 | content:'\e08a'; 621 | } 622 | 623 | .oi-lock-unlocked:before { 624 | content:'\e08b'; 625 | } 626 | 627 | .oi-loop-circular:before { 628 | content:'\e08c'; 629 | } 630 | 631 | .oi-loop-square:before { 632 | content:'\e08d'; 633 | } 634 | 635 | .oi-loop:before { 636 | content:'\e08e'; 637 | } 638 | 639 | .oi-magnifying-glass:before { 640 | content:'\e08f'; 641 | } 642 | 643 | .oi-map-marker:before { 644 | content:'\e090'; 645 | } 646 | 647 | .oi-map:before { 648 | content:'\e091'; 649 | } 650 | 651 | .oi-media-pause:before { 652 | content:'\e092'; 653 | } 654 | 655 | .oi-media-play:before { 656 | content:'\e093'; 657 | } 658 | 659 | .oi-media-record:before { 660 | content:'\e094'; 661 | } 662 | 663 | .oi-media-skip-backward:before { 664 | content:'\e095'; 665 | } 666 | 667 | .oi-media-skip-forward:before { 668 | content:'\e096'; 669 | } 670 | 671 | .oi-media-step-backward:before { 672 | content:'\e097'; 673 | } 674 | 675 | .oi-media-step-forward:before { 676 | content:'\e098'; 677 | } 678 | 679 | .oi-media-stop:before { 680 | content:'\e099'; 681 | } 682 | 683 | .oi-medical-cross:before { 684 | content:'\e09a'; 685 | } 686 | 687 | .oi-menu:before { 688 | content:'\e09b'; 689 | } 690 | 691 | .oi-microphone:before { 692 | content:'\e09c'; 693 | } 694 | 695 | .oi-minus:before { 696 | content:'\e09d'; 697 | } 698 | 699 | .oi-monitor:before { 700 | content:'\e09e'; 701 | } 702 | 703 | .oi-moon:before { 704 | content:'\e09f'; 705 | } 706 | 707 | .oi-move:before { 708 | content:'\e0a0'; 709 | } 710 | 711 | .oi-musical-note:before { 712 | content:'\e0a1'; 713 | } 714 | 715 | .oi-paperclip:before { 716 | content:'\e0a2'; 717 | } 718 | 719 | .oi-pencil:before { 720 | content:'\e0a3'; 721 | } 722 | 723 | .oi-people:before { 724 | content:'\e0a4'; 725 | } 726 | 727 | .oi-person:before { 728 | content:'\e0a5'; 729 | } 730 | 731 | .oi-phone:before { 732 | content:'\e0a6'; 733 | } 734 | 735 | .oi-pie-chart:before { 736 | content:'\e0a7'; 737 | } 738 | 739 | .oi-pin:before { 740 | content:'\e0a8'; 741 | } 742 | 743 | .oi-play-circle:before { 744 | content:'\e0a9'; 745 | } 746 | 747 | .oi-plus:before { 748 | content:'\e0aa'; 749 | } 750 | 751 | .oi-power-standby:before { 752 | content:'\e0ab'; 753 | } 754 | 755 | .oi-print:before { 756 | content:'\e0ac'; 757 | } 758 | 759 | .oi-project:before { 760 | content:'\e0ad'; 761 | } 762 | 763 | .oi-pulse:before { 764 | content:'\e0ae'; 765 | } 766 | 767 | .oi-puzzle-piece:before { 768 | content:'\e0af'; 769 | } 770 | 771 | .oi-question-mark:before { 772 | content:'\e0b0'; 773 | } 774 | 775 | .oi-rain:before { 776 | content:'\e0b1'; 777 | } 778 | 779 | .oi-random:before { 780 | content:'\e0b2'; 781 | } 782 | 783 | .oi-reload:before { 784 | content:'\e0b3'; 785 | } 786 | 787 | .oi-resize-both:before { 788 | content:'\e0b4'; 789 | } 790 | 791 | .oi-resize-height:before { 792 | content:'\e0b5'; 793 | } 794 | 795 | .oi-resize-width:before { 796 | content:'\e0b6'; 797 | } 798 | 799 | .oi-rss-alt:before { 800 | content:'\e0b7'; 801 | } 802 | 803 | .oi-rss:before { 804 | content:'\e0b8'; 805 | } 806 | 807 | .oi-script:before { 808 | content:'\e0b9'; 809 | } 810 | 811 | .oi-share-boxed:before { 812 | content:'\e0ba'; 813 | } 814 | 815 | .oi-share:before { 816 | content:'\e0bb'; 817 | } 818 | 819 | .oi-shield:before { 820 | content:'\e0bc'; 821 | } 822 | 823 | .oi-signal:before { 824 | content:'\e0bd'; 825 | } 826 | 827 | .oi-signpost:before { 828 | content:'\e0be'; 829 | } 830 | 831 | .oi-sort-ascending:before { 832 | content:'\e0bf'; 833 | } 834 | 835 | .oi-sort-descending:before { 836 | content:'\e0c0'; 837 | } 838 | 839 | .oi-spreadsheet:before { 840 | content:'\e0c1'; 841 | } 842 | 843 | .oi-star:before { 844 | content:'\e0c2'; 845 | } 846 | 847 | .oi-sun:before { 848 | content:'\e0c3'; 849 | } 850 | 851 | .oi-tablet:before { 852 | content:'\e0c4'; 853 | } 854 | 855 | .oi-tag:before { 856 | content:'\e0c5'; 857 | } 858 | 859 | .oi-tags:before { 860 | content:'\e0c6'; 861 | } 862 | 863 | .oi-target:before { 864 | content:'\e0c7'; 865 | } 866 | 867 | .oi-task:before { 868 | content:'\e0c8'; 869 | } 870 | 871 | .oi-terminal:before { 872 | content:'\e0c9'; 873 | } 874 | 875 | .oi-text:before { 876 | content:'\e0ca'; 877 | } 878 | 879 | .oi-thumb-down:before { 880 | content:'\e0cb'; 881 | } 882 | 883 | .oi-thumb-up:before { 884 | content:'\e0cc'; 885 | } 886 | 887 | .oi-timer:before { 888 | content:'\e0cd'; 889 | } 890 | 891 | .oi-transfer:before { 892 | content:'\e0ce'; 893 | } 894 | 895 | .oi-trash:before { 896 | content:'\e0cf'; 897 | } 898 | 899 | .oi-underline:before { 900 | content:'\e0d0'; 901 | } 902 | 903 | .oi-vertical-align-bottom:before { 904 | content:'\e0d1'; 905 | } 906 | 907 | .oi-vertical-align-center:before { 908 | content:'\e0d2'; 909 | } 910 | 911 | .oi-vertical-align-top:before { 912 | content:'\e0d3'; 913 | } 914 | 915 | .oi-video:before { 916 | content:'\e0d4'; 917 | } 918 | 919 | .oi-volume-high:before { 920 | content:'\e0d5'; 921 | } 922 | 923 | .oi-volume-low:before { 924 | content:'\e0d6'; 925 | } 926 | 927 | .oi-volume-off:before { 928 | content:'\e0d7'; 929 | } 930 | 931 | .oi-warning:before { 932 | content:'\e0d8'; 933 | } 934 | 935 | .oi-wifi:before { 936 | content:'\e0d9'; 937 | } 938 | 939 | .oi-wrench:before { 940 | content:'\e0da'; 941 | } 942 | 943 | .oi-x:before { 944 | content:'\e0db'; 945 | } 946 | 947 | .oi-yen:before { 948 | content:'\e0dc'; 949 | } 950 | 951 | .oi-zoom-in:before { 952 | content:'\e0dd'; 953 | } 954 | 955 | .oi-zoom-out:before { 956 | content:'\e0de'; 957 | } 958 | 959 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic-bootstrap.styl: -------------------------------------------------------------------------------- 1 | /* Bootstrap */ 2 | 3 | @font-face 4 | font-family 'Icons' 5 | src url('../fonts/open-iconic.eot') 6 | src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') 7 | font-weight normal 8 | font-style normal 9 | 10 | 11 | // Catchall baseclass 12 | .oi 13 | position relative 14 | top 1px 15 | display inline-block 16 | font-family 'Icons' 17 | font-style normal 18 | font-weight normal 19 | line-height 1 20 | -webkit-font-smoothing antialiased 21 | -moz-osx-font-smoothing grayscale 22 | 23 | 24 | &:empty:before 25 | width 1em 26 | text-align center 27 | box-sizing content-box 28 | 29 | &.oi-align-center:before 30 | text-align center 31 | 32 | 33 | &.oi-align-left:before 34 | text-align left 35 | 36 | 37 | &.oi-align-right:before 38 | text-align right 39 | 40 | 41 | 42 | &.oi-flip-horizontal:before 43 | -webkit-transform scale(-1, 1) 44 | -ms-transform scale(-1, 1) 45 | transform scale(-1, 1) 46 | 47 | 48 | &.oi-flip-vertical:before 49 | -webkit-transform scale(1, -1) 50 | -ms-transform scale(-1, 1) 51 | transform scale(1, -1) 52 | 53 | 54 | &.oi-flip-horizontal-vertical:before 55 | -webkit-transform scale(-1, -1) 56 | -ms-transform scale(-1, 1) 57 | transform scale(-1, -1) 58 | 59 | 60 | 61 | 62 | 63 | .oi-account-login:before { 64 | content'\e000' 65 | } 66 | 67 | .oi-account-logout:before { 68 | content'\e001' 69 | } 70 | 71 | .oi-action-redo:before { 72 | content'\e002' 73 | } 74 | 75 | .oi-action-undo:before { 76 | content'\e003' 77 | } 78 | 79 | .oi-align-center:before { 80 | content'\e004' 81 | } 82 | 83 | .oi-align-left:before { 84 | content'\e005' 85 | } 86 | 87 | .oi-align-right:before { 88 | content'\e006' 89 | } 90 | 91 | .oi-aperture:before { 92 | content'\e007' 93 | } 94 | 95 | .oi-arrow-bottom:before { 96 | content'\e008' 97 | } 98 | 99 | .oi-arrow-circle-bottom:before { 100 | content'\e009' 101 | } 102 | 103 | .oi-arrow-circle-left:before { 104 | content'\e00a' 105 | } 106 | 107 | .oi-arrow-circle-right:before { 108 | content'\e00b' 109 | } 110 | 111 | .oi-arrow-circle-top:before { 112 | content'\e00c' 113 | } 114 | 115 | .oi-arrow-left:before { 116 | content'\e00d' 117 | } 118 | 119 | .oi-arrow-right:before { 120 | content'\e00e' 121 | } 122 | 123 | .oi-arrow-thick-bottom:before { 124 | content'\e00f' 125 | } 126 | 127 | .oi-arrow-thick-left:before { 128 | content'\e010' 129 | } 130 | 131 | .oi-arrow-thick-right:before { 132 | content'\e011' 133 | } 134 | 135 | .oi-arrow-thick-top:before { 136 | content'\e012' 137 | } 138 | 139 | .oi-arrow-top:before { 140 | content'\e013' 141 | } 142 | 143 | .oi-audio-spectrum:before { 144 | content'\e014' 145 | } 146 | 147 | .oi-audio:before { 148 | content'\e015' 149 | } 150 | 151 | .oi-badge:before { 152 | content'\e016' 153 | } 154 | 155 | .oi-ban:before { 156 | content'\e017' 157 | } 158 | 159 | .oi-bar-chart:before { 160 | content'\e018' 161 | } 162 | 163 | .oi-basket:before { 164 | content'\e019' 165 | } 166 | 167 | .oi-battery-empty:before { 168 | content'\e01a' 169 | } 170 | 171 | .oi-battery-full:before { 172 | content'\e01b' 173 | } 174 | 175 | .oi-beaker:before { 176 | content'\e01c' 177 | } 178 | 179 | .oi-bell:before { 180 | content'\e01d' 181 | } 182 | 183 | .oi-bluetooth:before { 184 | content'\e01e' 185 | } 186 | 187 | .oi-bold:before { 188 | content'\e01f' 189 | } 190 | 191 | .oi-bolt:before { 192 | content'\e020' 193 | } 194 | 195 | .oi-book:before { 196 | content'\e021' 197 | } 198 | 199 | .oi-bookmark:before { 200 | content'\e022' 201 | } 202 | 203 | .oi-box:before { 204 | content'\e023' 205 | } 206 | 207 | .oi-briefcase:before { 208 | content'\e024' 209 | } 210 | 211 | .oi-british-pound:before { 212 | content'\e025' 213 | } 214 | 215 | .oi-browser:before { 216 | content'\e026' 217 | } 218 | 219 | .oi-brush:before { 220 | content'\e027' 221 | } 222 | 223 | .oi-bug:before { 224 | content'\e028' 225 | } 226 | 227 | .oi-bullhorn:before { 228 | content'\e029' 229 | } 230 | 231 | .oi-calculator:before { 232 | content'\e02a' 233 | } 234 | 235 | .oi-calendar:before { 236 | content'\e02b' 237 | } 238 | 239 | .oi-camera-slr:before { 240 | content'\e02c' 241 | } 242 | 243 | .oi-caret-bottom:before { 244 | content'\e02d' 245 | } 246 | 247 | .oi-caret-left:before { 248 | content'\e02e' 249 | } 250 | 251 | .oi-caret-right:before { 252 | content'\e02f' 253 | } 254 | 255 | .oi-caret-top:before { 256 | content'\e030' 257 | } 258 | 259 | .oi-cart:before { 260 | content'\e031' 261 | } 262 | 263 | .oi-chat:before { 264 | content'\e032' 265 | } 266 | 267 | .oi-check:before { 268 | content'\e033' 269 | } 270 | 271 | .oi-chevron-bottom:before { 272 | content'\e034' 273 | } 274 | 275 | .oi-chevron-left:before { 276 | content'\e035' 277 | } 278 | 279 | .oi-chevron-right:before { 280 | content'\e036' 281 | } 282 | 283 | .oi-chevron-top:before { 284 | content'\e037' 285 | } 286 | 287 | .oi-circle-check:before { 288 | content'\e038' 289 | } 290 | 291 | .oi-circle-x:before { 292 | content'\e039' 293 | } 294 | 295 | .oi-clipboard:before { 296 | content'\e03a' 297 | } 298 | 299 | .oi-clock:before { 300 | content'\e03b' 301 | } 302 | 303 | .oi-cloud-download:before { 304 | content'\e03c' 305 | } 306 | 307 | .oi-cloud-upload:before { 308 | content'\e03d' 309 | } 310 | 311 | .oi-cloud:before { 312 | content'\e03e' 313 | } 314 | 315 | .oi-cloudy:before { 316 | content'\e03f' 317 | } 318 | 319 | .oi-code:before { 320 | content'\e040' 321 | } 322 | 323 | .oi-cog:before { 324 | content'\e041' 325 | } 326 | 327 | .oi-collapse-down:before { 328 | content'\e042' 329 | } 330 | 331 | .oi-collapse-left:before { 332 | content'\e043' 333 | } 334 | 335 | .oi-collapse-right:before { 336 | content'\e044' 337 | } 338 | 339 | .oi-collapse-up:before { 340 | content'\e045' 341 | } 342 | 343 | .oi-command:before { 344 | content'\e046' 345 | } 346 | 347 | .oi-comment-square:before { 348 | content'\e047' 349 | } 350 | 351 | .oi-compass:before { 352 | content'\e048' 353 | } 354 | 355 | .oi-contrast:before { 356 | content'\e049' 357 | } 358 | 359 | .oi-copywriting:before { 360 | content'\e04a' 361 | } 362 | 363 | .oi-credit-card:before { 364 | content'\e04b' 365 | } 366 | 367 | .oi-crop:before { 368 | content'\e04c' 369 | } 370 | 371 | .oi-dashboard:before { 372 | content'\e04d' 373 | } 374 | 375 | .oi-data-transfer-download:before { 376 | content'\e04e' 377 | } 378 | 379 | .oi-data-transfer-upload:before { 380 | content'\e04f' 381 | } 382 | 383 | .oi-delete:before { 384 | content'\e050' 385 | } 386 | 387 | .oi-dial:before { 388 | content'\e051' 389 | } 390 | 391 | .oi-document:before { 392 | content'\e052' 393 | } 394 | 395 | .oi-dollar:before { 396 | content'\e053' 397 | } 398 | 399 | .oi-double-quote-sans-left:before { 400 | content'\e054' 401 | } 402 | 403 | .oi-double-quote-sans-right:before { 404 | content'\e055' 405 | } 406 | 407 | .oi-double-quote-serif-left:before { 408 | content'\e056' 409 | } 410 | 411 | .oi-double-quote-serif-right:before { 412 | content'\e057' 413 | } 414 | 415 | .oi-droplet:before { 416 | content'\e058' 417 | } 418 | 419 | .oi-eject:before { 420 | content'\e059' 421 | } 422 | 423 | .oi-elevator:before { 424 | content'\e05a' 425 | } 426 | 427 | .oi-ellipses:before { 428 | content'\e05b' 429 | } 430 | 431 | .oi-envelope-closed:before { 432 | content'\e05c' 433 | } 434 | 435 | .oi-envelope-open:before { 436 | content'\e05d' 437 | } 438 | 439 | .oi-euro:before { 440 | content'\e05e' 441 | } 442 | 443 | .oi-excerpt:before { 444 | content'\e05f' 445 | } 446 | 447 | .oi-expand-down:before { 448 | content'\e060' 449 | } 450 | 451 | .oi-expand-left:before { 452 | content'\e061' 453 | } 454 | 455 | .oi-expand-right:before { 456 | content'\e062' 457 | } 458 | 459 | .oi-expand-up:before { 460 | content'\e063' 461 | } 462 | 463 | .oi-external-link:before { 464 | content'\e064' 465 | } 466 | 467 | .oi-eye:before { 468 | content'\e065' 469 | } 470 | 471 | .oi-eyedropper:before { 472 | content'\e066' 473 | } 474 | 475 | .oi-file:before { 476 | content'\e067' 477 | } 478 | 479 | .oi-fire:before { 480 | content'\e068' 481 | } 482 | 483 | .oi-flag:before { 484 | content'\e069' 485 | } 486 | 487 | .oi-flash:before { 488 | content'\e06a' 489 | } 490 | 491 | .oi-folder:before { 492 | content'\e06b' 493 | } 494 | 495 | .oi-fork:before { 496 | content'\e06c' 497 | } 498 | 499 | .oi-fullscreen-enter:before { 500 | content'\e06d' 501 | } 502 | 503 | .oi-fullscreen-exit:before { 504 | content'\e06e' 505 | } 506 | 507 | .oi-globe:before { 508 | content'\e06f' 509 | } 510 | 511 | .oi-graph:before { 512 | content'\e070' 513 | } 514 | 515 | .oi-grid-four-up:before { 516 | content'\e071' 517 | } 518 | 519 | .oi-grid-three-up:before { 520 | content'\e072' 521 | } 522 | 523 | .oi-grid-two-up:before { 524 | content'\e073' 525 | } 526 | 527 | .oi-hard-drive:before { 528 | content'\e074' 529 | } 530 | 531 | .oi-header:before { 532 | content'\e075' 533 | } 534 | 535 | .oi-headphones:before { 536 | content'\e076' 537 | } 538 | 539 | .oi-heart:before { 540 | content'\e077' 541 | } 542 | 543 | .oi-home:before { 544 | content'\e078' 545 | } 546 | 547 | .oi-image:before { 548 | content'\e079' 549 | } 550 | 551 | .oi-inbox:before { 552 | content'\e07a' 553 | } 554 | 555 | .oi-infinity:before { 556 | content'\e07b' 557 | } 558 | 559 | .oi-info:before { 560 | content'\e07c' 561 | } 562 | 563 | .oi-italic:before { 564 | content'\e07d' 565 | } 566 | 567 | .oi-justify-center:before { 568 | content'\e07e' 569 | } 570 | 571 | .oi-justify-left:before { 572 | content'\e07f' 573 | } 574 | 575 | .oi-justify-right:before { 576 | content'\e080' 577 | } 578 | 579 | .oi-key:before { 580 | content'\e081' 581 | } 582 | 583 | .oi-laptop:before { 584 | content'\e082' 585 | } 586 | 587 | .oi-layers:before { 588 | content'\e083' 589 | } 590 | 591 | .oi-lightbulb:before { 592 | content'\e084' 593 | } 594 | 595 | .oi-link-broken:before { 596 | content'\e085' 597 | } 598 | 599 | .oi-link-intact:before { 600 | content'\e086' 601 | } 602 | 603 | .oi-list-rich:before { 604 | content'\e087' 605 | } 606 | 607 | .oi-list:before { 608 | content'\e088' 609 | } 610 | 611 | .oi-location:before { 612 | content'\e089' 613 | } 614 | 615 | .oi-lock-locked:before { 616 | content'\e08a' 617 | } 618 | 619 | .oi-lock-unlocked:before { 620 | content'\e08b' 621 | } 622 | 623 | .oi-loop-circular:before { 624 | content'\e08c' 625 | } 626 | 627 | .oi-loop-square:before { 628 | content'\e08d' 629 | } 630 | 631 | .oi-loop:before { 632 | content'\e08e' 633 | } 634 | 635 | .oi-magnifying-glass:before { 636 | content'\e08f' 637 | } 638 | 639 | .oi-map-marker:before { 640 | content'\e090' 641 | } 642 | 643 | .oi-map:before { 644 | content'\e091' 645 | } 646 | 647 | .oi-media-pause:before { 648 | content'\e092' 649 | } 650 | 651 | .oi-media-play:before { 652 | content'\e093' 653 | } 654 | 655 | .oi-media-record:before { 656 | content'\e094' 657 | } 658 | 659 | .oi-media-skip-backward:before { 660 | content'\e095' 661 | } 662 | 663 | .oi-media-skip-forward:before { 664 | content'\e096' 665 | } 666 | 667 | .oi-media-step-backward:before { 668 | content'\e097' 669 | } 670 | 671 | .oi-media-step-forward:before { 672 | content'\e098' 673 | } 674 | 675 | .oi-media-stop:before { 676 | content'\e099' 677 | } 678 | 679 | .oi-medical-cross:before { 680 | content'\e09a' 681 | } 682 | 683 | .oi-menu:before { 684 | content'\e09b' 685 | } 686 | 687 | .oi-microphone:before { 688 | content'\e09c' 689 | } 690 | 691 | .oi-minus:before { 692 | content'\e09d' 693 | } 694 | 695 | .oi-monitor:before { 696 | content'\e09e' 697 | } 698 | 699 | .oi-moon:before { 700 | content'\e09f' 701 | } 702 | 703 | .oi-move:before { 704 | content'\e0a0' 705 | } 706 | 707 | .oi-musical-note:before { 708 | content'\e0a1' 709 | } 710 | 711 | .oi-paperclip:before { 712 | content'\e0a2' 713 | } 714 | 715 | .oi-pencil:before { 716 | content'\e0a3' 717 | } 718 | 719 | .oi-people:before { 720 | content'\e0a4' 721 | } 722 | 723 | .oi-person:before { 724 | content'\e0a5' 725 | } 726 | 727 | .oi-phone:before { 728 | content'\e0a6' 729 | } 730 | 731 | .oi-pie-chart:before { 732 | content'\e0a7' 733 | } 734 | 735 | .oi-pin:before { 736 | content'\e0a8' 737 | } 738 | 739 | .oi-play-circle:before { 740 | content'\e0a9' 741 | } 742 | 743 | .oi-plus:before { 744 | content'\e0aa' 745 | } 746 | 747 | .oi-power-standby:before { 748 | content'\e0ab' 749 | } 750 | 751 | .oi-print:before { 752 | content'\e0ac' 753 | } 754 | 755 | .oi-project:before { 756 | content'\e0ad' 757 | } 758 | 759 | .oi-pulse:before { 760 | content'\e0ae' 761 | } 762 | 763 | .oi-puzzle-piece:before { 764 | content'\e0af' 765 | } 766 | 767 | .oi-question-mark:before { 768 | content'\e0b0' 769 | } 770 | 771 | .oi-rain:before { 772 | content'\e0b1' 773 | } 774 | 775 | .oi-random:before { 776 | content'\e0b2' 777 | } 778 | 779 | .oi-reload:before { 780 | content'\e0b3' 781 | } 782 | 783 | .oi-resize-both:before { 784 | content'\e0b4' 785 | } 786 | 787 | .oi-resize-height:before { 788 | content'\e0b5' 789 | } 790 | 791 | .oi-resize-width:before { 792 | content'\e0b6' 793 | } 794 | 795 | .oi-rss-alt:before { 796 | content'\e0b7' 797 | } 798 | 799 | .oi-rss:before { 800 | content'\e0b8' 801 | } 802 | 803 | .oi-script:before { 804 | content'\e0b9' 805 | } 806 | 807 | .oi-share-boxed:before { 808 | content'\e0ba' 809 | } 810 | 811 | .oi-share:before { 812 | content'\e0bb' 813 | } 814 | 815 | .oi-shield:before { 816 | content'\e0bc' 817 | } 818 | 819 | .oi-signal:before { 820 | content'\e0bd' 821 | } 822 | 823 | .oi-signpost:before { 824 | content'\e0be' 825 | } 826 | 827 | .oi-sort-ascending:before { 828 | content'\e0bf' 829 | } 830 | 831 | .oi-sort-descending:before { 832 | content'\e0c0' 833 | } 834 | 835 | .oi-spreadsheet:before { 836 | content'\e0c1' 837 | } 838 | 839 | .oi-star:before { 840 | content'\e0c2' 841 | } 842 | 843 | .oi-sun:before { 844 | content'\e0c3' 845 | } 846 | 847 | .oi-tablet:before { 848 | content'\e0c4' 849 | } 850 | 851 | .oi-tag:before { 852 | content'\e0c5' 853 | } 854 | 855 | .oi-tags:before { 856 | content'\e0c6' 857 | } 858 | 859 | .oi-target:before { 860 | content'\e0c7' 861 | } 862 | 863 | .oi-task:before { 864 | content'\e0c8' 865 | } 866 | 867 | .oi-terminal:before { 868 | content'\e0c9' 869 | } 870 | 871 | .oi-text:before { 872 | content'\e0ca' 873 | } 874 | 875 | .oi-thumb-down:before { 876 | content'\e0cb' 877 | } 878 | 879 | .oi-thumb-up:before { 880 | content'\e0cc' 881 | } 882 | 883 | .oi-timer:before { 884 | content'\e0cd' 885 | } 886 | 887 | .oi-transfer:before { 888 | content'\e0ce' 889 | } 890 | 891 | .oi-trash:before { 892 | content'\e0cf' 893 | } 894 | 895 | .oi-underline:before { 896 | content'\e0d0' 897 | } 898 | 899 | .oi-vertical-align-bottom:before { 900 | content'\e0d1' 901 | } 902 | 903 | .oi-vertical-align-center:before { 904 | content'\e0d2' 905 | } 906 | 907 | .oi-vertical-align-top:before { 908 | content'\e0d3' 909 | } 910 | 911 | .oi-video:before { 912 | content'\e0d4' 913 | } 914 | 915 | .oi-volume-high:before { 916 | content'\e0d5' 917 | } 918 | 919 | .oi-volume-low:before { 920 | content'\e0d6' 921 | } 922 | 923 | .oi-volume-off:before { 924 | content'\e0d7' 925 | } 926 | 927 | .oi-warning:before { 928 | content'\e0d8' 929 | } 930 | 931 | .oi-wifi:before { 932 | content'\e0d9' 933 | } 934 | 935 | .oi-wrench:before { 936 | content'\e0da' 937 | } 938 | 939 | .oi-x:before { 940 | content'\e0db' 941 | } 942 | 943 | .oi-yen:before { 944 | content'\e0dc' 945 | } 946 | 947 | .oi-zoom-in:before { 948 | content'\e0dd' 949 | } 950 | 951 | .oi-zoom-out:before { 952 | content'\e0de' 953 | } 954 | 955 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic-foundation.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.fi-account-login:before,.fi-account-logout:before,.fi-action-redo:before,.fi-action-undo:before,.fi-align-center:before,.fi-align-left:before,.fi-align-right:before,.fi-aperture:before,.fi-arrow-bottom:before,.fi-arrow-circle-bottom:before,.fi-arrow-circle-left:before,.fi-arrow-circle-right:before,.fi-arrow-circle-top:before,.fi-arrow-left:before,.fi-arrow-right:before,.fi-arrow-thick-bottom:before,.fi-arrow-thick-left:before,.fi-arrow-thick-right:before,.fi-arrow-thick-top:before,.fi-arrow-top:before,.fi-audio-spectrum:before,.fi-audio:before,.fi-badge:before,.fi-ban:before,.fi-bar-chart:before,.fi-basket:before,.fi-battery-empty:before,.fi-battery-full:before,.fi-beaker:before,.fi-bell:before,.fi-bluetooth:before,.fi-bold:before,.fi-bolt:before,.fi-book:before,.fi-bookmark:before,.fi-box:before,.fi-briefcase:before,.fi-british-pound:before,.fi-browser:before,.fi-brush:before,.fi-bug:before,.fi-bullhorn:before,.fi-calculator:before,.fi-calendar:before,.fi-camera-slr:before,.fi-caret-bottom:before,.fi-caret-left:before,.fi-caret-right:before,.fi-caret-top:before,.fi-cart:before,.fi-chat:before,.fi-check:before,.fi-chevron-bottom:before,.fi-chevron-left:before,.fi-chevron-right:before,.fi-chevron-top:before,.fi-circle-check:before,.fi-circle-x:before,.fi-clipboard:before,.fi-clock:before,.fi-cloud-download:before,.fi-cloud-upload:before,.fi-cloud:before,.fi-cloudy:before,.fi-code:before,.fi-cog:before,.fi-collapse-down:before,.fi-collapse-left:before,.fi-collapse-right:before,.fi-collapse-up:before,.fi-command:before,.fi-comment-square:before,.fi-compass:before,.fi-contrast:before,.fi-copywriting:before,.fi-credit-card:before,.fi-crop:before,.fi-dashboard:before,.fi-data-transfer-download:before,.fi-data-transfer-upload:before,.fi-delete:before,.fi-dial:before,.fi-document:before,.fi-dollar:before,.fi-double-quote-sans-left:before,.fi-double-quote-sans-right:before,.fi-double-quote-serif-left:before,.fi-double-quote-serif-right:before,.fi-droplet:before,.fi-eject:before,.fi-elevator:before,.fi-ellipses:before,.fi-envelope-closed:before,.fi-envelope-open:before,.fi-euro:before,.fi-excerpt:before,.fi-expand-down:before,.fi-expand-left:before,.fi-expand-right:before,.fi-expand-up:before,.fi-external-link:before,.fi-eye:before,.fi-eyedropper:before,.fi-file:before,.fi-fire:before,.fi-flag:before,.fi-flash:before,.fi-folder:before,.fi-fork:before,.fi-fullscreen-enter:before,.fi-fullscreen-exit:before,.fi-globe:before,.fi-graph:before,.fi-grid-four-up:before,.fi-grid-three-up:before,.fi-grid-two-up:before,.fi-hard-drive:before,.fi-header:before,.fi-headphones:before,.fi-heart:before,.fi-home:before,.fi-image:before,.fi-inbox:before,.fi-infinity:before,.fi-info:before,.fi-italic:before,.fi-justify-center:before,.fi-justify-left:before,.fi-justify-right:before,.fi-key:before,.fi-laptop:before,.fi-layers:before,.fi-lightbulb:before,.fi-link-broken:before,.fi-link-intact:before,.fi-list-rich:before,.fi-list:before,.fi-location:before,.fi-lock-locked:before,.fi-lock-unlocked:before,.fi-loop-circular:before,.fi-loop-square:before,.fi-loop:before,.fi-magnifying-glass:before,.fi-map-marker:before,.fi-map:before,.fi-media-pause:before,.fi-media-play:before,.fi-media-record:before,.fi-media-skip-backward:before,.fi-media-skip-forward:before,.fi-media-step-backward:before,.fi-media-step-forward:before,.fi-media-stop:before,.fi-medical-cross:before,.fi-menu:before,.fi-microphone:before,.fi-minus:before,.fi-monitor:before,.fi-moon:before,.fi-move:before,.fi-musical-note:before,.fi-paperclip:before,.fi-pencil:before,.fi-people:before,.fi-person:before,.fi-phone:before,.fi-pie-chart:before,.fi-pin:before,.fi-play-circle:before,.fi-plus:before,.fi-power-standby:before,.fi-print:before,.fi-project:before,.fi-pulse:before,.fi-puzzle-piece:before,.fi-question-mark:before,.fi-rain:before,.fi-random:before,.fi-reload:before,.fi-resize-both:before,.fi-resize-height:before,.fi-resize-width:before,.fi-rss-alt:before,.fi-rss:before,.fi-script:before,.fi-share-boxed:before,.fi-share:before,.fi-shield:before,.fi-signal:before,.fi-signpost:before,.fi-sort-ascending:before,.fi-sort-descending:before,.fi-spreadsheet:before,.fi-star:before,.fi-sun:before,.fi-tablet:before,.fi-tag:before,.fi-tags:before,.fi-target:before,.fi-task:before,.fi-terminal:before,.fi-text:before,.fi-thumb-down:before,.fi-thumb-up:before,.fi-timer:before,.fi-transfer:before,.fi-trash:before,.fi-underline:before,.fi-vertical-align-bottom:before,.fi-vertical-align-center:before,.fi-vertical-align-top:before,.fi-video:before,.fi-volume-high:before,.fi-volume-low:before,.fi-volume-off:before,.fi-warning:before,.fi-wifi:before,.fi-wrench:before,.fi-x:before,.fi-yen:before,.fi-zoom-in:before,.fi-zoom-out:before{font-family:Icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-decoration:inherit}[class*=fi-].oi-align-center:before{text-align:center}[class*=fi-].oi-align-left:before{text-align:left}[class*=fi-].oi-align-right:before{text-align:right}[class*=fi-].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}[class*=fi-].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}[class*=fi-].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.fi-account-login:before{content:'\e000'}.fi-account-logout:before{content:'\e001'}.fi-action-redo:before{content:'\e002'}.fi-action-undo:before{content:'\e003'}.fi-align-center:before{content:'\e004'}.fi-align-left:before{content:'\e005'}.fi-align-right:before{content:'\e006'}.fi-aperture:before{content:'\e007'}.fi-arrow-bottom:before{content:'\e008'}.fi-arrow-circle-bottom:before{content:'\e009'}.fi-arrow-circle-left:before{content:'\e00a'}.fi-arrow-circle-right:before{content:'\e00b'}.fi-arrow-circle-top:before{content:'\e00c'}.fi-arrow-left:before{content:'\e00d'}.fi-arrow-right:before{content:'\e00e'}.fi-arrow-thick-bottom:before{content:'\e00f'}.fi-arrow-thick-left:before{content:'\e010'}.fi-arrow-thick-right:before{content:'\e011'}.fi-arrow-thick-top:before{content:'\e012'}.fi-arrow-top:before{content:'\e013'}.fi-audio-spectrum:before{content:'\e014'}.fi-audio:before{content:'\e015'}.fi-badge:before{content:'\e016'}.fi-ban:before{content:'\e017'}.fi-bar-chart:before{content:'\e018'}.fi-basket:before{content:'\e019'}.fi-battery-empty:before{content:'\e01a'}.fi-battery-full:before{content:'\e01b'}.fi-beaker:before{content:'\e01c'}.fi-bell:before{content:'\e01d'}.fi-bluetooth:before{content:'\e01e'}.fi-bold:before{content:'\e01f'}.fi-bolt:before{content:'\e020'}.fi-book:before{content:'\e021'}.fi-bookmark:before{content:'\e022'}.fi-box:before{content:'\e023'}.fi-briefcase:before{content:'\e024'}.fi-british-pound:before{content:'\e025'}.fi-browser:before{content:'\e026'}.fi-brush:before{content:'\e027'}.fi-bug:before{content:'\e028'}.fi-bullhorn:before{content:'\e029'}.fi-calculator:before{content:'\e02a'}.fi-calendar:before{content:'\e02b'}.fi-camera-slr:before{content:'\e02c'}.fi-caret-bottom:before{content:'\e02d'}.fi-caret-left:before{content:'\e02e'}.fi-caret-right:before{content:'\e02f'}.fi-caret-top:before{content:'\e030'}.fi-cart:before{content:'\e031'}.fi-chat:before{content:'\e032'}.fi-check:before{content:'\e033'}.fi-chevron-bottom:before{content:'\e034'}.fi-chevron-left:before{content:'\e035'}.fi-chevron-right:before{content:'\e036'}.fi-chevron-top:before{content:'\e037'}.fi-circle-check:before{content:'\e038'}.fi-circle-x:before{content:'\e039'}.fi-clipboard:before{content:'\e03a'}.fi-clock:before{content:'\e03b'}.fi-cloud-download:before{content:'\e03c'}.fi-cloud-upload:before{content:'\e03d'}.fi-cloud:before{content:'\e03e'}.fi-cloudy:before{content:'\e03f'}.fi-code:before{content:'\e040'}.fi-cog:before{content:'\e041'}.fi-collapse-down:before{content:'\e042'}.fi-collapse-left:before{content:'\e043'}.fi-collapse-right:before{content:'\e044'}.fi-collapse-up:before{content:'\e045'}.fi-command:before{content:'\e046'}.fi-comment-square:before{content:'\e047'}.fi-compass:before{content:'\e048'}.fi-contrast:before{content:'\e049'}.fi-copywriting:before{content:'\e04a'}.fi-credit-card:before{content:'\e04b'}.fi-crop:before{content:'\e04c'}.fi-dashboard:before{content:'\e04d'}.fi-data-transfer-download:before{content:'\e04e'}.fi-data-transfer-upload:before{content:'\e04f'}.fi-delete:before{content:'\e050'}.fi-dial:before{content:'\e051'}.fi-document:before{content:'\e052'}.fi-dollar:before{content:'\e053'}.fi-double-quote-sans-left:before{content:'\e054'}.fi-double-quote-sans-right:before{content:'\e055'}.fi-double-quote-serif-left:before{content:'\e056'}.fi-double-quote-serif-right:before{content:'\e057'}.fi-droplet:before{content:'\e058'}.fi-eject:before{content:'\e059'}.fi-elevator:before{content:'\e05a'}.fi-ellipses:before{content:'\e05b'}.fi-envelope-closed:before{content:'\e05c'}.fi-envelope-open:before{content:'\e05d'}.fi-euro:before{content:'\e05e'}.fi-excerpt:before{content:'\e05f'}.fi-expand-down:before{content:'\e060'}.fi-expand-left:before{content:'\e061'}.fi-expand-right:before{content:'\e062'}.fi-expand-up:before{content:'\e063'}.fi-external-link:before{content:'\e064'}.fi-eye:before{content:'\e065'}.fi-eyedropper:before{content:'\e066'}.fi-file:before{content:'\e067'}.fi-fire:before{content:'\e068'}.fi-flag:before{content:'\e069'}.fi-flash:before{content:'\e06a'}.fi-folder:before{content:'\e06b'}.fi-fork:before{content:'\e06c'}.fi-fullscreen-enter:before{content:'\e06d'}.fi-fullscreen-exit:before{content:'\e06e'}.fi-globe:before{content:'\e06f'}.fi-graph:before{content:'\e070'}.fi-grid-four-up:before{content:'\e071'}.fi-grid-three-up:before{content:'\e072'}.fi-grid-two-up:before{content:'\e073'}.fi-hard-drive:before{content:'\e074'}.fi-header:before{content:'\e075'}.fi-headphones:before{content:'\e076'}.fi-heart:before{content:'\e077'}.fi-home:before{content:'\e078'}.fi-image:before{content:'\e079'}.fi-inbox:before{content:'\e07a'}.fi-infinity:before{content:'\e07b'}.fi-info:before{content:'\e07c'}.fi-italic:before{content:'\e07d'}.fi-justify-center:before{content:'\e07e'}.fi-justify-left:before{content:'\e07f'}.fi-justify-right:before{content:'\e080'}.fi-key:before{content:'\e081'}.fi-laptop:before{content:'\e082'}.fi-layers:before{content:'\e083'}.fi-lightbulb:before{content:'\e084'}.fi-link-broken:before{content:'\e085'}.fi-link-intact:before{content:'\e086'}.fi-list-rich:before{content:'\e087'}.fi-list:before{content:'\e088'}.fi-location:before{content:'\e089'}.fi-lock-locked:before{content:'\e08a'}.fi-lock-unlocked:before{content:'\e08b'}.fi-loop-circular:before{content:'\e08c'}.fi-loop-square:before{content:'\e08d'}.fi-loop:before{content:'\e08e'}.fi-magnifying-glass:before{content:'\e08f'}.fi-map-marker:before{content:'\e090'}.fi-map:before{content:'\e091'}.fi-media-pause:before{content:'\e092'}.fi-media-play:before{content:'\e093'}.fi-media-record:before{content:'\e094'}.fi-media-skip-backward:before{content:'\e095'}.fi-media-skip-forward:before{content:'\e096'}.fi-media-step-backward:before{content:'\e097'}.fi-media-step-forward:before{content:'\e098'}.fi-media-stop:before{content:'\e099'}.fi-medical-cross:before{content:'\e09a'}.fi-menu:before{content:'\e09b'}.fi-microphone:before{content:'\e09c'}.fi-minus:before{content:'\e09d'}.fi-monitor:before{content:'\e09e'}.fi-moon:before{content:'\e09f'}.fi-move:before{content:'\e0a0'}.fi-musical-note:before{content:'\e0a1'}.fi-paperclip:before{content:'\e0a2'}.fi-pencil:before{content:'\e0a3'}.fi-people:before{content:'\e0a4'}.fi-person:before{content:'\e0a5'}.fi-phone:before{content:'\e0a6'}.fi-pie-chart:before{content:'\e0a7'}.fi-pin:before{content:'\e0a8'}.fi-play-circle:before{content:'\e0a9'}.fi-plus:before{content:'\e0aa'}.fi-power-standby:before{content:'\e0ab'}.fi-print:before{content:'\e0ac'}.fi-project:before{content:'\e0ad'}.fi-pulse:before{content:'\e0ae'}.fi-puzzle-piece:before{content:'\e0af'}.fi-question-mark:before{content:'\e0b0'}.fi-rain:before{content:'\e0b1'}.fi-random:before{content:'\e0b2'}.fi-reload:before{content:'\e0b3'}.fi-resize-both:before{content:'\e0b4'}.fi-resize-height:before{content:'\e0b5'}.fi-resize-width:before{content:'\e0b6'}.fi-rss-alt:before{content:'\e0b7'}.fi-rss:before{content:'\e0b8'}.fi-script:before{content:'\e0b9'}.fi-share-boxed:before{content:'\e0ba'}.fi-share:before{content:'\e0bb'}.fi-shield:before{content:'\e0bc'}.fi-signal:before{content:'\e0bd'}.fi-signpost:before{content:'\e0be'}.fi-sort-ascending:before{content:'\e0bf'}.fi-sort-descending:before{content:'\e0c0'}.fi-spreadsheet:before{content:'\e0c1'}.fi-star:before{content:'\e0c2'}.fi-sun:before{content:'\e0c3'}.fi-tablet:before{content:'\e0c4'}.fi-tag:before{content:'\e0c5'}.fi-tags:before{content:'\e0c6'}.fi-target:before{content:'\e0c7'}.fi-task:before{content:'\e0c8'}.fi-terminal:before{content:'\e0c9'}.fi-text:before{content:'\e0ca'}.fi-thumb-down:before{content:'\e0cb'}.fi-thumb-up:before{content:'\e0cc'}.fi-timer:before{content:'\e0cd'}.fi-transfer:before{content:'\e0ce'}.fi-trash:before{content:'\e0cf'}.fi-underline:before{content:'\e0d0'}.fi-vertical-align-bottom:before{content:'\e0d1'}.fi-vertical-align-center:before{content:'\e0d2'}.fi-vertical-align-top:before{content:'\e0d3'}.fi-video:before{content:'\e0d4'}.fi-volume-high:before{content:'\e0d5'}.fi-volume-low:before{content:'\e0d6'}.fi-volume-off:before{content:'\e0d7'}.fi-warning:before{content:'\e0d8'}.fi-wifi:before{content:'\e0d9'}.fi-wrench:before{content:'\e0da'}.fi-x:before{content:'\e0db'}.fi-yen:before{content:'\e0dc'}.fi-zoom-in:before{content:'\e0dd'}.fi-zoom-out:before{content:'\e0de'} -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | font-family: 'Icons'; 4 | src: url('../fonts/open-iconic.eot'); 5 | src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | .oi[data-glyph].oi-text-replace { 11 | font-size: 0; 12 | line-height: 0; 13 | } 14 | 15 | .oi[data-glyph].oi-text-replace:before { 16 | width: 1em; 17 | text-align: center; 18 | } 19 | 20 | .oi[data-glyph]:before { 21 | font-family: 'Icons'; 22 | display: inline-block; 23 | speak: none; 24 | line-height: 1; 25 | vertical-align: baseline; 26 | font-weight: normal; 27 | font-style: normal; 28 | -webkit-font-smoothing: antialiased; 29 | -moz-osx-font-smoothing: grayscale; 30 | } 31 | 32 | .oi[data-glyph]:empty:before { 33 | width: 1em; 34 | text-align: center; 35 | box-sizing: content-box; 36 | } 37 | 38 | .oi[data-glyph].oi-align-left:before { 39 | text-align: left; 40 | } 41 | 42 | .oi[data-glyph].oi-align-right:before { 43 | text-align: right; 44 | } 45 | 46 | .oi[data-glyph].oi-align-center:before { 47 | text-align: center; 48 | } 49 | 50 | .oi[data-glyph].oi-flip-horizontal:before { 51 | -webkit-transform: scale(-1, 1); 52 | -ms-transform: scale(-1, 1); 53 | transform: scale(-1, 1); 54 | } 55 | .oi[data-glyph].oi-flip-vertical:before { 56 | -webkit-transform: scale(1, -1); 57 | -ms-transform: scale(-1, 1); 58 | transform: scale(1, -1); 59 | } 60 | .oi[data-glyph].oi-flip-horizontal-vertical:before { 61 | -webkit-transform: scale(-1, -1); 62 | -ms-transform: scale(-1, 1); 63 | transform: scale(-1, -1); 64 | } 65 | 66 | 67 | .oi[data-glyph=account-login]:before { content:'\e000'; } 68 | 69 | .oi[data-glyph=account-logout]:before { content:'\e001'; } 70 | 71 | .oi[data-glyph=action-redo]:before { content:'\e002'; } 72 | 73 | .oi[data-glyph=action-undo]:before { content:'\e003'; } 74 | 75 | .oi[data-glyph=align-center]:before { content:'\e004'; } 76 | 77 | .oi[data-glyph=align-left]:before { content:'\e005'; } 78 | 79 | .oi[data-glyph=align-right]:before { content:'\e006'; } 80 | 81 | .oi[data-glyph=aperture]:before { content:'\e007'; } 82 | 83 | .oi[data-glyph=arrow-bottom]:before { content:'\e008'; } 84 | 85 | .oi[data-glyph=arrow-circle-bottom]:before { content:'\e009'; } 86 | 87 | .oi[data-glyph=arrow-circle-left]:before { content:'\e00a'; } 88 | 89 | .oi[data-glyph=arrow-circle-right]:before { content:'\e00b'; } 90 | 91 | .oi[data-glyph=arrow-circle-top]:before { content:'\e00c'; } 92 | 93 | .oi[data-glyph=arrow-left]:before { content:'\e00d'; } 94 | 95 | .oi[data-glyph=arrow-right]:before { content:'\e00e'; } 96 | 97 | .oi[data-glyph=arrow-thick-bottom]:before { content:'\e00f'; } 98 | 99 | .oi[data-glyph=arrow-thick-left]:before { content:'\e010'; } 100 | 101 | .oi[data-glyph=arrow-thick-right]:before { content:'\e011'; } 102 | 103 | .oi[data-glyph=arrow-thick-top]:before { content:'\e012'; } 104 | 105 | .oi[data-glyph=arrow-top]:before { content:'\e013'; } 106 | 107 | .oi[data-glyph=audio-spectrum]:before { content:'\e014'; } 108 | 109 | .oi[data-glyph=audio]:before { content:'\e015'; } 110 | 111 | .oi[data-glyph=badge]:before { content:'\e016'; } 112 | 113 | .oi[data-glyph=ban]:before { content:'\e017'; } 114 | 115 | .oi[data-glyph=bar-chart]:before { content:'\e018'; } 116 | 117 | .oi[data-glyph=basket]:before { content:'\e019'; } 118 | 119 | .oi[data-glyph=battery-empty]:before { content:'\e01a'; } 120 | 121 | .oi[data-glyph=battery-full]:before { content:'\e01b'; } 122 | 123 | .oi[data-glyph=beaker]:before { content:'\e01c'; } 124 | 125 | .oi[data-glyph=bell]:before { content:'\e01d'; } 126 | 127 | .oi[data-glyph=bluetooth]:before { content:'\e01e'; } 128 | 129 | .oi[data-glyph=bold]:before { content:'\e01f'; } 130 | 131 | .oi[data-glyph=bolt]:before { content:'\e020'; } 132 | 133 | .oi[data-glyph=book]:before { content:'\e021'; } 134 | 135 | .oi[data-glyph=bookmark]:before { content:'\e022'; } 136 | 137 | .oi[data-glyph=box]:before { content:'\e023'; } 138 | 139 | .oi[data-glyph=briefcase]:before { content:'\e024'; } 140 | 141 | .oi[data-glyph=british-pound]:before { content:'\e025'; } 142 | 143 | .oi[data-glyph=browser]:before { content:'\e026'; } 144 | 145 | .oi[data-glyph=brush]:before { content:'\e027'; } 146 | 147 | .oi[data-glyph=bug]:before { content:'\e028'; } 148 | 149 | .oi[data-glyph=bullhorn]:before { content:'\e029'; } 150 | 151 | .oi[data-glyph=calculator]:before { content:'\e02a'; } 152 | 153 | .oi[data-glyph=calendar]:before { content:'\e02b'; } 154 | 155 | .oi[data-glyph=camera-slr]:before { content:'\e02c'; } 156 | 157 | .oi[data-glyph=caret-bottom]:before { content:'\e02d'; } 158 | 159 | .oi[data-glyph=caret-left]:before { content:'\e02e'; } 160 | 161 | .oi[data-glyph=caret-right]:before { content:'\e02f'; } 162 | 163 | .oi[data-glyph=caret-top]:before { content:'\e030'; } 164 | 165 | .oi[data-glyph=cart]:before { content:'\e031'; } 166 | 167 | .oi[data-glyph=chat]:before { content:'\e032'; } 168 | 169 | .oi[data-glyph=check]:before { content:'\e033'; } 170 | 171 | .oi[data-glyph=chevron-bottom]:before { content:'\e034'; } 172 | 173 | .oi[data-glyph=chevron-left]:before { content:'\e035'; } 174 | 175 | .oi[data-glyph=chevron-right]:before { content:'\e036'; } 176 | 177 | .oi[data-glyph=chevron-top]:before { content:'\e037'; } 178 | 179 | .oi[data-glyph=circle-check]:before { content:'\e038'; } 180 | 181 | .oi[data-glyph=circle-x]:before { content:'\e039'; } 182 | 183 | .oi[data-glyph=clipboard]:before { content:'\e03a'; } 184 | 185 | .oi[data-glyph=clock]:before { content:'\e03b'; } 186 | 187 | .oi[data-glyph=cloud-download]:before { content:'\e03c'; } 188 | 189 | .oi[data-glyph=cloud-upload]:before { content:'\e03d'; } 190 | 191 | .oi[data-glyph=cloud]:before { content:'\e03e'; } 192 | 193 | .oi[data-glyph=cloudy]:before { content:'\e03f'; } 194 | 195 | .oi[data-glyph=code]:before { content:'\e040'; } 196 | 197 | .oi[data-glyph=cog]:before { content:'\e041'; } 198 | 199 | .oi[data-glyph=collapse-down]:before { content:'\e042'; } 200 | 201 | .oi[data-glyph=collapse-left]:before { content:'\e043'; } 202 | 203 | .oi[data-glyph=collapse-right]:before { content:'\e044'; } 204 | 205 | .oi[data-glyph=collapse-up]:before { content:'\e045'; } 206 | 207 | .oi[data-glyph=command]:before { content:'\e046'; } 208 | 209 | .oi[data-glyph=comment-square]:before { content:'\e047'; } 210 | 211 | .oi[data-glyph=compass]:before { content:'\e048'; } 212 | 213 | .oi[data-glyph=contrast]:before { content:'\e049'; } 214 | 215 | .oi[data-glyph=copywriting]:before { content:'\e04a'; } 216 | 217 | .oi[data-glyph=credit-card]:before { content:'\e04b'; } 218 | 219 | .oi[data-glyph=crop]:before { content:'\e04c'; } 220 | 221 | .oi[data-glyph=dashboard]:before { content:'\e04d'; } 222 | 223 | .oi[data-glyph=data-transfer-download]:before { content:'\e04e'; } 224 | 225 | .oi[data-glyph=data-transfer-upload]:before { content:'\e04f'; } 226 | 227 | .oi[data-glyph=delete]:before { content:'\e050'; } 228 | 229 | .oi[data-glyph=dial]:before { content:'\e051'; } 230 | 231 | .oi[data-glyph=document]:before { content:'\e052'; } 232 | 233 | .oi[data-glyph=dollar]:before { content:'\e053'; } 234 | 235 | .oi[data-glyph=double-quote-sans-left]:before { content:'\e054'; } 236 | 237 | .oi[data-glyph=double-quote-sans-right]:before { content:'\e055'; } 238 | 239 | .oi[data-glyph=double-quote-serif-left]:before { content:'\e056'; } 240 | 241 | .oi[data-glyph=double-quote-serif-right]:before { content:'\e057'; } 242 | 243 | .oi[data-glyph=droplet]:before { content:'\e058'; } 244 | 245 | .oi[data-glyph=eject]:before { content:'\e059'; } 246 | 247 | .oi[data-glyph=elevator]:before { content:'\e05a'; } 248 | 249 | .oi[data-glyph=ellipses]:before { content:'\e05b'; } 250 | 251 | .oi[data-glyph=envelope-closed]:before { content:'\e05c'; } 252 | 253 | .oi[data-glyph=envelope-open]:before { content:'\e05d'; } 254 | 255 | .oi[data-glyph=euro]:before { content:'\e05e'; } 256 | 257 | .oi[data-glyph=excerpt]:before { content:'\e05f'; } 258 | 259 | .oi[data-glyph=expand-down]:before { content:'\e060'; } 260 | 261 | .oi[data-glyph=expand-left]:before { content:'\e061'; } 262 | 263 | .oi[data-glyph=expand-right]:before { content:'\e062'; } 264 | 265 | .oi[data-glyph=expand-up]:before { content:'\e063'; } 266 | 267 | .oi[data-glyph=external-link]:before { content:'\e064'; } 268 | 269 | .oi[data-glyph=eye]:before { content:'\e065'; } 270 | 271 | .oi[data-glyph=eyedropper]:before { content:'\e066'; } 272 | 273 | .oi[data-glyph=file]:before { content:'\e067'; } 274 | 275 | .oi[data-glyph=fire]:before { content:'\e068'; } 276 | 277 | .oi[data-glyph=flag]:before { content:'\e069'; } 278 | 279 | .oi[data-glyph=flash]:before { content:'\e06a'; } 280 | 281 | .oi[data-glyph=folder]:before { content:'\e06b'; } 282 | 283 | .oi[data-glyph=fork]:before { content:'\e06c'; } 284 | 285 | .oi[data-glyph=fullscreen-enter]:before { content:'\e06d'; } 286 | 287 | .oi[data-glyph=fullscreen-exit]:before { content:'\e06e'; } 288 | 289 | .oi[data-glyph=globe]:before { content:'\e06f'; } 290 | 291 | .oi[data-glyph=graph]:before { content:'\e070'; } 292 | 293 | .oi[data-glyph=grid-four-up]:before { content:'\e071'; } 294 | 295 | .oi[data-glyph=grid-three-up]:before { content:'\e072'; } 296 | 297 | .oi[data-glyph=grid-two-up]:before { content:'\e073'; } 298 | 299 | .oi[data-glyph=hard-drive]:before { content:'\e074'; } 300 | 301 | .oi[data-glyph=header]:before { content:'\e075'; } 302 | 303 | .oi[data-glyph=headphones]:before { content:'\e076'; } 304 | 305 | .oi[data-glyph=heart]:before { content:'\e077'; } 306 | 307 | .oi[data-glyph=home]:before { content:'\e078'; } 308 | 309 | .oi[data-glyph=image]:before { content:'\e079'; } 310 | 311 | .oi[data-glyph=inbox]:before { content:'\e07a'; } 312 | 313 | .oi[data-glyph=infinity]:before { content:'\e07b'; } 314 | 315 | .oi[data-glyph=info]:before { content:'\e07c'; } 316 | 317 | .oi[data-glyph=italic]:before { content:'\e07d'; } 318 | 319 | .oi[data-glyph=justify-center]:before { content:'\e07e'; } 320 | 321 | .oi[data-glyph=justify-left]:before { content:'\e07f'; } 322 | 323 | .oi[data-glyph=justify-right]:before { content:'\e080'; } 324 | 325 | .oi[data-glyph=key]:before { content:'\e081'; } 326 | 327 | .oi[data-glyph=laptop]:before { content:'\e082'; } 328 | 329 | .oi[data-glyph=layers]:before { content:'\e083'; } 330 | 331 | .oi[data-glyph=lightbulb]:before { content:'\e084'; } 332 | 333 | .oi[data-glyph=link-broken]:before { content:'\e085'; } 334 | 335 | .oi[data-glyph=link-intact]:before { content:'\e086'; } 336 | 337 | .oi[data-glyph=list-rich]:before { content:'\e087'; } 338 | 339 | .oi[data-glyph=list]:before { content:'\e088'; } 340 | 341 | .oi[data-glyph=location]:before { content:'\e089'; } 342 | 343 | .oi[data-glyph=lock-locked]:before { content:'\e08a'; } 344 | 345 | .oi[data-glyph=lock-unlocked]:before { content:'\e08b'; } 346 | 347 | .oi[data-glyph=loop-circular]:before { content:'\e08c'; } 348 | 349 | .oi[data-glyph=loop-square]:before { content:'\e08d'; } 350 | 351 | .oi[data-glyph=loop]:before { content:'\e08e'; } 352 | 353 | .oi[data-glyph=magnifying-glass]:before { content:'\e08f'; } 354 | 355 | .oi[data-glyph=map-marker]:before { content:'\e090'; } 356 | 357 | .oi[data-glyph=map]:before { content:'\e091'; } 358 | 359 | .oi[data-glyph=media-pause]:before { content:'\e092'; } 360 | 361 | .oi[data-glyph=media-play]:before { content:'\e093'; } 362 | 363 | .oi[data-glyph=media-record]:before { content:'\e094'; } 364 | 365 | .oi[data-glyph=media-skip-backward]:before { content:'\e095'; } 366 | 367 | .oi[data-glyph=media-skip-forward]:before { content:'\e096'; } 368 | 369 | .oi[data-glyph=media-step-backward]:before { content:'\e097'; } 370 | 371 | .oi[data-glyph=media-step-forward]:before { content:'\e098'; } 372 | 373 | .oi[data-glyph=media-stop]:before { content:'\e099'; } 374 | 375 | .oi[data-glyph=medical-cross]:before { content:'\e09a'; } 376 | 377 | .oi[data-glyph=menu]:before { content:'\e09b'; } 378 | 379 | .oi[data-glyph=microphone]:before { content:'\e09c'; } 380 | 381 | .oi[data-glyph=minus]:before { content:'\e09d'; } 382 | 383 | .oi[data-glyph=monitor]:before { content:'\e09e'; } 384 | 385 | .oi[data-glyph=moon]:before { content:'\e09f'; } 386 | 387 | .oi[data-glyph=move]:before { content:'\e0a0'; } 388 | 389 | .oi[data-glyph=musical-note]:before { content:'\e0a1'; } 390 | 391 | .oi[data-glyph=paperclip]:before { content:'\e0a2'; } 392 | 393 | .oi[data-glyph=pencil]:before { content:'\e0a3'; } 394 | 395 | .oi[data-glyph=people]:before { content:'\e0a4'; } 396 | 397 | .oi[data-glyph=person]:before { content:'\e0a5'; } 398 | 399 | .oi[data-glyph=phone]:before { content:'\e0a6'; } 400 | 401 | .oi[data-glyph=pie-chart]:before { content:'\e0a7'; } 402 | 403 | .oi[data-glyph=pin]:before { content:'\e0a8'; } 404 | 405 | .oi[data-glyph=play-circle]:before { content:'\e0a9'; } 406 | 407 | .oi[data-glyph=plus]:before { content:'\e0aa'; } 408 | 409 | .oi[data-glyph=power-standby]:before { content:'\e0ab'; } 410 | 411 | .oi[data-glyph=print]:before { content:'\e0ac'; } 412 | 413 | .oi[data-glyph=project]:before { content:'\e0ad'; } 414 | 415 | .oi[data-glyph=pulse]:before { content:'\e0ae'; } 416 | 417 | .oi[data-glyph=puzzle-piece]:before { content:'\e0af'; } 418 | 419 | .oi[data-glyph=question-mark]:before { content:'\e0b0'; } 420 | 421 | .oi[data-glyph=rain]:before { content:'\e0b1'; } 422 | 423 | .oi[data-glyph=random]:before { content:'\e0b2'; } 424 | 425 | .oi[data-glyph=reload]:before { content:'\e0b3'; } 426 | 427 | .oi[data-glyph=resize-both]:before { content:'\e0b4'; } 428 | 429 | .oi[data-glyph=resize-height]:before { content:'\e0b5'; } 430 | 431 | .oi[data-glyph=resize-width]:before { content:'\e0b6'; } 432 | 433 | .oi[data-glyph=rss-alt]:before { content:'\e0b7'; } 434 | 435 | .oi[data-glyph=rss]:before { content:'\e0b8'; } 436 | 437 | .oi[data-glyph=script]:before { content:'\e0b9'; } 438 | 439 | .oi[data-glyph=share-boxed]:before { content:'\e0ba'; } 440 | 441 | .oi[data-glyph=share]:before { content:'\e0bb'; } 442 | 443 | .oi[data-glyph=shield]:before { content:'\e0bc'; } 444 | 445 | .oi[data-glyph=signal]:before { content:'\e0bd'; } 446 | 447 | .oi[data-glyph=signpost]:before { content:'\e0be'; } 448 | 449 | .oi[data-glyph=sort-ascending]:before { content:'\e0bf'; } 450 | 451 | .oi[data-glyph=sort-descending]:before { content:'\e0c0'; } 452 | 453 | .oi[data-glyph=spreadsheet]:before { content:'\e0c1'; } 454 | 455 | .oi[data-glyph=star]:before { content:'\e0c2'; } 456 | 457 | .oi[data-glyph=sun]:before { content:'\e0c3'; } 458 | 459 | .oi[data-glyph=tablet]:before { content:'\e0c4'; } 460 | 461 | .oi[data-glyph=tag]:before { content:'\e0c5'; } 462 | 463 | .oi[data-glyph=tags]:before { content:'\e0c6'; } 464 | 465 | .oi[data-glyph=target]:before { content:'\e0c7'; } 466 | 467 | .oi[data-glyph=task]:before { content:'\e0c8'; } 468 | 469 | .oi[data-glyph=terminal]:before { content:'\e0c9'; } 470 | 471 | .oi[data-glyph=text]:before { content:'\e0ca'; } 472 | 473 | .oi[data-glyph=thumb-down]:before { content:'\e0cb'; } 474 | 475 | .oi[data-glyph=thumb-up]:before { content:'\e0cc'; } 476 | 477 | .oi[data-glyph=timer]:before { content:'\e0cd'; } 478 | 479 | .oi[data-glyph=transfer]:before { content:'\e0ce'; } 480 | 481 | .oi[data-glyph=trash]:before { content:'\e0cf'; } 482 | 483 | .oi[data-glyph=underline]:before { content:'\e0d0'; } 484 | 485 | .oi[data-glyph=vertical-align-bottom]:before { content:'\e0d1'; } 486 | 487 | .oi[data-glyph=vertical-align-center]:before { content:'\e0d2'; } 488 | 489 | .oi[data-glyph=vertical-align-top]:before { content:'\e0d3'; } 490 | 491 | .oi[data-glyph=video]:before { content:'\e0d4'; } 492 | 493 | .oi[data-glyph=volume-high]:before { content:'\e0d5'; } 494 | 495 | .oi[data-glyph=volume-low]:before { content:'\e0d6'; } 496 | 497 | .oi[data-glyph=volume-off]:before { content:'\e0d7'; } 498 | 499 | .oi[data-glyph=warning]:before { content:'\e0d8'; } 500 | 501 | .oi[data-glyph=wifi]:before { content:'\e0d9'; } 502 | 503 | .oi[data-glyph=wrench]:before { content:'\e0da'; } 504 | 505 | .oi[data-glyph=x]:before { content:'\e0db'; } 506 | 507 | .oi[data-glyph=yen]:before { content:'\e0dc'; } 508 | 509 | .oi[data-glyph=zoom-in]:before { content:'\e0dd'; } 510 | 511 | .oi[data-glyph=zoom-out]:before { content:'\e0de'; } 512 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic.less: -------------------------------------------------------------------------------- 1 | @iconic-font-path: '../fonts/'; 2 | 3 | @font-face { 4 | font-family: 'Icons'; 5 | src: url('@{iconic-font-path}open-iconic.eot'); 6 | src: url('@{iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{iconic-font-path}open-iconic.woff') format('woff'), url('@{iconic-font-path}open-iconic.ttf') format('truetype'), url('@{iconic-font-path}open-iconic.otf') format('opentype'), url('@{iconic-font-path}open-iconic.svg#iconic-sm') format('svg'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | .oi[data-glyph].oi-text-replace { 12 | font-size: 0; 13 | line-height: 0; 14 | } 15 | 16 | .oi[data-glyph].oi-text-replace:before { 17 | width: 1em; 18 | text-align: center; 19 | } 20 | 21 | .oi[data-glyph] { 22 | &:before { 23 | position: relative; 24 | top: 1px; 25 | font-family: 'Icons'; 26 | display: inline-block; 27 | speak: none; 28 | line-height: 1; 29 | vertical-align: baseline; 30 | font-weight: normal; 31 | font-style: normal; 32 | -webkit-font-smoothing: antialiased; 33 | -moz-osx-font-smoothing: grayscale; 34 | } 35 | 36 | &:empty:before { 37 | width: 1em; 38 | text-align: center; 39 | box-sizing: content-box; 40 | } 41 | 42 | &.oi-align-left:before { 43 | text-align: left; 44 | } 45 | &.oi-align-right:before { 46 | text-align: right; 47 | } 48 | &.oi-align-center:before { 49 | text-align: center; 50 | } 51 | 52 | &.oi-flip-horizontal:before { 53 | -webkit-transform: scale(-1, 1); 54 | -ms-transform: scale(-1, 1); 55 | transform: scale(-1, 1); 56 | } 57 | 58 | &.oi-flip-vertical:before { 59 | -webkit-transform: scale(1, -1); 60 | -ms-transform: scale(-1, 1); 61 | transform: scale(1, -1); 62 | } 63 | 64 | &.oi-flip-horizontal-vertical:before { 65 | -webkit-transform: scale(-1, -1); 66 | -ms-transform: scale(-1, 1); 67 | transform: scale(-1, -1); 68 | } 69 | } 70 | 71 | 72 | .oi[data-glyph=account-login]:before { 73 | content: '\e000'; 74 | } 75 | 76 | .oi[data-glyph=account-logout]:before { 77 | content: '\e001'; 78 | } 79 | 80 | .oi[data-glyph=action-redo]:before { 81 | content: '\e002'; 82 | } 83 | 84 | .oi[data-glyph=action-undo]:before { 85 | content: '\e003'; 86 | } 87 | 88 | .oi[data-glyph=align-center]:before { 89 | content: '\e004'; 90 | } 91 | 92 | .oi[data-glyph=align-left]:before { 93 | content: '\e005'; 94 | } 95 | 96 | .oi[data-glyph=align-right]:before { 97 | content: '\e006'; 98 | } 99 | 100 | .oi[data-glyph=aperture]:before { 101 | content: '\e007'; 102 | } 103 | 104 | .oi[data-glyph=arrow-bottom]:before { 105 | content: '\e008'; 106 | } 107 | 108 | .oi[data-glyph=arrow-circle-bottom]:before { 109 | content: '\e009'; 110 | } 111 | 112 | .oi[data-glyph=arrow-circle-left]:before { 113 | content: '\e00a'; 114 | } 115 | 116 | .oi[data-glyph=arrow-circle-right]:before { 117 | content: '\e00b'; 118 | } 119 | 120 | .oi[data-glyph=arrow-circle-top]:before { 121 | content: '\e00c'; 122 | } 123 | 124 | .oi[data-glyph=arrow-left]:before { 125 | content: '\e00d'; 126 | } 127 | 128 | .oi[data-glyph=arrow-right]:before { 129 | content: '\e00e'; 130 | } 131 | 132 | .oi[data-glyph=arrow-thick-bottom]:before { 133 | content: '\e00f'; 134 | } 135 | 136 | .oi[data-glyph=arrow-thick-left]:before { 137 | content: '\e010'; 138 | } 139 | 140 | .oi[data-glyph=arrow-thick-right]:before { 141 | content: '\e011'; 142 | } 143 | 144 | .oi[data-glyph=arrow-thick-top]:before { 145 | content: '\e012'; 146 | } 147 | 148 | .oi[data-glyph=arrow-top]:before { 149 | content: '\e013'; 150 | } 151 | 152 | .oi[data-glyph=audio-spectrum]:before { 153 | content: '\e014'; 154 | } 155 | 156 | .oi[data-glyph=audio]:before { 157 | content: '\e015'; 158 | } 159 | 160 | .oi[data-glyph=badge]:before { 161 | content: '\e016'; 162 | } 163 | 164 | .oi[data-glyph=ban]:before { 165 | content: '\e017'; 166 | } 167 | 168 | .oi[data-glyph=bar-chart]:before { 169 | content: '\e018'; 170 | } 171 | 172 | .oi[data-glyph=basket]:before { 173 | content: '\e019'; 174 | } 175 | 176 | .oi[data-glyph=battery-empty]:before { 177 | content: '\e01a'; 178 | } 179 | 180 | .oi[data-glyph=battery-full]:before { 181 | content: '\e01b'; 182 | } 183 | 184 | .oi[data-glyph=beaker]:before { 185 | content: '\e01c'; 186 | } 187 | 188 | .oi[data-glyph=bell]:before { 189 | content: '\e01d'; 190 | } 191 | 192 | .oi[data-glyph=bluetooth]:before { 193 | content: '\e01e'; 194 | } 195 | 196 | .oi[data-glyph=bold]:before { 197 | content: '\e01f'; 198 | } 199 | 200 | .oi[data-glyph=bolt]:before { 201 | content: '\e020'; 202 | } 203 | 204 | .oi[data-glyph=book]:before { 205 | content: '\e021'; 206 | } 207 | 208 | .oi[data-glyph=bookmark]:before { 209 | content: '\e022'; 210 | } 211 | 212 | .oi[data-glyph=box]:before { 213 | content: '\e023'; 214 | } 215 | 216 | .oi[data-glyph=briefcase]:before { 217 | content: '\e024'; 218 | } 219 | 220 | .oi[data-glyph=british-pound]:before { 221 | content: '\e025'; 222 | } 223 | 224 | .oi[data-glyph=browser]:before { 225 | content: '\e026'; 226 | } 227 | 228 | .oi[data-glyph=brush]:before { 229 | content: '\e027'; 230 | } 231 | 232 | .oi[data-glyph=bug]:before { 233 | content: '\e028'; 234 | } 235 | 236 | .oi[data-glyph=bullhorn]:before { 237 | content: '\e029'; 238 | } 239 | 240 | .oi[data-glyph=calculator]:before { 241 | content: '\e02a'; 242 | } 243 | 244 | .oi[data-glyph=calendar]:before { 245 | content: '\e02b'; 246 | } 247 | 248 | .oi[data-glyph=camera-slr]:before { 249 | content: '\e02c'; 250 | } 251 | 252 | .oi[data-glyph=caret-bottom]:before { 253 | content: '\e02d'; 254 | } 255 | 256 | .oi[data-glyph=caret-left]:before { 257 | content: '\e02e'; 258 | } 259 | 260 | .oi[data-glyph=caret-right]:before { 261 | content: '\e02f'; 262 | } 263 | 264 | .oi[data-glyph=caret-top]:before { 265 | content: '\e030'; 266 | } 267 | 268 | .oi[data-glyph=cart]:before { 269 | content: '\e031'; 270 | } 271 | 272 | .oi[data-glyph=chat]:before { 273 | content: '\e032'; 274 | } 275 | 276 | .oi[data-glyph=check]:before { 277 | content: '\e033'; 278 | } 279 | 280 | .oi[data-glyph=chevron-bottom]:before { 281 | content: '\e034'; 282 | } 283 | 284 | .oi[data-glyph=chevron-left]:before { 285 | content: '\e035'; 286 | } 287 | 288 | .oi[data-glyph=chevron-right]:before { 289 | content: '\e036'; 290 | } 291 | 292 | .oi[data-glyph=chevron-top]:before { 293 | content: '\e037'; 294 | } 295 | 296 | .oi[data-glyph=circle-check]:before { 297 | content: '\e038'; 298 | } 299 | 300 | .oi[data-glyph=circle-x]:before { 301 | content: '\e039'; 302 | } 303 | 304 | .oi[data-glyph=clipboard]:before { 305 | content: '\e03a'; 306 | } 307 | 308 | .oi[data-glyph=clock]:before { 309 | content: '\e03b'; 310 | } 311 | 312 | .oi[data-glyph=cloud-download]:before { 313 | content: '\e03c'; 314 | } 315 | 316 | .oi[data-glyph=cloud-upload]:before { 317 | content: '\e03d'; 318 | } 319 | 320 | .oi[data-glyph=cloud]:before { 321 | content: '\e03e'; 322 | } 323 | 324 | .oi[data-glyph=cloudy]:before { 325 | content: '\e03f'; 326 | } 327 | 328 | .oi[data-glyph=code]:before { 329 | content: '\e040'; 330 | } 331 | 332 | .oi[data-glyph=cog]:before { 333 | content: '\e041'; 334 | } 335 | 336 | .oi[data-glyph=collapse-down]:before { 337 | content: '\e042'; 338 | } 339 | 340 | .oi[data-glyph=collapse-left]:before { 341 | content: '\e043'; 342 | } 343 | 344 | .oi[data-glyph=collapse-right]:before { 345 | content: '\e044'; 346 | } 347 | 348 | .oi[data-glyph=collapse-up]:before { 349 | content: '\e045'; 350 | } 351 | 352 | .oi[data-glyph=command]:before { 353 | content: '\e046'; 354 | } 355 | 356 | .oi[data-glyph=comment-square]:before { 357 | content: '\e047'; 358 | } 359 | 360 | .oi[data-glyph=compass]:before { 361 | content: '\e048'; 362 | } 363 | 364 | .oi[data-glyph=contrast]:before { 365 | content: '\e049'; 366 | } 367 | 368 | .oi[data-glyph=copywriting]:before { 369 | content: '\e04a'; 370 | } 371 | 372 | .oi[data-glyph=credit-card]:before { 373 | content: '\e04b'; 374 | } 375 | 376 | .oi[data-glyph=crop]:before { 377 | content: '\e04c'; 378 | } 379 | 380 | .oi[data-glyph=dashboard]:before { 381 | content: '\e04d'; 382 | } 383 | 384 | .oi[data-glyph=data-transfer-download]:before { 385 | content: '\e04e'; 386 | } 387 | 388 | .oi[data-glyph=data-transfer-upload]:before { 389 | content: '\e04f'; 390 | } 391 | 392 | .oi[data-glyph=delete]:before { 393 | content: '\e050'; 394 | } 395 | 396 | .oi[data-glyph=dial]:before { 397 | content: '\e051'; 398 | } 399 | 400 | .oi[data-glyph=document]:before { 401 | content: '\e052'; 402 | } 403 | 404 | .oi[data-glyph=dollar]:before { 405 | content: '\e053'; 406 | } 407 | 408 | .oi[data-glyph=double-quote-sans-left]:before { 409 | content: '\e054'; 410 | } 411 | 412 | .oi[data-glyph=double-quote-sans-right]:before { 413 | content: '\e055'; 414 | } 415 | 416 | .oi[data-glyph=double-quote-serif-left]:before { 417 | content: '\e056'; 418 | } 419 | 420 | .oi[data-glyph=double-quote-serif-right]:before { 421 | content: '\e057'; 422 | } 423 | 424 | .oi[data-glyph=droplet]:before { 425 | content: '\e058'; 426 | } 427 | 428 | .oi[data-glyph=eject]:before { 429 | content: '\e059'; 430 | } 431 | 432 | .oi[data-glyph=elevator]:before { 433 | content: '\e05a'; 434 | } 435 | 436 | .oi[data-glyph=ellipses]:before { 437 | content: '\e05b'; 438 | } 439 | 440 | .oi[data-glyph=envelope-closed]:before { 441 | content: '\e05c'; 442 | } 443 | 444 | .oi[data-glyph=envelope-open]:before { 445 | content: '\e05d'; 446 | } 447 | 448 | .oi[data-glyph=euro]:before { 449 | content: '\e05e'; 450 | } 451 | 452 | .oi[data-glyph=excerpt]:before { 453 | content: '\e05f'; 454 | } 455 | 456 | .oi[data-glyph=expand-down]:before { 457 | content: '\e060'; 458 | } 459 | 460 | .oi[data-glyph=expand-left]:before { 461 | content: '\e061'; 462 | } 463 | 464 | .oi[data-glyph=expand-right]:before { 465 | content: '\e062'; 466 | } 467 | 468 | .oi[data-glyph=expand-up]:before { 469 | content: '\e063'; 470 | } 471 | 472 | .oi[data-glyph=external-link]:before { 473 | content: '\e064'; 474 | } 475 | 476 | .oi[data-glyph=eye]:before { 477 | content: '\e065'; 478 | } 479 | 480 | .oi[data-glyph=eyedropper]:before { 481 | content: '\e066'; 482 | } 483 | 484 | .oi[data-glyph=file]:before { 485 | content: '\e067'; 486 | } 487 | 488 | .oi[data-glyph=fire]:before { 489 | content: '\e068'; 490 | } 491 | 492 | .oi[data-glyph=flag]:before { 493 | content: '\e069'; 494 | } 495 | 496 | .oi[data-glyph=flash]:before { 497 | content: '\e06a'; 498 | } 499 | 500 | .oi[data-glyph=folder]:before { 501 | content: '\e06b'; 502 | } 503 | 504 | .oi[data-glyph=fork]:before { 505 | content: '\e06c'; 506 | } 507 | 508 | .oi[data-glyph=fullscreen-enter]:before { 509 | content: '\e06d'; 510 | } 511 | 512 | .oi[data-glyph=fullscreen-exit]:before { 513 | content: '\e06e'; 514 | } 515 | 516 | .oi[data-glyph=globe]:before { 517 | content: '\e06f'; 518 | } 519 | 520 | .oi[data-glyph=graph]:before { 521 | content: '\e070'; 522 | } 523 | 524 | .oi[data-glyph=grid-four-up]:before { 525 | content: '\e071'; 526 | } 527 | 528 | .oi[data-glyph=grid-three-up]:before { 529 | content: '\e072'; 530 | } 531 | 532 | .oi[data-glyph=grid-two-up]:before { 533 | content: '\e073'; 534 | } 535 | 536 | .oi[data-glyph=hard-drive]:before { 537 | content: '\e074'; 538 | } 539 | 540 | .oi[data-glyph=header]:before { 541 | content: '\e075'; 542 | } 543 | 544 | .oi[data-glyph=headphones]:before { 545 | content: '\e076'; 546 | } 547 | 548 | .oi[data-glyph=heart]:before { 549 | content: '\e077'; 550 | } 551 | 552 | .oi[data-glyph=home]:before { 553 | content: '\e078'; 554 | } 555 | 556 | .oi[data-glyph=image]:before { 557 | content: '\e079'; 558 | } 559 | 560 | .oi[data-glyph=inbox]:before { 561 | content: '\e07a'; 562 | } 563 | 564 | .oi[data-glyph=infinity]:before { 565 | content: '\e07b'; 566 | } 567 | 568 | .oi[data-glyph=info]:before { 569 | content: '\e07c'; 570 | } 571 | 572 | .oi[data-glyph=italic]:before { 573 | content: '\e07d'; 574 | } 575 | 576 | .oi[data-glyph=justify-center]:before { 577 | content: '\e07e'; 578 | } 579 | 580 | .oi[data-glyph=justify-left]:before { 581 | content: '\e07f'; 582 | } 583 | 584 | .oi[data-glyph=justify-right]:before { 585 | content: '\e080'; 586 | } 587 | 588 | .oi[data-glyph=key]:before { 589 | content: '\e081'; 590 | } 591 | 592 | .oi[data-glyph=laptop]:before { 593 | content: '\e082'; 594 | } 595 | 596 | .oi[data-glyph=layers]:before { 597 | content: '\e083'; 598 | } 599 | 600 | .oi[data-glyph=lightbulb]:before { 601 | content: '\e084'; 602 | } 603 | 604 | .oi[data-glyph=link-broken]:before { 605 | content: '\e085'; 606 | } 607 | 608 | .oi[data-glyph=link-intact]:before { 609 | content: '\e086'; 610 | } 611 | 612 | .oi[data-glyph=list-rich]:before { 613 | content: '\e087'; 614 | } 615 | 616 | .oi[data-glyph=list]:before { 617 | content: '\e088'; 618 | } 619 | 620 | .oi[data-glyph=location]:before { 621 | content: '\e089'; 622 | } 623 | 624 | .oi[data-glyph=lock-locked]:before { 625 | content: '\e08a'; 626 | } 627 | 628 | .oi[data-glyph=lock-unlocked]:before { 629 | content: '\e08b'; 630 | } 631 | 632 | .oi[data-glyph=loop-circular]:before { 633 | content: '\e08c'; 634 | } 635 | 636 | .oi[data-glyph=loop-square]:before { 637 | content: '\e08d'; 638 | } 639 | 640 | .oi[data-glyph=loop]:before { 641 | content: '\e08e'; 642 | } 643 | 644 | .oi[data-glyph=magnifying-glass]:before { 645 | content: '\e08f'; 646 | } 647 | 648 | .oi[data-glyph=map-marker]:before { 649 | content: '\e090'; 650 | } 651 | 652 | .oi[data-glyph=map]:before { 653 | content: '\e091'; 654 | } 655 | 656 | .oi[data-glyph=media-pause]:before { 657 | content: '\e092'; 658 | } 659 | 660 | .oi[data-glyph=media-play]:before { 661 | content: '\e093'; 662 | } 663 | 664 | .oi[data-glyph=media-record]:before { 665 | content: '\e094'; 666 | } 667 | 668 | .oi[data-glyph=media-skip-backward]:before { 669 | content: '\e095'; 670 | } 671 | 672 | .oi[data-glyph=media-skip-forward]:before { 673 | content: '\e096'; 674 | } 675 | 676 | .oi[data-glyph=media-step-backward]:before { 677 | content: '\e097'; 678 | } 679 | 680 | .oi[data-glyph=media-step-forward]:before { 681 | content: '\e098'; 682 | } 683 | 684 | .oi[data-glyph=media-stop]:before { 685 | content: '\e099'; 686 | } 687 | 688 | .oi[data-glyph=medical-cross]:before { 689 | content: '\e09a'; 690 | } 691 | 692 | .oi[data-glyph=menu]:before { 693 | content: '\e09b'; 694 | } 695 | 696 | .oi[data-glyph=microphone]:before { 697 | content: '\e09c'; 698 | } 699 | 700 | .oi[data-glyph=minus]:before { 701 | content: '\e09d'; 702 | } 703 | 704 | .oi[data-glyph=monitor]:before { 705 | content: '\e09e'; 706 | } 707 | 708 | .oi[data-glyph=moon]:before { 709 | content: '\e09f'; 710 | } 711 | 712 | .oi[data-glyph=move]:before { 713 | content: '\e0a0'; 714 | } 715 | 716 | .oi[data-glyph=musical-note]:before { 717 | content: '\e0a1'; 718 | } 719 | 720 | .oi[data-glyph=paperclip]:before { 721 | content: '\e0a2'; 722 | } 723 | 724 | .oi[data-glyph=pencil]:before { 725 | content: '\e0a3'; 726 | } 727 | 728 | .oi[data-glyph=people]:before { 729 | content: '\e0a4'; 730 | } 731 | 732 | .oi[data-glyph=person]:before { 733 | content: '\e0a5'; 734 | } 735 | 736 | .oi[data-glyph=phone]:before { 737 | content: '\e0a6'; 738 | } 739 | 740 | .oi[data-glyph=pie-chart]:before { 741 | content: '\e0a7'; 742 | } 743 | 744 | .oi[data-glyph=pin]:before { 745 | content: '\e0a8'; 746 | } 747 | 748 | .oi[data-glyph=play-circle]:before { 749 | content: '\e0a9'; 750 | } 751 | 752 | .oi[data-glyph=plus]:before { 753 | content: '\e0aa'; 754 | } 755 | 756 | .oi[data-glyph=power-standby]:before { 757 | content: '\e0ab'; 758 | } 759 | 760 | .oi[data-glyph=print]:before { 761 | content: '\e0ac'; 762 | } 763 | 764 | .oi[data-glyph=project]:before { 765 | content: '\e0ad'; 766 | } 767 | 768 | .oi[data-glyph=pulse]:before { 769 | content: '\e0ae'; 770 | } 771 | 772 | .oi[data-glyph=puzzle-piece]:before { 773 | content: '\e0af'; 774 | } 775 | 776 | .oi[data-glyph=question-mark]:before { 777 | content: '\e0b0'; 778 | } 779 | 780 | .oi[data-glyph=rain]:before { 781 | content: '\e0b1'; 782 | } 783 | 784 | .oi[data-glyph=random]:before { 785 | content: '\e0b2'; 786 | } 787 | 788 | .oi[data-glyph=reload]:before { 789 | content: '\e0b3'; 790 | } 791 | 792 | .oi[data-glyph=resize-both]:before { 793 | content: '\e0b4'; 794 | } 795 | 796 | .oi[data-glyph=resize-height]:before { 797 | content: '\e0b5'; 798 | } 799 | 800 | .oi[data-glyph=resize-width]:before { 801 | content: '\e0b6'; 802 | } 803 | 804 | .oi[data-glyph=rss-alt]:before { 805 | content: '\e0b7'; 806 | } 807 | 808 | .oi[data-glyph=rss]:before { 809 | content: '\e0b8'; 810 | } 811 | 812 | .oi[data-glyph=script]:before { 813 | content: '\e0b9'; 814 | } 815 | 816 | .oi[data-glyph=share-boxed]:before { 817 | content: '\e0ba'; 818 | } 819 | 820 | .oi[data-glyph=share]:before { 821 | content: '\e0bb'; 822 | } 823 | 824 | .oi[data-glyph=shield]:before { 825 | content: '\e0bc'; 826 | } 827 | 828 | .oi[data-glyph=signal]:before { 829 | content: '\e0bd'; 830 | } 831 | 832 | .oi[data-glyph=signpost]:before { 833 | content: '\e0be'; 834 | } 835 | 836 | .oi[data-glyph=sort-ascending]:before { 837 | content: '\e0bf'; 838 | } 839 | 840 | .oi[data-glyph=sort-descending]:before { 841 | content: '\e0c0'; 842 | } 843 | 844 | .oi[data-glyph=spreadsheet]:before { 845 | content: '\e0c1'; 846 | } 847 | 848 | .oi[data-glyph=star]:before { 849 | content: '\e0c2'; 850 | } 851 | 852 | .oi[data-glyph=sun]:before { 853 | content: '\e0c3'; 854 | } 855 | 856 | .oi[data-glyph=tablet]:before { 857 | content: '\e0c4'; 858 | } 859 | 860 | .oi[data-glyph=tag]:before { 861 | content: '\e0c5'; 862 | } 863 | 864 | .oi[data-glyph=tags]:before { 865 | content: '\e0c6'; 866 | } 867 | 868 | .oi[data-glyph=target]:before { 869 | content: '\e0c7'; 870 | } 871 | 872 | .oi[data-glyph=task]:before { 873 | content: '\e0c8'; 874 | } 875 | 876 | .oi[data-glyph=terminal]:before { 877 | content: '\e0c9'; 878 | } 879 | 880 | .oi[data-glyph=text]:before { 881 | content: '\e0ca'; 882 | } 883 | 884 | .oi[data-glyph=thumb-down]:before { 885 | content: '\e0cb'; 886 | } 887 | 888 | .oi[data-glyph=thumb-up]:before { 889 | content: '\e0cc'; 890 | } 891 | 892 | .oi[data-glyph=timer]:before { 893 | content: '\e0cd'; 894 | } 895 | 896 | .oi[data-glyph=transfer]:before { 897 | content: '\e0ce'; 898 | } 899 | 900 | .oi[data-glyph=trash]:before { 901 | content: '\e0cf'; 902 | } 903 | 904 | .oi[data-glyph=underline]:before { 905 | content: '\e0d0'; 906 | } 907 | 908 | .oi[data-glyph=vertical-align-bottom]:before { 909 | content: '\e0d1'; 910 | } 911 | 912 | .oi[data-glyph=vertical-align-center]:before { 913 | content: '\e0d2'; 914 | } 915 | 916 | .oi[data-glyph=vertical-align-top]:before { 917 | content: '\e0d3'; 918 | } 919 | 920 | .oi[data-glyph=video]:before { 921 | content: '\e0d4'; 922 | } 923 | 924 | .oi[data-glyph=volume-high]:before { 925 | content: '\e0d5'; 926 | } 927 | 928 | .oi[data-glyph=volume-low]:before { 929 | content: '\e0d6'; 930 | } 931 | 932 | .oi[data-glyph=volume-off]:before { 933 | content: '\e0d7'; 934 | } 935 | 936 | .oi[data-glyph=warning]:before { 937 | content: '\e0d8'; 938 | } 939 | 940 | .oi[data-glyph=wifi]:before { 941 | content: '\e0d9'; 942 | } 943 | 944 | .oi[data-glyph=wrench]:before { 945 | content: '\e0da'; 946 | } 947 | 948 | .oi[data-glyph=x]:before { 949 | content: '\e0db'; 950 | } 951 | 952 | .oi[data-glyph=yen]:before { 953 | content: '\e0dc'; 954 | } 955 | 956 | .oi[data-glyph=zoom-in]:before { 957 | content: '\e0dd'; 958 | } 959 | 960 | .oi[data-glyph=zoom-out]:before { 961 | content: '\e0de'; 962 | } 963 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi[data-glyph].oi-text-replace{font-size:0;line-height:0}.oi[data-glyph].oi-text-replace:before{width:1em;text-align:center}.oi[data-glyph]:before{font-family:Icons;display:inline-block;speak:none;line-height:1;vertical-align:baseline;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi[data-glyph]:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi[data-glyph].oi-align-left:before{text-align:left}.oi[data-glyph].oi-align-right:before{text-align:right}.oi[data-glyph].oi-align-center:before{text-align:center}.oi[data-glyph].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi[data-glyph].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi[data-glyph].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi[data-glyph=account-login]:before{content:'\e000'}.oi[data-glyph=account-logout]:before{content:'\e001'}.oi[data-glyph=action-redo]:before{content:'\e002'}.oi[data-glyph=action-undo]:before{content:'\e003'}.oi[data-glyph=align-center]:before{content:'\e004'}.oi[data-glyph=align-left]:before{content:'\e005'}.oi[data-glyph=align-right]:before{content:'\e006'}.oi[data-glyph=aperture]:before{content:'\e007'}.oi[data-glyph=arrow-bottom]:before{content:'\e008'}.oi[data-glyph=arrow-circle-bottom]:before{content:'\e009'}.oi[data-glyph=arrow-circle-left]:before{content:'\e00a'}.oi[data-glyph=arrow-circle-right]:before{content:'\e00b'}.oi[data-glyph=arrow-circle-top]:before{content:'\e00c'}.oi[data-glyph=arrow-left]:before{content:'\e00d'}.oi[data-glyph=arrow-right]:before{content:'\e00e'}.oi[data-glyph=arrow-thick-bottom]:before{content:'\e00f'}.oi[data-glyph=arrow-thick-left]:before{content:'\e010'}.oi[data-glyph=arrow-thick-right]:before{content:'\e011'}.oi[data-glyph=arrow-thick-top]:before{content:'\e012'}.oi[data-glyph=arrow-top]:before{content:'\e013'}.oi[data-glyph=audio-spectrum]:before{content:'\e014'}.oi[data-glyph=audio]:before{content:'\e015'}.oi[data-glyph=badge]:before{content:'\e016'}.oi[data-glyph=ban]:before{content:'\e017'}.oi[data-glyph=bar-chart]:before{content:'\e018'}.oi[data-glyph=basket]:before{content:'\e019'}.oi[data-glyph=battery-empty]:before{content:'\e01a'}.oi[data-glyph=battery-full]:before{content:'\e01b'}.oi[data-glyph=beaker]:before{content:'\e01c'}.oi[data-glyph=bell]:before{content:'\e01d'}.oi[data-glyph=bluetooth]:before{content:'\e01e'}.oi[data-glyph=bold]:before{content:'\e01f'}.oi[data-glyph=bolt]:before{content:'\e020'}.oi[data-glyph=book]:before{content:'\e021'}.oi[data-glyph=bookmark]:before{content:'\e022'}.oi[data-glyph=box]:before{content:'\e023'}.oi[data-glyph=briefcase]:before{content:'\e024'}.oi[data-glyph=british-pound]:before{content:'\e025'}.oi[data-glyph=browser]:before{content:'\e026'}.oi[data-glyph=brush]:before{content:'\e027'}.oi[data-glyph=bug]:before{content:'\e028'}.oi[data-glyph=bullhorn]:before{content:'\e029'}.oi[data-glyph=calculator]:before{content:'\e02a'}.oi[data-glyph=calendar]:before{content:'\e02b'}.oi[data-glyph=camera-slr]:before{content:'\e02c'}.oi[data-glyph=caret-bottom]:before{content:'\e02d'}.oi[data-glyph=caret-left]:before{content:'\e02e'}.oi[data-glyph=caret-right]:before{content:'\e02f'}.oi[data-glyph=caret-top]:before{content:'\e030'}.oi[data-glyph=cart]:before{content:'\e031'}.oi[data-glyph=chat]:before{content:'\e032'}.oi[data-glyph=check]:before{content:'\e033'}.oi[data-glyph=chevron-bottom]:before{content:'\e034'}.oi[data-glyph=chevron-left]:before{content:'\e035'}.oi[data-glyph=chevron-right]:before{content:'\e036'}.oi[data-glyph=chevron-top]:before{content:'\e037'}.oi[data-glyph=circle-check]:before{content:'\e038'}.oi[data-glyph=circle-x]:before{content:'\e039'}.oi[data-glyph=clipboard]:before{content:'\e03a'}.oi[data-glyph=clock]:before{content:'\e03b'}.oi[data-glyph=cloud-download]:before{content:'\e03c'}.oi[data-glyph=cloud-upload]:before{content:'\e03d'}.oi[data-glyph=cloud]:before{content:'\e03e'}.oi[data-glyph=cloudy]:before{content:'\e03f'}.oi[data-glyph=code]:before{content:'\e040'}.oi[data-glyph=cog]:before{content:'\e041'}.oi[data-glyph=collapse-down]:before{content:'\e042'}.oi[data-glyph=collapse-left]:before{content:'\e043'}.oi[data-glyph=collapse-right]:before{content:'\e044'}.oi[data-glyph=collapse-up]:before{content:'\e045'}.oi[data-glyph=command]:before{content:'\e046'}.oi[data-glyph=comment-square]:before{content:'\e047'}.oi[data-glyph=compass]:before{content:'\e048'}.oi[data-glyph=contrast]:before{content:'\e049'}.oi[data-glyph=copywriting]:before{content:'\e04a'}.oi[data-glyph=credit-card]:before{content:'\e04b'}.oi[data-glyph=crop]:before{content:'\e04c'}.oi[data-glyph=dashboard]:before{content:'\e04d'}.oi[data-glyph=data-transfer-download]:before{content:'\e04e'}.oi[data-glyph=data-transfer-upload]:before{content:'\e04f'}.oi[data-glyph=delete]:before{content:'\e050'}.oi[data-glyph=dial]:before{content:'\e051'}.oi[data-glyph=document]:before{content:'\e052'}.oi[data-glyph=dollar]:before{content:'\e053'}.oi[data-glyph=double-quote-sans-left]:before{content:'\e054'}.oi[data-glyph=double-quote-sans-right]:before{content:'\e055'}.oi[data-glyph=double-quote-serif-left]:before{content:'\e056'}.oi[data-glyph=double-quote-serif-right]:before{content:'\e057'}.oi[data-glyph=droplet]:before{content:'\e058'}.oi[data-glyph=eject]:before{content:'\e059'}.oi[data-glyph=elevator]:before{content:'\e05a'}.oi[data-glyph=ellipses]:before{content:'\e05b'}.oi[data-glyph=envelope-closed]:before{content:'\e05c'}.oi[data-glyph=envelope-open]:before{content:'\e05d'}.oi[data-glyph=euro]:before{content:'\e05e'}.oi[data-glyph=excerpt]:before{content:'\e05f'}.oi[data-glyph=expand-down]:before{content:'\e060'}.oi[data-glyph=expand-left]:before{content:'\e061'}.oi[data-glyph=expand-right]:before{content:'\e062'}.oi[data-glyph=expand-up]:before{content:'\e063'}.oi[data-glyph=external-link]:before{content:'\e064'}.oi[data-glyph=eye]:before{content:'\e065'}.oi[data-glyph=eyedropper]:before{content:'\e066'}.oi[data-glyph=file]:before{content:'\e067'}.oi[data-glyph=fire]:before{content:'\e068'}.oi[data-glyph=flag]:before{content:'\e069'}.oi[data-glyph=flash]:before{content:'\e06a'}.oi[data-glyph=folder]:before{content:'\e06b'}.oi[data-glyph=fork]:before{content:'\e06c'}.oi[data-glyph=fullscreen-enter]:before{content:'\e06d'}.oi[data-glyph=fullscreen-exit]:before{content:'\e06e'}.oi[data-glyph=globe]:before{content:'\e06f'}.oi[data-glyph=graph]:before{content:'\e070'}.oi[data-glyph=grid-four-up]:before{content:'\e071'}.oi[data-glyph=grid-three-up]:before{content:'\e072'}.oi[data-glyph=grid-two-up]:before{content:'\e073'}.oi[data-glyph=hard-drive]:before{content:'\e074'}.oi[data-glyph=header]:before{content:'\e075'}.oi[data-glyph=headphones]:before{content:'\e076'}.oi[data-glyph=heart]:before{content:'\e077'}.oi[data-glyph=home]:before{content:'\e078'}.oi[data-glyph=image]:before{content:'\e079'}.oi[data-glyph=inbox]:before{content:'\e07a'}.oi[data-glyph=infinity]:before{content:'\e07b'}.oi[data-glyph=info]:before{content:'\e07c'}.oi[data-glyph=italic]:before{content:'\e07d'}.oi[data-glyph=justify-center]:before{content:'\e07e'}.oi[data-glyph=justify-left]:before{content:'\e07f'}.oi[data-glyph=justify-right]:before{content:'\e080'}.oi[data-glyph=key]:before{content:'\e081'}.oi[data-glyph=laptop]:before{content:'\e082'}.oi[data-glyph=layers]:before{content:'\e083'}.oi[data-glyph=lightbulb]:before{content:'\e084'}.oi[data-glyph=link-broken]:before{content:'\e085'}.oi[data-glyph=link-intact]:before{content:'\e086'}.oi[data-glyph=list-rich]:before{content:'\e087'}.oi[data-glyph=list]:before{content:'\e088'}.oi[data-glyph=location]:before{content:'\e089'}.oi[data-glyph=lock-locked]:before{content:'\e08a'}.oi[data-glyph=lock-unlocked]:before{content:'\e08b'}.oi[data-glyph=loop-circular]:before{content:'\e08c'}.oi[data-glyph=loop-square]:before{content:'\e08d'}.oi[data-glyph=loop]:before{content:'\e08e'}.oi[data-glyph=magnifying-glass]:before{content:'\e08f'}.oi[data-glyph=map-marker]:before{content:'\e090'}.oi[data-glyph=map]:before{content:'\e091'}.oi[data-glyph=media-pause]:before{content:'\e092'}.oi[data-glyph=media-play]:before{content:'\e093'}.oi[data-glyph=media-record]:before{content:'\e094'}.oi[data-glyph=media-skip-backward]:before{content:'\e095'}.oi[data-glyph=media-skip-forward]:before{content:'\e096'}.oi[data-glyph=media-step-backward]:before{content:'\e097'}.oi[data-glyph=media-step-forward]:before{content:'\e098'}.oi[data-glyph=media-stop]:before{content:'\e099'}.oi[data-glyph=medical-cross]:before{content:'\e09a'}.oi[data-glyph=menu]:before{content:'\e09b'}.oi[data-glyph=microphone]:before{content:'\e09c'}.oi[data-glyph=minus]:before{content:'\e09d'}.oi[data-glyph=monitor]:before{content:'\e09e'}.oi[data-glyph=moon]:before{content:'\e09f'}.oi[data-glyph=move]:before{content:'\e0a0'}.oi[data-glyph=musical-note]:before{content:'\e0a1'}.oi[data-glyph=paperclip]:before{content:'\e0a2'}.oi[data-glyph=pencil]:before{content:'\e0a3'}.oi[data-glyph=people]:before{content:'\e0a4'}.oi[data-glyph=person]:before{content:'\e0a5'}.oi[data-glyph=phone]:before{content:'\e0a6'}.oi[data-glyph=pie-chart]:before{content:'\e0a7'}.oi[data-glyph=pin]:before{content:'\e0a8'}.oi[data-glyph=play-circle]:before{content:'\e0a9'}.oi[data-glyph=plus]:before{content:'\e0aa'}.oi[data-glyph=power-standby]:before{content:'\e0ab'}.oi[data-glyph=print]:before{content:'\e0ac'}.oi[data-glyph=project]:before{content:'\e0ad'}.oi[data-glyph=pulse]:before{content:'\e0ae'}.oi[data-glyph=puzzle-piece]:before{content:'\e0af'}.oi[data-glyph=question-mark]:before{content:'\e0b0'}.oi[data-glyph=rain]:before{content:'\e0b1'}.oi[data-glyph=random]:before{content:'\e0b2'}.oi[data-glyph=reload]:before{content:'\e0b3'}.oi[data-glyph=resize-both]:before{content:'\e0b4'}.oi[data-glyph=resize-height]:before{content:'\e0b5'}.oi[data-glyph=resize-width]:before{content:'\e0b6'}.oi[data-glyph=rss-alt]:before{content:'\e0b7'}.oi[data-glyph=rss]:before{content:'\e0b8'}.oi[data-glyph=script]:before{content:'\e0b9'}.oi[data-glyph=share-boxed]:before{content:'\e0ba'}.oi[data-glyph=share]:before{content:'\e0bb'}.oi[data-glyph=shield]:before{content:'\e0bc'}.oi[data-glyph=signal]:before{content:'\e0bd'}.oi[data-glyph=signpost]:before{content:'\e0be'}.oi[data-glyph=sort-ascending]:before{content:'\e0bf'}.oi[data-glyph=sort-descending]:before{content:'\e0c0'}.oi[data-glyph=spreadsheet]:before{content:'\e0c1'}.oi[data-glyph=star]:before{content:'\e0c2'}.oi[data-glyph=sun]:before{content:'\e0c3'}.oi[data-glyph=tablet]:before{content:'\e0c4'}.oi[data-glyph=tag]:before{content:'\e0c5'}.oi[data-glyph=tags]:before{content:'\e0c6'}.oi[data-glyph=target]:before{content:'\e0c7'}.oi[data-glyph=task]:before{content:'\e0c8'}.oi[data-glyph=terminal]:before{content:'\e0c9'}.oi[data-glyph=text]:before{content:'\e0ca'}.oi[data-glyph=thumb-down]:before{content:'\e0cb'}.oi[data-glyph=thumb-up]:before{content:'\e0cc'}.oi[data-glyph=timer]:before{content:'\e0cd'}.oi[data-glyph=transfer]:before{content:'\e0ce'}.oi[data-glyph=trash]:before{content:'\e0cf'}.oi[data-glyph=underline]:before{content:'\e0d0'}.oi[data-glyph=vertical-align-bottom]:before{content:'\e0d1'}.oi[data-glyph=vertical-align-center]:before{content:'\e0d2'}.oi[data-glyph=vertical-align-top]:before{content:'\e0d3'}.oi[data-glyph=video]:before{content:'\e0d4'}.oi[data-glyph=volume-high]:before{content:'\e0d5'}.oi[data-glyph=volume-low]:before{content:'\e0d6'}.oi[data-glyph=volume-off]:before{content:'\e0d7'}.oi[data-glyph=warning]:before{content:'\e0d8'}.oi[data-glyph=wifi]:before{content:'\e0d9'}.oi[data-glyph=wrench]:before{content:'\e0da'}.oi[data-glyph=x]:before{content:'\e0db'}.oi[data-glyph=yen]:before{content:'\e0dc'}.oi[data-glyph=zoom-in]:before{content:'\e0dd'}.oi[data-glyph=zoom-out]:before{content:'\e0de'} -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic.scss: -------------------------------------------------------------------------------- 1 | $iconic-font-path: '../fonts/' !default; 2 | 3 | @font-face { 4 | font-family: 'Icons'; 5 | src: url('#{$iconic-font-path}open-iconic.eot'); 6 | src: url('#{$iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$iconic-font-path}open-iconic.woff') format('woff'), url('#{$iconic-font-path}open-iconic.ttf') format('truetype'), url('#{$iconic-font-path}open-iconic.otf') format('opentype'), url('#{$iconic-font-path}open-iconic.svg#iconic-sm') format('svg'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | .oi[data-glyph].oi-text-replace { 12 | font-size: 0; 13 | line-height: 0; 14 | } 15 | 16 | .oi[data-glyph].oi-text-replace:before { 17 | width: 1em; 18 | text-align: center; 19 | } 20 | 21 | .oi[data-glyph] { 22 | &:before { 23 | position: relative; 24 | top: 1px; 25 | font-family: 'Icons'; 26 | display: inline-block; 27 | speak: none; 28 | line-height: 1; 29 | vertical-align: baseline; 30 | font-weight: normal; 31 | font-style: normal; 32 | -webkit-font-smoothing: antialiased; 33 | -moz-osx-font-smoothing: grayscale; 34 | } 35 | 36 | &:empty:before { 37 | width: 1em; 38 | text-align: center; 39 | box-sizing: content-box; 40 | } 41 | 42 | &.oi-align-left:before { 43 | text-align: left; 44 | } 45 | &.oi-align-right:before { 46 | text-align: right; 47 | } 48 | &.oi-align-center:before { 49 | text-align: center; 50 | } 51 | 52 | &.oi-flip-horizontal:before { 53 | -webkit-transform: scale(-1, 1); 54 | -ms-transform: scale(-1, 1); 55 | transform: scale(-1, 1); 56 | } 57 | 58 | &.oi-flip-vertical:before { 59 | -webkit-transform: scale(1, -1); 60 | -ms-transform: scale(-1, 1); 61 | transform: scale(1, -1); 62 | } 63 | 64 | &.oi-flip-horizontal-vertical:before { 65 | -webkit-transform: scale(-1, -1); 66 | -ms-transform: scale(-1, 1); 67 | transform: scale(-1, -1); 68 | } 69 | } 70 | 71 | 72 | .oi[data-glyph=account-login]:before { 73 | content: '\e000'; 74 | } 75 | 76 | .oi[data-glyph=account-logout]:before { 77 | content: '\e001'; 78 | } 79 | 80 | .oi[data-glyph=action-redo]:before { 81 | content: '\e002'; 82 | } 83 | 84 | .oi[data-glyph=action-undo]:before { 85 | content: '\e003'; 86 | } 87 | 88 | .oi[data-glyph=align-center]:before { 89 | content: '\e004'; 90 | } 91 | 92 | .oi[data-glyph=align-left]:before { 93 | content: '\e005'; 94 | } 95 | 96 | .oi[data-glyph=align-right]:before { 97 | content: '\e006'; 98 | } 99 | 100 | .oi[data-glyph=aperture]:before { 101 | content: '\e007'; 102 | } 103 | 104 | .oi[data-glyph=arrow-bottom]:before { 105 | content: '\e008'; 106 | } 107 | 108 | .oi[data-glyph=arrow-circle-bottom]:before { 109 | content: '\e009'; 110 | } 111 | 112 | .oi[data-glyph=arrow-circle-left]:before { 113 | content: '\e00a'; 114 | } 115 | 116 | .oi[data-glyph=arrow-circle-right]:before { 117 | content: '\e00b'; 118 | } 119 | 120 | .oi[data-glyph=arrow-circle-top]:before { 121 | content: '\e00c'; 122 | } 123 | 124 | .oi[data-glyph=arrow-left]:before { 125 | content: '\e00d'; 126 | } 127 | 128 | .oi[data-glyph=arrow-right]:before { 129 | content: '\e00e'; 130 | } 131 | 132 | .oi[data-glyph=arrow-thick-bottom]:before { 133 | content: '\e00f'; 134 | } 135 | 136 | .oi[data-glyph=arrow-thick-left]:before { 137 | content: '\e010'; 138 | } 139 | 140 | .oi[data-glyph=arrow-thick-right]:before { 141 | content: '\e011'; 142 | } 143 | 144 | .oi[data-glyph=arrow-thick-top]:before { 145 | content: '\e012'; 146 | } 147 | 148 | .oi[data-glyph=arrow-top]:before { 149 | content: '\e013'; 150 | } 151 | 152 | .oi[data-glyph=audio-spectrum]:before { 153 | content: '\e014'; 154 | } 155 | 156 | .oi[data-glyph=audio]:before { 157 | content: '\e015'; 158 | } 159 | 160 | .oi[data-glyph=badge]:before { 161 | content: '\e016'; 162 | } 163 | 164 | .oi[data-glyph=ban]:before { 165 | content: '\e017'; 166 | } 167 | 168 | .oi[data-glyph=bar-chart]:before { 169 | content: '\e018'; 170 | } 171 | 172 | .oi[data-glyph=basket]:before { 173 | content: '\e019'; 174 | } 175 | 176 | .oi[data-glyph=battery-empty]:before { 177 | content: '\e01a'; 178 | } 179 | 180 | .oi[data-glyph=battery-full]:before { 181 | content: '\e01b'; 182 | } 183 | 184 | .oi[data-glyph=beaker]:before { 185 | content: '\e01c'; 186 | } 187 | 188 | .oi[data-glyph=bell]:before { 189 | content: '\e01d'; 190 | } 191 | 192 | .oi[data-glyph=bluetooth]:before { 193 | content: '\e01e'; 194 | } 195 | 196 | .oi[data-glyph=bold]:before { 197 | content: '\e01f'; 198 | } 199 | 200 | .oi[data-glyph=bolt]:before { 201 | content: '\e020'; 202 | } 203 | 204 | .oi[data-glyph=book]:before { 205 | content: '\e021'; 206 | } 207 | 208 | .oi[data-glyph=bookmark]:before { 209 | content: '\e022'; 210 | } 211 | 212 | .oi[data-glyph=box]:before { 213 | content: '\e023'; 214 | } 215 | 216 | .oi[data-glyph=briefcase]:before { 217 | content: '\e024'; 218 | } 219 | 220 | .oi[data-glyph=british-pound]:before { 221 | content: '\e025'; 222 | } 223 | 224 | .oi[data-glyph=browser]:before { 225 | content: '\e026'; 226 | } 227 | 228 | .oi[data-glyph=brush]:before { 229 | content: '\e027'; 230 | } 231 | 232 | .oi[data-glyph=bug]:before { 233 | content: '\e028'; 234 | } 235 | 236 | .oi[data-glyph=bullhorn]:before { 237 | content: '\e029'; 238 | } 239 | 240 | .oi[data-glyph=calculator]:before { 241 | content: '\e02a'; 242 | } 243 | 244 | .oi[data-glyph=calendar]:before { 245 | content: '\e02b'; 246 | } 247 | 248 | .oi[data-glyph=camera-slr]:before { 249 | content: '\e02c'; 250 | } 251 | 252 | .oi[data-glyph=caret-bottom]:before { 253 | content: '\e02d'; 254 | } 255 | 256 | .oi[data-glyph=caret-left]:before { 257 | content: '\e02e'; 258 | } 259 | 260 | .oi[data-glyph=caret-right]:before { 261 | content: '\e02f'; 262 | } 263 | 264 | .oi[data-glyph=caret-top]:before { 265 | content: '\e030'; 266 | } 267 | 268 | .oi[data-glyph=cart]:before { 269 | content: '\e031'; 270 | } 271 | 272 | .oi[data-glyph=chat]:before { 273 | content: '\e032'; 274 | } 275 | 276 | .oi[data-glyph=check]:before { 277 | content: '\e033'; 278 | } 279 | 280 | .oi[data-glyph=chevron-bottom]:before { 281 | content: '\e034'; 282 | } 283 | 284 | .oi[data-glyph=chevron-left]:before { 285 | content: '\e035'; 286 | } 287 | 288 | .oi[data-glyph=chevron-right]:before { 289 | content: '\e036'; 290 | } 291 | 292 | .oi[data-glyph=chevron-top]:before { 293 | content: '\e037'; 294 | } 295 | 296 | .oi[data-glyph=circle-check]:before { 297 | content: '\e038'; 298 | } 299 | 300 | .oi[data-glyph=circle-x]:before { 301 | content: '\e039'; 302 | } 303 | 304 | .oi[data-glyph=clipboard]:before { 305 | content: '\e03a'; 306 | } 307 | 308 | .oi[data-glyph=clock]:before { 309 | content: '\e03b'; 310 | } 311 | 312 | .oi[data-glyph=cloud-download]:before { 313 | content: '\e03c'; 314 | } 315 | 316 | .oi[data-glyph=cloud-upload]:before { 317 | content: '\e03d'; 318 | } 319 | 320 | .oi[data-glyph=cloud]:before { 321 | content: '\e03e'; 322 | } 323 | 324 | .oi[data-glyph=cloudy]:before { 325 | content: '\e03f'; 326 | } 327 | 328 | .oi[data-glyph=code]:before { 329 | content: '\e040'; 330 | } 331 | 332 | .oi[data-glyph=cog]:before { 333 | content: '\e041'; 334 | } 335 | 336 | .oi[data-glyph=collapse-down]:before { 337 | content: '\e042'; 338 | } 339 | 340 | .oi[data-glyph=collapse-left]:before { 341 | content: '\e043'; 342 | } 343 | 344 | .oi[data-glyph=collapse-right]:before { 345 | content: '\e044'; 346 | } 347 | 348 | .oi[data-glyph=collapse-up]:before { 349 | content: '\e045'; 350 | } 351 | 352 | .oi[data-glyph=command]:before { 353 | content: '\e046'; 354 | } 355 | 356 | .oi[data-glyph=comment-square]:before { 357 | content: '\e047'; 358 | } 359 | 360 | .oi[data-glyph=compass]:before { 361 | content: '\e048'; 362 | } 363 | 364 | .oi[data-glyph=contrast]:before { 365 | content: '\e049'; 366 | } 367 | 368 | .oi[data-glyph=copywriting]:before { 369 | content: '\e04a'; 370 | } 371 | 372 | .oi[data-glyph=credit-card]:before { 373 | content: '\e04b'; 374 | } 375 | 376 | .oi[data-glyph=crop]:before { 377 | content: '\e04c'; 378 | } 379 | 380 | .oi[data-glyph=dashboard]:before { 381 | content: '\e04d'; 382 | } 383 | 384 | .oi[data-glyph=data-transfer-download]:before { 385 | content: '\e04e'; 386 | } 387 | 388 | .oi[data-glyph=data-transfer-upload]:before { 389 | content: '\e04f'; 390 | } 391 | 392 | .oi[data-glyph=delete]:before { 393 | content: '\e050'; 394 | } 395 | 396 | .oi[data-glyph=dial]:before { 397 | content: '\e051'; 398 | } 399 | 400 | .oi[data-glyph=document]:before { 401 | content: '\e052'; 402 | } 403 | 404 | .oi[data-glyph=dollar]:before { 405 | content: '\e053'; 406 | } 407 | 408 | .oi[data-glyph=double-quote-sans-left]:before { 409 | content: '\e054'; 410 | } 411 | 412 | .oi[data-glyph=double-quote-sans-right]:before { 413 | content: '\e055'; 414 | } 415 | 416 | .oi[data-glyph=double-quote-serif-left]:before { 417 | content: '\e056'; 418 | } 419 | 420 | .oi[data-glyph=double-quote-serif-right]:before { 421 | content: '\e057'; 422 | } 423 | 424 | .oi[data-glyph=droplet]:before { 425 | content: '\e058'; 426 | } 427 | 428 | .oi[data-glyph=eject]:before { 429 | content: '\e059'; 430 | } 431 | 432 | .oi[data-glyph=elevator]:before { 433 | content: '\e05a'; 434 | } 435 | 436 | .oi[data-glyph=ellipses]:before { 437 | content: '\e05b'; 438 | } 439 | 440 | .oi[data-glyph=envelope-closed]:before { 441 | content: '\e05c'; 442 | } 443 | 444 | .oi[data-glyph=envelope-open]:before { 445 | content: '\e05d'; 446 | } 447 | 448 | .oi[data-glyph=euro]:before { 449 | content: '\e05e'; 450 | } 451 | 452 | .oi[data-glyph=excerpt]:before { 453 | content: '\e05f'; 454 | } 455 | 456 | .oi[data-glyph=expand-down]:before { 457 | content: '\e060'; 458 | } 459 | 460 | .oi[data-glyph=expand-left]:before { 461 | content: '\e061'; 462 | } 463 | 464 | .oi[data-glyph=expand-right]:before { 465 | content: '\e062'; 466 | } 467 | 468 | .oi[data-glyph=expand-up]:before { 469 | content: '\e063'; 470 | } 471 | 472 | .oi[data-glyph=external-link]:before { 473 | content: '\e064'; 474 | } 475 | 476 | .oi[data-glyph=eye]:before { 477 | content: '\e065'; 478 | } 479 | 480 | .oi[data-glyph=eyedropper]:before { 481 | content: '\e066'; 482 | } 483 | 484 | .oi[data-glyph=file]:before { 485 | content: '\e067'; 486 | } 487 | 488 | .oi[data-glyph=fire]:before { 489 | content: '\e068'; 490 | } 491 | 492 | .oi[data-glyph=flag]:before { 493 | content: '\e069'; 494 | } 495 | 496 | .oi[data-glyph=flash]:before { 497 | content: '\e06a'; 498 | } 499 | 500 | .oi[data-glyph=folder]:before { 501 | content: '\e06b'; 502 | } 503 | 504 | .oi[data-glyph=fork]:before { 505 | content: '\e06c'; 506 | } 507 | 508 | .oi[data-glyph=fullscreen-enter]:before { 509 | content: '\e06d'; 510 | } 511 | 512 | .oi[data-glyph=fullscreen-exit]:before { 513 | content: '\e06e'; 514 | } 515 | 516 | .oi[data-glyph=globe]:before { 517 | content: '\e06f'; 518 | } 519 | 520 | .oi[data-glyph=graph]:before { 521 | content: '\e070'; 522 | } 523 | 524 | .oi[data-glyph=grid-four-up]:before { 525 | content: '\e071'; 526 | } 527 | 528 | .oi[data-glyph=grid-three-up]:before { 529 | content: '\e072'; 530 | } 531 | 532 | .oi[data-glyph=grid-two-up]:before { 533 | content: '\e073'; 534 | } 535 | 536 | .oi[data-glyph=hard-drive]:before { 537 | content: '\e074'; 538 | } 539 | 540 | .oi[data-glyph=header]:before { 541 | content: '\e075'; 542 | } 543 | 544 | .oi[data-glyph=headphones]:before { 545 | content: '\e076'; 546 | } 547 | 548 | .oi[data-glyph=heart]:before { 549 | content: '\e077'; 550 | } 551 | 552 | .oi[data-glyph=home]:before { 553 | content: '\e078'; 554 | } 555 | 556 | .oi[data-glyph=image]:before { 557 | content: '\e079'; 558 | } 559 | 560 | .oi[data-glyph=inbox]:before { 561 | content: '\e07a'; 562 | } 563 | 564 | .oi[data-glyph=infinity]:before { 565 | content: '\e07b'; 566 | } 567 | 568 | .oi[data-glyph=info]:before { 569 | content: '\e07c'; 570 | } 571 | 572 | .oi[data-glyph=italic]:before { 573 | content: '\e07d'; 574 | } 575 | 576 | .oi[data-glyph=justify-center]:before { 577 | content: '\e07e'; 578 | } 579 | 580 | .oi[data-glyph=justify-left]:before { 581 | content: '\e07f'; 582 | } 583 | 584 | .oi[data-glyph=justify-right]:before { 585 | content: '\e080'; 586 | } 587 | 588 | .oi[data-glyph=key]:before { 589 | content: '\e081'; 590 | } 591 | 592 | .oi[data-glyph=laptop]:before { 593 | content: '\e082'; 594 | } 595 | 596 | .oi[data-glyph=layers]:before { 597 | content: '\e083'; 598 | } 599 | 600 | .oi[data-glyph=lightbulb]:before { 601 | content: '\e084'; 602 | } 603 | 604 | .oi[data-glyph=link-broken]:before { 605 | content: '\e085'; 606 | } 607 | 608 | .oi[data-glyph=link-intact]:before { 609 | content: '\e086'; 610 | } 611 | 612 | .oi[data-glyph=list-rich]:before { 613 | content: '\e087'; 614 | } 615 | 616 | .oi[data-glyph=list]:before { 617 | content: '\e088'; 618 | } 619 | 620 | .oi[data-glyph=location]:before { 621 | content: '\e089'; 622 | } 623 | 624 | .oi[data-glyph=lock-locked]:before { 625 | content: '\e08a'; 626 | } 627 | 628 | .oi[data-glyph=lock-unlocked]:before { 629 | content: '\e08b'; 630 | } 631 | 632 | .oi[data-glyph=loop-circular]:before { 633 | content: '\e08c'; 634 | } 635 | 636 | .oi[data-glyph=loop-square]:before { 637 | content: '\e08d'; 638 | } 639 | 640 | .oi[data-glyph=loop]:before { 641 | content: '\e08e'; 642 | } 643 | 644 | .oi[data-glyph=magnifying-glass]:before { 645 | content: '\e08f'; 646 | } 647 | 648 | .oi[data-glyph=map-marker]:before { 649 | content: '\e090'; 650 | } 651 | 652 | .oi[data-glyph=map]:before { 653 | content: '\e091'; 654 | } 655 | 656 | .oi[data-glyph=media-pause]:before { 657 | content: '\e092'; 658 | } 659 | 660 | .oi[data-glyph=media-play]:before { 661 | content: '\e093'; 662 | } 663 | 664 | .oi[data-glyph=media-record]:before { 665 | content: '\e094'; 666 | } 667 | 668 | .oi[data-glyph=media-skip-backward]:before { 669 | content: '\e095'; 670 | } 671 | 672 | .oi[data-glyph=media-skip-forward]:before { 673 | content: '\e096'; 674 | } 675 | 676 | .oi[data-glyph=media-step-backward]:before { 677 | content: '\e097'; 678 | } 679 | 680 | .oi[data-glyph=media-step-forward]:before { 681 | content: '\e098'; 682 | } 683 | 684 | .oi[data-glyph=media-stop]:before { 685 | content: '\e099'; 686 | } 687 | 688 | .oi[data-glyph=medical-cross]:before { 689 | content: '\e09a'; 690 | } 691 | 692 | .oi[data-glyph=menu]:before { 693 | content: '\e09b'; 694 | } 695 | 696 | .oi[data-glyph=microphone]:before { 697 | content: '\e09c'; 698 | } 699 | 700 | .oi[data-glyph=minus]:before { 701 | content: '\e09d'; 702 | } 703 | 704 | .oi[data-glyph=monitor]:before { 705 | content: '\e09e'; 706 | } 707 | 708 | .oi[data-glyph=moon]:before { 709 | content: '\e09f'; 710 | } 711 | 712 | .oi[data-glyph=move]:before { 713 | content: '\e0a0'; 714 | } 715 | 716 | .oi[data-glyph=musical-note]:before { 717 | content: '\e0a1'; 718 | } 719 | 720 | .oi[data-glyph=paperclip]:before { 721 | content: '\e0a2'; 722 | } 723 | 724 | .oi[data-glyph=pencil]:before { 725 | content: '\e0a3'; 726 | } 727 | 728 | .oi[data-glyph=people]:before { 729 | content: '\e0a4'; 730 | } 731 | 732 | .oi[data-glyph=person]:before { 733 | content: '\e0a5'; 734 | } 735 | 736 | .oi[data-glyph=phone]:before { 737 | content: '\e0a6'; 738 | } 739 | 740 | .oi[data-glyph=pie-chart]:before { 741 | content: '\e0a7'; 742 | } 743 | 744 | .oi[data-glyph=pin]:before { 745 | content: '\e0a8'; 746 | } 747 | 748 | .oi[data-glyph=play-circle]:before { 749 | content: '\e0a9'; 750 | } 751 | 752 | .oi[data-glyph=plus]:before { 753 | content: '\e0aa'; 754 | } 755 | 756 | .oi[data-glyph=power-standby]:before { 757 | content: '\e0ab'; 758 | } 759 | 760 | .oi[data-glyph=print]:before { 761 | content: '\e0ac'; 762 | } 763 | 764 | .oi[data-glyph=project]:before { 765 | content: '\e0ad'; 766 | } 767 | 768 | .oi[data-glyph=pulse]:before { 769 | content: '\e0ae'; 770 | } 771 | 772 | .oi[data-glyph=puzzle-piece]:before { 773 | content: '\e0af'; 774 | } 775 | 776 | .oi[data-glyph=question-mark]:before { 777 | content: '\e0b0'; 778 | } 779 | 780 | .oi[data-glyph=rain]:before { 781 | content: '\e0b1'; 782 | } 783 | 784 | .oi[data-glyph=random]:before { 785 | content: '\e0b2'; 786 | } 787 | 788 | .oi[data-glyph=reload]:before { 789 | content: '\e0b3'; 790 | } 791 | 792 | .oi[data-glyph=resize-both]:before { 793 | content: '\e0b4'; 794 | } 795 | 796 | .oi[data-glyph=resize-height]:before { 797 | content: '\e0b5'; 798 | } 799 | 800 | .oi[data-glyph=resize-width]:before { 801 | content: '\e0b6'; 802 | } 803 | 804 | .oi[data-glyph=rss-alt]:before { 805 | content: '\e0b7'; 806 | } 807 | 808 | .oi[data-glyph=rss]:before { 809 | content: '\e0b8'; 810 | } 811 | 812 | .oi[data-glyph=script]:before { 813 | content: '\e0b9'; 814 | } 815 | 816 | .oi[data-glyph=share-boxed]:before { 817 | content: '\e0ba'; 818 | } 819 | 820 | .oi[data-glyph=share]:before { 821 | content: '\e0bb'; 822 | } 823 | 824 | .oi[data-glyph=shield]:before { 825 | content: '\e0bc'; 826 | } 827 | 828 | .oi[data-glyph=signal]:before { 829 | content: '\e0bd'; 830 | } 831 | 832 | .oi[data-glyph=signpost]:before { 833 | content: '\e0be'; 834 | } 835 | 836 | .oi[data-glyph=sort-ascending]:before { 837 | content: '\e0bf'; 838 | } 839 | 840 | .oi[data-glyph=sort-descending]:before { 841 | content: '\e0c0'; 842 | } 843 | 844 | .oi[data-glyph=spreadsheet]:before { 845 | content: '\e0c1'; 846 | } 847 | 848 | .oi[data-glyph=star]:before { 849 | content: '\e0c2'; 850 | } 851 | 852 | .oi[data-glyph=sun]:before { 853 | content: '\e0c3'; 854 | } 855 | 856 | .oi[data-glyph=tablet]:before { 857 | content: '\e0c4'; 858 | } 859 | 860 | .oi[data-glyph=tag]:before { 861 | content: '\e0c5'; 862 | } 863 | 864 | .oi[data-glyph=tags]:before { 865 | content: '\e0c6'; 866 | } 867 | 868 | .oi[data-glyph=target]:before { 869 | content: '\e0c7'; 870 | } 871 | 872 | .oi[data-glyph=task]:before { 873 | content: '\e0c8'; 874 | } 875 | 876 | .oi[data-glyph=terminal]:before { 877 | content: '\e0c9'; 878 | } 879 | 880 | .oi[data-glyph=text]:before { 881 | content: '\e0ca'; 882 | } 883 | 884 | .oi[data-glyph=thumb-down]:before { 885 | content: '\e0cb'; 886 | } 887 | 888 | .oi[data-glyph=thumb-up]:before { 889 | content: '\e0cc'; 890 | } 891 | 892 | .oi[data-glyph=timer]:before { 893 | content: '\e0cd'; 894 | } 895 | 896 | .oi[data-glyph=transfer]:before { 897 | content: '\e0ce'; 898 | } 899 | 900 | .oi[data-glyph=trash]:before { 901 | content: '\e0cf'; 902 | } 903 | 904 | .oi[data-glyph=underline]:before { 905 | content: '\e0d0'; 906 | } 907 | 908 | .oi[data-glyph=vertical-align-bottom]:before { 909 | content: '\e0d1'; 910 | } 911 | 912 | .oi[data-glyph=vertical-align-center]:before { 913 | content: '\e0d2'; 914 | } 915 | 916 | .oi[data-glyph=vertical-align-top]:before { 917 | content: '\e0d3'; 918 | } 919 | 920 | .oi[data-glyph=video]:before { 921 | content: '\e0d4'; 922 | } 923 | 924 | .oi[data-glyph=volume-high]:before { 925 | content: '\e0d5'; 926 | } 927 | 928 | .oi[data-glyph=volume-low]:before { 929 | content: '\e0d6'; 930 | } 931 | 932 | .oi[data-glyph=volume-off]:before { 933 | content: '\e0d7'; 934 | } 935 | 936 | .oi[data-glyph=warning]:before { 937 | content: '\e0d8'; 938 | } 939 | 940 | .oi[data-glyph=wifi]:before { 941 | content: '\e0d9'; 942 | } 943 | 944 | .oi[data-glyph=wrench]:before { 945 | content: '\e0da'; 946 | } 947 | 948 | .oi[data-glyph=x]:before { 949 | content: '\e0db'; 950 | } 951 | 952 | .oi[data-glyph=yen]:before { 953 | content: '\e0dc'; 954 | } 955 | 956 | .oi[data-glyph=zoom-in]:before { 957 | content: '\e0dd'; 958 | } 959 | 960 | .oi[data-glyph=zoom-out]:before { 961 | content: '\e0de'; 962 | } 963 | 964 | -------------------------------------------------------------------------------- /cmd/httpassets/css/open-iconic.styl: -------------------------------------------------------------------------------- 1 | @font-face 2 | font-family 'Icons' 3 | src url('../fonts/open-iconic.eot') 4 | src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') 5 | font-weight normal 6 | font-style normal 7 | 8 | 9 | .oi[data-glyph].oi-text-replace 10 | font-size 0 11 | line-height 0 12 | 13 | .oi[data-glyph].oi-text-replace:before 14 | width 1em 15 | text-align center 16 | 17 | .oi[data-glyph] 18 | &:before 19 | position relative 20 | top 1px 21 | font-family 'Icons' 22 | display inline-block 23 | speak none 24 | line-height 1 25 | vertical-align baseline 26 | font-weight normal 27 | font-style normal 28 | -webkit-font-smoothing antialiased 29 | -moz-osx-font-smoothing grayscale 30 | 31 | &:empty:before 32 | width 1em 33 | text-align center 34 | box-sizing content-box 35 | 36 | &.oi-align-left:before 37 | text-align left 38 | 39 | &.oi-align-right:before 40 | text-align right 41 | 42 | &.oi-align-center:before 43 | text-align center 44 | 45 | 46 | &.oi-flip-horizontal:before 47 | -webkit-transform scale(-1, 1) 48 | -ms-transform scale(-1, 1) 49 | transform scale(-1, 1) 50 | 51 | 52 | &.oi-flip-vertical:before 53 | -webkit-transform scale(1, -1) 54 | -ms-transform scale(-1, 1) 55 | transform scale(1, -1) 56 | 57 | 58 | &.oi-flip-horizontal-vertical:before 59 | -webkit-transform scale(-1, -1) 60 | -ms-transform scale(-1, 1) 61 | transform scale(-1, -1) 62 | 63 | 64 | 65 | 66 | .oi[data-glyph=account-login]:before 67 | content '\e000' 68 | 69 | .oi[data-glyph=account-logout]:before 70 | content '\e001' 71 | 72 | .oi[data-glyph=action-redo]:before 73 | content '\e002' 74 | 75 | .oi[data-glyph=action-undo]:before 76 | content '\e003' 77 | 78 | .oi[data-glyph=align-center]:before 79 | content '\e004' 80 | 81 | .oi[data-glyph=align-left]:before 82 | content '\e005' 83 | 84 | .oi[data-glyph=align-right]:before 85 | content '\e006' 86 | 87 | .oi[data-glyph=aperture]:before 88 | content '\e007' 89 | 90 | .oi[data-glyph=arrow-bottom]:before 91 | content '\e008' 92 | 93 | .oi[data-glyph=arrow-circle-bottom]:before 94 | content '\e009' 95 | 96 | .oi[data-glyph=arrow-circle-left]:before 97 | content '\e00a' 98 | 99 | .oi[data-glyph=arrow-circle-right]:before 100 | content '\e00b' 101 | 102 | .oi[data-glyph=arrow-circle-top]:before 103 | content '\e00c' 104 | 105 | .oi[data-glyph=arrow-left]:before 106 | content '\e00d' 107 | 108 | .oi[data-glyph=arrow-right]:before 109 | content '\e00e' 110 | 111 | .oi[data-glyph=arrow-thick-bottom]:before 112 | content '\e00f' 113 | 114 | .oi[data-glyph=arrow-thick-left]:before 115 | content '\e010' 116 | 117 | .oi[data-glyph=arrow-thick-right]:before 118 | content '\e011' 119 | 120 | .oi[data-glyph=arrow-thick-top]:before 121 | content '\e012' 122 | 123 | .oi[data-glyph=arrow-top]:before 124 | content '\e013' 125 | 126 | .oi[data-glyph=audio-spectrum]:before 127 | content '\e014' 128 | 129 | .oi[data-glyph=audio]:before 130 | content '\e015' 131 | 132 | .oi[data-glyph=badge]:before 133 | content '\e016' 134 | 135 | .oi[data-glyph=ban]:before 136 | content '\e017' 137 | 138 | .oi[data-glyph=bar-chart]:before 139 | content '\e018' 140 | 141 | .oi[data-glyph=basket]:before 142 | content '\e019' 143 | 144 | .oi[data-glyph=battery-empty]:before 145 | content '\e01a' 146 | 147 | .oi[data-glyph=battery-full]:before 148 | content '\e01b' 149 | 150 | .oi[data-glyph=beaker]:before 151 | content '\e01c' 152 | 153 | .oi[data-glyph=bell]:before 154 | content '\e01d' 155 | 156 | .oi[data-glyph=bluetooth]:before 157 | content '\e01e' 158 | 159 | .oi[data-glyph=bold]:before 160 | content '\e01f' 161 | 162 | .oi[data-glyph=bolt]:before 163 | content '\e020' 164 | 165 | .oi[data-glyph=book]:before 166 | content '\e021' 167 | 168 | .oi[data-glyph=bookmark]:before 169 | content '\e022' 170 | 171 | .oi[data-glyph=box]:before 172 | content '\e023' 173 | 174 | .oi[data-glyph=briefcase]:before 175 | content '\e024' 176 | 177 | .oi[data-glyph=british-pound]:before 178 | content '\e025' 179 | 180 | .oi[data-glyph=browser]:before 181 | content '\e026' 182 | 183 | .oi[data-glyph=brush]:before 184 | content '\e027' 185 | 186 | .oi[data-glyph=bug]:before 187 | content '\e028' 188 | 189 | .oi[data-glyph=bullhorn]:before 190 | content '\e029' 191 | 192 | .oi[data-glyph=calculator]:before 193 | content '\e02a' 194 | 195 | .oi[data-glyph=calendar]:before 196 | content '\e02b' 197 | 198 | .oi[data-glyph=camera-slr]:before 199 | content '\e02c' 200 | 201 | .oi[data-glyph=caret-bottom]:before 202 | content '\e02d' 203 | 204 | .oi[data-glyph=caret-left]:before 205 | content '\e02e' 206 | 207 | .oi[data-glyph=caret-right]:before 208 | content '\e02f' 209 | 210 | .oi[data-glyph=caret-top]:before 211 | content '\e030' 212 | 213 | .oi[data-glyph=cart]:before 214 | content '\e031' 215 | 216 | .oi[data-glyph=chat]:before 217 | content '\e032' 218 | 219 | .oi[data-glyph=check]:before 220 | content '\e033' 221 | 222 | .oi[data-glyph=chevron-bottom]:before 223 | content '\e034' 224 | 225 | .oi[data-glyph=chevron-left]:before 226 | content '\e035' 227 | 228 | .oi[data-glyph=chevron-right]:before 229 | content '\e036' 230 | 231 | .oi[data-glyph=chevron-top]:before 232 | content '\e037' 233 | 234 | .oi[data-glyph=circle-check]:before 235 | content '\e038' 236 | 237 | .oi[data-glyph=circle-x]:before 238 | content '\e039' 239 | 240 | .oi[data-glyph=clipboard]:before 241 | content '\e03a' 242 | 243 | .oi[data-glyph=clock]:before 244 | content '\e03b' 245 | 246 | .oi[data-glyph=cloud-download]:before 247 | content '\e03c' 248 | 249 | .oi[data-glyph=cloud-upload]:before 250 | content '\e03d' 251 | 252 | .oi[data-glyph=cloud]:before 253 | content '\e03e' 254 | 255 | .oi[data-glyph=cloudy]:before 256 | content '\e03f' 257 | 258 | .oi[data-glyph=code]:before 259 | content '\e040' 260 | 261 | .oi[data-glyph=cog]:before 262 | content '\e041' 263 | 264 | .oi[data-glyph=collapse-down]:before 265 | content '\e042' 266 | 267 | .oi[data-glyph=collapse-left]:before 268 | content '\e043' 269 | 270 | .oi[data-glyph=collapse-right]:before 271 | content '\e044' 272 | 273 | .oi[data-glyph=collapse-up]:before 274 | content '\e045' 275 | 276 | .oi[data-glyph=command]:before 277 | content '\e046' 278 | 279 | .oi[data-glyph=comment-square]:before 280 | content '\e047' 281 | 282 | .oi[data-glyph=compass]:before 283 | content '\e048' 284 | 285 | .oi[data-glyph=contrast]:before 286 | content '\e049' 287 | 288 | .oi[data-glyph=copywriting]:before 289 | content '\e04a' 290 | 291 | .oi[data-glyph=credit-card]:before 292 | content '\e04b' 293 | 294 | .oi[data-glyph=crop]:before 295 | content '\e04c' 296 | 297 | .oi[data-glyph=dashboard]:before 298 | content '\e04d' 299 | 300 | .oi[data-glyph=data-transfer-download]:before 301 | content '\e04e' 302 | 303 | .oi[data-glyph=data-transfer-upload]:before 304 | content '\e04f' 305 | 306 | .oi[data-glyph=delete]:before 307 | content '\e050' 308 | 309 | .oi[data-glyph=dial]:before 310 | content '\e051' 311 | 312 | .oi[data-glyph=document]:before 313 | content '\e052' 314 | 315 | .oi[data-glyph=dollar]:before 316 | content '\e053' 317 | 318 | .oi[data-glyph=double-quote-sans-left]:before 319 | content '\e054' 320 | 321 | .oi[data-glyph=double-quote-sans-right]:before 322 | content '\e055' 323 | 324 | .oi[data-glyph=double-quote-serif-left]:before 325 | content '\e056' 326 | 327 | .oi[data-glyph=double-quote-serif-right]:before 328 | content '\e057' 329 | 330 | .oi[data-glyph=droplet]:before 331 | content '\e058' 332 | 333 | .oi[data-glyph=eject]:before 334 | content '\e059' 335 | 336 | .oi[data-glyph=elevator]:before 337 | content '\e05a' 338 | 339 | .oi[data-glyph=ellipses]:before 340 | content '\e05b' 341 | 342 | .oi[data-glyph=envelope-closed]:before 343 | content '\e05c' 344 | 345 | .oi[data-glyph=envelope-open]:before 346 | content '\e05d' 347 | 348 | .oi[data-glyph=euro]:before 349 | content '\e05e' 350 | 351 | .oi[data-glyph=excerpt]:before 352 | content '\e05f' 353 | 354 | .oi[data-glyph=expand-down]:before 355 | content '\e060' 356 | 357 | .oi[data-glyph=expand-left]:before 358 | content '\e061' 359 | 360 | .oi[data-glyph=expand-right]:before 361 | content '\e062' 362 | 363 | .oi[data-glyph=expand-up]:before 364 | content '\e063' 365 | 366 | .oi[data-glyph=external-link]:before 367 | content '\e064' 368 | 369 | .oi[data-glyph=eye]:before 370 | content '\e065' 371 | 372 | .oi[data-glyph=eyedropper]:before 373 | content '\e066' 374 | 375 | .oi[data-glyph=file]:before 376 | content '\e067' 377 | 378 | .oi[data-glyph=fire]:before 379 | content '\e068' 380 | 381 | .oi[data-glyph=flag]:before 382 | content '\e069' 383 | 384 | .oi[data-glyph=flash]:before 385 | content '\e06a' 386 | 387 | .oi[data-glyph=folder]:before 388 | content '\e06b' 389 | 390 | .oi[data-glyph=fork]:before 391 | content '\e06c' 392 | 393 | .oi[data-glyph=fullscreen-enter]:before 394 | content '\e06d' 395 | 396 | .oi[data-glyph=fullscreen-exit]:before 397 | content '\e06e' 398 | 399 | .oi[data-glyph=globe]:before 400 | content '\e06f' 401 | 402 | .oi[data-glyph=graph]:before 403 | content '\e070' 404 | 405 | .oi[data-glyph=grid-four-up]:before 406 | content '\e071' 407 | 408 | .oi[data-glyph=grid-three-up]:before 409 | content '\e072' 410 | 411 | .oi[data-glyph=grid-two-up]:before 412 | content '\e073' 413 | 414 | .oi[data-glyph=hard-drive]:before 415 | content '\e074' 416 | 417 | .oi[data-glyph=header]:before 418 | content '\e075' 419 | 420 | .oi[data-glyph=headphones]:before 421 | content '\e076' 422 | 423 | .oi[data-glyph=heart]:before 424 | content '\e077' 425 | 426 | .oi[data-glyph=home]:before 427 | content '\e078' 428 | 429 | .oi[data-glyph=image]:before 430 | content '\e079' 431 | 432 | .oi[data-glyph=inbox]:before 433 | content '\e07a' 434 | 435 | .oi[data-glyph=infinity]:before 436 | content '\e07b' 437 | 438 | .oi[data-glyph=info]:before 439 | content '\e07c' 440 | 441 | .oi[data-glyph=italic]:before 442 | content '\e07d' 443 | 444 | .oi[data-glyph=justify-center]:before 445 | content '\e07e' 446 | 447 | .oi[data-glyph=justify-left]:before 448 | content '\e07f' 449 | 450 | .oi[data-glyph=justify-right]:before 451 | content '\e080' 452 | 453 | .oi[data-glyph=key]:before 454 | content '\e081' 455 | 456 | .oi[data-glyph=laptop]:before 457 | content '\e082' 458 | 459 | .oi[data-glyph=layers]:before 460 | content '\e083' 461 | 462 | .oi[data-glyph=lightbulb]:before 463 | content '\e084' 464 | 465 | .oi[data-glyph=link-broken]:before 466 | content '\e085' 467 | 468 | .oi[data-glyph=link-intact]:before 469 | content '\e086' 470 | 471 | .oi[data-glyph=list-rich]:before 472 | content '\e087' 473 | 474 | .oi[data-glyph=list]:before 475 | content '\e088' 476 | 477 | .oi[data-glyph=location]:before 478 | content '\e089' 479 | 480 | .oi[data-glyph=lock-locked]:before 481 | content '\e08a' 482 | 483 | .oi[data-glyph=lock-unlocked]:before 484 | content '\e08b' 485 | 486 | .oi[data-glyph=loop-circular]:before 487 | content '\e08c' 488 | 489 | .oi[data-glyph=loop-square]:before 490 | content '\e08d' 491 | 492 | .oi[data-glyph=loop]:before 493 | content '\e08e' 494 | 495 | .oi[data-glyph=magnifying-glass]:before 496 | content '\e08f' 497 | 498 | .oi[data-glyph=map-marker]:before 499 | content '\e090' 500 | 501 | .oi[data-glyph=map]:before 502 | content '\e091' 503 | 504 | .oi[data-glyph=media-pause]:before 505 | content '\e092' 506 | 507 | .oi[data-glyph=media-play]:before 508 | content '\e093' 509 | 510 | .oi[data-glyph=media-record]:before 511 | content '\e094' 512 | 513 | .oi[data-glyph=media-skip-backward]:before 514 | content '\e095' 515 | 516 | .oi[data-glyph=media-skip-forward]:before 517 | content '\e096' 518 | 519 | .oi[data-glyph=media-step-backward]:before 520 | content '\e097' 521 | 522 | .oi[data-glyph=media-step-forward]:before 523 | content '\e098' 524 | 525 | .oi[data-glyph=media-stop]:before 526 | content '\e099' 527 | 528 | .oi[data-glyph=medical-cross]:before 529 | content '\e09a' 530 | 531 | .oi[data-glyph=menu]:before 532 | content '\e09b' 533 | 534 | .oi[data-glyph=microphone]:before 535 | content '\e09c' 536 | 537 | .oi[data-glyph=minus]:before 538 | content '\e09d' 539 | 540 | .oi[data-glyph=monitor]:before 541 | content '\e09e' 542 | 543 | .oi[data-glyph=moon]:before 544 | content '\e09f' 545 | 546 | .oi[data-glyph=move]:before 547 | content '\e0a0' 548 | 549 | .oi[data-glyph=musical-note]:before 550 | content '\e0a1' 551 | 552 | .oi[data-glyph=paperclip]:before 553 | content '\e0a2' 554 | 555 | .oi[data-glyph=pencil]:before 556 | content '\e0a3' 557 | 558 | .oi[data-glyph=people]:before 559 | content '\e0a4' 560 | 561 | .oi[data-glyph=person]:before 562 | content '\e0a5' 563 | 564 | .oi[data-glyph=phone]:before 565 | content '\e0a6' 566 | 567 | .oi[data-glyph=pie-chart]:before 568 | content '\e0a7' 569 | 570 | .oi[data-glyph=pin]:before 571 | content '\e0a8' 572 | 573 | .oi[data-glyph=play-circle]:before 574 | content '\e0a9' 575 | 576 | .oi[data-glyph=plus]:before 577 | content '\e0aa' 578 | 579 | .oi[data-glyph=power-standby]:before 580 | content '\e0ab' 581 | 582 | .oi[data-glyph=print]:before 583 | content '\e0ac' 584 | 585 | .oi[data-glyph=project]:before 586 | content '\e0ad' 587 | 588 | .oi[data-glyph=pulse]:before 589 | content '\e0ae' 590 | 591 | .oi[data-glyph=puzzle-piece]:before 592 | content '\e0af' 593 | 594 | .oi[data-glyph=question-mark]:before 595 | content '\e0b0' 596 | 597 | .oi[data-glyph=rain]:before 598 | content '\e0b1' 599 | 600 | .oi[data-glyph=random]:before 601 | content '\e0b2' 602 | 603 | .oi[data-glyph=reload]:before 604 | content '\e0b3' 605 | 606 | .oi[data-glyph=resize-both]:before 607 | content '\e0b4' 608 | 609 | .oi[data-glyph=resize-height]:before 610 | content '\e0b5' 611 | 612 | .oi[data-glyph=resize-width]:before 613 | content '\e0b6' 614 | 615 | .oi[data-glyph=rss-alt]:before 616 | content '\e0b7' 617 | 618 | .oi[data-glyph=rss]:before 619 | content '\e0b8' 620 | 621 | .oi[data-glyph=script]:before 622 | content '\e0b9' 623 | 624 | .oi[data-glyph=share-boxed]:before 625 | content '\e0ba' 626 | 627 | .oi[data-glyph=share]:before 628 | content '\e0bb' 629 | 630 | .oi[data-glyph=shield]:before 631 | content '\e0bc' 632 | 633 | .oi[data-glyph=signal]:before 634 | content '\e0bd' 635 | 636 | .oi[data-glyph=signpost]:before 637 | content '\e0be' 638 | 639 | .oi[data-glyph=sort-ascending]:before 640 | content '\e0bf' 641 | 642 | .oi[data-glyph=sort-descending]:before 643 | content '\e0c0' 644 | 645 | .oi[data-glyph=spreadsheet]:before 646 | content '\e0c1' 647 | 648 | .oi[data-glyph=star]:before 649 | content '\e0c2' 650 | 651 | .oi[data-glyph=sun]:before 652 | content '\e0c3' 653 | 654 | .oi[data-glyph=tablet]:before 655 | content '\e0c4' 656 | 657 | .oi[data-glyph=tag]:before 658 | content '\e0c5' 659 | 660 | .oi[data-glyph=tags]:before 661 | content '\e0c6' 662 | 663 | .oi[data-glyph=target]:before 664 | content '\e0c7' 665 | 666 | .oi[data-glyph=task]:before 667 | content '\e0c8' 668 | 669 | .oi[data-glyph=terminal]:before 670 | content '\e0c9' 671 | 672 | .oi[data-glyph=text]:before 673 | content '\e0ca' 674 | 675 | .oi[data-glyph=thumb-down]:before 676 | content '\e0cb' 677 | 678 | .oi[data-glyph=thumb-up]:before 679 | content '\e0cc' 680 | 681 | .oi[data-glyph=timer]:before 682 | content '\e0cd' 683 | 684 | .oi[data-glyph=transfer]:before 685 | content '\e0ce' 686 | 687 | .oi[data-glyph=trash]:before 688 | content '\e0cf' 689 | 690 | .oi[data-glyph=underline]:before 691 | content '\e0d0' 692 | 693 | .oi[data-glyph=vertical-align-bottom]:before 694 | content '\e0d1' 695 | 696 | .oi[data-glyph=vertical-align-center]:before 697 | content '\e0d2' 698 | 699 | .oi[data-glyph=vertical-align-top]:before 700 | content '\e0d3' 701 | 702 | .oi[data-glyph=video]:before 703 | content '\e0d4' 704 | 705 | .oi[data-glyph=volume-high]:before 706 | content '\e0d5' 707 | 708 | .oi[data-glyph=volume-low]:before 709 | content '\e0d6' 710 | 711 | .oi[data-glyph=volume-off]:before 712 | content '\e0d7' 713 | 714 | .oi[data-glyph=warning]:before 715 | content '\e0d8' 716 | 717 | .oi[data-glyph=wifi]:before 718 | content '\e0d9' 719 | 720 | .oi[data-glyph=wrench]:before 721 | content '\e0da' 722 | 723 | .oi[data-glyph=x]:before 724 | content '\e0db' 725 | 726 | .oi[data-glyph=yen]:before 727 | content '\e0dc' 728 | 729 | .oi[data-glyph=zoom-in]:before 730 | content '\e0dd' 731 | 732 | .oi[data-glyph=zoom-out]:before 733 | content '\e0de' 734 | -------------------------------------------------------------------------------- /cmd/httpassets/css/sticky-footer-navbar.css: -------------------------------------------------------------------------------- 1 | /* Sticky footer styles 2 | -------------------------------------------------- */ 3 | html { 4 | position: relative; 5 | min-height: 100%; 6 | } 7 | body { 8 | /* Margin bottom by footer height */ 9 | margin-bottom: 60px; 10 | } 11 | .footer { 12 | position: absolute; 13 | bottom: 0; 14 | width: 100%; 15 | /* Set the fixed height of the footer here */ 16 | height: 60px; 17 | line-height: 60px; /* Vertically center the text there */ 18 | background-color: #f5f5f5; 19 | } 20 | 21 | 22 | /* Custom page CSS 23 | -------------------------------------------------- */ 24 | /* Not required for template or sticky footer method. */ 25 | 26 | body > .container { 27 | padding: 60px 15px 0; 28 | } 29 | 30 | .footer > .container { 31 | padding-right: 15px; 32 | padding-left: 15px; 33 | } 34 | 35 | code { 36 | font-size: 80%; 37 | } 38 | -------------------------------------------------------------------------------- /cmd/httpassets/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rob121/broadlinkgo/7c58e6a86bd08d4d36cf898e2517e9e14784dd7d/cmd/httpassets/fonts/open-iconic.eot -------------------------------------------------------------------------------- /cmd/httpassets/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rob121/broadlinkgo/7c58e6a86bd08d4d36cf898e2517e9e14784dd7d/cmd/httpassets/fonts/open-iconic.otf -------------------------------------------------------------------------------- /cmd/httpassets/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rob121/broadlinkgo/7c58e6a86bd08d4d36cf898e2517e9e14784dd7d/cmd/httpassets/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /cmd/httpassets/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rob121/broadlinkgo/7c58e6a86bd08d4d36cf898e2517e9e14784dd7d/cmd/httpassets/fonts/open-iconic.woff -------------------------------------------------------------------------------- /cmd/httpassets/tmpl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Broadlink Control 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
38 | 39 | 61 |
62 | 63 | 64 |
65 | 69 |

Application Status: {{.DevicesCT}} devices online

70 | 71 | 72 |
73 |
74 | 75 | 78 |
79 |
80 | 81 | {{if ne .Mode "auto1"}} 82 | 83 | Add Device Manually 84 |
85 |
86 | 87 | {{end}} 88 | 89 |
90 |
91 | 92 | {{.DeviceList}} 93 |
94 |
95 | 96 | 97 |
98 |
99 | 100 | 101 |
102 |
103 | 104 |
105 |
106 | 107 |

108 | 109 |

110 |
111 | 112 | 117 | 118 | 119 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 351 | 352 | 353 | 354 | -------------------------------------------------------------------------------- /cmd/httpassets/tmpl/learn.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Broadlink Control 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 47 |
48 | 49 | 50 |
51 |

Learn Devices

52 |
53 |
54 | 55 | 56 |
57 |
58 | 59 | {{.DeviceList}} 60 |
61 |
62 | 63 | 64 |
65 |
66 | 67 |
68 |
69 | {{.Frame}} 70 |
71 | 72 | 77 | 78 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/rob121/broadlinkgo 2 | 3 | go 1.16 4 | 5 | require github.com/GeertJohan/go.rice v1.0.2 6 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0= 2 | github.com/GeertJohan/go.rice v1.0.2 h1:PtRw+Tg3oa3HYwiDBZyvOJ8LdIyf6lAovJJtr7YOAYk= 3 | github.com/GeertJohan/go.rice v1.0.2/go.mod h1:af5vUNlDNkCjOZeSGFgIJxDje9qdjsO6hshx0gTmZt4= 4 | github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= 5 | github.com/daaku/go.zipexe v1.0.0 h1:VSOgZtH418pH9L16hC/JrgSNJbbAL26pj7lmD1+CGdY= 6 | github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= 7 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 8 | github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= 9 | github.com/nkovacs/streamquote v1.0.0/go.mod h1:BN+NaZ2CmdKqUuTUXUEm9j95B2TRbpOWpxbJYzzgUsc= 10 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 11 | github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= 12 | -------------------------------------------------------------------------------- /knowndevices.go: -------------------------------------------------------------------------------- 1 | package broadlinkgo 2 | 3 | import "errors" 4 | 5 | type deviceCharacteristics struct { 6 | deviceType int 7 | known bool 8 | name string 9 | supported bool 10 | ir bool 11 | rf bool 12 | power bool 13 | requestHeader []byte 14 | codeSendingHeader []byte 15 | } 16 | 17 | type KnownDevice struct { 18 | DeviceType int 19 | Name string 20 | Supported bool 21 | Ir bool 22 | Rf bool 23 | Power bool 24 | RequestHeader []byte 25 | CodeSendingHeader []byte 26 | } 27 | 28 | var knownDevices = []KnownDevice{ 29 | KnownDevice{DeviceType: 0x2737, Name: "Broadlink RM Mini", Supported: true, Ir: true, Rf: false, Power: false}, 30 | KnownDevice{DeviceType: 0x27c2, Name: "Broadlink RM Mini 3", Supported: true, Ir: true, Rf: false, Power: false}, 31 | KnownDevice{DeviceType: 0x5f36, Name: "Broadlink RM Mini 3 (RM4 update)", Supported: true, Ir: true, Rf: true, Power: false, RequestHeader: []byte{0x04, 0x00}, CodeSendingHeader: []byte{0xd0, 0x00}}, 32 | KnownDevice{DeviceType: 0x273d, Name: "Broadlink RM Pro Phicom", Supported: true, Ir: true, Rf: false, Power: false}, 33 | KnownDevice{DeviceType: 0x2712, Name: "Broadlink RM2", Supported: true, Ir: true, Rf: false, Power: false}, 34 | KnownDevice{DeviceType: 0x2783, Name: "Broadlink RM2 Home Plus", Supported: true, Ir: true, Rf: false, Power: false}, 35 | KnownDevice{DeviceType: 0x277c, Name: "Broadlink RM2 Home Plus GDT", Supported: true, Ir: true, Rf: false, Power: false}, 36 | KnownDevice{DeviceType: 0x278f, Name: "Broadlink RM Mini Shate", Supported: true, Ir: true, Rf: false, Power: false}, 37 | KnownDevice{DeviceType: 0x272a, Name: "Broadlink RM2 Pro Plus", Supported: true, Ir: true, Rf: true, Power: false}, 38 | KnownDevice{DeviceType: 0x2787, Name: "Broadlink RM2 Pro Plus v2", Supported: true, Ir: true, Rf: true, Power: false}, 39 | KnownDevice{DeviceType: 0x278b, Name: "Broadlink RM2 Pro Plus BL", Supported: true, Ir: true, Rf: true, Power: false}, 40 | KnownDevice{DeviceType: 0x279d, Name: "Broadlink RM3 Pro Plus", Supported: true, Ir: true, Rf: true, Power: false}, 41 | KnownDevice{DeviceType: 0x6026, Name: "Broadlink RM4 Pro V1", Supported: true, Ir: true, Rf: true, Power: false, RequestHeader: []byte{0x04, 0x00}, CodeSendingHeader: []byte{0xd0, 0x00}}, 42 | KnownDevice{DeviceType: 0x61a2, Name: "Broadlink RM4 Pro V2", Supported: true, Ir: true, Rf: true, Power: false, RequestHeader: []byte{0x04, 0x00}, CodeSendingHeader: []byte{0xd0, 0x00}}, 43 | KnownDevice{DeviceType: 0x649b, Name: "Broadlink RM4 Pro V3", Supported: true, Ir: true, Rf: true, Power: false, RequestHeader: []byte{0x04, 0x00}, CodeSendingHeader: []byte{0xd0, 0x00}}, 44 | KnownDevice{DeviceType: 0x653c, Name: "Broadlink RM4 Pro V4", Supported: true, Ir: true, Rf: true, Power: false, RequestHeader: []byte{0x04, 0x00}, CodeSendingHeader: []byte{0xd0, 0x00}}, 45 | KnownDevice{DeviceType: 0x6026, Name: "Broadlink RM4 Pro Plus", Supported: true, Ir: true, Rf: true, Power: false, RequestHeader: []byte{0x04, 0x00}, CodeSendingHeader: []byte{0xd0, 0x00}}, 46 | KnownDevice{DeviceType: 0x27a9, Name: "Broadlink RM3 Pro Plus v2", Supported: true, Ir: true, Rf: true, Power: false}, 47 | KnownDevice{DeviceType: 0, Name: "Broadlink SP1", Supported: true, Ir: false, Rf: false, Power: true}, 48 | KnownDevice{DeviceType: 0x2711, Name: "Broadlink SP2", Supported: true, Ir: false, Rf: false, Power: true}, 49 | KnownDevice{DeviceType: 0x2719, Name: "Honeywell SP2", Supported: true, Ir: false, Rf: false, Power: true}, 50 | KnownDevice{DeviceType: 0x7919, Name: "Honeywell SP2", Supported: true, Ir: false, Rf: false, Power: true}, 51 | KnownDevice{DeviceType: 0x271a, Name: "Honeywell SP2", Supported: true, Ir: false, Rf: false, Power: true}, 52 | KnownDevice{DeviceType: 0x791a, Name: "Honeywell SP2", Supported: true, Ir: false, Rf: false, Power: true}, 53 | KnownDevice{DeviceType: 0x2733, Name: "OEM Branded SP Mini", Supported: false}, 54 | KnownDevice{DeviceType: 0x273e, Name: "OEM Branded SP Mini", Supported: false}, 55 | KnownDevice{DeviceType: 0x2720, Name: "Broadlink SP Mini", Supported: false}, 56 | KnownDevice{DeviceType: 0x753e, Name: "Broadlink SP 3", Supported: false}, 57 | KnownDevice{DeviceType: 0x2728, Name: "Broadlink SPMini 2", Supported: false}, 58 | KnownDevice{DeviceType: 0x2736, Name: "Broadlink SPMini Plus", Supported: false}, 59 | KnownDevice{DeviceType: 0x2714, Name: "Broadlink A1", Supported: false}, 60 | KnownDevice{DeviceType: 0x4eb5, Name: "Broadlink MP1", Supported: false}, 61 | KnownDevice{DeviceType: 0x2722, Name: "Broadlink S1 (SmartOne Alarm Kit)", Supported: false}, 62 | KnownDevice{DeviceType: 0x4e4d, Name: "Dooya DT360E (DOOYA_CURTAIN_V2) or Hysen Heating Controller", Supported: false}, 63 | } 64 | 65 | //force add a device, useful in testing for new devices, error if the same name label is used 66 | 67 | func AddKnownDevice(kd KnownDevice) error{ 68 | 69 | 70 | 71 | for _, d := range knownDevices { 72 | 73 | if(d.Name == kd.Name) { 74 | 75 | return errors.New("Unable to add device with the same Name") 76 | 77 | 78 | } 79 | 80 | } 81 | 82 | knownDevices = append(knownDevices,kd) 83 | 84 | return nil 85 | } 86 | 87 | 88 | func isKnownDevice(dt int) deviceCharacteristics { 89 | resp := deviceCharacteristics{} 90 | for _, d := range knownDevices { 91 | if dt == d.DeviceType { 92 | resp.deviceType = d.DeviceType 93 | resp.known = true 94 | resp.name = d.Name 95 | resp.supported = d.Supported 96 | resp.ir = d.Ir 97 | resp.rf = d.Rf 98 | resp.power = d.Power 99 | resp.requestHeader = d.RequestHeader 100 | resp.codeSendingHeader = d.CodeSendingHeader 101 | break 102 | } 103 | } 104 | return resp 105 | } 106 | --------------------------------------------------------------------------------