diff --git a/pom.xml b/pom.xml index 48568191122d65f33d785592da84ac79f7d7e3bd..57b3d437aebb07d91bbe18ec868046345fb42617 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,11 @@ 2.1.5.RELEASE + + org.springframework.boot + spring-boot-starter-websocket + + org.apache.commons commons-lang3 diff --git a/src/main/java/com/test/community/Event/EventConsumer.java b/src/main/java/com/test/community/Event/EventConsumer.java index 5b8f1d07bac289bdb8e6113f67942b7c181f92c3..ff2705f45bc92486c16145ddf627c7d6c78e78e6 100644 --- a/src/main/java/com/test/community/Event/EventConsumer.java +++ b/src/main/java/com/test/community/Event/EventConsumer.java @@ -82,7 +82,7 @@ public class EventConsumer implements CommunityConstant { } // 消费删除事件 - @KafkaListener(topics = {TOPIC_PUBLISH}) + @KafkaListener(topics = {TOPIC_DELETE}) public void handleDeleteMessage(ConsumerRecord record){ if(record==null || record.value()==null){ logger.error("消息内容为空!"); diff --git a/src/main/java/com/test/community/config/SecurityConfig.java b/src/main/java/com/test/community/config/SecurityConfig.java index 74b57b05418e2cd60ac45ca3c17eba09516065df..a4ff0b1c431351b20f06f2aa991007ba1304e554 100644 --- a/src/main/java/com/test/community/config/SecurityConfig.java +++ b/src/main/java/com/test/community/config/SecurityConfig.java @@ -41,7 +41,7 @@ public class SecurityConfig implements CommunityConstant { "/like", "/follow", "/unfollow" - //有以下权限才可访问上述请求 + //有以下权限才可访问上述请求 "/comment/add/**", ).hasAnyAuthority( AUTHORITY_USER, AUTHORITY_ADMIN, AUTHORITY_MODERATOR diff --git a/src/main/java/com/test/community/config/WebSocketConfig.java b/src/main/java/com/test/community/config/WebSocketConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..eea9d92352d480d84a31e12f3cf84c00cb91cddf --- /dev/null +++ b/src/main/java/com/test/community/config/WebSocketConfig.java @@ -0,0 +1,15 @@ +package com.test.community.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + + +@Configuration +public class WebSocketConfig { + + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } +} diff --git a/src/main/java/com/test/community/controller/CommentController.java b/src/main/java/com/test/community/controller/CommentController.java index 00351c234c64338fc5781164f801cb6f5ab2da81..c7c6092def11808b9ec93bb0711bce522a1da8ad 100644 --- a/src/main/java/com/test/community/controller/CommentController.java +++ b/src/main/java/com/test/community/controller/CommentController.java @@ -6,20 +6,24 @@ import com.test.community.entity.DiscussPost; import com.test.community.entity.Event; import com.test.community.service.CommentService; import com.test.community.service.DiscussPostService; -import com.test.community.util.CommunityConstant; -import com.test.community.util.HostHolder; -import com.test.community.util.RedisKeyUtil; +import com.test.community.service.LikeService; +import com.test.community.service.UserService; +import com.test.community.util.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.Date; +import java.io.IOException; +import java.util.*; @Controller @RequestMapping("/comment") +@Slf4j public class CommentController implements CommunityConstant { @Autowired private CommentService commentService; @@ -36,13 +40,48 @@ public class CommentController implements CommunityConstant { @Autowired private RedisTemplate redisTemplate; - @RequestMapping(path = "/add/{discussPostId}",method = RequestMethod.POST) - public String addComment(@PathVariable("discussPostId") int discussPostId, Comment comment){ + @Autowired + private UserService userService; + + @Autowired + private LikeService likeService; + + //@RequestMapping(path = "/add/{discussPostId}",method = RequestMethod.POST) + @PostMapping("/add/{discussPostId}") + @ResponseBody + public String addComment(@PathVariable("discussPostId") int discussPostId, Comment comment, @RequestParam(value = "file",required = false) List fileList){ + if ("".equals(comment.getContent())){ + return CommunityUtil.getJSONString(403,"内容不能为空"); + } + if(hostHolder.getUser()==null){ + return CommunityUtil.getJSONString(403,"小伙子你还没登陆"); + } comment.setUserId(hostHolder.getUser().getId());//统一处理用户没登陆的情况 comment.setStatus(0); comment.setCreateTime(new Date()); - commentService.addComment(comment); + //处理图片 + if (fileList!=null){ + List urlList = new ArrayList<>(); + for (MultipartFile file:fileList){ + String fileName = file.getOriginalFilename(); + String suffix = fileName.substring(fileName.lastIndexOf(".")); + fileName = CommunityUtil.generateUUID()+suffix; + try { + String url = OssFileUtil.uploadAliyun(file,fileName); + urlList.add(url); + } catch (IOException e) { + log.error("上传图片失败"+e); + throw new RuntimeException("上传文件失败,服务器发生异常",e); + } + } + String urls = String.valueOf(urlList).substring(1,urlList.toString().length()-1); + comment.setUrl(urls); + }else { + comment.setUrl(""); + } + + commentService.addComment(comment); //触发评论事件 Event event = new Event() .setTopic(TOPIC_COMMENT) @@ -74,6 +113,7 @@ public class CommentController implements CommunityConstant { String redisKey = RedisKeyUtil.getPostScoreKey(); redisTemplate.opsForSet().add(redisKey,discussPostId); } - return "redirect:/discuss/detail/" + discussPostId; + + return CommunityUtil.getJSONString(0,"发送成功"); } } diff --git a/src/main/java/com/test/community/controller/DataController.java b/src/main/java/com/test/community/controller/DataController.java index 38ea7456577e4a78c31276eb0a2b7847feaddbe5..c37e73917ab2802a2939ff3d8a67a79a6481aab4 100644 --- a/src/main/java/com/test/community/controller/DataController.java +++ b/src/main/java/com/test/community/controller/DataController.java @@ -26,34 +26,31 @@ public class DataController { } //统计网站uv + @ResponseBody @RequestMapping(path = "/data/uv", method = RequestMethod.POST) public String getUV(@DateTimeFormat(pattern = "yyyy-MM-dd") Date start, - @DateTimeFormat(pattern = "yyyy-MM-dd") Date end, Model model){ + @DateTimeFormat(pattern = "yyyy-MM-dd") Date end){ if (start.after(end)) { - throw new IllegalArgumentException("开始日期不能大于结束日期"); + //throw new IllegalArgumentException("开始日期不能大于结束日期"); + return CommunityUtil.getJSONString(403,"开始日期不能大于结束日期"); + } long uv = dataService.calculateUV(start, end); - model.addAttribute("uvResult", uv); - model.addAttribute("uvStartDate", start); - model.addAttribute("uvEndDate", end); + return CommunityUtil.getJSONString(0,String.valueOf(uv)); - return "forward:/data"; } // 统计活跃用户 + @ResponseBody @RequestMapping(path = "/data/dau", method = RequestMethod.POST) public String getDAU(@DateTimeFormat(pattern = "yyyy-MM-dd") Date start, - @DateTimeFormat(pattern = "yyyy-MM-dd") Date end, Model model) { + @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) { if (start.after(end)) { - throw new IllegalArgumentException("开始日期不能大于结束日期"); + return CommunityUtil.getJSONString(403,"开始日期不能大于结束日期"); } long dau = dataService.calculateDAU(start, end); - model.addAttribute("dauResult", dau); - model.addAttribute("dauStartDate", start); - model.addAttribute("dauEndDate", end); - - return "forward:/data"; + return CommunityUtil.getJSONString(0,String.valueOf(dau)); } } diff --git a/src/main/java/com/test/community/controller/DiscussPostController.java b/src/main/java/com/test/community/controller/DiscussPostController.java index c61358114890316e18c59ed9c14d6fbd541dffd2..9f7d7d60188ffb87661220603455864f58beb81d 100644 --- a/src/main/java/com/test/community/controller/DiscussPostController.java +++ b/src/main/java/com/test/community/controller/DiscussPostController.java @@ -6,23 +6,23 @@ import com.test.community.service.CommentService; import com.test.community.service.DiscussPostService; import com.test.community.service.LikeService; import com.test.community.service.UserService; -import com.test.community.util.CommunityConstant; -import com.test.community.util.CommunityUtil; -import com.test.community.util.HostHolder; -import com.test.community.util.RedisKeyUtil; +import com.test.community.util.*; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.*; @Controller @RequestMapping("/discuss") +@Slf4j public class DiscussPostController implements CommunityConstant { @Autowired private HostHolder hostHolder; @@ -47,18 +47,49 @@ public class DiscussPostController implements CommunityConstant { @RequestMapping(path = "/add",method = RequestMethod.POST) @ResponseBody - public String addDiscussPost(String title,String content){ + public String addDiscussPost(String title,String content,@RequestParam(value = "file",required = false) List fileList){ + if (StringUtils.isBlank(title)){ + return CommunityUtil.getJSONString(403,"标题不能为空"); + } User user = hostHolder.getUser(); if (user == null){ return CommunityUtil.getJSONString(403, "用户没有登录!"); } DiscussPost discussPost = new DiscussPost(); + if (fileList==null){ + discussPost.setUrl(""); + }else if(fileList.size()>6){ + return CommunityUtil.getJSONString(403,"一次最多只能上传6张图片"); + } else { + List urlList = new ArrayList<>(); + try { + long beginTime = System.currentTimeMillis(); + log.info("======开始时间======="+beginTime); + for (MultipartFile file:fileList){ + String fileName = file.getOriginalFilename(); + String suffix = fileName.substring(fileName.lastIndexOf(".")); + fileName = CommunityUtil.generateUUID()+suffix; + String url = OssFileUtil.uploadAliyun(file,fileName); + urlList.add(url); + } + long endTime = System.currentTimeMillis(); + log.info("==消耗时间=="+(endTime-beginTime)+"ms"); + } catch (IOException e) { + log.error("上传图片失败"+e); + throw new RuntimeException("上传文件失败,服务器发生异常",e); + } + + String urls = String.valueOf(urlList).substring(1,urlList.toString().length()-1); + discussPost.setUrl(urls); + } + discussPost.setUserId(user.getId()); discussPost.setTitle(title); discussPost.setContent(content); discussPost.setCreateTime(new Date()); discussPostService.addDiscussPosts(discussPost); + //触发发帖事件 Event event = new Event() .setTopic(TOPIC_PUBLISH) @@ -71,11 +102,22 @@ public class DiscussPostController implements CommunityConstant { return CommunityUtil.getJSONString(0, "发布成功!"); } + @RequestMapping(path = "/detail/getReply",method = RequestMethod.GET) + public String getReply(){ + return "/site/discuss-detail :: replyList"; + } + @RequestMapping(path = "/detail/{discussPostId}",method = RequestMethod.GET) public String getDiscussPost(@PathVariable("discussPostId") int discussPostId, Model model, Page page){ //帖子 DiscussPost discussPost = discussPostService.findDiscussPostById(discussPostId); model.addAttribute("post",discussPost); + //帖子图片 + if (discussPost.getUrl()!=null){ + String[] urls = discussPost.getUrl().split(","); + List urlList = new ArrayList<>(Arrays.asList(urls)); + model.addAttribute("postUrl",urlList); + } //作者 User user = userService.findUserById(discussPost.getUserId()); model.addAttribute("user",user); @@ -91,6 +133,7 @@ public class DiscussPostController implements CommunityConstant { page.setLimit(5); page.setPath("/discuss/detail/"+discussPostId); page.setRows(discussPost.getCommentCount()); + /** * 评论:给帖子的评论 * 回复:给评论信息的评论 @@ -106,6 +149,12 @@ public class DiscussPostController implements CommunityConstant { Map commentMap = new HashMap<>(); //评论 commentMap.put("comment",comment); + //评论图片 + if (comment.getUrl()!=null){ + String[] urls = comment.getUrl().split(","); + List urlList = new ArrayList<>(Arrays.asList(urls)); + commentMap.put("urlList",urlList); + } //作者 commentMap.put("user",userService.findUserById(comment.getUserId())); //帖子评论点赞 @@ -126,6 +175,12 @@ public class DiscussPostController implements CommunityConstant { Map replyMap = new HashMap<>(); //回复 replyMap.put("reply",reply); + //回复的图片 + if (reply.getUrl()!=null){ + String[] urls = reply.getUrl().split(","); + List urlList = new ArrayList<>(Arrays.asList(urls)); + replyMap.put("replyUrl",urlList); + } //作者 replyMap.put("user",userService.findUserById(reply.getUserId())); //回复的目标(对哪个评论进行回复) diff --git a/src/main/java/com/test/community/controller/LoginController.java b/src/main/java/com/test/community/controller/LoginController.java index 227af7f2c49926755142efa78accf32956d40e24..8cee596f93b68a82e33eba077e4daec0e00a8307 100644 --- a/src/main/java/com/test/community/controller/LoginController.java +++ b/src/main/java/com/test/community/controller/LoginController.java @@ -52,6 +52,24 @@ public class LoginController implements CommunityConstant { @Value("${server.servlet.context-path}") private String contextPath; + @GetMapping("/kk") + public String kk(){return "/site/kk";} + @GetMapping("/chat") + public String chat(){return "/site/chat";} + @GetMapping("/authorization") + public String Authorization(){return "/site/authorization";} + @GetMapping("/links") + public String links(){return "/site/links";} + @GetMapping("/disclaimer") + public String disclaimer(){return "/site/disclaimer";} + @GetMapping("/joinus") + public String joinUs(){return "/site/joinus";} + @GetMapping("/cooperation") + public String cooperation(){return "/site/cooperation";} + @RequestMapping(value = "/aboutus",method = RequestMethod.GET) + public String aboutUs(){ + return "/site/aboutus"; + } @RequestMapping(value = "/login",method = RequestMethod.GET) public String getLoginPage(){ return "/site/login"; @@ -70,7 +88,12 @@ public class LoginController implements CommunityConstant { model.addAttribute("msg","注册成功,激活邮件已经到你的邮箱,请尽快去邮箱激活"); model.addAttribute("target","/index"); return "/site/operate-result"; - }else{ + }else if (map.get("mailError")!=null){ + model.addAttribute("msg","注册失败,邮件无法发送到你的邮箱"); + model.addAttribute("url",map.get("url")); + return "/site/operate-result-fail"; + } + else{ model.addAttribute("usernameMsg",map.get("usernameMsg")); model.addAttribute("passwordMsg",map.get("passwordMsg")); model.addAttribute("emailMsg",map.get("emailMsg")); @@ -164,7 +187,7 @@ public class LoginController implements CommunityConstant { //获取验证码 @RequestMapping(path = "/forget/code",method = RequestMethod.GET) @ResponseBody - public String getForgetCode(String email,HttpSession session){ + public String getForgetCode(String email,HttpSession session,String authorizationCode){ if (StringUtils.isBlank(email)){ CommunityUtil.getJSONString(1,"邮箱不能为空"); } @@ -181,7 +204,7 @@ public class LoginController implements CommunityConstant { return CommunityUtil.getJSONString(0); } - //重置密码 + /**重置密码*/ @RequestMapping(path = "/reLogin",method = RequestMethod.POST) public String reLogin(String email,String newPassword,String code,Model model,HttpSession session){ //检查验证码 @@ -190,10 +213,9 @@ public class LoginController implements CommunityConstant { model.addAttribute("codeMsg", "验证码不正确!"); return "/site/forget"; } - User user = hostHolder.getUser(); //检查账号和密码 - Map map = userService.updatePwd(user.getId(),newPassword,email); - if (map == null || map.isEmpty()){ + Map map = userService.resetPwd(newPassword,email); + if (map != null || !map.isEmpty()){ model.addAttribute("forgetMsg","修改密码成功"); return "redirect:/login"; }else { diff --git a/src/main/java/com/test/community/controller/MessageController.java b/src/main/java/com/test/community/controller/MessageController.java index db45f92101f00cad8e63a0d5a96b8f65ec13cf8b..6a52eb676204e8d48b5379fb05f931bba717d543 100644 --- a/src/main/java/com/test/community/controller/MessageController.java +++ b/src/main/java/com/test/community/controller/MessageController.java @@ -6,22 +6,31 @@ import com.test.community.entity.Message; import com.test.community.entity.Page; import com.test.community.entity.User; import com.test.community.service.MessageService; +import com.test.community.util.MyWebSocketServer; import com.test.community.service.UserService; -import com.test.community.util.CommunityConstant; -import com.test.community.util.CommunityUtil; -import com.test.community.util.HostHolder; +import com.test.community.util.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.util.HtmlUtils; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; @Controller +@Slf4j public class MessageController implements CommunityConstant { @Autowired private MessageService messageService; @@ -70,18 +79,33 @@ public class MessageController implements CommunityConstant { @LoginRequired @RequestMapping(path = "/letter/detail/{conversationId}",method = RequestMethod.GET) public String getLetterDetail(@PathVariable("conversationId") String conversationId,Page page,Model model){ - //分页信息 - page.setLimit(5); - page.setPath("/letter/detail/"+conversationId); - page.setRows(messageService.findLetterCount(conversationId)); + User user = hostHolder.getUser(); +// //分页信息 +// page.setLimit(5); +// page.setPath("/letter/detail/"+conversationId); +// page.setRows(messageService.findLetterCount(conversationId)); //私信列表 - List letterList=messageService.findLetters(conversationId, page.getOffset(), page.getLimit()); + //List letterList=messageService.findLetters(conversationId, page.getOffset(), page.getLimit()); + List letterList=messageService.findLettersNoPage(conversationId); + List letterDeleteList = new ArrayList<>(); + for (Message message:letterList){ + //如果信息表单条数据中 发送用户是此刻登陆用户且状态为3就不展示 + if (message.getFromId()==user.getId()&&message.getStatus()==3||message.getToId()==user.getId()&&message.getStatus()==4){ + letterDeleteList.add(message); + } + } + letterList.removeAll(letterDeleteList); + List> letters = new ArrayList<>(); if (letterList != null){ for (Message message : letterList){ Map map = new HashMap<>(); map.put("letter",message); map.put("fromUser",userService.findUserById(message.getFromId())); + map.put("toUser",user); + map.put("url",message.getUrl()); + map.put("fileName",message.getFileName()); + map.put("fileSize",message.getFileSize()); letters.add(map); } } @@ -94,7 +118,6 @@ public class MessageController implements CommunityConstant { messageService.readMessage(ids); } - return "/site/letter-detail"; } @@ -126,12 +149,14 @@ public class MessageController implements CommunityConstant { //发送私信 @RequestMapping(path = "/letter/send", method = RequestMethod.POST) @ResponseBody - public String sendLetter(String toName, String content) { + public String sendLetter(String toName, String content, MultipartFile multipartFile) throws IOException { User target = userService.findUserByName(toName); if (target == null) { return CommunityUtil.getJSONString(1, "目标用户不存在!"); } - + if (StringUtils.isBlank(content)&&multipartFile==null){ + return CommunityUtil.getJSONString(403,"内容不能为空"); + } Message message = new Message(); message.setFromId(hostHolder.getUser().getId()); message.setToId(target.getId()); @@ -140,19 +165,138 @@ public class MessageController implements CommunityConstant { } else { message.setConversationId(message.getToId() + "_" + message.getFromId()); } + if (multipartFile!=null){ + String fileName = multipartFile.getOriginalFilename(); + try { + final long partSize = 1 * 1024 * 1024L;//1M + String url = ""; + if (multipartFile.getSize() % partSize==0){ + url = OssFileUtil.uploadAliyun(multipartFile,fileName); + }else{ + url = OssFileUtil.uploadBigAliyun(multipartFile,fileName); + } + message.setUrl(url); + } catch (IOException e) { + log.error("上传失败",e); + throw new RuntimeException("上传文件失败"); + } + } message.setContent(content); message.setCreateTime(new Date()); messageService.addMessage(message); + if (multipartFile!=null){ + MyWebSocketServer.sendInfo("image",String.valueOf(target.getId())); + }else{ + MyWebSocketServer.sendInfo("text",String.valueOf(target.getId())); + } //如果没有报错 就给页面返回一个状态0 return CommunityUtil.getJSONString(0); } + //发送文件(不是头像) + @RequestMapping(path = "/letter/sendFile", method = RequestMethod.POST) + @ResponseBody + public String sendFile(String toName, MultipartFile multipartFile) throws IOException { + User target = userService.findUserByName(toName); + if (target == null) { + return CommunityUtil.getJSONString(1, "目标用户不存在!"); + } + if (multipartFile==null){ + return CommunityUtil.getJSONString(403,"内容不能为空"); + } + Message message = new Message(); + message.setFromId(hostHolder.getUser().getId()); + message.setToId(target.getId()); + if (message.getFromId() < message.getToId()) { + message.setConversationId(message.getFromId() + "_" + message.getToId()); + } else { + message.setConversationId(message.getToId() + "_" + message.getFromId()); + } - //删除私信(更改状态) + String fileName = multipartFile.getOriginalFilename(); + String fileSize = formatSize(multipartFile.getSize()); + if(fileSize.contains("GB")){ + return CommunityUtil.getJSONString(403,"仅支持1GB以下文件"); + } + try { + message.setFileSize(fileSize); + if (fileSize.contains("MB")){ + OssFileUtil.uploadAliyun(multipartFile,fileName); + }else{ + OssFileUtil.uploadBigAliyun(multipartFile,fileName); + } + message.setFileName(fileName); + } catch (IOException e) { + log.error("上传失败",e); + throw new RuntimeException("上传文件失败"); + } + message.setCreateTime(new Date()); + messageService.addMessage(message); + MyWebSocketServer.sendInfo("file",String.valueOf(target.getId())); + + //如果没有报错 就给页面返回一个状态0 + return CommunityUtil.getJSONString(0); + } + + //获取文件下载 + @RequestMapping(path = "/file/{fileName}",method = RequestMethod.GET) + public void getFile(@PathVariable("fileName") String fileName, HttpServletResponse response){ + //服务器存放路径 + String fileNameUrl = "https://community-test1.oss-cn-chengdu.aliyuncs.com"+"/"+fileName; + //响应文件 + response.setContentType("multipart/form-data"); + + try{ + URL url = new URL(fileNameUrl); + //FileInputStream fileInputStream = new FileInputStream(fileName); + InputStream stream = url.openStream(); + OutputStream outputStream = response.getOutputStream(); + byte[] buffer = new byte[1024]; + int b = 0; + while ((b = stream.read(buffer)) != -1){ + outputStream.write(buffer,0,b); + } + } catch (IOException e) { + log.error("读取文件失败"+e.getMessage()); + } + } + + //删除(撤回)私信(更改状态) @RequestMapping(path = "/letter/delete",method = RequestMethod.POST) @ResponseBody - public String deleteLetter(int id){ + public String deleteLetter(int id) throws IOException { + Message message = messageService.selectMessageById(id); + Date date = new Date(); + long time = date.getTime()-message.getCreateTime().getTime(); + if (time>300000){ + return CommunityUtil.getJSONString(402,"时间已超过5分钟不能撤回"); + } messageService.deleteMessage(id); + //OssFileUtil.deleteAliyun(message.getUrl()); + MyWebSocketServer.sendInfo("delete",String.valueOf(message.getToId())); + return CommunityUtil.getJSONString(0); + } + + //真正删除私信 + @RequestMapping(path = "/letter/deleteMsg",method = RequestMethod.POST) + @ResponseBody + public String deleteRealLetter(Integer id) { + User user = hostHolder.getUser(); + Message message = messageService.selectMessageById(id); + //关于数字代表含义请查数据库 + if(message.getStatus()!=2&&message.getStatus()!=3&&message.getStatus()!=4){ + //如果是发送者删除则置为3, + if (user.getId() == message.getFromId()){ + messageService.deleteRealMessage(id,3); + } + //是接收者删除置为4 + else { + messageService.deleteRealMessage(id,4); + } + }else { + //发送与接收者都删除置为5 + messageService.deleteRealMessage(id,5); + } return CommunityUtil.getJSONString(0); } @@ -277,4 +421,24 @@ public class MessageController implements CommunityConstant { return "/site/notice-detail"; } + //计算文件大小并返回 + private String formatSize(long fileS) { + DecimalFormat df = new DecimalFormat("#.00"); + String fileSizeString = ""; + String wrongSize = "0B"; + if (fileS == 0) { + return wrongSize; + } + if (fileS < 1024) { + fileSizeString = df.format((double) fileS) + "B"; + } else if (fileS < 1048576) { + fileSizeString = df.format((double) fileS / 1024) + "KB"; + } else if (fileS < 1073741824) { + fileSizeString = df.format((double) fileS / 1048576) + "MB"; + } else { + fileSizeString = df.format((double) fileS / 1073741824) + "GB"; + } + return fileSizeString; + } + } diff --git a/src/main/java/com/test/community/controller/UserController.java b/src/main/java/com/test/community/controller/UserController.java index 3e194bc1952ef23897172a22e893e7903ad8e715..b0064ba4f4b375fd96072fc7d6b3101d39a2f8f9 100644 --- a/src/main/java/com/test/community/controller/UserController.java +++ b/src/main/java/com/test/community/controller/UserController.java @@ -48,6 +48,8 @@ public class UserController implements CommunityConstant { private DiscussPostService discussPostService; @Autowired private CommentService commentService; + @Autowired + private MessageService messageService; @Value("${community.path.upload}") private String uploadPath; @@ -191,10 +193,20 @@ public class UserController implements CommunityConstant { // 个人主页 @RequestMapping(path = "/profile/{userId}", method = RequestMethod.GET) public String getProfilePage(@PathVariable("userId") int userId, Model model) { + User user = userService.findUserById(userId); if (user == null) { throw new RuntimeException("该用户不存在!"); } + if (hostHolder.getUser().getId()!=userId){ + String conversationId = messageService.findConversationIdByFromId(hostHolder.getUser().getId(),userId); + if (conversationId!=null){ + model.addAttribute("conversationId",conversationId); + }else { + conversationId = hostHolder.getUser().getId()+"_"+userId; + model.addAttribute("conversationId",conversationId); + } + } // 用户 model.addAttribute("user", user); // 点赞数量 diff --git a/src/main/java/com/test/community/controller/advice/ExceptionAdvice.java b/src/main/java/com/test/community/controller/advice/ExceptionAdvice.java index 5a43455be30337a53ee83c8f75bfcae33dd7211e..59d38822aa56760bb6769aad6cd4e65a069bf1c7 100644 --- a/src/main/java/com/test/community/controller/advice/ExceptionAdvice.java +++ b/src/main/java/com/test/community/controller/advice/ExceptionAdvice.java @@ -1,6 +1,7 @@ package com.test.community.controller.advice; import com.test.community.util.CommunityUtil; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -12,7 +13,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; -@ControllerAdvice(annotations = Controller.class) +@ControllerAdvice(annotations = Controller.class)//用于修饰类,表示该类是Controller的全局配置类 +@Slf4j public class ExceptionAdvice { private static final Logger logger = LoggerFactory.getLogger(ExceptionAdvice.class); @@ -22,6 +24,7 @@ public class ExceptionAdvice { logger.error("服务器发生异常: " + e.getMessage()); for (StackTraceElement element : e.getStackTrace()) { logger.error(element.toString()); + log.error(element.toString()); } String xRequestedWith = request.getHeader("x-requested-with"); diff --git a/src/main/java/com/test/community/dao/CommentMapper.java b/src/main/java/com/test/community/dao/CommentMapper.java index fe205e6ed94bdbe13273b628868ce74f3e139143..a6257982ff4b943e1753d3b353c00d7ce49f13f0 100644 --- a/src/main/java/com/test/community/dao/CommentMapper.java +++ b/src/main/java/com/test/community/dao/CommentMapper.java @@ -9,6 +9,9 @@ import java.util.List; public interface CommentMapper { List selectCommentsByEntity(int entityType,int entityId,int offset,int limit); + List selectCommentsByEntityNoPage(int entityType,int entityId); + + int selectCountByEntity(int entityType,int entityId); int insertComment(Comment comment); diff --git a/src/main/java/com/test/community/dao/MessageMapper.java b/src/main/java/com/test/community/dao/MessageMapper.java index 29851ad7ca6a48c595bba8c496fa89586f738eb8..c13e9e5c4c3846a8561547d8877455de1ff0c95e 100644 --- a/src/main/java/com/test/community/dao/MessageMapper.java +++ b/src/main/java/com/test/community/dao/MessageMapper.java @@ -16,6 +16,9 @@ public interface MessageMapper { // 查询某个会话所包含的私信列表. List selectLetters(String conversationId, int offset, int limit); + // 查询某个会话所包含的私信列表(不分页). + List selectLettersNoPage(String conversationId); + // 查询某个会话所包含的私信数量. int selectLetterCount(String conversationId); @@ -40,5 +43,12 @@ public interface MessageMapper { // 查询某个主题所包含的通知列表 List selectNotices(int userId, String topic, int offset, int limit); + //查询conversationId + String selectConversationIdByFromId(int fromId,int toId); + + //根据查询私信 + Message selectById(int id); + //修改信息状态 + int updateFromStatus(Integer[] ids,int status); } diff --git a/src/main/java/com/test/community/entity/Comment.java b/src/main/java/com/test/community/entity/Comment.java index f1f0f2ca3a46db7c6cc153b28df3a56af8d0a97e..c4f486c7024c8b5d4778888289d9182616225f34 100644 --- a/src/main/java/com/test/community/entity/Comment.java +++ b/src/main/java/com/test/community/entity/Comment.java @@ -3,6 +3,8 @@ package com.test.community.entity; import lombok.Data; import java.util.Date; +import java.util.List; + @Data public class Comment { private int id; @@ -13,4 +15,5 @@ public class Comment { private String content; private int status; private Date createTime; + private String url; } diff --git a/src/main/java/com/test/community/entity/DiscussPost.java b/src/main/java/com/test/community/entity/DiscussPost.java index 1412845da0894a0867a77713e258636f87e1ab0e..b625ead7319e8325d5f8582e1d35b560b5894ec1 100644 --- a/src/main/java/com/test/community/entity/DiscussPost.java +++ b/src/main/java/com/test/community/entity/DiscussPost.java @@ -49,4 +49,7 @@ public class DiscussPost { // 记录帖子的分数 @Field(type = FieldType.Double) private double score; + + /** 帖子的图片*/ + private String url; } diff --git a/src/main/java/com/test/community/entity/Message.java b/src/main/java/com/test/community/entity/Message.java index 7519252ea4ced1962af094666d6e5da2d87153dc..0310f902beb2a0ff7fb2ee5426f98c551161aa23 100644 --- a/src/main/java/com/test/community/entity/Message.java +++ b/src/main/java/com/test/community/entity/Message.java @@ -12,4 +12,7 @@ public class Message { private String content; private int status; private Date createTime; + private String url; + private String fileName; + private String fileSize; } diff --git a/src/main/java/com/test/community/entity/User.java b/src/main/java/com/test/community/entity/User.java index 5ea33c9c00cdef934e1fd2edf12b90278d9ef407..ae70ac352bf41f11b58f9a5710b25ea17c1ee125 100644 --- a/src/main/java/com/test/community/entity/User.java +++ b/src/main/java/com/test/community/entity/User.java @@ -15,4 +15,5 @@ public class User { private String activationCode;//激活码 private String headerUrl;//头像地址 private Date createTime; + private String authorizationCode;//邮箱授权码 } diff --git a/src/main/java/com/test/community/service/CommentService.java b/src/main/java/com/test/community/service/CommentService.java index abd44e9cb17ec46f1386f084bd54c2ca96f349f5..c71a39fe651201d082d22ae8f5f35eca384f15ed 100644 --- a/src/main/java/com/test/community/service/CommentService.java +++ b/src/main/java/com/test/community/service/CommentService.java @@ -7,6 +7,8 @@ import java.util.List; public interface CommentService { List findCommentByEntity(int entityType,int entityId,int offset,int limit); + List findCommentByEntityNoPage(int entityType,int entityId); + int findCommentCount(int entityType,int entityId); int addComment(Comment comment); diff --git a/src/main/java/com/test/community/service/MessageService.java b/src/main/java/com/test/community/service/MessageService.java index 27384f31f8a2683146e7b4958f91ed6f87cf9146..5f5364a2a3643cfd9c4c5a56203e3166806611a9 100644 --- a/src/main/java/com/test/community/service/MessageService.java +++ b/src/main/java/com/test/community/service/MessageService.java @@ -12,6 +12,8 @@ public interface MessageService { List findLetters(String conversationId, int offset, int limit); + List findLettersNoPage(String conversationId); + int findLetterCount(String conversationId); int findLetterUnreadCount(int userId, String conversationId); @@ -30,4 +32,21 @@ public interface MessageService { List findNotices(int userId, String topic, int offset, int limit); + /** + * 根据fromId查conversationId + */ + String findConversationIdByFromId(int fromId,int toId); + + /** + * 根据id查消息 + * @param id + * @return + */ + Message selectMessageById(int id); + + /** + * 发送者删除信息记录置为3 + * @param id + */ + int deleteRealMessage(int id,int status); } diff --git a/src/main/java/com/test/community/service/UserService.java b/src/main/java/com/test/community/service/UserService.java index 9b5663e7b6a0f1351c98ca262dde0bd82143743d..a3108b46e732980dca8ef3a10a1f0f4164ce1074 100644 --- a/src/main/java/com/test/community/service/UserService.java +++ b/src/main/java/com/test/community/service/UserService.java @@ -30,5 +30,7 @@ public interface UserService { User findUserByName(String username); Collection extends GrantedAuthority> getAuthorities(int userId); + + Map resetPwd(String newPassword, String email); } diff --git a/src/main/java/com/test/community/service/impl/CommentServiceImpl.java b/src/main/java/com/test/community/service/impl/CommentServiceImpl.java index 3a7ad3f09b1b07c1e5d0852d5db4db4cef2b9112..bfc997e71fe021022ba8e411aed8f48f57e4f9eb 100644 --- a/src/main/java/com/test/community/service/impl/CommentServiceImpl.java +++ b/src/main/java/com/test/community/service/impl/CommentServiceImpl.java @@ -30,6 +30,11 @@ public class CommentServiceImpl implements CommentService, CommunityConstant { return commentMapper.selectCommentsByEntity(entityType,entityId,offset,limit); } + @Override + public List findCommentByEntityNoPage(int entityType, int entityId) { + return commentMapper.selectCommentsByEntityNoPage(entityType,entityId); + } + @Override public int findCommentCount(int entityType, int entityId) { return commentMapper.selectCountByEntity(entityType,entityId); diff --git a/src/main/java/com/test/community/service/impl/DataServiceImpl.java b/src/main/java/com/test/community/service/impl/DataServiceImpl.java index 3bca152b3665bd1aa806b6cbfc09c28c82bd5cbe..483c7049a891951e560b163adc2cc8b681fd8096 100644 --- a/src/main/java/com/test/community/service/impl/DataServiceImpl.java +++ b/src/main/java/com/test/community/service/impl/DataServiceImpl.java @@ -81,8 +81,10 @@ public class DataServiceImpl implements DataService { } //进行OR(或)运算 + //直接调用 opsFor** 来操作 Redis 数据库,每执行一条命令是要重新拿一个连接,因此很耗资源。如果让一个连接直接执行多条语句的方法就是使用 RedisCallback(它太复杂,不常用) return (long) redisTemplate.execute((RedisCallback) connection -> { String redisKey = RedisKeyUtil.getDAUKey(sdf.format(start),sdf.format(end)); + //connection.bitOp():参数1,指定运算符;参数2,指定要存的key;参数3,传递要统计的几组数据 connection.bitOp(RedisStringCommands.BitOperation.OR, redisKey.getBytes(),keyList.toArray(new byte[0][0])); return connection.bitCount(redisKey.getBytes()); diff --git a/src/main/java/com/test/community/service/impl/DiscussPostServiceImpl.java b/src/main/java/com/test/community/service/impl/DiscussPostServiceImpl.java index 3faeab6d50424ca6db734f227d03824b1fb2a42e..26466b0719383e3409ca55c037f7da66c0b9c02c 100644 --- a/src/main/java/com/test/community/service/impl/DiscussPostServiceImpl.java +++ b/src/main/java/com/test/community/service/impl/DiscussPostServiceImpl.java @@ -105,7 +105,7 @@ public class DiscussPostServiceImpl implements DiscussPostService { } //防止恶意帖子进行标签化 影响页面 //所以需要转义HTML标记 - discussPost.setTitle(HtmlUtils.htmlEscape(discussPost.getTitle())); + //discussPost.setTitle(HtmlUtils.htmlEscape(discussPost.getTitle())); discussPost.setContent(HtmlUtils.htmlEscape(discussPost.getContent())); //过滤敏感词 diff --git a/src/main/java/com/test/community/service/impl/MessageServiceImpl.java b/src/main/java/com/test/community/service/impl/MessageServiceImpl.java index 5cb757c4579097ba94edeb43052ad1450977fecc..a40a71343185dcd84815d84b8d3c0d8362368b4b 100644 --- a/src/main/java/com/test/community/service/impl/MessageServiceImpl.java +++ b/src/main/java/com/test/community/service/impl/MessageServiceImpl.java @@ -4,6 +4,7 @@ import com.test.community.dao.MessageMapper; import com.test.community.entity.Message; import com.test.community.service.MessageService; import com.test.community.util.SensitiveFilter; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.util.HtmlUtils; @@ -34,6 +35,11 @@ public class MessageServiceImpl implements MessageService { return messageMapper.selectLetters(conversationId, offset, limit); } + @Override + public List findLettersNoPage(String conversationId) { + return messageMapper.selectLettersNoPage(conversationId); + } + @Override public int findLetterCount(String conversationId) { return messageMapper.selectLetterCount(conversationId); @@ -47,8 +53,10 @@ public class MessageServiceImpl implements MessageService { @Override public int addMessage(Message message) { //过滤敏感词以及防止标签插入 - message.setContent(HtmlUtils.htmlEscape(message.getContent())); - message.setContent(sensitiveFilter.filter(message.getContent())); + if (StringUtils.isNotBlank(message.getContent())){ +// message.setContent(HtmlUtils.htmlEscape(message.getContent())); + message.setContent(sensitiveFilter.filter(message.getContent())); + } return messageMapper.insertMessage(message); } @@ -81,4 +89,21 @@ public class MessageServiceImpl implements MessageService { return messageMapper.selectNotices(userId, topic, offset, limit); } + @Override + public String findConversationIdByFromId(int fromId,int toId) { + return messageMapper.selectConversationIdByFromId(fromId,toId); + } + + @Override + public Message selectMessageById(int id) { + return messageMapper.selectById(id); + } + + @Override + public int deleteRealMessage(int id,int status) { + //将id收集为数组 + Integer[] integers = new Integer[] {id}; + return messageMapper.updateFromStatus(integers,status); + } + } diff --git a/src/main/java/com/test/community/service/impl/UserServiceImpl.java b/src/main/java/com/test/community/service/impl/UserServiceImpl.java index 40ad333a0c36d3a5f483f5182dc3e65350054eb0..4a11c111b975619e4012442995b2ce01450c7fca 100644 --- a/src/main/java/com/test/community/service/impl/UserServiceImpl.java +++ b/src/main/java/com/test/community/service/impl/UserServiceImpl.java @@ -9,10 +9,12 @@ import com.test.community.util.CommunityConstant; import com.test.community.util.CommunityUtil; import com.test.community.util.MailClient; import com.test.community.util.RedisKeyUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestMapping; @@ -23,6 +25,7 @@ import java.util.*; import java.util.concurrent.TimeUnit; @Service +@Slf4j public class UserServiceImpl implements UserService, CommunityConstant { @Autowired private UserMapper userMapper; @@ -90,23 +93,29 @@ public class UserServiceImpl implements UserService, CommunityConstant { user.setPassword(CommunityUtil.md5(user.getPassword() + user.getSalt())); user.setType(0);//注册为普通用户 - user.setStatus(0);//默认状态刚注册还为激活 + user.setStatus(0);//默认状态刚注册还未激活 user.setActivationCode(CommunityUtil.generateUUID()); - user.setHeaderUrl(String.format(//牛客网自带的1000张随机头像 - "http://images.nowcoder.com/head/%dt.png", + user.setHeaderUrl(String.format(//网站自带的1000张随机头像 + "https://community-test1.oss-cn-chengdu.aliyuncs.com/headerImg.jpg", new Random().nextInt(1000))); user.setCreateTime(new Date()); userMapper.insertUser(user); //激活邮件 - Context context = new Context(); - context.setVariable("email",user.getEmail()); - //http://localhost:8080/community/activation/100/code - String url = domain+contextPath+"/activation/"+user.getId()+"/"+user.getActivationCode(); - context.setVariable("url",url); - String content = templateEngine.process("/mail/activation",context); - mailClient.sendMail(user.getEmail(),"激活账号",content); + try { + Context context = new Context(); + context.setVariable("email",user.getEmail()); + //http://localhost:8080/community/activation/100/code + String url = domain+contextPath+"/activation/"+user.getId()+"/"+user.getActivationCode(); + context.setVariable("url",url); + String content = templateEngine.process("/mail/activation",context); + mailClient.sendMail(user.getEmail(),"激活账号",content); + } catch (Exception e) { + log.error("发送邮件失败",e); + map.put("mailError","发送邮件失败"); + map.put("url",domain+contextPath+"/activation/"+user.getId()+"/"+user.getActivationCode()); + } return map; } @@ -267,7 +276,7 @@ public class UserServiceImpl implements UserService, CommunityConstant { return user; } - // 3.数据变更时清除缓存数据(尝试AOP去做一下:已做) + // 3.数据变更时清除缓存数据(尝试AOP去做:已做) private void clearCache(int userId) { String redisKey = RedisKeyUtil.getUserKey(userId); redisTemplate.delete(redisKey); @@ -290,4 +299,33 @@ public class UserServiceImpl implements UserService, CommunityConstant { }); return list; } + + @Override + public Map resetPwd(String newPassword, String email) { + Map map = new HashMap<>(); + + // 空值处理 + if (StringUtils.isBlank(email)) { + map.put("emailMsg", "邮箱不能为空!"); + return map; + } + if (StringUtils.isBlank(newPassword)) { + map.put("passwordMsg", "密码不能为空!"); + return map; + } + + // 验证邮箱 + User user = userMapper.selectByEmail(email); + if (user == null) { + map.put("emailMsg", "该邮箱尚未注册!"); + return map; + } + + // 重置密码 + newPassword = CommunityUtil.md5(newPassword + user.getSalt()); + userMapper.updatePassword(user.getId(), newPassword); + + map.put("user", user); + return map; + } } diff --git a/src/main/java/com/test/community/util/MailClient.java b/src/main/java/com/test/community/util/MailClient.java index 9b5d5886ad5109bf28e467734a0ebff3482f36bd..1c03cc024327d506794b788a1300923b891035b8 100644 --- a/src/main/java/com/test/community/util/MailClient.java +++ b/src/main/java/com/test/community/util/MailClient.java @@ -4,37 +4,51 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import javax.mail.MessagingException; +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; +import java.util.Properties; @Component public class MailClient { private static final Logger logger = LoggerFactory.getLogger(MailClient.class); - @Autowired - private JavaMailSender mailSender; +// @Autowired +// private JavaMailSenderImpl mailSender; @Value("${spring.mail.username}") private String sender;//发件人 + @Value("${spring.mail.password}") + private String password; public void sendMail(String recipient, String subject,String content){ - try { - MimeMessage message = mailSender.createMimeMessage(); - MimeMessageHelper messageHelper = new MimeMessageHelper(message); - - messageHelper.setFrom(sender); - messageHelper.setTo(recipient); - messageHelper.setSubject(subject); - messageHelper.setText(content,true); - - mailSender.send(messageHelper.getMimeMessage()); + Properties properties = new Properties(); + properties.setProperty("mail.protocol","smtp"); + properties.setProperty("mail.smtp.host","smtp.qq.com"); + properties.setProperty("mail.smtp.auth","true"); + Session session = Session.getDefaultInstance(properties); + MimeMessage message = new MimeMessage(session); +// MimeMessageHelper messageHelper = new MimeMessageHelper(message); +// messageHelper.setFrom(sender); +// messageHelper.setTo(recipient); +// messageHelper.setSubject(subject); +// messageHelper.setText(content,true); + message.setFrom(sender); + message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient)); + message.setSubject(subject); + message.setContent(content,"text/html;charset=utf-8"); + Transport transport = session.getTransport("smtp"); + transport.connect(sender,password); + transport.sendMessage(message, message.getAllRecipients()); } catch (MessagingException e) { logger.error("发送邮件失败"+e.getMessage()); } diff --git a/src/main/java/com/test/community/util/MyWebSocketServer.java b/src/main/java/com/test/community/util/MyWebSocketServer.java new file mode 100644 index 0000000000000000000000000000000000000000..cec481f365d34a8042a6aea36eaed357795deb72 --- /dev/null +++ b/src/main/java/com/test/community/util/MyWebSocketServer.java @@ -0,0 +1,145 @@ +package com.test.community.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.test.community.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.websocket.*; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +import java.io.IOException; +import java.util.concurrent.ConcurrentHashMap; + +@ServerEndpoint("/{userId}") +@Component +@Slf4j +public class MyWebSocketServer { + + @Autowired + private UserService userService; + + /**静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。*/ + private static int onlineCount = 0; + /**concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。*/ + private static ConcurrentHashMap webSocketMap = new ConcurrentHashMap<>(); + /**与某个客户端的连接会话,需要通过它来给客户端发送数据*/ + private Session session; + /**接收conversationId*/ + private String userId=""; + + /** + * 连接建立成功调用的方法*/ + @OnOpen + public void onOpen(Session session,@PathParam("userId") String userId) { + this.session = session; + this.userId=userId; + if(webSocketMap.containsKey(userId)){ + webSocketMap.remove(userId); + webSocketMap.put(userId,this); + //加入set中 + }else{ + webSocketMap.put(userId,this); + //加入set中 + addOnlineCount(); + //在线数加1 + } + + log.info("用户连接:"+userId+",当前在线人数为:" + getOnlineCount()); + + try { + sendMessage("连接成功"); + } catch (IOException e) { + log.error("用户:"+userId+",网络异常!!!!!!"); + } + } + + /** + * 连接关闭调用的方法 + */ + @OnClose + public void onClose() { + if(webSocketMap.containsKey(userId)){ + webSocketMap.remove(userId); + //从set中删除 + subOnlineCount(); + } + log.info("用户退出:"+userId+",当前在线人数为:" + getOnlineCount()); + } + + /** + * 收到客户端消息后调用的方法 + * + * @param message 客户端发送过来的消息*/ + @OnMessage + public void onMessage(String message, Session session) { + log.info("用户消息:"+userId+",报文:"+message); + //可以群发消息 + //消息保存到数据库、redis + if(StringUtils.isNotBlank(message)){ + try { + //解析发送的报文 + JSONObject jsonObject = JSON.parseObject(message); + //追加发送人(防止串改) + jsonObject.put("fromUserId",this.userId); + String toUserId=jsonObject.getString("toUserId"); + //传送给对应toUserId用户的websocket + if(StringUtils.isNotBlank(toUserId)&&webSocketMap.containsKey(toUserId)){ + webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString()); + }else{ + log.error("请求的userId:"+toUserId+"不在该服务器上"); + //否则不在这个服务器上,发送到mysql或者redis + + } + }catch (Exception e){ + log.error("客户端发送消息失败",e); + } + } + } + + /** + * + * @param session + * @param error + */ + @OnError + public void onError(Session session, Throwable error) { + log.error("用户错误:"+this.userId+",原因:"+error.getMessage()); + error.printStackTrace(); + } + /** + * 实现服务器主动推送 + */ + public void sendMessage(String message) throws IOException { + this.session.getBasicRemote().sendText(message); + } + + + /** + * 发送自定义消息 + * */ + public static void sendInfo(String message,String userId) throws IOException { + log.info("发送消息到:"+userId+",报文:"+message); + if(webSocketMap.containsKey(userId)){ + webSocketMap.get(userId).sendMessage(message); + }else{ + log.error("用户"+userId+",不在线!"); + } + } + + public static synchronized int getOnlineCount() { + return onlineCount; + } + + public static synchronized void addOnlineCount() { + MyWebSocketServer.onlineCount++; + } + + public static synchronized void subOnlineCount() { + MyWebSocketServer.onlineCount--; + } + +} diff --git a/src/main/java/com/test/community/util/OssFileUtil.java b/src/main/java/com/test/community/util/OssFileUtil.java index 2691724c9b6491c76986213f6e3942be625467a4..4711e33902e1ec194aadaa91754a9ebc225011a2 100644 --- a/src/main/java/com/test/community/util/OssFileUtil.java +++ b/src/main/java/com/test/community/util/OssFileUtil.java @@ -4,6 +4,7 @@ import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; +import com.aliyun.oss.model.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -12,6 +13,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; /** * 上传图片到阿里云的工具封装类 @@ -31,7 +34,13 @@ public class OssFileUtil { @Value("${aliyun.bucket-name}") private String bucketName; - + /** + * 上传文件 + * @param file + * @param fileName + * @return + * @throws IOException + */ public static String uploadAliyun(MultipartFile file, String fileName) throws IOException { // 1 获取上传需要的固定值 String endpoint = "oss-cn-chengdu.aliyuncs.com"; @@ -62,4 +71,107 @@ public class OssFileUtil { in.close(); } } + + /** + * 分片上传文件 + * @param file + * @param fileName + * @return + */ + public static String uploadBigAliyun(MultipartFile file, String fileName) throws IOException { + // 1 获取上传需要的固定值 + String endpoint = "oss-cn-chengdu.aliyuncs.com"; + String accessKeyId = "LTAI5tG5dJcVaNrQQXhbURCi"; + String accessKeySecret = "eD23Am9J3Xw0tUwjHAxRVTBBVzytmo"; + String bucketName = "community-test1"; + + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + try { + // 创建InitiateMultipartUploadRequest对象。 + InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, fileName); + // 初始化分片。 + InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request); + // 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。 + String uploadId = upresult.getUploadId(); + // partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。 + List partETags = new ArrayList(); + // 每个分片的大小,用于计算文件有多少个分片。单位为字节。 + final long partSize = 1 * 1024 * 1024L; //1 MB。 + long fileLength = file.getSize(); + int partCount = (int) (fileLength / partSize); + if (fileLength % partSize != 0) { + partCount++; + } + // 遍历分片上传。 + for (int i = 0; i < partCount; i++) { + long startPos = i * partSize; + long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize; + InputStream instream = file.getInputStream(); + // 跳过已经上传的分片。 + instream.skip(startPos); + UploadPartRequest uploadPartRequest = new UploadPartRequest(); + uploadPartRequest.setBucketName(bucketName); + uploadPartRequest.setKey(fileName); + uploadPartRequest.setUploadId(uploadId); + uploadPartRequest.setInputStream(instream); + // 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。 + uploadPartRequest.setPartSize(curPartSize); + // 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。 + uploadPartRequest.setPartNumber( i + 1); + // 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。 + UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest); + // 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。 + partETags.add(uploadPartResult.getPartETag()); + } + // 创建CompleteMultipartUploadRequest对象。 + // 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。 + CompleteMultipartUploadRequest completeMultipartUploadRequest = + new CompleteMultipartUploadRequest(bucketName, fileName, uploadId, partETags); + // 完成分片上传。 + CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest); + String uploadUrl = "https://"+bucketName+"."+endpoint+"/"+fileName; + return uploadUrl; + } catch (OSSException e) { + logger.error("上传文件到云服务器失败 OSS异常"+e.getMessage()); + return null; + } catch (ClientException e) { + logger.error("上传文件到云服务器失败 Client异常"+e.getMessage()); + return null; + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + + } + + + /** + * 删除阿里云文件 + * @param url + */ + public static void deleteAliyun(String url){ + // 1 获取上传需要的固定值 + String endpoint = "oss-cn-chengdu.aliyuncs.com"; + String accessKeyId = "LTAI5tG5dJcVaNrQQXhbURCi"; + String accessKeySecret = "eD23Am9J3Xw0tUwjHAxRVTBBVzytmo"; + String bucketName = "community-test1"; + + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + try { + ossClient.deleteObject(bucketName,url); + } catch (OSSException e) { + logger.error("oss异常-删除文件失败",e); + } catch (ClientException e) { + logger.error("Client异常-删除文件失败",e); + }finally { + if (ossClient != null){ + ossClient.shutdown(); + } + } + + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 29f6437dee349802039f6c58d19fce18398c15bf..0149668488e403ca5a64dfd7f5de02f147d05c6f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -13,6 +13,10 @@ spring.datasource.hikari.maximum-pool-size=15 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.idle-timeout=30000 +spring.servlet.multipart.max-file-size = -1 +spring.servlet.multipart.max-request-size=-1 + + # MybatisProperties mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.test.community.entity @@ -26,9 +30,12 @@ logging.level.com.test.community=debug spring.mail.host=smtp.qq.com spring.mail.port=465 spring.mail.username=1173998166@qq.com -spring.mail.password=vbhishkbbvndhbed +spring.mail.password=ulieztgbksnohgfa spring.mail.protocol=smtps -spring.mail.properties.mail.smtp.ssl.enable=true +#spring.mail.properties.mail.smtp.ssl.enable=true +#spring.mail.properties.mail.smtp.auth=true + +# ncpytyvykyrddcij ulieztgbksnohgfa # community community.path.domain=http://localhost:8080 @@ -36,11 +43,11 @@ community.path.upload=E:/work/data/upload # RedisProperties spring.redis.database=11 -spring.redis.host=192.168.128.131 +spring.redis.host=192.168.128.136 spring.redis.port=6379 # KafkaProperties ??????? server.properties ??????? -spring.kafka.bootstrap-servers=192.168.128.131:9092 +spring.kafka.bootstrap-servers=192.168.128.136:9092 # ?????Id spring.kafka.consumer.group-id=test-consumer-group spring.kafka.consumer.enable-auto-commit=true @@ -50,7 +57,7 @@ spring.kafka.consumer.auto-commit-interval=3000 # ElasticsearchProperties #selasticsearch.host=192.168.128.131 #elasticsearch.port=9200 -spring.elasticsearch.uris=192.168.128.131:9200 +spring.elasticsearch.uris=192.168.128.136:9200 # TaskExecutionProperties #spring.task.execution.pool.core-size=5 diff --git a/src/main/resources/mapper/comment-mapper.xml b/src/main/resources/mapper/comment-mapper.xml index 2afc8f1f1a97c1661235c29f5928a763f8ff960c..cbdb9149940928bcb4f060fbced7ab2fd1753fb7 100644 --- a/src/main/resources/mapper/comment-mapper.xml +++ b/src/main/resources/mapper/comment-mapper.xml @@ -4,11 +4,11 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - id,user_id,entity_type,entity_id,target_id,content,status,create_time + id,user_id,entity_type,entity_id,target_id,content,status,create_time,url - user_id,entity_type,entity_id,target_id,content,status,create_time + user_id,entity_type,entity_id,target_id,content,status,create_time,url @@ -21,6 +21,15 @@ limit #{offset},#{limit} + + select + from comment + where status = 0 + and entity_type = #{entityType} + and entity_id = #{entityId} + order by create_time asc + + select count(id) from comment @@ -31,7 +40,7 @@ insert into comment () - values (#{userId},#{entityType},#{entityId},#{targetId},#{content},#{status},#{createTime}) + values (#{userId},#{entityType},#{entityId},#{targetId},#{content},#{status},#{createTime},#{url}) @@ -64,4 +73,5 @@ ) + diff --git a/src/main/resources/mapper/discusspost-mapper.xml b/src/main/resources/mapper/discusspost-mapper.xml index c577173214b94dfca74c6eb954159bcb46c61e2d..d7af4a090c60c6115a145723794643134e61c1b2 100644 --- a/src/main/resources/mapper/discusspost-mapper.xml +++ b/src/main/resources/mapper/discusspost-mapper.xml @@ -4,11 +4,11 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - id,user_id,title,content,type,status,create_time,comment_count,score + id,user_id,title,content,type,status,create_time,comment_count,score,url - user_id,title,content,type,status,create_time,comment_count,score + user_id,title,content,type,status,create_time,comment_count,score,url @@ -38,7 +38,7 @@ insert into discuss_post () - values (#{userId},#{title},#{content},#{type},#{status},#{createTime},#{commentCount},#{score}) + values (#{userId},#{title},#{content},#{type},#{status},#{createTime},#{commentCount},#{score},#{url}) diff --git a/src/main/resources/mapper/message-mapper.xml b/src/main/resources/mapper/message-mapper.xml index b4bdfa7ca24fdffc8ae4f16bd0f19382870842f4..18d2355bb99e06465985704b7fe6576638562871 100644 --- a/src/main/resources/mapper/message-mapper.xml +++ b/src/main/resources/mapper/message-mapper.xml @@ -4,11 +4,11 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - id, from_id, to_id, conversation_id, content, status, create_time + id, from_id, to_id, conversation_id, content, status, create_time,url,file_name,file_size - from_id, to_id, conversation_id, content, status, create_time + from_id, to_id, conversation_id, content, status, create_time,url,file_name,file_size @@ -48,6 +48,17 @@ limit #{offset}, #{limit} + + + select + from message + where status != 2 + and status != 5 + and from_id != 1 + and conversation_id = #{conversationId} + order by id asc + + select count(id) @@ -72,7 +83,7 @@ insert into message() - values(#{fromId},#{toId},#{conversationId},#{content},#{status},#{createTime}) + values(#{fromId},#{toId},#{conversationId},#{content},#{status},#{createTime},#{url},#{fileName},#{fileSize}) @@ -84,7 +95,15 @@ - + + update message set status = #{status} + where id in + + #{id} + + + + select from message @@ -128,5 +147,16 @@ order by create_time desc limit #{offset}, #{limit} + + select MAX(conversation_id) + from message + where from_id = #{fromId} and to_id = #{toId} + or from_id = #{toId} and to_id = #{fromId} + + + select + from message + where id = #{id} + diff --git a/src/main/resources/sensitive-words.txt b/src/main/resources/sensitive-words.txt index d385ccc2b8c8bd62fce34890ce7e5363018b2c0f..59a6c8170d47dcabdf1fd4438ca34f659095938b 100644 --- a/src/main/resources/sensitive-words.txt +++ b/src/main/resources/sensitive-words.txt @@ -5,3 +5,4 @@ 小穴 鸡巴 内射 +傻逼 diff --git a/src/main/resources/static/arclist/1.gif b/src/main/resources/static/arclist/1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5be27cb0ecf9a21240e151962f59f94a2ce361ad Binary files /dev/null and b/src/main/resources/static/arclist/1.gif differ diff --git a/src/main/resources/static/arclist/10.gif b/src/main/resources/static/arclist/10.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8c4837a6cfd7dd5b464a9689dd11abeac2a598c Binary files /dev/null and b/src/main/resources/static/arclist/10.gif differ diff --git a/src/main/resources/static/arclist/11.gif b/src/main/resources/static/arclist/11.gif new file mode 100644 index 0000000000000000000000000000000000000000..b512dd5da196b15a6fa31115da13cb24730c14ef Binary files /dev/null and b/src/main/resources/static/arclist/11.gif differ diff --git a/src/main/resources/static/arclist/12.gif b/src/main/resources/static/arclist/12.gif new file mode 100644 index 0000000000000000000000000000000000000000..547529cab6ec7ccc19719487e644b132b40f9d9c Binary files /dev/null and b/src/main/resources/static/arclist/12.gif differ diff --git a/src/main/resources/static/arclist/13.gif b/src/main/resources/static/arclist/13.gif new file mode 100644 index 0000000000000000000000000000000000000000..34753001ef80a38a08e8a75f23482f528313fd1b Binary files /dev/null and b/src/main/resources/static/arclist/13.gif differ diff --git a/src/main/resources/static/arclist/14.gif b/src/main/resources/static/arclist/14.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2e8304f3a63d29f31c6542794f6e9c958d4c05c Binary files /dev/null and b/src/main/resources/static/arclist/14.gif differ diff --git a/src/main/resources/static/arclist/15.gif b/src/main/resources/static/arclist/15.gif new file mode 100644 index 0000000000000000000000000000000000000000..debab8ed082d3e38ac6a824193311c20f9584a45 Binary files /dev/null and b/src/main/resources/static/arclist/15.gif differ diff --git a/src/main/resources/static/arclist/16.gif b/src/main/resources/static/arclist/16.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f4cb251490d413fb13956571466958e9c4fc970 Binary files /dev/null and b/src/main/resources/static/arclist/16.gif differ diff --git a/src/main/resources/static/arclist/17.gif b/src/main/resources/static/arclist/17.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6af2189c8c6e5edaee66142a76d2ca56b45e8bc Binary files /dev/null and b/src/main/resources/static/arclist/17.gif differ diff --git a/src/main/resources/static/arclist/18.gif b/src/main/resources/static/arclist/18.gif new file mode 100644 index 0000000000000000000000000000000000000000..e045ff2af252ee7a3abbc468442ef7bd98ab16f9 Binary files /dev/null and b/src/main/resources/static/arclist/18.gif differ diff --git a/src/main/resources/static/arclist/19.gif b/src/main/resources/static/arclist/19.gif new file mode 100644 index 0000000000000000000000000000000000000000..efd650f5598c031ec3a205351c95d9d83bada14b Binary files /dev/null and b/src/main/resources/static/arclist/19.gif differ diff --git a/src/main/resources/static/arclist/2.gif b/src/main/resources/static/arclist/2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2644a9ee85fd75515d8368633118e5df1a1bb3b Binary files /dev/null and b/src/main/resources/static/arclist/2.gif differ diff --git a/src/main/resources/static/arclist/20.gif b/src/main/resources/static/arclist/20.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb8cf6d2a19857f6f6a13a16ce84b907da7b8500 Binary files /dev/null and b/src/main/resources/static/arclist/20.gif differ diff --git a/src/main/resources/static/arclist/21.gif b/src/main/resources/static/arclist/21.gif new file mode 100644 index 0000000000000000000000000000000000000000..2913255cb11a8d74fca488d3fad7ec27ce0d8bd0 Binary files /dev/null and b/src/main/resources/static/arclist/21.gif differ diff --git a/src/main/resources/static/arclist/22.gif b/src/main/resources/static/arclist/22.gif new file mode 100644 index 0000000000000000000000000000000000000000..96516b8d9368ae6562b4da1541b41390d56e4931 Binary files /dev/null and b/src/main/resources/static/arclist/22.gif differ diff --git a/src/main/resources/static/arclist/23.gif b/src/main/resources/static/arclist/23.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f925c7bc15698964c943551584ed856aafada3c Binary files /dev/null and b/src/main/resources/static/arclist/23.gif differ diff --git a/src/main/resources/static/arclist/24.gif b/src/main/resources/static/arclist/24.gif new file mode 100644 index 0000000000000000000000000000000000000000..97f8b1afabd2f68e61cad14aca71204148f2b1e8 Binary files /dev/null and b/src/main/resources/static/arclist/24.gif differ diff --git a/src/main/resources/static/arclist/25.gif b/src/main/resources/static/arclist/25.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0aa92e2a9db3d4dd3445bcf65b17bbf255da769 Binary files /dev/null and b/src/main/resources/static/arclist/25.gif differ diff --git a/src/main/resources/static/arclist/26.gif b/src/main/resources/static/arclist/26.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc083b7acd7fd055d3c28ca45c4977ee2a127ac4 Binary files /dev/null and b/src/main/resources/static/arclist/26.gif differ diff --git a/src/main/resources/static/arclist/27.gif b/src/main/resources/static/arclist/27.gif new file mode 100644 index 0000000000000000000000000000000000000000..298c3e5a6718736f419edeb42ffcdd572a468f48 Binary files /dev/null and b/src/main/resources/static/arclist/27.gif differ diff --git a/src/main/resources/static/arclist/28.gif b/src/main/resources/static/arclist/28.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6602f91d7568992c053073b11f88e75310dd1a8 Binary files /dev/null and b/src/main/resources/static/arclist/28.gif differ diff --git a/src/main/resources/static/arclist/29.gif b/src/main/resources/static/arclist/29.gif new file mode 100644 index 0000000000000000000000000000000000000000..e24a1801c48d9d149c96ea5bf449697c1ceac93c Binary files /dev/null and b/src/main/resources/static/arclist/29.gif differ diff --git a/src/main/resources/static/arclist/3.gif b/src/main/resources/static/arclist/3.gif new file mode 100644 index 0000000000000000000000000000000000000000..40cfda436f3087c561bbf0dfe60d2591f8f11e71 Binary files /dev/null and b/src/main/resources/static/arclist/3.gif differ diff --git a/src/main/resources/static/arclist/30.gif b/src/main/resources/static/arclist/30.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b25bafff788796f264c03a16436d3c7591fa383 Binary files /dev/null and b/src/main/resources/static/arclist/30.gif differ diff --git a/src/main/resources/static/arclist/31.gif b/src/main/resources/static/arclist/31.gif new file mode 100644 index 0000000000000000000000000000000000000000..e96eee7755733aa3d016eeb0df64964998bfbd45 Binary files /dev/null and b/src/main/resources/static/arclist/31.gif differ diff --git a/src/main/resources/static/arclist/32.gif b/src/main/resources/static/arclist/32.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dbd98f6671c2258c2a9e37526f6e3bc80c964a5 Binary files /dev/null and b/src/main/resources/static/arclist/32.gif differ diff --git a/src/main/resources/static/arclist/33.gif b/src/main/resources/static/arclist/33.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9d42131a9bdb8556647e91fa3915425ab730102 Binary files /dev/null and b/src/main/resources/static/arclist/33.gif differ diff --git a/src/main/resources/static/arclist/34.gif b/src/main/resources/static/arclist/34.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6da2c33ab4139ac5ec7becbb7221008e0805034 Binary files /dev/null and b/src/main/resources/static/arclist/34.gif differ diff --git a/src/main/resources/static/arclist/35.gif b/src/main/resources/static/arclist/35.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1e6ac913b33ee0c0637c4d4e70cb5f7b007a4b8 Binary files /dev/null and b/src/main/resources/static/arclist/35.gif differ diff --git a/src/main/resources/static/arclist/36.gif b/src/main/resources/static/arclist/36.gif new file mode 100644 index 0000000000000000000000000000000000000000..489f0f948d665ef36d803efd512e4727ef673c38 Binary files /dev/null and b/src/main/resources/static/arclist/36.gif differ diff --git a/src/main/resources/static/arclist/37.gif b/src/main/resources/static/arclist/37.gif new file mode 100644 index 0000000000000000000000000000000000000000..734f6d82eb95a917d07f6c9fa17a1a178bb168aa Binary files /dev/null and b/src/main/resources/static/arclist/37.gif differ diff --git a/src/main/resources/static/arclist/38.gif b/src/main/resources/static/arclist/38.gif new file mode 100644 index 0000000000000000000000000000000000000000..17e7e25806a3589f0b47c191367972cce42d8ad5 Binary files /dev/null and b/src/main/resources/static/arclist/38.gif differ diff --git a/src/main/resources/static/arclist/39.gif b/src/main/resources/static/arclist/39.gif new file mode 100644 index 0000000000000000000000000000000000000000..99139e1d1ebbb9123de502b7b8bc0127dc55334f Binary files /dev/null and b/src/main/resources/static/arclist/39.gif differ diff --git a/src/main/resources/static/arclist/4.gif b/src/main/resources/static/arclist/4.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d6f7629968d979878a2defb2d66ece81bdc2af2 Binary files /dev/null and b/src/main/resources/static/arclist/4.gif differ diff --git a/src/main/resources/static/arclist/40.gif b/src/main/resources/static/arclist/40.gif new file mode 100644 index 0000000000000000000000000000000000000000..e62312a2e408f78c44ae7f2ee3ef7b9a3c2fe8f6 Binary files /dev/null and b/src/main/resources/static/arclist/40.gif differ diff --git a/src/main/resources/static/arclist/41.gif b/src/main/resources/static/arclist/41.gif new file mode 100644 index 0000000000000000000000000000000000000000..650d3dd84026c33b31712f94d1c189db2b3e7295 Binary files /dev/null and b/src/main/resources/static/arclist/41.gif differ diff --git a/src/main/resources/static/arclist/42.gif b/src/main/resources/static/arclist/42.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c8e071815a3cfd3a38f1dd477a305010dd8e239 Binary files /dev/null and b/src/main/resources/static/arclist/42.gif differ diff --git a/src/main/resources/static/arclist/43.gif b/src/main/resources/static/arclist/43.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3cb0742d7f2c12475b1fdfca98a46ce3d1dffbc Binary files /dev/null and b/src/main/resources/static/arclist/43.gif differ diff --git a/src/main/resources/static/arclist/44.gif b/src/main/resources/static/arclist/44.gif new file mode 100644 index 0000000000000000000000000000000000000000..2893837985ff6a7ccb6934d2ae51e0c2b6c8f727 Binary files /dev/null and b/src/main/resources/static/arclist/44.gif differ diff --git a/src/main/resources/static/arclist/45.gif b/src/main/resources/static/arclist/45.gif new file mode 100644 index 0000000000000000000000000000000000000000..27a30c15c7b6ae395763d9dd900c9806cc702fa4 Binary files /dev/null and b/src/main/resources/static/arclist/45.gif differ diff --git a/src/main/resources/static/arclist/46.gif b/src/main/resources/static/arclist/46.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcfa48af01be5b1e2170e7e0f64a65cc5cd70a6a Binary files /dev/null and b/src/main/resources/static/arclist/46.gif differ diff --git a/src/main/resources/static/arclist/47.gif b/src/main/resources/static/arclist/47.gif new file mode 100644 index 0000000000000000000000000000000000000000..029cf0feab9660a39b25111936e9b85835bb2a8d Binary files /dev/null and b/src/main/resources/static/arclist/47.gif differ diff --git a/src/main/resources/static/arclist/48.gif b/src/main/resources/static/arclist/48.gif new file mode 100644 index 0000000000000000000000000000000000000000..69f183f043a276acaf62658536b0c4561492578a Binary files /dev/null and b/src/main/resources/static/arclist/48.gif differ diff --git a/src/main/resources/static/arclist/49.gif b/src/main/resources/static/arclist/49.gif new file mode 100644 index 0000000000000000000000000000000000000000..d41e8aab1e210fbdf7cb54247a38b05f086c3072 Binary files /dev/null and b/src/main/resources/static/arclist/49.gif differ diff --git a/src/main/resources/static/arclist/5.gif b/src/main/resources/static/arclist/5.gif new file mode 100644 index 0000000000000000000000000000000000000000..90c3d8675fe1db1359cbf991108c9ca512d8e6aa Binary files /dev/null and b/src/main/resources/static/arclist/5.gif differ diff --git a/src/main/resources/static/arclist/50.gif b/src/main/resources/static/arclist/50.gif new file mode 100644 index 0000000000000000000000000000000000000000..517ce36b0ce45c85349d5c4a18ec36c66fca4079 Binary files /dev/null and b/src/main/resources/static/arclist/50.gif differ diff --git a/src/main/resources/static/arclist/51.gif b/src/main/resources/static/arclist/51.gif new file mode 100644 index 0000000000000000000000000000000000000000..57d4187095a48f5514c77169a7d2e3e40b39fbfe Binary files /dev/null and b/src/main/resources/static/arclist/51.gif differ diff --git a/src/main/resources/static/arclist/52.gif b/src/main/resources/static/arclist/52.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0d0856045d240cd96871afa4fca7c48d8d152d9 Binary files /dev/null and b/src/main/resources/static/arclist/52.gif differ diff --git a/src/main/resources/static/arclist/53.gif b/src/main/resources/static/arclist/53.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cb9aa7961f87230f198c3f85dbd14e5999af3ea Binary files /dev/null and b/src/main/resources/static/arclist/53.gif differ diff --git a/src/main/resources/static/arclist/54.gif b/src/main/resources/static/arclist/54.gif new file mode 100644 index 0000000000000000000000000000000000000000..27019f8ff85d7520cd36fa6f67c6311996228217 Binary files /dev/null and b/src/main/resources/static/arclist/54.gif differ diff --git a/src/main/resources/static/arclist/55.gif b/src/main/resources/static/arclist/55.gif new file mode 100644 index 0000000000000000000000000000000000000000..24284cf39d84e7e70e1633199579330ac996e598 Binary files /dev/null and b/src/main/resources/static/arclist/55.gif differ diff --git a/src/main/resources/static/arclist/56.gif b/src/main/resources/static/arclist/56.gif new file mode 100644 index 0000000000000000000000000000000000000000..92efec6ae180c7e685512017cfd06f75c36afa39 Binary files /dev/null and b/src/main/resources/static/arclist/56.gif differ diff --git a/src/main/resources/static/arclist/57.gif b/src/main/resources/static/arclist/57.gif new file mode 100644 index 0000000000000000000000000000000000000000..9042b9d46350c96c1cfe5cdab490d5c455769c48 Binary files /dev/null and b/src/main/resources/static/arclist/57.gif differ diff --git a/src/main/resources/static/arclist/58.gif b/src/main/resources/static/arclist/58.gif new file mode 100644 index 0000000000000000000000000000000000000000..f36cf58ec2f3298a1669b1732046b7b7e9e6253b Binary files /dev/null and b/src/main/resources/static/arclist/58.gif differ diff --git a/src/main/resources/static/arclist/59.gif b/src/main/resources/static/arclist/59.gif new file mode 100644 index 0000000000000000000000000000000000000000..edf96f0a63e79e6eb80e22a0774137dab2852e5d Binary files /dev/null and b/src/main/resources/static/arclist/59.gif differ diff --git a/src/main/resources/static/arclist/6.gif b/src/main/resources/static/arclist/6.gif new file mode 100644 index 0000000000000000000000000000000000000000..a26b001eb16eeea57653bc56513d56484ea1bb03 Binary files /dev/null and b/src/main/resources/static/arclist/6.gif differ diff --git a/src/main/resources/static/arclist/60.gif b/src/main/resources/static/arclist/60.gif new file mode 100644 index 0000000000000000000000000000000000000000..66d21136de8dc3e26949cd6447d1ac9881e1a2b5 Binary files /dev/null and b/src/main/resources/static/arclist/60.gif differ diff --git a/src/main/resources/static/arclist/61.gif b/src/main/resources/static/arclist/61.gif new file mode 100644 index 0000000000000000000000000000000000000000..034933ec3e3fed2ac2df7b7370289ec2e8feeb13 Binary files /dev/null and b/src/main/resources/static/arclist/61.gif differ diff --git a/src/main/resources/static/arclist/62.gif b/src/main/resources/static/arclist/62.gif new file mode 100644 index 0000000000000000000000000000000000000000..310ec65f1090ed879101d6a739bd41c14b4c2745 Binary files /dev/null and b/src/main/resources/static/arclist/62.gif differ diff --git a/src/main/resources/static/arclist/63.gif b/src/main/resources/static/arclist/63.gif new file mode 100644 index 0000000000000000000000000000000000000000..61652a71687509883c73273bce1bee24d49721f7 Binary files /dev/null and b/src/main/resources/static/arclist/63.gif differ diff --git a/src/main/resources/static/arclist/64.gif b/src/main/resources/static/arclist/64.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a779364b3381afe3c1faf86bf94a29825a43db0 Binary files /dev/null and b/src/main/resources/static/arclist/64.gif differ diff --git a/src/main/resources/static/arclist/65.gif b/src/main/resources/static/arclist/65.gif new file mode 100644 index 0000000000000000000000000000000000000000..2329101a71efc84d76fcdc0e0acab11fa4b832fd Binary files /dev/null and b/src/main/resources/static/arclist/65.gif differ diff --git a/src/main/resources/static/arclist/66.gif b/src/main/resources/static/arclist/66.gif new file mode 100644 index 0000000000000000000000000000000000000000..644748a96ca06c8518ed8618b9df99265748558b Binary files /dev/null and b/src/main/resources/static/arclist/66.gif differ diff --git a/src/main/resources/static/arclist/67.gif b/src/main/resources/static/arclist/67.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbf275ba500778d06fb2709e0e5556ae8afddc16 Binary files /dev/null and b/src/main/resources/static/arclist/67.gif differ diff --git a/src/main/resources/static/arclist/68.gif b/src/main/resources/static/arclist/68.gif new file mode 100644 index 0000000000000000000000000000000000000000..076f0c65cf7162d9244e3ebf86ca56d6b6f05ddb Binary files /dev/null and b/src/main/resources/static/arclist/68.gif differ diff --git a/src/main/resources/static/arclist/69.gif b/src/main/resources/static/arclist/69.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7152f992a4678b0006d25ffe7dd7156b8c5d14b Binary files /dev/null and b/src/main/resources/static/arclist/69.gif differ diff --git a/src/main/resources/static/arclist/7.gif b/src/main/resources/static/arclist/7.gif new file mode 100644 index 0000000000000000000000000000000000000000..d03ca9332de1c91ffe52170f07e061980627fa75 Binary files /dev/null and b/src/main/resources/static/arclist/7.gif differ diff --git a/src/main/resources/static/arclist/70.gif b/src/main/resources/static/arclist/70.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d8b15e7e625ddb98838f58ca001f3163c5fad45 Binary files /dev/null and b/src/main/resources/static/arclist/70.gif differ diff --git a/src/main/resources/static/arclist/71.gif b/src/main/resources/static/arclist/71.gif new file mode 100644 index 0000000000000000000000000000000000000000..d58fcf671bdb51457baa9a88c599e5d4ae9be4e9 Binary files /dev/null and b/src/main/resources/static/arclist/71.gif differ diff --git a/src/main/resources/static/arclist/72.gif b/src/main/resources/static/arclist/72.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4e00bdfda09412d7aa977d227ceef4f4464f288 Binary files /dev/null and b/src/main/resources/static/arclist/72.gif differ diff --git a/src/main/resources/static/arclist/73.gif b/src/main/resources/static/arclist/73.gif new file mode 100644 index 0000000000000000000000000000000000000000..2dc2ea8d2466826476fb71a69639027037b962b8 Binary files /dev/null and b/src/main/resources/static/arclist/73.gif differ diff --git a/src/main/resources/static/arclist/74.gif b/src/main/resources/static/arclist/74.gif new file mode 100644 index 0000000000000000000000000000000000000000..a462a0ada6d9837c8fd2daf7679eb1479967aaa8 Binary files /dev/null and b/src/main/resources/static/arclist/74.gif differ diff --git a/src/main/resources/static/arclist/75.gif b/src/main/resources/static/arclist/75.gif new file mode 100644 index 0000000000000000000000000000000000000000..608d0ad87c31a4e2ac8a28529c7af1a08a0abbbc Binary files /dev/null and b/src/main/resources/static/arclist/75.gif differ diff --git a/src/main/resources/static/arclist/8.gif b/src/main/resources/static/arclist/8.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e97e1329904e64bd19add71102671a47932b9fb Binary files /dev/null and b/src/main/resources/static/arclist/8.gif differ diff --git a/src/main/resources/static/arclist/9.gif b/src/main/resources/static/arclist/9.gif new file mode 100644 index 0000000000000000000000000000000000000000..73fc097a51fd7c2b705ae8dc984cbe7de7b8fef8 Binary files /dev/null and b/src/main/resources/static/arclist/9.gif differ diff --git a/src/main/resources/static/css/bootstrap.min.css b/src/main/resources/static/css/bootstrap.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d2f5a5f3af8fc0299f3f5621a28f54801a2b95b4 --- /dev/null +++ b/src/main/resources/static/css/bootstrap.min.css @@ -0,0 +1,874 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} +.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} +audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} +audio:not([controls]){display:none;} +html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} +a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +a:hover,a:active{outline:0;} +sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} +sup{top:-0.5em;} +sub{bottom:-0.25em;} +img{width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} +#map_canvas img,.google-maps img{max-width:none;} +button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} +button,input{*overflow:visible;line-height:normal;} +button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;} +label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;} +input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} +textarea{overflow:auto;vertical-align:top;} +@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background-color:#ffffff;} +a{color:#0088cc;text-decoration:none;} +a:hover,a:focus{color:#005580;text-decoration:underline;} +.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);} +.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;} +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} +.row:after{clear:both;} +[class*="span"]{float:left;min-height:1px;margin-left:20px;} +.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} +.span12{width:940px;} +.span11{width:860px;} +.span10{width:780px;} +.span9{width:700px;} +.span8{width:620px;} +.span7{width:540px;} +.span6{width:460px;} +.span5{width:380px;} +.span4{width:300px;} +.span3{width:220px;} +.span2{width:140px;} +.span1{width:60px;} +.offset12{margin-left:980px;} +.offset11{margin-left:900px;} +.offset10{margin-left:820px;} +.offset9{margin-left:740px;} +.offset8{margin-left:660px;} +.offset7{margin-left:580px;} +.offset6{margin-left:500px;} +.offset5{margin-left:420px;} +.offset4{margin-left:340px;} +.offset3{margin-left:260px;} +.offset2{margin-left:180px;} +.offset1{margin-left:100px;} +.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} +.row-fluid:after{clear:both;} +.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} +.row-fluid [class*="span"]:first-child{margin-left:0;} +.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} +.row-fluid .span12{width:100%;*width:99.94680851063829%;} +.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} +.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} +.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} +.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} +.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} +.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} +.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} +.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} +.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} +.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} +.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} +.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} +.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} +.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} +.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} +.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} +.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} +.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} +.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} +.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} +.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} +.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} +.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} +.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} +.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} +.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} +.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} +.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} +.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} +.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} +.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} +.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} +.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} +.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} +.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} +[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;} +[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} +.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} +.container:after{clear:both;} +.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} +.container-fluid:after{clear:both;} +p{margin:0 0 10px;} +.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;} +small{font-size:85%;} +strong{font-weight:bold;} +em{font-style:italic;} +cite{font-style:normal;} +.muted{color:#999999;} +a.muted:hover,a.muted:focus{color:#808080;} +.text-warning{color:#c09853;} +a.text-warning:hover,a.text-warning:focus{color:#a47e3c;} +.text-error{color:#b94a48;} +a.text-error:hover,a.text-error:focus{color:#953b39;} +.text-info{color:#3a87ad;} +a.text-info:hover,a.text-info:focus{color:#2d6987;} +.text-success{color:#468847;} +a.text-success:hover,a.text-success:focus{color:#356635;} +.text-left{text-align:left;} +.text-right{text-align:right;} +.text-center{text-align:center;} +h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;} +h1,h2,h3{line-height:40px;} +h1{font-size:38.5px;} +h2{font-size:31.5px;} +h3{font-size:24.5px;} +h4{font-size:17.5px;} +h5{font-size:14px;} +h6{font-size:11.9px;} +h1 small{font-size:24.5px;} +h2 small{font-size:17.5px;} +h3 small{font-size:14px;} +h4 small{font-size:14px;} +.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;} +ul,ol{padding:0;margin:0 0 10px 25px;} +ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} +li{line-height:20px;} +ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} +ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;} +dl{margin-bottom:20px;} +dt,dd{line-height:20px;} +dt{font-weight:bold;} +dd{margin-left:10px;} +.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} +.dl-horizontal:after{clear:both;} +.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} +.dl-horizontal dd{margin-left:180px;} +hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} +abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;} +abbr.initialism{font-size:90%;text-transform:uppercase;} +blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25;} +blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} +blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} +blockquote.pull-right small:before{content:'';} +blockquote.pull-right small:after{content:'\00A0 \2014';} +q:before,q:after,blockquote:before,blockquote:after{content:"";} +address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;} +code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;} +pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;} +pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;} +.pre-scrollable{max-height:340px;overflow-y:scroll;} +.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} +.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} +.label:empty,.badge:empty{display:none;} +a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;} +.label-important,.badge-important{background-color:#b94a48;} +.label-important[href],.badge-important[href]{background-color:#953b39;} +.label-warning,.badge-warning{background-color:#f89406;} +.label-warning[href],.badge-warning[href]{background-color:#c67605;} +.label-success,.badge-success{background-color:#468847;} +.label-success[href],.badge-success[href]{background-color:#356635;} +.label-info,.badge-info{background-color:#3a87ad;} +.label-info[href],.badge-info[href]{background-color:#2d6987;} +.label-inverse,.badge-inverse{background-color:#333333;} +.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} +.btn .label,.btn .badge{position:relative;top:-1px;} +.btn-mini .label,.btn-mini .badge{top:0;} +table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} +.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} +.table th{font-weight:bold;} +.table thead th{vertical-align:bottom;} +.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} +.table tbody+tbody{border-top:2px solid #dddddd;} +.table .table{background-color:#ffffff;} +.table-condensed th,.table-condensed td{padding:4px 5px;} +.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} +.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} +.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} +.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;} +.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;} +.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;} +.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} +.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;} +.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;} +.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5;} +table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;} +.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;} +.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;} +.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;} +.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;} +.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;} +.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;} +.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;} +.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;} +.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;} +.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;} +.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;} +.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;} +.table tbody tr.success>td{background-color:#dff0d8;} +.table tbody tr.error>td{background-color:#f2dede;} +.table tbody tr.warning>td{background-color:#fcf8e3;} +.table tbody tr.info>td{background-color:#d9edf7;} +.table-hover tbody tr.success:hover>td{background-color:#d0e9c6;} +.table-hover tbody tr.error:hover>td{background-color:#ebcccc;} +.table-hover tbody tr.warning:hover>td{background-color:#faf2cc;} +.table-hover tbody tr.info:hover>td{background-color:#c4e3f3;} +form{margin:0 0 20px;} +fieldset{padding:0;margin:0;border:0;} +legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;} +label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;} +input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} +label{display:block;margin-bottom:5px;} +select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;} +input,textarea,.uneditable-input{width:206px;} +textarea{height:auto;} +textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);} +input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;} +input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} +select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;} +select{width:220px;border:1px solid #cccccc;background-color:#ffffff;} +select[multiple],select[size]{height:auto;} +select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} +.uneditable-input{overflow:hidden;white-space:nowrap;} +.uneditable-textarea{width:auto;height:auto;} +input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} +input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} +input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} +.radio,.checkbox{min-height:20px;padding-left:20px;} +.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;} +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} +.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} +.input-mini{width:60px;} +.input-small{width:90px;} +.input-medium{width:150px;} +.input-large{width:210px;} +.input-xlarge{width:270px;} +.input-xxlarge{width:530px;} +input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} +.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} +input,textarea,.uneditable-input{margin-left:0;} +.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} +input.span12,textarea.span12,.uneditable-input.span12{width:926px;} +input.span11,textarea.span11,.uneditable-input.span11{width:846px;} +input.span10,textarea.span10,.uneditable-input.span10{width:766px;} +input.span9,textarea.span9,.uneditable-input.span9{width:686px;} +input.span8,textarea.span8,.uneditable-input.span8{width:606px;} +input.span7,textarea.span7,.uneditable-input.span7{width:526px;} +input.span6,textarea.span6,.uneditable-input.span6{width:446px;} +input.span5,textarea.span5,.uneditable-input.span5{width:366px;} +input.span4,textarea.span4,.uneditable-input.span4{width:286px;} +input.span3,textarea.span3,.uneditable-input.span3{width:206px;} +input.span2,textarea.span2,.uneditable-input.span2{width:126px;} +input.span1,textarea.span1,.uneditable-input.span1{width:46px;} +.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} +.controls-row:after{clear:both;} +.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;} +.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;} +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;} +input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} +.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} +.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;} +.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} +.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} +.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} +.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;} +.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} +.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} +.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} +.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;} +.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} +.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} +.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} +.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;} +.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} +input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} +.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} +.form-actions:after{clear:both;} +.help-block,.help-inline{color:#595959;} +.help-block{display:block;margin-bottom:10px;} +.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} +.input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px;} +.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} +.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;} +.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} +.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;} +.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;} +.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-prepend.input-append .btn-group:first-child{margin-left:0;} +input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} +.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} +.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} +.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} +.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} +.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;} +.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} +.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} +.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} +.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} +.control-group{margin-bottom:10px;} +legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} +.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} +.form-horizontal .control-group:after{clear:both;} +.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} +.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;} +.form-horizontal .help-block{margin-bottom:0;} +.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;} +.form-horizontal .form-actions{padding-left:180px;} +.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #cccccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} +.btn:active,.btn.active{background-color:#cccccc \9;} +.btn:first-child{*margin-left:0;} +.btn:hover,.btn:focus{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} +.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} +.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;} +.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;} +.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;} +.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.btn-block+.btn-block{margin-top:5px;} +input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);} +.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;} +.btn-primary:active,.btn-primary.active{background-color:#003399 \9;} +.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} +.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} +.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} +.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} +.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} +.btn-success:active,.btn-success.active{background-color:#408140 \9;} +.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} +.btn-info:active,.btn-info.active{background-color:#24748c \9;} +.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} +.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} +button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} +button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} +button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} +button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} +.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent;} +.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333333;text-decoration:none;} +[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("images/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;} +.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("images/glyphicons-halflings-white.png");} +.icon-glass{background-position:0 0;} +.icon-music{background-position:-24px 0;} +.icon-search{background-position:-48px 0;} +.icon-envelope{background-position:-72px 0;} +.icon-heart{background-position:-96px 0;} +.icon-star{background-position:-120px 0;} +.icon-star-empty{background-position:-144px 0;} +.icon-user{background-position:-168px 0;} +.icon-film{background-position:-192px 0;} +.icon-th-large{background-position:-216px 0;} +.icon-th{background-position:-240px 0;} +.icon-th-list{background-position:-264px 0;} +.icon-ok{background-position:-288px 0;} +.icon-remove{background-position:-312px 0;} +.icon-zoom-in{background-position:-336px 0;} +.icon-zoom-out{background-position:-360px 0;} +.icon-off{background-position:-384px 0;} +.icon-signal{background-position:-408px 0;} +.icon-cog{background-position:-432px 0;} +.icon-trash{background-position:-456px 0;} +.icon-home{background-position:0 -24px;} +.icon-file{background-position:-24px -24px;} +.icon-time{background-position:-48px -24px;} +.icon-road{background-position:-72px -24px;} +.icon-download-alt{background-position:-96px -24px;} +.icon-download{background-position:-120px -24px;} +.icon-upload{background-position:-144px -24px;} +.icon-inbox{background-position:-168px -24px;} +.icon-play-circle{background-position:-192px -24px;} +.icon-repeat{background-position:-216px -24px;} +.icon-refresh{background-position:-240px -24px;} +.icon-list-alt{background-position:-264px -24px;} +.icon-lock{background-position:-287px -24px;} +.icon-flag{background-position:-312px -24px;} +.icon-headphones{background-position:-336px -24px;} +.icon-volume-off{background-position:-360px -24px;} +.icon-volume-down{background-position:-384px -24px;} +.icon-volume-up{background-position:-408px -24px;} +.icon-qrcode{background-position:-432px -24px;} +.icon-barcode{background-position:-456px -24px;} +.icon-tag{background-position:0 -48px;} +.icon-tags{background-position:-25px -48px;} +.icon-book{background-position:-48px -48px;} +.icon-bookmark{background-position:-72px -48px;} +.icon-print{background-position:-96px -48px;} +.icon-camera{background-position:-120px -48px;} +.icon-font{background-position:-144px -48px;} +.icon-bold{background-position:-167px -48px;} +.icon-italic{background-position:-192px -48px;} +.icon-text-height{background-position:-216px -48px;} +.icon-text-width{background-position:-240px -48px;} +.icon-align-left{background-position:-264px -48px;} +.icon-align-center{background-position:-288px -48px;} +.icon-align-right{background-position:-312px -48px;} +.icon-align-justify{background-position:-336px -48px;} +.icon-list{background-position:-360px -48px;} +.icon-indent-left{background-position:-384px -48px;} +.icon-indent-right{background-position:-408px -48px;} +.icon-facetime-video{background-position:-432px -48px;} +.icon-picture{background-position:-456px -48px;} +.icon-pencil{background-position:0 -72px;} +.icon-map-marker{background-position:-24px -72px;} +.icon-adjust{background-position:-48px -72px;} +.icon-tint{background-position:-72px -72px;} +.icon-edit{background-position:-96px -72px;} +.icon-share{background-position:-120px -72px;} +.icon-check{background-position:-144px -72px;} +.icon-move{background-position:-168px -72px;} +.icon-step-backward{background-position:-192px -72px;} +.icon-fast-backward{background-position:-216px -72px;} +.icon-backward{background-position:-240px -72px;} +.icon-play{background-position:-264px -72px;} +.icon-pause{background-position:-288px -72px;} +.icon-stop{background-position:-312px -72px;} +.icon-forward{background-position:-336px -72px;} +.icon-fast-forward{background-position:-360px -72px;} +.icon-step-forward{background-position:-384px -72px;} +.icon-eject{background-position:-408px -72px;} +.icon-chevron-left{background-position:-432px -72px;} +.icon-chevron-right{background-position:-456px -72px;} +.icon-plus-sign{background-position:0 -96px;} +.icon-minus-sign{background-position:-24px -96px;} +.icon-remove-sign{background-position:-48px -96px;} +.icon-ok-sign{background-position:-72px -96px;} +.icon-question-sign{background-position:-96px -96px;} +.icon-info-sign{background-position:-120px -96px;} +.icon-screenshot{background-position:-144px -96px;} +.icon-remove-circle{background-position:-168px -96px;} +.icon-ok-circle{background-position:-192px -96px;} +.icon-ban-circle{background-position:-216px -96px;} +.icon-arrow-left{background-position:-240px -96px;} +.icon-arrow-right{background-position:-264px -96px;} +.icon-arrow-up{background-position:-289px -96px;} +.icon-arrow-down{background-position:-312px -96px;} +.icon-share-alt{background-position:-336px -96px;} +.icon-resize-full{background-position:-360px -96px;} +.icon-resize-small{background-position:-384px -96px;} +.icon-plus{background-position:-408px -96px;} +.icon-minus{background-position:-433px -96px;} +.icon-asterisk{background-position:-456px -96px;} +.icon-exclamation-sign{background-position:0 -120px;} +.icon-gift{background-position:-24px -120px;} +.icon-leaf{background-position:-48px -120px;} +.icon-fire{background-position:-72px -120px;} +.icon-eye-open{background-position:-96px -120px;} +.icon-eye-close{background-position:-120px -120px;} +.icon-warning-sign{background-position:-144px -120px;} +.icon-plane{background-position:-168px -120px;} +.icon-calendar{background-position:-192px -120px;} +.icon-random{background-position:-216px -120px;width:16px;} +.icon-comment{background-position:-240px -120px;} +.icon-magnet{background-position:-264px -120px;} +.icon-chevron-up{background-position:-288px -120px;} +.icon-chevron-down{background-position:-313px -119px;} +.icon-retweet{background-position:-336px -120px;} +.icon-shopping-cart{background-position:-360px -120px;} +.icon-folder-close{background-position:-384px -120px;width:16px;} +.icon-folder-open{background-position:-408px -120px;width:16px;} +.icon-resize-vertical{background-position:-432px -119px;} +.icon-resize-horizontal{background-position:-456px -118px;} +.icon-hdd{background-position:0 -144px;} +.icon-bullhorn{background-position:-24px -144px;} +.icon-bell{background-position:-48px -144px;} +.icon-certificate{background-position:-72px -144px;} +.icon-thumbs-up{background-position:-96px -144px;} +.icon-thumbs-down{background-position:-120px -144px;} +.icon-hand-right{background-position:-144px -144px;} +.icon-hand-left{background-position:-168px -144px;} +.icon-hand-up{background-position:-192px -144px;} +.icon-hand-down{background-position:-216px -144px;} +.icon-circle-arrow-right{background-position:-240px -144px;} +.icon-circle-arrow-left{background-position:-264px -144px;} +.icon-circle-arrow-up{background-position:-288px -144px;} +.icon-circle-arrow-down{background-position:-312px -144px;} +.icon-globe{background-position:-336px -144px;} +.icon-wrench{background-position:-360px -144px;} +.icon-tasks{background-position:-384px -144px;} +.icon-filter{background-position:-408px -144px;} +.icon-briefcase{background-position:-432px -144px;} +.icon-fullscreen{background-position:-456px -144px;} +.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;} +.btn-group+.btn-group{margin-left:5px;} +.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;} +.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group>.btn+.btn{margin-left:-1px;} +.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px;} +.btn-group>.btn-mini{font-size:10.5px;} +.btn-group>.btn-small{font-size:11.9px;} +.btn-group>.btn-large{font-size:17.5px;} +.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} +.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} +.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;} +.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} +.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;} +.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} +.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} +.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} +.btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;} +.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} +.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;} +.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} +.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;} +.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;} +.btn .caret{margin-top:8px;margin-left:0;} +.btn-large .caret{margin-top:6px;} +.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} +.btn-mini .caret,.btn-small .caret{margin-top:8px;} +.dropup .btn-large .caret{border-bottom-width:5px;} +.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} +.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;} +.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;} +.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} +.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} +.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;} +.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} +.nav{margin-left:0;margin-bottom:20px;list-style:none;} +.nav>li>a{display:block;} +.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;} +.nav>li>a>img{max-width:none;} +.nav>.pull-right{float:right;} +.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;} +.nav li+.nav-header{margin-top:9px;} +.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} +.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} +.nav-list>li>a{padding:3px 15px;} +.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;} +.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;} +.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} +.nav-tabs:after,.nav-pills:after{clear:both;} +.nav-tabs>li,.nav-pills>li{float:left;} +.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} +.nav-tabs{border-bottom:1px solid #ddd;} +.nav-tabs>li{margin-bottom:-1px;} +.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #dddddd;} +.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} +.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#ffffff;background-color:#0088cc;} +.nav-stacked>li{float:none;} +.nav-stacked>li>a{margin-right:0;} +.nav-tabs.nav-stacked{border-bottom:0;} +.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} +.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;} +.nav-pills.nav-stacked>li>a{margin-bottom:3px;} +.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} +.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} +.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;} +.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580;} +.nav-tabs .dropdown-toggle .caret{margin-top:8px;} +.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} +.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} +.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;} +.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#ffffff;background-color:#999999;border-color:#999999;} +.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);} +.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999999;} +.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} +.tabbable:after{clear:both;} +.tab-content{overflow:auto;} +.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} +.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} +.tab-content>.active,.pill-content>.active{display:block;} +.tabs-below>.nav-tabs{border-top:1px solid #ddd;} +.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} +.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;} +.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;} +.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;} +.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} +.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} +.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} +.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} +.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} +.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} +.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} +.nav>.disabled>a{color:#999999;} +.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;} +.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;} +.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} +.navbar-inner:after{clear:both;} +.navbar .container{width:auto;} +.nav-collapse.collapse{height:auto;overflow:visible;} +.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;} +.navbar-text{margin-bottom:0;line-height:40px;color:#777777;} +.navbar-link{color:#777777;}.navbar-link:hover,.navbar-link:focus{color:#333333;} +.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;} +.navbar .btn,.navbar .btn-group{margin-top:5px;} +.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;} +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} +.navbar-form:after{clear:both;} +.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} +.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} +.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} +.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} +.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} +.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;} +.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} +.navbar-fixed-top{top:0;} +.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);} +.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);} +.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} +.navbar .nav.pull-right{float:right;margin-right:0;} +.navbar .nav>li{float:left;} +.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;} +.navbar .nav .dropdown-toggle .caret{margin-top:8px;} +.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;} +.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);} +.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;} +.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;} +.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);} +.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} +.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} +.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} +.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;} +.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;} +.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;} +.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;} +.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;} +.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} +.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} +.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} +.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} +.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;} +.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#ffffff;} +.navbar-inverse .brand{color:#999999;} +.navbar-inverse .navbar-text{color:#999999;} +.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;} +.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;} +.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#ffffff;} +.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;} +.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;} +.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} +.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;} +.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} +.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} +.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} +.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} +.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} +.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;} +.breadcrumb>.active{color:#999999;} +.pagination{margin:20px 0;} +.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} +.pagination ul>li{display:inline;} +.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;} +.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} +.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;} +.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999999;background-color:transparent;cursor:default;} +.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.pagination-centered{text-align:center;} +.pagination-right{text-align:right;} +.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px;} +.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} +.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;} +.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;} +.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px;} +.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px;} +.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} +.pager:after{clear:both;} +.pager li{display:inline;} +.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;} +.pager .next>a,.pager .next>span{float:right;} +.pager .previous>a,.pager .previous>span{float:left;} +.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;} +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} +.thumbnails:after{clear:both;} +.row-fluid .thumbnails{margin-left:0;} +.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} +.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;} +a.thumbnail:hover,a.thumbnail:focus{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} +.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} +.thumbnail .caption{padding:9px;color:#555555;} +.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.alert,.alert h4{color:#c09853;} +.alert h4{margin:0;} +.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;} +.alert-success h4{color:#468847;} +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} +.alert-danger h4,.alert-error h4{color:#b94a48;} +.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} +.alert-info h4{color:#3a87ad;} +.alert-block{padding-top:14px;padding-bottom:14px;} +.alert-block>p,.alert-block>ul{margin-bottom:0;} +.alert-block p+p{margin-top:5px;} +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} +.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);} +.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} +.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} +.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);} +.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);} +.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);} +.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);} +.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} +.hero-unit li{line-height:30px;} +.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;} +.media,.media .media{margin-top:15px;} +.media:first-child{margin-top:0;} +.media-object{display:block;} +.media-heading{margin:0 0 5px;} +.media>.pull-left{margin-right:10px;} +.media>.pull-right{margin-left:10px;} +.media-list{margin-left:0;list-style:none;} +.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-3px;padding:5px 0;} +.tooltip.right{margin-left:3px;padding:0 5px;} +.tooltip.bottom{margin-top:3px;padding:5px 0;} +.tooltip.left{margin-left:-3px;padding:0 5px;} +.tooltip-inner{max-width:200px;padding:8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;} +.popover.right{margin-left:10px;} +.popover.bottom{margin-top:10px;} +.popover.left{margin-left:-10px;} +.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.popover-title:empty{display:none;} +.popover-content{padding:9px 14px;} +.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;} +.popover .arrow{border-width:11px;} +.popover .arrow:after{border-width:10px;content:"";} +.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;} +.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;} +.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;} +.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} +.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} +.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} +.modal.fade.in{top:10%;} +.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} +.modal-header h3{margin:0;line-height:30px;} +.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;} +.modal-form{margin-bottom:0;} +.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} +.modal-footer:after{clear:both;} +.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} +.modal-footer .btn-group .btn+.btn{margin-left:-1px;} +.modal-footer .btn-block+.btn-block{margin-left:0;} +.dropup,.dropdown{position:relative;} +.dropdown-toggle{*margin-bottom:-3px;} +.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} +.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} +.dropdown .caret{margin-top:8px;margin-left:2px;} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;} +.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} +.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;} +.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);} +.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);} +.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999;} +.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;} +.open{*z-index:1000;}.open>.dropdown-menu{display:block;} +.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;} +.pull-right>.dropdown-menu{right:0;left:auto;} +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";} +.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} +.dropdown-submenu{position:relative;} +.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} +.dropdown-submenu:hover>.dropdown-menu{display:block;} +.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;} +.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} +.dropdown-submenu:hover>a:after{border-left-color:#ffffff;} +.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} +.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} +.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.accordion{margin-bottom:20px;} +.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.accordion-heading{border-bottom:0;} +.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} +.accordion-toggle{cursor:pointer;} +.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} +.carousel{position:relative;margin-bottom:20px;line-height:1;} +.carousel-inner{overflow:hidden;width:100%;position:relative;} +.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1;} +.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;} +.carousel-inner>.active{left:0;} +.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;} +.carousel-inner>.next{left:100%;} +.carousel-inner>.prev{left:-100%;} +.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;} +.carousel-inner>.active.left{left:-100%;} +.carousel-inner>.active.right{left:100%;} +.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} +.carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} +.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255, 255, 255, 0.25);border-radius:5px;} +.carousel-indicators .active{background-color:#fff;} +.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);} +.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;} +.carousel-caption h4{margin:0 0 5px;} +.carousel-caption p{margin-bottom:0;} +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} +.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} +button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} +.pull-right{float:right;} +.pull-left{float:left;} +.hide{display:none;} +.show{display:block;} +.invisible{visibility:hidden;} +.affix{position:fixed;} +.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} +.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} +@-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;} +.visible-phone{display:none !important;} +.visible-tablet{display:none !important;} +.hidden-desktop{display:none !important;} +.visible-desktop{display:inherit !important;} +@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}.visible-print{display:none !important;} +@media print{.visible-print{display:inherit !important;} .hidden-print{display:none !important;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .row-fluid [class*="offset"]:first-child{margin-left:0;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade{top:-100px;} .modal.fade.in{top:20px;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px;} .media-object{margin-right:0;margin-left:0;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-top{margin-bottom:20px;} .navbar-fixed-bottom{margin-top:20px;} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .nav-collapse{clear:both;} .nav-collapse .nav{float:none;margin:0 0 10px;} .nav-collapse .nav>li{float:none;} .nav-collapse .nav>li>a{margin-bottom:2px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2;} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999999;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .open>.dropdown-menu{display:block;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}} diff --git a/src/main/resources/static/css/declare.css b/src/main/resources/static/css/declare.css new file mode 100644 index 0000000000000000000000000000000000000000..35480001f7faec2932de57780484836fe72fce5d --- /dev/null +++ b/src/main/resources/static/css/declare.css @@ -0,0 +1,48 @@ +.nk-main { + width: 1200px; +} +.aboutus-menu { + width: 250px; + min-height: 840px; + float: left; + background: #f2f2f2; + border-right: 1px solid #d4d4d4; +} +.aboutus-content { + margin-left: 250px; + background: #fff; + min-height: 840px; +} +.aboutus-main { + border: 1px solid #bfbebe; + border-radius: 0 0 5px 5px; +} +.aboutus-menu li { + font-size: 16px; + height: 60px; + line-height: 60px; + border-bottom: 1px solid #d4d4d4; +} +.aboutus-content h1 { + font-size: 16px; + height: 60px; + line-height: 60px; + border-bottom: 1px solid #d4d4d4; + padding-left: 20px; +} +.aboutus-content-box { + padding: 30px; +} +.aboutus-content-banner { + height: 250px; + background: #eee; + margin-bottom: 30px; +} +.aboutus-content-txt p { + font-size: 18px; + color: #666; + margin-bottom: 20px; +} +p { + line-height: 1.4em; +} diff --git a/src/main/resources/static/css/discuss-detail.css b/src/main/resources/static/css/discuss-detail.css index 96d4a78363b41fef03e256819842376fd8b0e043..85a13ec861eada8a50a247bbb9ec98a8d411841f 100644 --- a/src/main/resources/static/css/discuss-detail.css +++ b/src/main/resources/static/css/discuss-detail.css @@ -17,5 +17,67 @@ .input-size { width: 100%; - height: 35px; -} \ No newline at end of file + height: 25px; +} + +.textarea { + margin: 0px 0px 10px; +} + +.img { + margin: 10px 0px; +} +.se1:hover { + cursor: pointer; +} +.img-box { + display: inline-block; + position: relative; +} +.img-box-1 img{ + width: 92px; + height: 92px; +} +.img-box-1{ + position: relative; +} +.inputCommentFile{ + opacity: 0; +} + +.mt_m-2{ + word-break:break-all; + word-wrap:break-word; +} +.reply{ + word-wrap: break-word; +} + +.list-unstyled.mt-4.bg-gray.p-3.font-size-12.text-muted { + overflow-y: auto; + width: 800px; + max-height: 500px; +} +/*滚动条样式*/ +.list-unstyled.mt-4.bg-gray.p-3.font-size-12.text-muted::-webkit-scrollbar { + width: 6px; + /*height: 4px;*/ +} +.list-unstyled.mt-4.bg-gray.p-3.font-size-12.text-muted::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2); + background: rgba(0,0,0,0.2); +} +.list-unstyled.mt-4.bg-gray.p-3.font-size-12.text-muted::-webkit-scrollbar-track { + /*-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);*/ + border-radius: 0; + /*background: rgba(0,0,0,0.1);*/ + +} +/*隐藏滑动条*/ +/*:is(.list-unstyled.mt-4.bg-gray.p-3.font-size-12.text-muted)::-webkit-scrollbar{*/ +/* height: 200px;*/ +/*}*/ + + + diff --git a/src/main/resources/static/css/global.css b/src/main/resources/static/css/global.css index 8cfc91bee601ec8de06f0eab528b30e4d917f15d..cca5f960c5a8e8eea46eeb3ce6b384d6c4ba316e 100644 --- a/src/main/resources/static/css/global.css +++ b/src/main/resources/static/css/global.css @@ -3,12 +3,29 @@ html { } body { - background: #eee; - font-family: arial, STHeiti, 'Microsoft YaHei', \5b8b\4f53; - font-size: 14px; + background: url('../img/img.png') no-repeat; + font-family: 阿里巴巴普惠体; + font-size: 17px; + background-size:cover; + background-attachment:fixed; height: 100%; } - +.page-link-my{ + position: relative; + display: block; + padding: .5rem .75rem; + margin-left: -1px; + line-height: 1.25; + color: #999999; + background-color: white; + border: 1px solid #dee2e6; +} +.page-item.active .page-link-my { + z-index: 1; + color: #fff; + background-color: #00dc93; + border-color: #00dc93; +} .nk-container { position: relative; height: auto; @@ -21,16 +38,16 @@ body { } header .navbar-brand { - background: url('http://static.nowcoder.com/images/res/logo/logo-v3.png') no-repeat; - background-size: 147px 42px; - width: 147px; - height: 42px; + background: url('../img/maxLogo.png') no-repeat; + background-size: 140px 50px; + width: 140px; + height: 50px; margin: 5px 15px 5px 0; } header .navbar { padding: 5px 0; - font-size: 16px; + font-size: 20px; } header .badge { @@ -66,8 +83,9 @@ footer .company-info li { } .main .container { - background: #fff; + background: #e5e5e5 ; padding: 20px; + opacity: 0.9; } i { @@ -143,3 +161,129 @@ em { font-style: normal; color: red; } +.nk-main { + padding-top: 70px; + padding-bottom: 250px; + margin: 0 auto; + width: 1000px; +} +.aboutus-menu li { + font-size: 16px; + height: 60px; + line-height: 60px; + border-bottom: 1px solid #d4d4d4; +} + +img { + cursor: pointer; + transition: all 0.6s; + border-radius: 10px; +} +.deflation:hover{ + transform: scale(1.4); +} + +/*省略多余的内容*/ +.letter{ + text-overflow:ellipsis; + width:200px; + display:block; + overflow:hidden; + word-break:keep-all; + white-space:nowrap; +} + +.btn-info{ + color: white; + background-color: #00dc93; + border-color: #00dc93; +} + +.btn-secondary{ + color: #666666; + /*background-color: rgba(248,248,248,var(--tw-bg-opacity));*/ + background-color: #bbb; + border-color: #bbb; +} + + +span.emotion { + width: 42px; + height: 20px; +} + +span.emotion:hover { + background-position: 2px -28px +} +.qqFace { + margin-top: 4px; + background: #fff; + padding: 2px; + border: 1px #dfe6f6 solid; +} + +.qqFace table td { + padding: 0px; +} + +.qqFace table td img { + cursor: pointer; + border: 1px #fff solid; +} + +.qqFace table td img:hover { + border: 1px #0066cc solid; +} + +#show { + width: 770px; + margin: 20px auto; + background: #fff; + padding: 5px; + border: 1px solid #DDD; + vertical-align: top; +} + +.sub_btn { + position: absolute; + right: 0px; + top: 0; + display: inline-block; + zoom: 1; + /* zoom and *display = ie7 hack for display:inline-block */ + *display: inline; + vertical-align: baseline; + margin: 0 2px; + outline: none; + cursor: pointer; + text-align: center; + font: 14px/100% Arial, Helvetica, sans-serif; + padding: .5em 2em .55em; + text-shadow: 0 1px 1px rgba(0, 0, 0, .6); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .2); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .2); + box-shadow: 0 1px 2px rgba(0, 0, 0, .2); + color: #e8f0de; + border: solid 1px #538312; + background: #64991e; + background: -webkit-gradient(linear, left top, left bottom, from(#7db72f), to(#4e7d0e)); + background: -moz-linear-gradient(top, #7db72f, #4e7d0e); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db72f', endColorstr='#4e7d0e'); +} + +.sub_btn:hover { + background: #538018; + background: -webkit-gradient(linear, left top, left bottom, from(#6b9d28), to(#436b0c)); + background: -moz-linear-gradient(top, #6b9d28, #436b0c); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b9d28', endColorstr='#436b0c'); +} + + + + + + + diff --git a/src/main/resources/static/css/joinus.css b/src/main/resources/static/css/joinus.css new file mode 100644 index 0000000000000000000000000000000000000000..3fc75b0aaf2859b366200efb946c11f6268310d9 --- /dev/null +++ b/src/main/resources/static/css/joinus.css @@ -0,0 +1,32 @@ +.section-box { + width: 1200px; + margin: auto; +} +.section-title { + font-weight: 700; + margin: 40px auto 30px; + position: relative; +} +.section-title h1 { + color: #333; + font-size: 30px; + font-weight: 700; + text-align: center; +} +.joinus-item { + background-color: #fff; + border-radius: 10px; + box-shadow: 0 4px 6px 0 rgb(0 0 0 / 7%); + cursor: pointer; + display: block; + margin: 20px auto; + padding: 30px 32px 30px 52px; + position: relative; + -webkit-transition: all .1s ease; + transition: all .1s ease; +} +.joinus-item .joinus-title { + color: #333; + font-size: 20px; + font-weight: 700; +} \ No newline at end of file diff --git a/src/main/resources/static/css/letter.css b/src/main/resources/static/css/letter.css index 29f2a19c58337f6ea4365e73c8c73a3aea8807ec..c0e7808e44d9850a72eb8bb5bb1bc0b0e003c800 100644 --- a/src/main/resources/static/css/letter.css +++ b/src/main/resources/static/css/letter.css @@ -12,5 +12,48 @@ .toast { max-width: 100%; - width: 80%; -} \ No newline at end of file + width: 50%; +} +/*滑动条*/ +.list-unstyled.mt-4{ + overflow-y: auto; + width: 900px; + max-height: 400px; +} +/*滚动条样式*/ +.list-unstyled.mt-4::-webkit-scrollbar { + width: 6px; + /*height: 4px;*/ +} +.list-unstyled.mt-4::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2); + background: rgba(0,0,0,0.2); +} +.list-unstyled.mt-4::-webkit-scrollbar-track { + /*-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);*/ + border-radius: 0; + /*background: rgba(0,0,0,0.1);*/ + +} + +.toast-body{ + word-wrap: break-word; +} +.letter { + text-overflow:ellipsis; + width:200px; + display:block; + overflow:hidden; + word-break:keep-all; + white-space:nowrap; +} +/*隐藏滑动条*/ +/*:is(.list-unstyled.mt-4)::-webkit-scrollbar{*/ +/* height: 300px;*/ +/*}*/ + +.text-success-1{ + color: black; +} + diff --git a/src/main/resources/static/css/login.css b/src/main/resources/static/css/login.css index 764fe23bed436674882c395f3d8a457388a3707f..7f1f36469b6206db0d10a0a01808d7b2a93ffc15 100644 --- a/src/main/resources/static/css/login.css +++ b/src/main/resources/static/css/login.css @@ -1,3 +1,4 @@ .main .container { width: 720px; + /*height: 700px;*/ } diff --git a/src/main/resources/static/css/reset.css b/src/main/resources/static/css/reset.css new file mode 100644 index 0000000000000000000000000000000000000000..0c9142a19768137ff10b149c5c4b494127fd995f --- /dev/null +++ b/src/main/resources/static/css/reset.css @@ -0,0 +1,163 @@ +/* + +Copyright (c) 2013, 16CODE(16code.com). All rights reserved. + +*/ + +body, +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +code, +form, +fieldset, +legend, +input, +button, +textarea, +p, +blockquote, +th, +td { + margin: 0; + padding: 0 +} + +fieldset, +img { + border: 0 +} + +:focus { + outline: 0 +} + +address, +caption, +cite, +code, +dfn, +em, +strong, +th, +var, +optgroup { + font-style: normal; + font-weight: normal +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal +} + +abbr, +acronym { + border: 0; + font-variant: normal +} + +input, +button, +textarea, +select, +optgroup, +option { + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit +} + +code, +kbd, +samp, +tt { + font-size: 100% +} + +input, +button, +textarea, +select { + *font-size: 100% +} + +body { + line-height: 1.5 +} + +ol, +ul { + list-style: none +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +caption, +th { + text-align: left +} + +sup, +sub { + font-size: 100%; + vertical-align: baseline +} + +:link, +:visited, +ins { + text-decoration: none +} + +blockquote, +q { + quotes: none +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none +} + +.clearfix { + *zoom: 1 +} + +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0 +} + +.clearfix:after { + clear: both +} + +.unishow { + display: none; +} \ No newline at end of file diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b5981005b156cc398893213be42ee362020ce89c Binary files /dev/null and b/src/main/resources/static/favicon.ico differ diff --git a/src/main/resources/static/img/aboutus.jpg b/src/main/resources/static/img/aboutus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3cedc405e88f603dac64d93d19e6921ef6b6b3df Binary files /dev/null and b/src/main/resources/static/img/aboutus.jpg differ diff --git a/src/main/resources/static/img/collectionQRcode.jpg b/src/main/resources/static/img/collectionQRcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30d07f80f893d1d2f77678cfee933688ab7d60b7 Binary files /dev/null and b/src/main/resources/static/img/collectionQRcode.jpg differ diff --git a/src/main/resources/static/img/img.png b/src/main/resources/static/img/img.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3e9355c0ccc3211db08c8156bc596ed71dc2a0 Binary files /dev/null and b/src/main/resources/static/img/img.png differ diff --git a/src/main/resources/static/img/initalHeaderImg.jpg b/src/main/resources/static/img/initalHeaderImg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..451dcbf6ea06052e97598ef6ad7e21279e5d2a5c Binary files /dev/null and b/src/main/resources/static/img/initalHeaderImg.jpg differ diff --git a/src/main/resources/static/img/mailCode1.png b/src/main/resources/static/img/mailCode1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd8f9d4699d9190d54c15d29619cd8de3e011da8 Binary files /dev/null and b/src/main/resources/static/img/mailCode1.png differ diff --git a/src/main/resources/static/img/mailCode2.png b/src/main/resources/static/img/mailCode2.png new file mode 100644 index 0000000000000000000000000000000000000000..08dfa31e3d6117664bd388b22635c16537b77180 Binary files /dev/null and b/src/main/resources/static/img/mailCode2.png differ diff --git a/src/main/resources/static/img/maxLogo.png b/src/main/resources/static/img/maxLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..0b44bb40c927d3ad768b252089b0df26ae464e22 Binary files /dev/null and b/src/main/resources/static/img/maxLogo.png differ diff --git a/src/main/resources/static/js/discuss.js b/src/main/resources/static/js/discuss.js index d4a600559e3147e95db05a9dfe6e030510171590..cdd56ed959a95c38ea2d86ca56ec7af3b89bbb23 100644 --- a/src/main/resources/static/js/discuss.js +++ b/src/main/resources/static/js/discuss.js @@ -64,4 +64,397 @@ function setDelete() { } } ); -} \ No newline at end of file +} + +/** + 2 * [fileCountCheck 上传文件数量检测] + 3 * @param {[Object]} filesObj [文件对象] + 5 * @param {[Number]} maxFileNum [文件数量上限] + 6 * @return {[Boolean]} [真假] + 7 */ + function fileCountCheck(filesObj, maxFileNum) { + + // console.log(filesObj.files); // 文件对象 + + if (window.File && window.FileList) { + + var fileCount = filesObj.files.length; + + if (fileCount >= maxFileNum) { + + // 不符合数量的处理 + window.alert('文件数不能超过6个,你选择了' + fileCount + '个'); + setTimeout(function(){ + // // 刷新页面 + window.location.reload(); + }, 2000); + return false; + + } else { + + // 符合数量的处理 + return true; + + } + + } else { + + // 不支持FileAPI + window.alert('抱歉,你的浏览器不支持FileAPI,请升级浏览器!'); + + return false; + + } +} +//帖子的点击 +window.onload=function(){ + var onSubmit = document.getElementById('submitDiscussComment'); + var input=document.getElementById("inputFile"); + + // 当用户上传时触发事件--> + input.onchange=function(){ + readFile(this); + fileCountCheck(this,7); + } + onSubmit.onclick=function (){ + sendFile(this); + } + + //处理图片并添加都dom中的函数 + var readFile=function(obj){ + // 获取input里面的文件组 + var fileList=obj.files; + + //对文件组进行遍历,可以到控制台打印出fileList去看看 + for(var i=0;i + reader.onload=function(e){ + var div=document.createElement('div'); + div.style.display="inline-block"; + div.style.margin="10px" + var imgBox = document.getElementById('img-box') + div.innerHTML= ''; + imgBox.appendChild(div); + + div.onclick = function (){ + $(this).remove(); + } + } + } + } + + //发送文件 + function sendFile() { + var submitArr = [], myFile, fileList = []; + $('.subPic').each(function () { + submitArr.push({ + name: $(this).attr('alt'), + }); + myFile = base64toFile($(this).attr('src'), name) + fileList.push(myFile) + }); + if (fileList.length > 6) { + window.alert("一次最多放6张图片") + } + var formData = new FormData() + for (var i = 0; i < fileList.length; i++) { + if (!fileList[i].name.match(/.jpg|.gif|.png|.jpeg|.bmp/i)) { + return window.alert("图片格式不正确") + } + formData.append("file", fileList[i]) + } + formData.append("entityId", $("#entityId").val()) + formData.append("entityType", $("#entityType").val()) + formData.append("content",$("#contentInput").val()) + $.ajax({ + url: CONTEXT_PATH + "/comment/add/" + $("#entityId").val(), + type: 'post', + data: formData, + dataType: 'json', + processData: false, // 告诉jQuery不要去处理发送的数据 + contentType: false, // 告诉jQuery不要去设置Content-Type请求头 + success: function (result) { + if (result.code==0){ + window.alert("发送成功") + setTimeout(window.location.reload(),2000) + }else{ + Toast(result.msg); + } + }, + error:function (){ + Toast("提交失败"); + } + }) + } +} +//回复帖子的点击 +function replyClick(entityType,id,entityId,postId){ + var submitArr = [], myFile, fileList = []; + $('.subPic').each(function () { + submitArr.push({ + name: $(this).attr('alt'), + }); + myFile = base64toFile($(this).attr('src'), name) + fileList.push(myFile) + }); + + var contentId = "reply-text-"+id; + var formData = new FormData() + for (var i = 0; i < fileList.length; i++) { + if (!fileList[i].name.match(/.jpg|.gif|.png|.jpeg|.bmp/i)) { + return window.alert("图片格式不正确") + } + formData.append("file", fileList[i]) + } + formData.append("entityType",entityType); + formData.append("entityId",entityId); + formData.append("content",$("#"+contentId+"").val()); + $.ajax({ + url:CONTEXT_PATH+"/comment/add/"+postId, + type:"post", + data: formData, + dataType: 'json', + processData: false, // 告诉jQuery不要去处理发送的数据 + contentType: false, // 告诉jQuery不要去设置Content-Type请求头 + success: function (result) { + console.log(result); + if (result.code==0){ + alert("发送成功") + setTimeout(window.location.reload(),2000) + }else{ + Toast(result.msg); + } + }, + error:function (){ + Toast("提交失败"); + } + }) +} +//回复帖子的图片展示 +function previewFile(obj,value){ + var input=document.getElementById(''+value); + // 获取input里面的文件组 + var fileList=obj.files; + //对文件组进行遍历,可以到控制台打印出fileList去看看 + for(var i=0;i + reader.onload=function(e){ + var div=document.createElement('div'); + div.style.display="inline-block"; + div.style.margin="10px" + div.innerHTML= ''; + + var id ="imgBox-"+value + var imgBox = document.getElementById(id) + imgBox.appendChild(div); + + div.onclick = function (){ + $(this).remove(); + } + } + } +} + +function previewReplyCommentFile(obj,value){ + var input=document.getElementById('replyComment-'+value); + // 获取input里面的文件组 + var fileList=obj.files; + //对文件组进行遍历,可以到控制台打印出fileList去看看 + for(var i=0;i + reader.onload=function(e){ + var div=document.createElement('div'); + div.style.display="inline-block"; + div.style.margin="10px" + div.innerHTML= ''; + + var id ="imgReplyBox-"+value + var imgBox = document.getElementById(id) + imgBox.appendChild(div); + + div.onclick = function (){ + $(this).remove(); + } + } + } +} + +function replyCommentClick(entityType,entityId,targetId,postId,contentId,value){ + console.log(contentId) + var submitArr = [], myFile, fileList = []; + $('.subPic').each(function () { + submitArr.push({ + name: $(this).attr('alt'), + }); + myFile = base64toFile($(this).attr('src'), name) + fileList.push(myFile) + }); + + var formData = new FormData() + for (var i = 0; i < fileList.length; i++) { + if (!fileList[i].name.match(/.jpg|.gif|.png|.jpeg|.bmp/i)) { + return window.alert("图片格式不正确") + } + formData.append("file", fileList[i]) + } + formData.append("entityType",entityType); + formData.append("entityId",entityId); + formData.append("targetId",targetId); + formData.append("content",$("#"+contentId+"").val()); + $.ajax({ + url:CONTEXT_PATH+"/comment/add/"+postId, + type:"post", + data: formData, + dataType: 'json', + processData: false, // 告诉jQuery不要去处理发送的数据 + contentType: false, // 告诉jQuery不要去设置Content-Type请求头 + success: function (data) { + //console.log(result); + // if (result.code==0){ + //console.log(result.data) + alert("发送成功") + //$(".replyList").html(data) + setTimeout(window.location.reload(),2000) + + // }else{ + // Toast(result.msg); + // } + }, + error:function (data){ + Toast("提交失败"); + } + }) +} + +//滚动条最底部 +//$(".list-unstyled.mt-4.bg-gray.p-3").scrollTop($(".list-unstyled.mt-4.bg-gray.p-3").prop('scrollHeight')); + + +//回帖的表情js +$(function() { + $('.emotion').qqFace({ + id: 'facebox', + assign: 'contentInput', + path: '/community/arclist/' //表情存放的路径 + }); + $(".sub_btn").click(function() { + var str = $("#contentInput").val(); + $("#show").html(replace_em(str)); + + }); +}); + + +//回复评论的表情js +function sub_btn(obj,value){ + var replyText = "reply-text-"+value + var emotion = "emotion-"+value + $('#'+emotion).qqFace({ + id: 'facebox', + assign: ''+replyText, + path: '/community/arclist/' //表情存放的路径 + }); + $("#sub_btn-"+value).click(function() { + var str = $("#"+replyText).val(); + $("#show").html(replace_em(str)); + }); +} + +//回复评论的回复的表情js +function sub_btn2(obj,value,key){ + var replyText = "replyComment-text-"+value + var emotion = "emotion2-"+value + $('#'+emotion).qqFace({ + id: 'facebox', + assign: ''+replyText, + path: '/community/arclist/' //表情存放的路径 + }); + $("#sub_btn2-"+value).click(function() { + var str = $("#"+replyText).val(); + $("#show").html(replace_em(str)); + }); +} +//图片放大 +function expandPicture(obj,id){ + var toId = $("#deflation-"+id) + imgShow("#outerdiv","#innerdiv","#bigimg",toId); +} +function expandPicture_2(obj,id,value){ + var toId = $("#comment-"+id+"-"+value) + imgShow("#outerdiv","#innerdiv","#bigimg",toId); +} +function expandPicture_3(obj,id,value){ + var toId = $("#reply-picture-"+id+"-"+value) + imgShow("#outerdiv","#innerdiv","#bigimg",toId); +} + +// $(function(){ +// $("#plus").click(function(){ +// var _this=$(this);//将当前的pimg元素作为_this传入函数 +// imgShow("#outerdiv","#innerdiv","#bigimg",_this); +// }); +// }); + +function imgShow(outerdiv,innerdiv,bigimg,id){ + var src = id.attr("src") + + //$("#deflation-"+_this).attr("src"); + // var src = _this.attr("src");//获取当前点击的pimg元素中的src属性 + $(bigimg).attr("src", src);//设置#bigimg元素的src属性 + + /*获取当前点击图片的真实大小,并显示弹出层及大图*/ + $("").attr("src", src).load(function(){ + var windowW = $(window).width();//获取当前窗口宽度 + var windowH = $(window).height();//获取当前窗口高度 + var realWidth = this.width;//获取图片真实宽度 + var realHeight = this.height;//获取图片真实高度 + var imgWidth, imgHeight; + var scale = 0.8;//缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放 + + if(realHeight>windowH*scale) {//判断图片高度 + imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放 + imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度 + if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度 + imgWidth = windowW*scale;//再对宽度进行缩放 + } + } else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度 + imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放 + imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度 + } else {//如果图片真实高度和宽度都符合要求,高宽不变 + imgWidth = realWidth; + imgHeight = realHeight; + } + $(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放 + + var w = (windowW-imgWidth)/2;//计算图片与窗口左边距 + var h = (windowH-imgHeight)/2;//计算图片与窗口上边距 + $(innerdiv).css({"top":h,"left":w});//设置#innerdiv的top和left属性 + $(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg + }); + + $(outerdiv).click(function(){//再次点击淡出消失弹出层 + $(this).fadeOut("fast"); + }); +} + + + + diff --git a/src/main/resources/static/js/global.js b/src/main/resources/static/js/global.js index 79a3e683bebaaee0cc01defe0d5b8d28f7aec5df..1f179015365e4e9e26743c1f795b967340829585 100644 --- a/src/main/resources/static/js/global.js +++ b/src/main/resources/static/js/global.js @@ -31,3 +31,60 @@ window.alert = function(message) { $(".alert-box .modal-body p").text(message); $(".alert-box").modal("show"); } + +function Toast(msg,duration){ + duration=isNaN(duration)?3000:duration; + var m = document.createElement('div'); + m.innerHTML = msg; + m.style.cssText="font-size: .32rem;color: rgb(255, 255, 255);background-color: rgba(0, 0, 0, 0.6);padding: 10px 15px;margin: 0 0 0 -60px;border-radius: 4px;position: fixed; top: 25%;left: 50%;width: 130px;text-align: center;"; + document.body.appendChild(m); + setTimeout(function() { + var d = 0.5; + m.style.opacity = '0'; + setTimeout(function() { document.body.removeChild(m) }, d * 1000); + }, duration); +} + +//第一个参数dataUrl是一个base64的字符串。第二个参数是文件名可以随意命名 +function base64toFile(dataurl, filename = 'file') { + let arr = dataurl.split(','); + let mime = arr[0].match(/:(.*?);/)[1]; + // suffix是该文件的后缀 + let suffix = mime.split('/')[1]; + // atob 对经过 base-64 编码的字符串进行解码 + let bstr = atob(arr[1]); + // n 是解码后的长度 + let n = bstr.length; + // Uint8Array 数组类型表示一个 8 位无符号整型数组 初始值都是 数子0 + let u8arr = new Uint8Array(n); + // charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数 + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + // new File返回File对象 第一个参数是 ArraryBuffer 或 Bolb 或Arrary 第二个参数是文件名 + // 第三个参数是 要放到文件中的内容的 MIME 类型 + return new File([u8arr], `${filename}.${suffix}`, { + type: mime, + }); +} + + +//换行控制 +$(function(){ + var temp= $("#articleDetail").text() + var temp2 = $("#indexPost").text() + var m = replace_em(temp) + var m2 = replace_em(temp2) + $("#articleDetail").html(m); + $("#indexPost").html(m2); +}); + + +//查看结果 +function replace_em(str) { + str = str.replace(/\/g, '>'); + str = str.replace(/\n/g, ''); + str = str.replace(/\[em_([0-9]*)\]/g, ''); + return str; +} diff --git a/src/main/resources/static/js/index.js b/src/main/resources/static/js/index.js index aee404fdd69d468bfe8d7124a3d6640ecb797d05..c87b767c9f048fb7d04ee797430df108ef65e112 100644 --- a/src/main/resources/static/js/index.js +++ b/src/main/resources/static/js/index.js @@ -12,31 +12,57 @@ function publish() { // xhr.setRequestHeader(header,token); // }); + var submitArr = [], myFile, fileList = []; + $('.subPic').each(function () { + submitArr.push({ + name: $(this).attr('alt'), + }); + myFile = base64toFile($(this).attr('src'), name) + fileList.push(myFile) + }); + if (fileList.length > 6) { + window.alert("一次最多放6张图片") + } + var formData = new FormData() + for (var i = 0; i < fileList.length; i++) { + if (!fileList[i].name.match(/.jpg|.gif|.png|.jpeg|.bmp/i)) { + return window.alert("图片格式不正确") + } + formData.append("file", fileList[i]) + } //获取标题和内容 var title = $("#recipient-name").val(); var content = $("#message-text").val(); + formData.append("title",title) + formData.append("content",content) //发送异步请求 - $.post( - CONTEXT_PATH+"/discuss/add", - {"title":title,"content":content}, - //回调 - function (data) { - data = $.parseJSON(data); - //在提示框显示返回信息 - $("#hintBody").text(data.msg); - //显示提示框 - $("#hintModal").modal("show"); - // 2秒后,自动隐藏提示框 - setTimeout(function(){ - $("#hintModal").modal("hide"); - // 刷新页面 - if(data.code == 0) { + $.ajax({ + url:CONTEXT_PATH+"/discuss/add", + type:"post", + data: formData, + dataType: 'json', + processData: false, // 告诉jQuery不要去处理发送的数据 + contentType: false, // 告诉jQuery不要去设置Content-Type请求头 + success: function (result) { + console.log(result); + if (result.code==0){ + //在提示框显示返回信息 + $("#hintBody").text(result.msg); + //显示提示框 + $("#hintModal").modal("show"); + // 2秒后,自动隐藏提示框 + setTimeout(function(){ + $("#hintModal").modal("hide"); + // // 刷新页面 window.location.reload(); - } - }, 2000); + }, 2000); + }else{ + alert(result.msg); + } + }, + error:function (){ + alert("提交失败"); } - ); - - + }); } \ No newline at end of file diff --git a/src/main/resources/static/js/jquery.min.js b/src/main/resources/static/js/jquery.min.js new file mode 100644 index 0000000000000000000000000000000000000000..bc3fbc81b261b9dd759fd83917b93664138faa4a --- /dev/null +++ b/src/main/resources/static/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;ba",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="t",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,"",""],legend:[1,"",""],thead:[1,"",""],tr:[2,"",""],td:[3,"",""],col:[2,"",""],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X",""]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>$2>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/ + + + + diff --git a/src/main/resources/templates/mail/activation.html b/src/main/resources/templates/mail/activation.html index 0e70bf73dc0f73f502c3f02436ed087304e045e4..14e255c444e48a4716c902d1f1b68129cc3bedf7 100644 --- a/src/main/resources/templates/mail/activation.html +++ b/src/main/resources/templates/mail/activation.html @@ -2,8 +2,8 @@ - - 牛客网-激活账号 + + 唠嗑网-激活账号 @@ -11,9 +11,9 @@ xxx@xxx.com, 您好! - 您正在注册牛客网, 这是一封激活邮件, 请点击 + 您正在注册唠嗑网, 这是一封激活邮件, 请点击 此链接, - 激活您的牛客账号! + 激活您的唠嗑账号! diff --git a/src/main/resources/templates/mail/forget.html b/src/main/resources/templates/mail/forget.html index f47a70822e7ad5d7829bda1dfc578209476be230..f221537cc69f2b6e6aa85157546bc01750861492 100644 --- a/src/main/resources/templates/mail/forget.html +++ b/src/main/resources/templates/mail/forget.html @@ -3,7 +3,7 @@ - 牛客网-忘记密码 + 唠嗑网-忘记密码 @@ -11,7 +11,7 @@ xxx@xxx.com, 您好! - 您正在找回牛客账号的密码, 本次操作的验证码为 u5s6dt , + 您正在找回唠嗑网账号的密码, 本次操作的验证码为 u5s6dt , 有效时间5分钟, 请您及时进行操作! diff --git a/target/classes/templates/site/profile.html b/src/main/resources/templates/site/aboutus.html similarity index 67% rename from target/classes/templates/site/profile.html rename to src/main/resources/templates/site/aboutus.html index 739f37ff40013b880c8024980a71477a615e20e5..ac0692a84deddfb9827e3987d1b5b34b4569b4d9 100644 --- a/target/classes/templates/site/profile.html +++ b/src/main/resources/templates/site/aboutus.html @@ -3,10 +3,11 @@ - + - 牛客网-个人主页 + + 关于我们-唠嗑网 @@ -59,49 +60,44 @@ - - - - - - - 个人信息 - - - 我的帖子 - - - 我的回复 - + + + + + + 关于我们 + 友情链接 + 联系我们 + 加入我们 + 免责申明 + - - - - - - nowcoder - - 关注TA - - - 注册于 - 2015-06-12 15:20:12 - + + 关于我们 + + + + - - 关注了 5 人 - 关注者 123 人 - 获得了 87 个赞 + + + + 唠嗑网属于个人创造的论坛网站,唠嗑网成立于 2022 年 3 月。欢迎各位小伙伴参与使用 + + 微信账号:CJJ17723861867 + + 邮箱地址:1173998166@qq.com + + -
- 您正在注册牛客网, 这是一封激活邮件, 请点击 + 您正在注册唠嗑网, 这是一封激活邮件, 请点击 此链接, - 激活您的牛客账号! + 激活您的唠嗑账号!
- 您正在找回牛客账号的密码, 本次操作的验证码为 u5s6dt , + 您正在找回唠嗑网账号的密码, 本次操作的验证码为 u5s6dt , 有效时间5分钟, 请您及时进行操作!
唠嗑网属于个人创造的论坛网站,唠嗑网成立于 2022 年 3 月。欢迎各位小伙伴参与使用
微信账号:CJJ17723861867
邮箱地址:1173998166@qq.com