├── go.mod ├── public └── resource │ ├── images │ ├── bg.jpg │ └── overlay.png │ ├── js │ ├── main.js │ └── jquery.min.js │ └── css │ └── main.css ├── README.md ├── app ├── model │ ├── diary │ │ ├── diary.go │ │ ├── diary_entity.go │ │ └── diary_model.go │ └── return │ │ └── return.go ├── api │ └── diary │ │ └── diary.go └── utils │ └── string.go ├── main.go ├── router └── router.go ├── config └── config.toml ├── pa.py ├── template └── index.html └── LICENSE /go.mod: -------------------------------------------------------------------------------- 1 | module TianGou 2 | 3 | require github.com/gogf/gf v1.11.7 4 | 5 | go 1.12 6 | -------------------------------------------------------------------------------- /public/resource/images/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programming-With-Love/TianGou/HEAD/public/resource/images/bg.jpg -------------------------------------------------------------------------------- /public/resource/images/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programming-With-Love/TianGou/HEAD/public/resource/images/overlay.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 舔狗日记 2 | 3 | 基于前端页面增加了,提交功能. 4 | 5 | [线上地址](http://tiangou.p00q.cn) 6 | 7 | [前端项目地址](https://github.com/hhx546642451/tiangou) 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/model/diary/diary.go: -------------------------------------------------------------------------------- 1 | // ============================================================================ 2 | // This is auto-generated by gf cli tool only once. Fill this file as you wish. 3 | // ============================================================================ 4 | 5 | package diary 6 | 7 | // Fill with you ideas below. -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | _ "TianGou/boot" 5 | _ "TianGou/router" 6 | "github.com/gogf/gf/frame/g" 7 | ) 8 | 9 | func main() { 10 | //增加静态资源路径 11 | s := g.Server() 12 | s.SetIndexFolder(true) 13 | s.AddStaticPath("/js", "public/resource/js") 14 | s.AddStaticPath("/css", "public/resource/css") 15 | s.AddStaticPath("/images", "public/resource/images") 16 | //启动 17 | s.Run() 18 | } 19 | -------------------------------------------------------------------------------- /router/router.go: -------------------------------------------------------------------------------- 1 | package router 2 | 3 | import ( 4 | "TianGou/app/api/diary" 5 | "github.com/gogf/gf/frame/g" 6 | "github.com/gogf/gf/net/ghttp" 7 | ) 8 | 9 | func init() { 10 | s := g.Server() 11 | s.BindHandler("/", func(r *ghttp.Request) { 12 | r.Response.WriteTpl("index.html") 13 | }) 14 | s.BindHandler("GET:/diary", func(r *ghttp.Request){ 15 | diary.Get(r) 16 | }) 17 | s.BindHandler("POST:/diary", func(r *ghttp.Request){ 18 | diary.Post(r) 19 | }) 20 | 21 | } 22 | -------------------------------------------------------------------------------- /app/model/return/return.go: -------------------------------------------------------------------------------- 1 | package _return 2 | 3 | type Entity struct { 4 | Data interface{} `json:"Data"` 5 | Code int `json:"Code"` 6 | Msg string `json:"Msg"` 7 | } 8 | const OkMsg string = "成功" 9 | const OKCode =0 10 | const ErrMsg string = "错误" 11 | const ErrCode =100 12 | func Ok(data interface{}) Entity { 13 | return Entity{Data:data,Code:OKCode,Msg: OkMsg} 14 | } 15 | func Err()Entity { 16 | return Entity{Code:ErrCode,Msg: ErrMsg} 17 | } 18 | func OkNoData() Entity { 19 | return Entity{Code:OKCode,Msg: OkMsg} 20 | } 21 | func ErrAddMsg(msg string)Entity { 22 | return Entity{Code:ErrCode,Msg: msg} 23 | } -------------------------------------------------------------------------------- /config/config.toml: -------------------------------------------------------------------------------- 1 | # HTTP Server 2 | [server] 3 | Address = ":8199" 4 | ServerRoot = "public" 5 | ServerAgent = "gf-app" 6 | LogPath = "/tmp/log/gf-app/server" 7 | 8 | # Logger. 9 | [logger] 10 | Path = "/tmp/log/gf-app" 11 | Level = "all" 12 | Stdout = true 13 | 14 | # Template. 15 | [viewer] 16 | Path = "template" 17 | DefaultFile = "index.html" 18 | Delimiters = ["${", "}"] 19 | 20 | # Database. 21 | [database] 22 | link = "mysql:TianGou:123123@tcp(127.0.0.1:3306)/TianGou" 23 | debug = true 24 | # Database logger. 25 | [database.logger] 26 | Path = "/tmp/log/gf-app/sql" 27 | Level = "all" 28 | Stdout = true -------------------------------------------------------------------------------- /app/api/diary/diary.go: -------------------------------------------------------------------------------- 1 | package diary 2 | 3 | import ( 4 | "TianGou/app/model/diary" 5 | _return "TianGou/app/model/return" 6 | "TianGou/app/utils" 7 | "fmt" 8 | "github.com/gogf/gf/net/ghttp" 9 | "math/rand" 10 | ) 11 | 12 | func Get(r *ghttp.Request) { 13 | all, err := diary.Model.All() 14 | if err==nil { 15 | _return.Ok(all[0].Content) 16 | r.Response.Writeln(_return.Ok(all[rand.Intn(len(all))])) 17 | } 18 | 19 | } 20 | func Post(r *ghttp.Request) { 21 | c:=r.GetFormString("content") 22 | all, _ := diary.Model.All() 23 | for _, entity := range all { 24 | s := utils.Params() 25 | //str hash 值 26 | hash := s.Simhash(entity.Content) 27 | ////str2 hash 值 28 | hash2 := s.Simhash(c) 29 | ////计算相似度 30 | sm := s.Similarity(hash, hash2) 31 | //距离 32 | ts := s.HammingDistance(hash, hash2) 33 | 34 | if 0.95 0 { 30 | tot.Add(tot, big.NewInt(1)) 31 | ts := new(big.Int) 32 | ts.Sub(c_result, big.NewInt(1)) 33 | c_result.And(c_result, ts) 34 | } 35 | return tot 36 | } 37 | 38 | /** 39 | 相似度 40 | */ 41 | func (s *SimHash) Similarity(hash, other *big.Int) float64 { 42 | a := new(big.Rat) 43 | a.SetInt(hash) 44 | b := new(big.Rat) 45 | b.SetInt(other) 46 | val := new(big.Rat) 47 | if a.Cmp(b) > 0 { 48 | val.Quo(b, a) 49 | f, _ := val.Float64() 50 | return f 51 | } 52 | val.Quo(a, b) 53 | f, _ := val.Float64() 54 | return f 55 | 56 | } 57 | 58 | /** 59 | 海明距离hash 60 | */ 61 | func (s *SimHash) Simhash(str string) *big.Int { 62 | m := strings.Split(str, ",") 63 | 64 | token_int := make([]int, s.HashBits) 65 | for i := 0; i < len(m); i++ { 66 | temp := m[i] 67 | t := s.Hash(temp) 68 | //fmt.Println(t) 69 | for j := 0; j < s.HashBits; j++ { 70 | fbIng := big.NewInt(1) 71 | bitMask := fbIng.Lsh(fbIng, uint(j)) 72 | statusBig := new(big.Int) 73 | statusBig.And(t, bitMask) 74 | if statusBig.Cmp(big.NewInt(0)) != 0 { 75 | token_int[j] += 1 76 | } else { 77 | token_int[j] -= 1 78 | } 79 | } 80 | 81 | } 82 | fingerprint := big.NewInt(0) 83 | for i := 0; i < s.HashBits; i++ { 84 | if token_int[i] >= 0 { 85 | oneBig := big.NewInt(1) 86 | tbig := big.NewInt(0) 87 | fingerprint.Add(fingerprint, tbig.Lsh(oneBig, uint(i))) 88 | } 89 | } 90 | return fingerprint 91 | } 92 | 93 | /** 94 | 初始化 95 | */ 96 | func Params() (s *SimHash) { 97 | s = &SimHash{} 98 | s.HashBits = 128 99 | return s 100 | } 101 | 102 | /** 103 | hash 值 104 | */ 105 | func (s *SimHash) Hash(token string) *big.Int { 106 | if token == "" { 107 | return big.NewInt(0) 108 | } else { 109 | //fmt.Println(token) 110 | bigIntToken := big.NewInt(int64(token[0])) 111 | funit := new(big.Int) 112 | x := funit.Lsh(bigIntToken, 7) 113 | m := big.NewInt(1000003) 114 | mslB := big.NewInt(1) 115 | mask := mslB.Lsh(mslB, uint(s.HashBits)) 116 | tsk_b := mask.Sub(mask, big.NewInt(1)) 117 | for i := 0; i < len(token); i++ { 118 | tokens := big.NewInt(int64(token[i])) 119 | x.Mul(x, m) 120 | x.Xor(x, tokens) 121 | x.And(x, tsk_b) 122 | } 123 | x = x.Xor(x, big.NewInt(int64(len(token)))) 124 | if x == big.NewInt(-1) { 125 | x = big.NewInt(-2) 126 | } 127 | return x 128 | } 129 | } -------------------------------------------------------------------------------- /template/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 舔狗日记 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 27 | 31 |
32 |
33 |

舔狗日记

34 |

日期:

35 |

内容:

36 | 37 | 38 |
39 |
40 | 41 | 42 | 98 | 99 | -------------------------------------------------------------------------------- /public/resource/js/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dimension by HTML5 UP 3 | html5up.net | @ajlkn 4 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | */ 6 | 7 | (function($) { 8 | 9 | skel.breakpoints({ 10 | xlarge: '(max-width: 1680px)', 11 | large: '(max-width: 1280px)', 12 | medium: '(max-width: 980px)', 13 | small: '(max-width: 736px)', 14 | xsmall: '(max-width: 480px)', 15 | xxsmall: '(max-width: 360px)' 16 | }); 17 | 18 | $(function() { 19 | 20 | var $window = $(window), 21 | $body = $('body'), 22 | $wrapper = $('#wrapper'), 23 | $header = $('#header'), 24 | $footer = $('#footer'), 25 | $main = $('#main'), 26 | $main_articles = $main.children('article'); 27 | 28 | // Disable animations/transitions until the page has loaded. 29 | $body.addClass('is-loading'); 30 | 31 | $window.on('load', function() { 32 | window.setTimeout(function() { 33 | $body.removeClass('is-loading'); 34 | }, 100); 35 | }); 36 | 37 | // Fix: Placeholder polyfill. 38 | $('form').placeholder(); 39 | 40 | // Fix: Flexbox min-height bug on IE. 41 | if (skel.vars.IEVersion < 12) { 42 | 43 | var flexboxFixTimeoutId; 44 | 45 | $window.on('resize.flexbox-fix', function() { 46 | 47 | clearTimeout(flexboxFixTimeoutId); 48 | 49 | flexboxFixTimeoutId = setTimeout(function() { 50 | 51 | if ($wrapper.prop('scrollHeight') > $window.height()) 52 | $wrapper.css('height', 'auto'); 53 | else 54 | $wrapper.css('height', '100vh'); 55 | 56 | }, 250); 57 | 58 | }).triggerHandler('resize.flexbox-fix'); 59 | 60 | } 61 | 62 | // Nav. 63 | var $nav = $header.children('nav'), 64 | $nav_li = $nav.find('li'); 65 | 66 | // Add "middle" alignment classes if we're dealing with an even number of items. 67 | if ($nav_li.length % 2 == 0) { 68 | 69 | $nav.addClass('use-middle'); 70 | $nav_li.eq( ($nav_li.length / 2) ).addClass('is-middle'); 71 | 72 | } 73 | 74 | // Main. 75 | var delay = 325, 76 | locked = false; 77 | 78 | // Methods. 79 | $main._show = function(id, initial) { 80 | 81 | var $article = $main_articles.filter('#' + id); 82 | 83 | // No such article? Bail. 84 | if ($article.length == 0) 85 | return; 86 | 87 | // Handle lock. 88 | 89 | // Already locked? Speed through "show" steps w/o delays. 90 | if (locked || (typeof initial != 'undefined' && initial === true)) { 91 | 92 | // Mark as switching. 93 | $body.addClass('is-switching'); 94 | 95 | // Mark as visible. 96 | $body.addClass('is-article-visible'); 97 | 98 | // Deactivate all articles (just in case one's already active). 99 | $main_articles.removeClass('active'); 100 | 101 | // Hide header, footer. 102 | $header.hide(); 103 | $footer.hide(); 104 | 105 | // Show main, article. 106 | $main.show(); 107 | $article.show(); 108 | 109 | // Activate article. 110 | $article.addClass('active'); 111 | 112 | // Unlock. 113 | locked = false; 114 | 115 | // Unmark as switching. 116 | setTimeout(function() { 117 | $body.removeClass('is-switching'); 118 | }, (initial ? 1000 : 0)); 119 | 120 | return; 121 | 122 | } 123 | 124 | // Lock. 125 | locked = true; 126 | 127 | // Article already visible? Just swap articles. 128 | if ($body.hasClass('is-article-visible')) { 129 | 130 | // Deactivate current article. 131 | var $currentArticle = $main_articles.filter('.active'); 132 | 133 | $currentArticle.removeClass('active'); 134 | 135 | // Show article. 136 | setTimeout(function() { 137 | 138 | // Hide current article. 139 | $currentArticle.hide(); 140 | 141 | // Show article. 142 | $article.show(); 143 | 144 | // Activate article. 145 | setTimeout(function() { 146 | 147 | $article.addClass('active'); 148 | 149 | // Window stuff. 150 | $window 151 | .scrollTop(0) 152 | .triggerHandler('resize.flexbox-fix'); 153 | 154 | // Unlock. 155 | setTimeout(function() { 156 | locked = false; 157 | }, delay); 158 | 159 | }, 25); 160 | 161 | }, delay); 162 | 163 | } 164 | 165 | // Otherwise, handle as normal. 166 | else { 167 | 168 | // Mark as visible. 169 | $body 170 | .addClass('is-article-visible'); 171 | 172 | // Show article. 173 | setTimeout(function() { 174 | 175 | // Hide header, footer. 176 | $header.hide(); 177 | $footer.hide(); 178 | 179 | // Show main, article. 180 | $main.show(); 181 | $article.show(); 182 | 183 | // Activate article. 184 | setTimeout(function() { 185 | 186 | $article.addClass('active'); 187 | 188 | // Window stuff. 189 | $window 190 | .scrollTop(0) 191 | .triggerHandler('resize.flexbox-fix'); 192 | 193 | // Unlock. 194 | setTimeout(function() { 195 | locked = false; 196 | }, delay); 197 | 198 | }, 25); 199 | 200 | }, delay); 201 | 202 | } 203 | 204 | }; 205 | 206 | $main._hide = function(addState) { 207 | 208 | var $article = $main_articles.filter('.active'); 209 | 210 | // Article not visible? Bail. 211 | if (!$body.hasClass('is-article-visible')) 212 | return; 213 | 214 | // Add state? 215 | if (typeof addState != 'undefined' 216 | && addState === true) 217 | history.pushState(null, null, '#'); 218 | 219 | // Handle lock. 220 | 221 | // Already locked? Speed through "hide" steps w/o delays. 222 | if (locked) { 223 | 224 | // Mark as switching. 225 | $body.addClass('is-switching'); 226 | 227 | // Deactivate article. 228 | $article.removeClass('active'); 229 | 230 | // Hide article, main. 231 | $article.hide(); 232 | $main.hide(); 233 | 234 | // Show footer, header. 235 | $footer.show(); 236 | $header.show(); 237 | 238 | // Unmark as visible. 239 | $body.removeClass('is-article-visible'); 240 | 241 | // Unlock. 242 | locked = false; 243 | 244 | // Unmark as switching. 245 | $body.removeClass('is-switching'); 246 | 247 | // Window stuff. 248 | $window 249 | .scrollTop(0) 250 | .triggerHandler('resize.flexbox-fix'); 251 | 252 | return; 253 | 254 | } 255 | 256 | // Lock. 257 | locked = true; 258 | 259 | // Deactivate article. 260 | $article.removeClass('active'); 261 | 262 | // Hide article. 263 | setTimeout(function() { 264 | 265 | // Hide article, main. 266 | $article.hide(); 267 | $main.hide(); 268 | 269 | // Show footer, header. 270 | $footer.show(); 271 | $header.show(); 272 | 273 | // Unmark as visible. 274 | setTimeout(function() { 275 | 276 | $body.removeClass('is-article-visible'); 277 | 278 | // Window stuff. 279 | $window 280 | .scrollTop(0) 281 | .triggerHandler('resize.flexbox-fix'); 282 | 283 | // Unlock. 284 | setTimeout(function() { 285 | locked = false; 286 | }, delay); 287 | 288 | }, 25); 289 | 290 | }, delay); 291 | 292 | 293 | }; 294 | 295 | // Articles. 296 | $main_articles.each(function() { 297 | 298 | var $this = $(this); 299 | 300 | // Close. 301 | $('
Close
') 302 | .appendTo($this) 303 | .on('click', function() { 304 | location.hash = ''; 305 | }); 306 | 307 | // Prevent clicks from inside article from bubbling. 308 | $this.on('click', function(event) { 309 | event.stopPropagation(); 310 | }); 311 | 312 | }); 313 | 314 | // Events. 315 | $body.on('click', function(event) { 316 | 317 | // Article visible? Hide. 318 | if ($body.hasClass('is-article-visible')) 319 | $main._hide(true); 320 | 321 | }); 322 | 323 | $window.on('keyup', function(event) { 324 | 325 | switch (event.keyCode) { 326 | 327 | case 27: 328 | 329 | // Article visible? Hide. 330 | if ($body.hasClass('is-article-visible')) 331 | $main._hide(true); 332 | 333 | break; 334 | 335 | default: 336 | break; 337 | 338 | } 339 | 340 | }); 341 | 342 | $window.on('hashchange', function(event) { 343 | 344 | // Empty hash? 345 | if (location.hash == '' 346 | || location.hash == '#') { 347 | 348 | // Prevent default. 349 | event.preventDefault(); 350 | event.stopPropagation(); 351 | 352 | // Hide. 353 | $main._hide(); 354 | 355 | } 356 | 357 | // Otherwise, check for a matching article. 358 | else if ($main_articles.filter(location.hash).length > 0) { 359 | 360 | // Prevent default. 361 | event.preventDefault(); 362 | event.stopPropagation(); 363 | 364 | // Show article. 365 | $main._show(location.hash.substr(1)); 366 | 367 | } 368 | 369 | }); 370 | 371 | // Scroll restoration. 372 | // This prevents the page from scrolling back to the top on a hashchange. 373 | if ('scrollRestoration' in history) 374 | history.scrollRestoration = 'manual'; 375 | else { 376 | 377 | var oldScrollPos = 0, 378 | scrollPos = 0, 379 | $htmlbody = $('html,body'); 380 | 381 | $window 382 | .on('scroll', function() { 383 | 384 | oldScrollPos = scrollPos; 385 | scrollPos = $htmlbody.scrollTop(); 386 | 387 | }) 388 | .on('hashchange', function() { 389 | $window.scrollTop(oldScrollPos); 390 | }); 391 | 392 | } 393 | 394 | // Initialize. 395 | 396 | // Hide main, articles. 397 | $main.hide(); 398 | $main_articles.hide(); 399 | 400 | // Initial article. 401 | if (location.hash != '' 402 | && location.hash != '#') 403 | $window.on('load', function() { 404 | $main._show(location.hash.substr(1), true); 405 | }); 406 | 407 | }); 408 | 409 | })(jQuery); -------------------------------------------------------------------------------- /app/model/diary/diary_model.go: -------------------------------------------------------------------------------- 1 | // ========================================================================== 2 | // This is auto-generated by gf cli tool. You may not really want to edit it. 3 | // ========================================================================== 4 | 5 | package diary 6 | 7 | import ( 8 | "database/sql" 9 | "github.com/gogf/gf/database/gdb" 10 | "github.com/gogf/gf/frame/g" 11 | "github.com/gogf/gf/frame/gmvc" 12 | "time" 13 | ) 14 | 15 | // arModel is a active record design model for table diary operations. 16 | type arModel struct { 17 | gmvc.M 18 | } 19 | 20 | var ( 21 | // Table is the table name of diary. 22 | Table = "diary" 23 | // Model is the model object of diary. 24 | Model = &arModel{g.DB("default").Table(Table).Safe()} 25 | // Columns defines and stores column names for table diary. 26 | Columns = struct { 27 | Time string // 28 | Content string // 29 | Id string // 30 | }{ 31 | Time: "time", 32 | Content: "content", 33 | Id: "id", 34 | } 35 | ) 36 | 37 | // FindOne is a convenience method for Model.FindOne. 38 | // See Model.FindOne. 39 | func FindOne(where ...interface{}) (*Entity, error) { 40 | return Model.FindOne(where...) 41 | } 42 | 43 | // FindAll is a convenience method for Model.FindAll. 44 | // See Model.FindAll. 45 | func FindAll(where ...interface{}) ([]*Entity, error) { 46 | return Model.FindAll(where...) 47 | } 48 | 49 | // FindValue is a convenience method for Model.FindValue. 50 | // See Model.FindValue. 51 | func FindValue(fieldsAndWhere ...interface{}) (gdb.Value, error) { 52 | return Model.FindValue(fieldsAndWhere...) 53 | } 54 | 55 | // FindArray is a convenience method for Model.FindArray. 56 | // See Model.FindArray. 57 | func FindArray(fieldsAndWhere ...interface{}) ([]gdb.Value, error) { 58 | return Model.FindArray(fieldsAndWhere...) 59 | } 60 | 61 | // FindCount is a convenience method for Model.FindCount. 62 | // See Model.FindCount. 63 | func FindCount(where ...interface{}) (int, error) { 64 | return Model.FindCount(where...) 65 | } 66 | 67 | // Insert is a convenience method for Model.Insert. 68 | func Insert(data ...interface{}) (result sql.Result, err error) { 69 | return Model.Insert(data...) 70 | } 71 | 72 | // Replace is a convenience method for Model.Replace. 73 | func Replace(data ...interface{}) (result sql.Result, err error) { 74 | return Model.Replace(data...) 75 | } 76 | 77 | // Save is a convenience method for Model.Save. 78 | func Save(data ...interface{}) (result sql.Result, err error) { 79 | return Model.Save(data...) 80 | } 81 | 82 | // Update is a convenience method for Model.Update. 83 | func Update(dataAndWhere ...interface{}) (result sql.Result, err error) { 84 | return Model.Update(dataAndWhere...) 85 | } 86 | 87 | // Delete is a convenience method for Model.Delete. 88 | func Delete(where ...interface{}) (result sql.Result, err error) { 89 | return Model.Delete(where...) 90 | } 91 | 92 | // As sets an alias name for current table. 93 | func (m *arModel) As(as string) *arModel { 94 | return &arModel{m.M.As(as)} 95 | } 96 | 97 | // TX sets the transaction for current operation. 98 | func (m *arModel) TX(tx *gdb.TX) *arModel { 99 | return &arModel{m.M.TX(tx)} 100 | } 101 | 102 | // Master marks the following operation on master node. 103 | func (m *arModel) Master() *arModel { 104 | return &arModel{m.M.Master()} 105 | } 106 | 107 | // Slave marks the following operation on slave node. 108 | // Note that it makes sense only if there's any slave node configured. 109 | func (m *arModel) Slave() *arModel { 110 | return &arModel{m.M.Slave()} 111 | } 112 | 113 | // LeftJoin does "LEFT JOIN ... ON ..." statement on the model. 114 | func (m *arModel) LeftJoin(joinTable string, on string) *arModel { 115 | return &arModel{m.M.LeftJoin(joinTable, on)} 116 | } 117 | 118 | // RightJoin does "RIGHT JOIN ... ON ..." statement on the model. 119 | func (m *arModel) RightJoin(joinTable string, on string) *arModel { 120 | return &arModel{m.M.RightJoin(joinTable, on)} 121 | } 122 | 123 | // InnerJoin does "INNER JOIN ... ON ..." statement on the model. 124 | func (m *arModel) InnerJoin(joinTable string, on string) *arModel { 125 | return &arModel{m.M.InnerJoin(joinTable, on)} 126 | } 127 | 128 | // Fields sets the operation fields of the model, multiple fields joined using char ','. 129 | func (m *arModel) Fields(fields string) *arModel { 130 | return &arModel{m.M.Fields(fields)} 131 | } 132 | 133 | // FieldsEx sets the excluded operation fields of the model, multiple fields joined using char ','. 134 | func (m *arModel) FieldsEx(fields string) *arModel { 135 | return &arModel{m.M.FieldsEx(fields)} 136 | } 137 | 138 | // Option sets the extra operation option for the model. 139 | func (m *arModel) Option(option int) *arModel { 140 | return &arModel{m.M.Option(option)} 141 | } 142 | 143 | // OmitEmpty sets OPTION_OMITEMPTY option for the model, which automatically filers 144 | // the data and where attributes for empty values. 145 | func (m *arModel) OmitEmpty() *arModel { 146 | return &arModel{m.M.OmitEmpty()} 147 | } 148 | 149 | // Filter marks filtering the fields which does not exist in the fields of the operated table. 150 | func (m *arModel) Filter() *arModel { 151 | return &arModel{m.M.Filter()} 152 | } 153 | 154 | // Where sets the condition statement for the model. The parameter can be type of 155 | // string/map/gmap/slice/struct/*struct, etc. Note that, if it's called more than one times, 156 | // multiple conditions will be joined into where statement using "AND". 157 | // Eg: 158 | // Where("uid=10000") 159 | // Where("uid", 10000) 160 | // Where("money>? AND name like ?", 99999, "vip_%") 161 | // Where("uid", 1).Where("name", "john") 162 | // Where("status IN (?)", g.Slice{1,2,3}) 163 | // Where("age IN(?,?)", 18, 50) 164 | // Where(User{ Id : 1, UserName : "john"}) 165 | func (m *arModel) Where(where interface{}, args ...interface{}) *arModel { 166 | return &arModel{m.M.Where(where, args...)} 167 | } 168 | 169 | // And adds "AND" condition to the where statement. 170 | func (m *arModel) And(where interface{}, args ...interface{}) *arModel { 171 | return &arModel{m.M.And(where, args...)} 172 | } 173 | 174 | // Or adds "OR" condition to the where statement. 175 | func (m *arModel) Or(where interface{}, args ...interface{}) *arModel { 176 | return &arModel{m.M.Or(where, args...)} 177 | } 178 | 179 | // Group sets the "GROUP BY" statement for the model. 180 | func (m *arModel) Group(groupBy string) *arModel { 181 | return &arModel{m.M.Group(groupBy)} 182 | } 183 | 184 | // Order sets the "ORDER BY" statement for the model. 185 | func (m *arModel) Order(orderBy string) *arModel { 186 | return &arModel{m.M.Order(orderBy)} 187 | } 188 | 189 | // Limit sets the "LIMIT" statement for the model. 190 | // The parameter can be either one or two number, if passed two number is passed, 191 | // it then sets "LIMIT limit[0],limit[1]" statement for the model, or else it sets "LIMIT limit[0]" 192 | // statement. 193 | func (m *arModel) Limit(limit ...int) *arModel { 194 | return &arModel{m.M.Limit(limit...)} 195 | } 196 | 197 | // Offset sets the "OFFSET" statement for the model. 198 | // It only makes sense for some databases like SQLServer, PostgreSQL, etc. 199 | func (m *arModel) Offset(offset int) *arModel { 200 | return &arModel{m.M.Offset(offset)} 201 | } 202 | 203 | // Page sets the paging number for the model. 204 | // The parameter is started from 1 for paging. 205 | // Note that, it differs that the Limit function start from 0 for "LIMIT" statement. 206 | func (m *arModel) Page(page, limit int) *arModel { 207 | return &arModel{m.M.Page(page, limit)} 208 | } 209 | 210 | // Batch sets the batch operation number for the model. 211 | func (m *arModel) Batch(batch int) *arModel { 212 | return &arModel{m.M.Batch(batch)} 213 | } 214 | 215 | // Cache sets the cache feature for the model. It caches the result of the sql, which means 216 | // if there's another same sql request, it just reads and returns the result from cache, it 217 | // but not committed and executed into the database. 218 | // 219 | // If the parameter < 0, which means it clear the cache with given . 220 | // If the parameter = 0, which means it never expires. 221 | // If the parameter > 0, which means it expires after . 222 | // 223 | // The optional parameter is used to bind a name to the cache, which means you can later 224 | // control the cache like changing the or clearing the cache with specified . 225 | // 226 | // Note that, the cache feature is disabled if the model is operating on a transaction. 227 | func (m *arModel) Cache(expire time.Duration, name ...string) *arModel { 228 | return &arModel{m.M.Cache(expire, name...)} 229 | } 230 | 231 | // Data sets the operation data for the model. 232 | // The parameter can be type of string/map/gmap/slice/struct/*struct, etc. 233 | // Eg: 234 | // Data("uid=10000") 235 | // Data("uid", 10000) 236 | // Data(g.Map{"uid": 10000, "name":"john"}) 237 | // Data(g.Slice{g.Map{"uid": 10000, "name":"john"}, g.Map{"uid": 20000, "name":"smith"}) 238 | func (m *arModel) Data(data ...interface{}) *arModel { 239 | return &arModel{m.M.Data(data...)} 240 | } 241 | 242 | // All does "SELECT FROM ..." statement for the model. 243 | // It retrieves the records from table and returns the result as []*Entity. 244 | // It returns nil if there's no record retrieved with the given conditions from table. 245 | // 246 | // The optional parameter is the same as the parameter of Model.Where function, 247 | // see Model.Where. 248 | func (m *arModel) All(where ...interface{}) ([]*Entity, error) { 249 | all, err := m.M.All(where...) 250 | if err != nil { 251 | return nil, err 252 | } 253 | var entities []*Entity 254 | if err = all.Structs(&entities); err != nil && err != sql.ErrNoRows { 255 | return nil, err 256 | } 257 | return entities, nil 258 | } 259 | 260 | // One retrieves one record from table and returns the result as *Entity. 261 | // It returns nil if there's no record retrieved with the given conditions from table. 262 | // 263 | // The optional parameter is the same as the parameter of Model.Where function, 264 | // see Model.Where. 265 | func (m *arModel) One(where ...interface{}) (*Entity, error) { 266 | one, err := m.M.One(where...) 267 | if err != nil { 268 | return nil, err 269 | } 270 | var entity *Entity 271 | if err = one.Struct(&entity); err != nil && err != sql.ErrNoRows { 272 | return nil, err 273 | } 274 | return entity, nil 275 | } 276 | 277 | // FindOne retrieves and returns a single Record by Model.WherePri and Model.One. 278 | // Also see Model.WherePri and Model.One. 279 | func (m *arModel) FindOne(where ...interface{}) (*Entity, error) { 280 | one, err := m.M.FindOne(where...) 281 | if err != nil { 282 | return nil, err 283 | } 284 | var entity *Entity 285 | if err = one.Struct(&entity); err != nil && err != sql.ErrNoRows { 286 | return nil, err 287 | } 288 | return entity, nil 289 | } 290 | 291 | // FindAll retrieves and returns Result by by Model.WherePri and Model.All. 292 | // Also see Model.WherePri and Model.All. 293 | func (m *arModel) FindAll(where ...interface{}) ([]*Entity, error) { 294 | all, err := m.M.FindAll(where...) 295 | if err != nil { 296 | return nil, err 297 | } 298 | var entities []*Entity 299 | if err = all.Structs(&entities); err != nil && err != sql.ErrNoRows { 300 | return nil, err 301 | } 302 | return entities, nil 303 | } 304 | 305 | // Chunk iterates the table with given size and callback function. 306 | func (m *arModel) Chunk(limit int, callback func(entities []*Entity, err error) bool) { 307 | m.M.Chunk(limit, func(result gdb.Result, err error) bool { 308 | var entities []*Entity 309 | err = result.Structs(&entities) 310 | if err == sql.ErrNoRows { 311 | return false 312 | } 313 | return callback(entities, err) 314 | }) 315 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /public/resource/css/main.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | Dimension by HTML5 UP 5 | html5up.net | @ajlkn 6 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 7 | */ 8 | 9 | /* Reset */ 10 | 11 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { 12 | margin: 0; 13 | padding: 0; 14 | border: 0; 15 | font-size: 100%; 16 | font: inherit; 17 | vertical-align: baseline; 18 | } 19 | 20 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { 21 | display: block; 22 | } 23 | 24 | body { 25 | line-height: 1; 26 | } 27 | 28 | ol, ul { 29 | list-style: none; 30 | } 31 | 32 | blockquote, q { 33 | quotes: none; 34 | } 35 | 36 | blockquote:before, blockquote:after, q:before, q:after { 37 | content: ''; 38 | content: none; 39 | } 40 | 41 | table { 42 | border-collapse: collapse; 43 | border-spacing: 0; 44 | } 45 | 46 | body { 47 | -webkit-text-size-adjust: none; 48 | } 49 | 50 | /* Box Model */ 51 | 52 | *, *:before, *:after { 53 | -moz-box-sizing: border-box; 54 | -webkit-box-sizing: border-box; 55 | box-sizing: border-box; 56 | } 57 | 58 | /* Basic */ 59 | 60 | @-ms-viewport { 61 | width: device-width; 62 | } 63 | 64 | @media screen and (max-width: 480px) { 65 | 66 | html, body { 67 | min-width: 320px; 68 | } 69 | 70 | } 71 | 72 | body { 73 | background: #1b1f22; 74 | } 75 | 76 | body.is-loading *, body.is-loading *:before, body.is-loading *:after, body.is-switching *, body.is-switching *:before, body.is-switching *:after { 77 | -moz-animation: none !important; 78 | -webkit-animation: none !important; 79 | -ms-animation: none !important; 80 | animation: none !important; 81 | -moz-transition: none !important; 82 | -webkit-transition: none !important; 83 | -ms-transition: none !important; 84 | transition: none !important; 85 | -moz-transition-delay: none !important; 86 | -webkit-transition-delay: none !important; 87 | -ms-transition-delay: none !important; 88 | transition-delay: none !important; 89 | } 90 | 91 | /* Type */ 92 | 93 | html { 94 | font-size: 16pt; 95 | } 96 | 97 | @media screen and (max-width: 1680px) { 98 | 99 | html { 100 | font-size: 12pt; 101 | } 102 | 103 | } 104 | 105 | @media screen and (max-width: 736px) { 106 | 107 | html { 108 | font-size: 11pt; 109 | } 110 | 111 | } 112 | 113 | @media screen and (max-width: 360px) { 114 | 115 | html { 116 | font-size: 10pt; 117 | } 118 | 119 | } 120 | 121 | body, input, select, textarea { 122 | color: #ffffff; 123 | font-family: "Source Sans Pro", sans-serif; 124 | font-weight: 300; 125 | font-size: 1rem; 126 | line-height: 1.65; 127 | } 128 | 129 | a { 130 | -moz-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; 131 | -webkit-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; 132 | -ms-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; 133 | transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; 134 | border-bottom: dotted 1px rgba(255, 255, 255, 0.5); 135 | text-decoration: none; 136 | color: inherit; 137 | } 138 | 139 | a:hover { 140 | border-bottom-color: transparent; 141 | } 142 | 143 | strong, b { 144 | color: #ffffff; 145 | font-weight: 600; 146 | } 147 | 148 | em, i { 149 | font-style: italic; 150 | } 151 | 152 | p { 153 | margin: 0 0 2rem 0; 154 | } 155 | 156 | h1, h2, h3, h4, h5, h6 { 157 | color: #ffffff; 158 | font-weight: 600; 159 | line-height: 1.5; 160 | margin: 0 0 1rem 0; 161 | text-transform: uppercase; 162 | letter-spacing: 0.2rem; 163 | } 164 | 165 | h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { 166 | color: inherit; 167 | text-decoration: none; 168 | } 169 | 170 | h1.major, h2.major, h3.major, h4.major, h5.major, h6.major { 171 | border-bottom: solid 1px #ffffff; 172 | width: -moz-max-content; 173 | width: -webkit-max-content; 174 | width: -ms-max-content; 175 | width: max-content; 176 | padding-bottom: 0.5rem; 177 | margin: 0 0 2rem 0; 178 | } 179 | 180 | h1 { 181 | font-size: 2.25rem; 182 | line-height: 1.3; 183 | letter-spacing: 0.5rem; 184 | } 185 | 186 | h2 { 187 | font-size: 1.5rem; 188 | line-height: 1.4; 189 | letter-spacing: 0.5rem; 190 | } 191 | 192 | h3 { 193 | font-size: 1rem; 194 | } 195 | 196 | h4 { 197 | font-size: 0.8rem; 198 | } 199 | 200 | h5 { 201 | font-size: 0.7rem; 202 | } 203 | 204 | h6 { 205 | font-size: 0.6rem; 206 | } 207 | 208 | @media screen and (max-width: 736px) { 209 | 210 | h1 { 211 | font-size: 1.75rem; 212 | line-height: 1.4; 213 | } 214 | 215 | h2 { 216 | font-size: 1.25em; 217 | line-height: 1.5; 218 | } 219 | 220 | } 221 | 222 | sub { 223 | font-size: 0.8rem; 224 | position: relative; 225 | top: 0.5rem; 226 | } 227 | 228 | sup { 229 | font-size: 0.8rem; 230 | position: relative; 231 | top: -0.5rem; 232 | } 233 | 234 | blockquote { 235 | border-left: solid 4px #ffffff; 236 | font-style: italic; 237 | margin: 0 0 2rem 0; 238 | padding: 0.5rem 0 0.5rem 2rem; 239 | } 240 | 241 | code { 242 | background: rgba(255, 255, 255, 0.075); 243 | border-radius: 4px; 244 | font-family: "Courier New", monospace; 245 | font-size: 0.9rem; 246 | margin: 0 0.25rem; 247 | padding: 0.25rem 0.65rem; 248 | } 249 | 250 | pre { 251 | -webkit-overflow-scrolling: touch; 252 | font-family: "Courier New", monospace; 253 | font-size: 0.9rem; 254 | margin: 0 0 2rem 0; 255 | } 256 | 257 | pre code { 258 | display: block; 259 | line-height: 1.75; 260 | padding: 1rem 1.5rem; 261 | overflow-x: auto; 262 | } 263 | 264 | hr { 265 | border: 0; 266 | border-bottom: solid 1px #ffffff; 267 | margin: 2.75rem 0; 268 | } 269 | 270 | .align-left { 271 | text-align: left; 272 | } 273 | 274 | .align-center { 275 | text-align: center; 276 | } 277 | 278 | .align-right { 279 | text-align: right; 280 | } 281 | 282 | /* Form */ 283 | 284 | form { 285 | margin: 0 0 2.5rem 0; 286 | } 287 | 288 | form .field { 289 | margin: 0 0 1.5rem 0; 290 | } 291 | 292 | form .field.half { 293 | width: 50%; 294 | float: left; 295 | padding: 0 0 0 0.75rem; 296 | } 297 | 298 | form .field.half.first { 299 | padding: 0 0.75rem 0 0; 300 | } 301 | 302 | form > .actions { 303 | margin: 1.875rem 0 0 0 !important; 304 | } 305 | 306 | @media screen and (max-width: 736px) { 307 | 308 | form .field { 309 | margin: 0 0 1.125rem 0; 310 | } 311 | 312 | form .field.half { 313 | padding: 0 0 0 0.5625rem; 314 | } 315 | 316 | form .field.half.first { 317 | padding: 0 0.5625rem 0 0; 318 | } 319 | 320 | form > .actions { 321 | margin: 1.5rem 0 0 0 !important; 322 | } 323 | 324 | } 325 | 326 | @media screen and (max-width: 480px) { 327 | 328 | form .field.half { 329 | width: 100%; 330 | float: none; 331 | padding: 0; 332 | } 333 | 334 | form .field.half.first { 335 | padding: 0; 336 | } 337 | 338 | } 339 | 340 | label { 341 | color: #ffffff; 342 | display: block; 343 | font-size: 0.8rem; 344 | font-weight: 300; 345 | letter-spacing: 0.2rem; 346 | line-height: 1.5; 347 | margin: 0 0 1rem 0; 348 | text-transform: uppercase; 349 | } 350 | 351 | input[type="text"], 352 | input[type="password"], 353 | input[type="email"], 354 | input[type="tel"], 355 | select, 356 | textarea { 357 | -moz-appearance: none; 358 | -webkit-appearance: none; 359 | -ms-appearance: none; 360 | appearance: none; 361 | -moz-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 362 | -webkit-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 363 | -ms-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 364 | transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 365 | background: transparent; 366 | border-radius: 4px; 367 | border: solid 1px #ffffff; 368 | color: inherit; 369 | display: block; 370 | outline: 0; 371 | padding: 0 1rem; 372 | text-decoration: none; 373 | width: 100%; 374 | } 375 | 376 | input[type="text"]:invalid, 377 | input[type="password"]:invalid, 378 | input[type="email"]:invalid, 379 | input[type="tel"]:invalid, 380 | select:invalid, 381 | textarea:invalid { 382 | box-shadow: none; 383 | } 384 | 385 | input[type="text"]:focus, 386 | input[type="password"]:focus, 387 | input[type="email"]:focus, 388 | input[type="tel"]:focus, 389 | select:focus, 390 | textarea:focus { 391 | background: rgba(255, 255, 255, 0.075); 392 | border-color: #ffffff; 393 | box-shadow: 0 0 0 1px #ffffff; 394 | } 395 | 396 | select option { 397 | background: #1b1f22; 398 | color: #ffffff; 399 | } 400 | 401 | .select-wrapper { 402 | text-decoration: none; 403 | display: block; 404 | position: relative; 405 | } 406 | 407 | .select-wrapper:before { 408 | -moz-osx-font-smoothing: grayscale; 409 | -webkit-font-smoothing: antialiased; 410 | font-family: FontAwesome; 411 | font-style: normal; 412 | font-weight: normal; 413 | text-transform: none !important; 414 | } 415 | 416 | .select-wrapper:before { 417 | color: #ffffff; 418 | content: '\f107'; 419 | display: block; 420 | height: 2.75rem; 421 | line-height: calc(2.75rem + 0em); 422 | pointer-events: none; 423 | position: absolute; 424 | right: 0; 425 | text-align: center; 426 | top: 0; 427 | width: 2.75rem; 428 | } 429 | 430 | .select-wrapper select::-ms-expand { 431 | display: none; 432 | } 433 | 434 | input[type="text"], 435 | input[type="password"], 436 | input[type="email"], 437 | select { 438 | height: 2.75rem; 439 | } 440 | 441 | textarea { 442 | padding: 0.75rem 1rem; 443 | } 444 | 445 | input[type="checkbox"], 446 | input[type="radio"] { 447 | -moz-appearance: none; 448 | -webkit-appearance: none; 449 | -ms-appearance: none; 450 | appearance: none; 451 | display: block; 452 | float: left; 453 | margin-right: -2rem; 454 | opacity: 0; 455 | width: 1rem; 456 | z-index: -1; 457 | } 458 | 459 | input[type="checkbox"] + label, 460 | input[type="radio"] + label { 461 | text-decoration: none; 462 | -moz-user-select: none; 463 | -webkit-user-select: none; 464 | -ms-user-select: none; 465 | user-select: none; 466 | color: #ffffff; 467 | cursor: pointer; 468 | display: inline-block; 469 | font-size: 0.8rem; 470 | font-weight: 300; 471 | margin: 0 0 0.5rem 0; 472 | padding-left: 2.65rem; 473 | padding-right: 0.75rem; 474 | position: relative; 475 | } 476 | 477 | input[type="checkbox"] + label:before, 478 | input[type="radio"] + label:before { 479 | -moz-osx-font-smoothing: grayscale; 480 | -webkit-font-smoothing: antialiased; 481 | font-family: FontAwesome; 482 | font-style: normal; 483 | font-weight: normal; 484 | text-transform: none !important; 485 | } 486 | 487 | input[type="checkbox"] + label:before, 488 | input[type="radio"] + label:before { 489 | -moz-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 490 | -webkit-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 491 | -ms-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 492 | transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 493 | border-radius: 4px; 494 | border: solid 1px #ffffff; 495 | content: ''; 496 | display: inline-block; 497 | height: 1.65rem; 498 | left: 0; 499 | line-height: calc(1.58125rem + 0em); 500 | position: absolute; 501 | text-align: center; 502 | top: -0.125rem; 503 | width: 1.65rem; 504 | } 505 | 506 | input[type="checkbox"]:checked + label:before, 507 | input[type="radio"]:checked + label:before { 508 | background: #ffffff !important; 509 | border-color: #ffffff !important; 510 | color: #1b1f22; 511 | content: '\f00c'; 512 | } 513 | 514 | input[type="checkbox"]:focus + label:before, 515 | input[type="radio"]:focus + label:before { 516 | background: rgba(255, 255, 255, 0.075); 517 | border-color: #ffffff; 518 | box-shadow: 0 0 0 1px #ffffff; 519 | } 520 | 521 | input[type="checkbox"] + label:before { 522 | border-radius: 4px; 523 | } 524 | 525 | input[type="radio"] + label:before { 526 | border-radius: 100%; 527 | } 528 | 529 | ::-webkit-input-placeholder { 530 | color: rgba(255, 255, 255, 0.5) !important; 531 | opacity: 1.0; 532 | } 533 | 534 | :-moz-placeholder { 535 | color: rgba(255, 255, 255, 0.5) !important; 536 | opacity: 1.0; 537 | } 538 | 539 | ::-moz-placeholder { 540 | color: rgba(255, 255, 255, 0.5) !important; 541 | opacity: 1.0; 542 | } 543 | 544 | :-ms-input-placeholder { 545 | color: rgba(255, 255, 255, 0.5) !important; 546 | opacity: 1.0; 547 | } 548 | 549 | .formerize-placeholder { 550 | color: rgba(255, 255, 255, 0.5) !important; 551 | opacity: 1.0; 552 | } 553 | 554 | /* Box */ 555 | 556 | .box { 557 | border-radius: 4px; 558 | border: solid 1px #ffffff; 559 | margin-bottom: 2rem; 560 | padding: 1.5em; 561 | } 562 | 563 | .box > :last-child, 564 | .box > :last-child > :last-child, 565 | .box > :last-child > :last-child > :last-child { 566 | margin-bottom: 0; 567 | } 568 | 569 | .box.alt { 570 | border: 0; 571 | border-radius: 0; 572 | padding: 0; 573 | } 574 | 575 | /* Icon */ 576 | 577 | .icon { 578 | text-decoration: none; 579 | border-bottom: none; 580 | position: relative; 581 | } 582 | 583 | .icon:before { 584 | -moz-osx-font-smoothing: grayscale; 585 | -webkit-font-smoothing: antialiased; 586 | font-family: FontAwesome; 587 | font-style: normal; 588 | font-weight: normal; 589 | text-transform: none !important; 590 | } 591 | 592 | .icon > .label { 593 | display: none; 594 | } 595 | 596 | /* Image */ 597 | 598 | .image { 599 | border-radius: 4px; 600 | border: 0; 601 | display: inline-block; 602 | position: relative; 603 | } 604 | 605 | .image:before { 606 | -moz-pointer-events: none; 607 | -webkit-pointer-events: none; 608 | -ms-pointer-events: none; 609 | pointer-events: none; 610 | background-image: url("../images/overlay.png"); 611 | background-color: rgba(19, 21, 25, 0.5); 612 | border-radius: 4px; 613 | content: ''; 614 | display: block; 615 | height: 100%; 616 | left: 0; 617 | opacity: 0.5; 618 | position: absolute; 619 | top: 0; 620 | width: 100%; 621 | } 622 | 623 | .image img { 624 | border-radius: 4px; 625 | display: block; 626 | } 627 | 628 | .image.left, .image.right { 629 | max-width: 40%; 630 | } 631 | 632 | .image.left img, .image.right img { 633 | width: 100%; 634 | } 635 | 636 | .image.left { 637 | float: left; 638 | padding: 0 1.5em 1em 0; 639 | top: 0.25em; 640 | } 641 | 642 | .image.right { 643 | float: right; 644 | padding: 0 0 1em 1.5em; 645 | top: 0.25em; 646 | } 647 | 648 | .image.fit { 649 | display: block; 650 | margin: 0 0 2rem 0; 651 | width: 100%; 652 | } 653 | 654 | .image.fit img { 655 | width: 100%; 656 | } 657 | 658 | .image.main { 659 | display: block; 660 | margin: 2.5rem 0; 661 | width: 100%; 662 | } 663 | 664 | .image.main img { 665 | width: 100%; 666 | } 667 | 668 | @media screen and (max-width: 736px) { 669 | 670 | .image.main { 671 | margin: 2rem 0; 672 | } 673 | 674 | } 675 | 676 | @media screen and (max-width: 480px) { 677 | 678 | .image.main { 679 | margin: 1.5rem 0; 680 | } 681 | 682 | } 683 | 684 | /* List */ 685 | 686 | ol { 687 | list-style: decimal; 688 | margin: 0 0 2rem 0; 689 | padding-left: 1.25em; 690 | } 691 | 692 | ol li { 693 | padding-left: 0.25em; 694 | } 695 | 696 | ul { 697 | list-style: disc; 698 | margin: 0 0 2rem 0; 699 | padding-left: 1em; 700 | } 701 | 702 | ul li { 703 | padding-left: 0.5em; 704 | } 705 | 706 | ul.alt { 707 | list-style: none; 708 | padding-left: 0; 709 | } 710 | 711 | ul.alt li { 712 | border-top: solid 1px #ffffff; 713 | padding: 0.5em 0; 714 | } 715 | 716 | ul.alt li:first-child { 717 | border-top: 0; 718 | padding-top: 0; 719 | } 720 | 721 | ul.icons { 722 | cursor: default; 723 | list-style: none; 724 | padding-left: 0; 725 | } 726 | 727 | ul.icons li { 728 | display: inline-block; 729 | padding: 0 0.75em 0 0; 730 | } 731 | 732 | ul.icons li:last-child { 733 | padding-right: 0; 734 | } 735 | 736 | ul.icons li a { 737 | border-radius: 100%; 738 | box-shadow: inset 0 0 0 1px #ffffff; 739 | display: inline-block; 740 | height: 2.25rem; 741 | line-height: 2.25rem; 742 | text-align: center; 743 | width: 2.25rem; 744 | } 745 | 746 | ul.icons li a:hover { 747 | background-color: rgba(255, 255, 255, 0.075); 748 | } 749 | 750 | ul.icons li a:active { 751 | background-color: rgba(255, 255, 255, 0.175); 752 | } 753 | 754 | ul.actions { 755 | cursor: default; 756 | list-style: none; 757 | padding-left: 0; 758 | } 759 | 760 | ul.actions li { 761 | display: inline-block; 762 | padding: 0 1rem 0 0; 763 | vertical-align: middle; 764 | } 765 | 766 | ul.actions li:last-child { 767 | padding-right: 0; 768 | } 769 | 770 | ul.actions.small li { 771 | padding: 0 0.5rem 0 0; 772 | } 773 | 774 | ul.actions.vertical li { 775 | display: block; 776 | padding: 1rem 0 0 0; 777 | } 778 | 779 | ul.actions.vertical li:first-child { 780 | padding-top: 0; 781 | } 782 | 783 | ul.actions.vertical li > * { 784 | margin-bottom: 0; 785 | } 786 | 787 | ul.actions.vertical.small li { 788 | padding: 0.5rem 0 0 0; 789 | } 790 | 791 | ul.actions.vertical.small li:first-child { 792 | padding-top: 0; 793 | } 794 | 795 | ul.actions.fit { 796 | display: table; 797 | margin-left: -1rem; 798 | padding: 0; 799 | table-layout: fixed; 800 | width: calc(100% + 1rem); 801 | } 802 | 803 | ul.actions.fit li { 804 | display: table-cell; 805 | padding: 0 0 0 1rem; 806 | } 807 | 808 | ul.actions.fit li > * { 809 | margin-bottom: 0; 810 | } 811 | 812 | ul.actions.fit.small { 813 | margin-left: -0.5rem; 814 | width: calc(100% + 0.5rem); 815 | } 816 | 817 | ul.actions.fit.small li { 818 | padding: 0 0 0 0.5rem; 819 | } 820 | 821 | @media screen and (max-width: 480px) { 822 | 823 | ul.actions { 824 | margin: 0 0 2rem 0; 825 | } 826 | 827 | ul.actions li { 828 | padding: 1rem 0 0 0; 829 | display: block; 830 | text-align: center; 831 | width: 100%; 832 | } 833 | 834 | ul.actions li:first-child { 835 | padding-top: 0; 836 | } 837 | 838 | ul.actions li > * { 839 | width: 100%; 840 | margin: 0 !important; 841 | } 842 | 843 | ul.actions li > *.icon:before { 844 | margin-left: -2em; 845 | } 846 | 847 | ul.actions.small li { 848 | padding: 0.5rem 0 0 0; 849 | } 850 | 851 | ul.actions.small li:first-child { 852 | padding-top: 0; 853 | } 854 | 855 | } 856 | 857 | dl { 858 | margin: 0 0 2rem 0; 859 | } 860 | 861 | dl dt { 862 | display: block; 863 | font-weight: 600; 864 | margin: 0 0 1rem 0; 865 | } 866 | 867 | dl dd { 868 | margin-left: 2rem; 869 | } 870 | 871 | /* Table */ 872 | 873 | .table-wrapper { 874 | -webkit-overflow-scrolling: touch; 875 | overflow-x: auto; 876 | } 877 | 878 | table { 879 | margin: 0 0 2rem 0; 880 | width: 100%; 881 | } 882 | 883 | table tbody tr { 884 | border: solid 1px #ffffff; 885 | border-left: 0; 886 | border-right: 0; 887 | } 888 | 889 | table tbody tr:nth-child(2n + 1) { 890 | background-color: rgba(255, 255, 255, 0.075); 891 | } 892 | 893 | table td { 894 | padding: 0.75em 0.75em; 895 | } 896 | 897 | table th { 898 | color: #ffffff; 899 | font-size: 0.9em; 900 | font-weight: 600; 901 | padding: 0 0.75em 0.75em 0.75em; 902 | text-align: left; 903 | } 904 | 905 | table thead { 906 | border-bottom: solid 2px #ffffff; 907 | } 908 | 909 | table tfoot { 910 | border-top: solid 2px #ffffff; 911 | } 912 | 913 | table.alt { 914 | border-collapse: separate; 915 | } 916 | 917 | table.alt tbody tr td { 918 | border: solid 1px #ffffff; 919 | border-left-width: 0; 920 | border-top-width: 0; 921 | } 922 | 923 | table.alt tbody tr td:first-child { 924 | border-left-width: 1px; 925 | } 926 | 927 | table.alt tbody tr:first-child td { 928 | border-top-width: 1px; 929 | } 930 | 931 | table.alt thead { 932 | border-bottom: 0; 933 | } 934 | 935 | table.alt tfoot { 936 | border-top: 0; 937 | } 938 | 939 | /* Button */ 940 | 941 | input[type="submit"], 942 | input[type="reset"], 943 | input[type="button"], 944 | button, 945 | .button { 946 | -moz-appearance: none; 947 | -webkit-appearance: none; 948 | -ms-appearance: none; 949 | appearance: none; 950 | -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 951 | -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 952 | -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 953 | transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 954 | background-color: transparent; 955 | border-radius: 4px; 956 | border: 0; 957 | box-shadow: inset 0 0 0 1px #ffffff; 958 | color: #ffffff !important; 959 | cursor: pointer; 960 | display: inline-block; 961 | font-size: 0.8rem; 962 | font-weight: 300; 963 | height: 2.75rem; 964 | letter-spacing: 0.2rem; 965 | line-height: 2.75rem; 966 | outline: 0; 967 | padding: 0 1.25rem 0 1.35rem; 968 | text-align: center; 969 | text-decoration: none; 970 | text-transform: uppercase; 971 | white-space: nowrap; 972 | } 973 | 974 | input[type="submit"]:hover, 975 | input[type="reset"]:hover, 976 | input[type="button"]:hover, 977 | button:hover, 978 | .button:hover { 979 | background-color: rgba(255, 255, 255, 0.075); 980 | } 981 | 982 | input[type="submit"]:active, 983 | input[type="reset"]:active, 984 | input[type="button"]:active, 985 | button:active, 986 | .button:active { 987 | background-color: rgba(255, 255, 255, 0.175); 988 | } 989 | 990 | input[type="submit"].icon:before, 991 | input[type="reset"].icon:before, 992 | input[type="button"].icon:before, 993 | button.icon:before, 994 | .button.icon:before { 995 | margin-right: 0.5em; 996 | } 997 | 998 | input[type="submit"].fit, 999 | input[type="reset"].fit, 1000 | input[type="button"].fit, 1001 | button.fit, 1002 | .button.fit { 1003 | display: block; 1004 | margin: 0 0 1rem 0; 1005 | width: 100%; 1006 | } 1007 | 1008 | input[type="submit"].special, 1009 | input[type="reset"].special, 1010 | input[type="button"].special, 1011 | button.special, 1012 | .button.special { 1013 | background-color: #ffffff; 1014 | color: #1b1f22 !important; 1015 | font-weight: 600; 1016 | } 1017 | 1018 | input[type="submit"].disabled, input[type="submit"]:disabled, 1019 | input[type="reset"].disabled, 1020 | input[type="reset"]:disabled, 1021 | input[type="button"].disabled, 1022 | input[type="button"]:disabled, 1023 | button.disabled, 1024 | button:disabled, 1025 | .button.disabled, 1026 | .button:disabled { 1027 | -moz-pointer-events: none; 1028 | -webkit-pointer-events: none; 1029 | -ms-pointer-events: none; 1030 | pointer-events: none; 1031 | cursor: default; 1032 | opacity: 0.25; 1033 | } 1034 | 1035 | input[type="submit"], 1036 | input[type="reset"], 1037 | input[type="button"], 1038 | button { 1039 | line-height: calc(2.75rem - 2px); 1040 | } 1041 | 1042 | 1043 | body.is-loading { 1044 | 1045 | background-color: #000000; 1046 | } 1047 | 1048 | body { 1049 | background-image: url("../images/bg.jpg"); 1050 | background-repeat: no-repeat; 1051 | background-position:center center; 1052 | background-size: cover; 1053 | 1054 | 1055 | } 1056 | 1057 | /* Wrapper */ 1058 | 1059 | #wrapper { 1060 | display: -moz-flex; 1061 | display: -webkit-flex; 1062 | display: -ms-flex; 1063 | display: flex; 1064 | -moz-flex-direction: column; 1065 | -webkit-flex-direction: column; 1066 | -ms-flex-direction: column; 1067 | flex-direction: column; 1068 | -moz-align-items: center; 1069 | -webkit-align-items: center; 1070 | -ms-align-items: center; 1071 | align-items: center; 1072 | -moz-justify-content: space-between; 1073 | -webkit-justify-content: space-between; 1074 | -ms-justify-content: space-between; 1075 | justify-content: space-between; 1076 | position: relative; 1077 | min-height: 100vh; 1078 | width: 100%; 1079 | padding: 4rem 2rem; 1080 | z-index: 3; 1081 | } 1082 | 1083 | #wrapper:before { 1084 | content: ''; 1085 | display: block; 1086 | } 1087 | 1088 | @media screen and (max-width: 1680px) { 1089 | 1090 | #wrapper { 1091 | padding: 3rem 2rem; 1092 | } 1093 | 1094 | } 1095 | 1096 | @media screen and (max-width: 736px) { 1097 | 1098 | #wrapper { 1099 | padding: 2rem 1rem; 1100 | } 1101 | 1102 | } 1103 | 1104 | @media screen and (max-width: 480px) { 1105 | 1106 | #wrapper { 1107 | padding: 1rem; 1108 | } 1109 | 1110 | } 1111 | 1112 | /* Header */ 1113 | 1114 | #header { 1115 | display: -moz-flex; 1116 | display: -webkit-flex; 1117 | display: -ms-flex; 1118 | display: flex; 1119 | -moz-flex-direction: column; 1120 | -webkit-flex-direction: column; 1121 | -ms-flex-direction: column; 1122 | flex-direction: column; 1123 | -moz-align-items: center; 1124 | -webkit-align-items: center; 1125 | -ms-align-items: center; 1126 | align-items: center; 1127 | -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1128 | -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1129 | -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1130 | transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1131 | background-image: -moz-radial-gradient(rgba(0, 0, 0, 0.25) 25%, transparent 55%); 1132 | background-image: -webkit-radial-gradient(rgba(0, 0, 0, 0.25) 25%, transparent 55%); 1133 | background-image: -ms-radial-gradient(rgba(0, 0, 0, 0.25) 25%, transparent 55%); 1134 | background-image: radial-gradient(rgba(0, 0, 0, 0.25) 25%, transparent 55%); 1135 | max-width: 100%; 1136 | text-align: center; 1137 | } 1138 | 1139 | #header > * { 1140 | -moz-transition: opacity 0.325s ease-in-out; 1141 | -webkit-transition: opacity 0.325s ease-in-out; 1142 | -ms-transition: opacity 0.325s ease-in-out; 1143 | transition: opacity 0.325s ease-in-out; 1144 | position: relative; 1145 | margin-top: 3.5rem; 1146 | } 1147 | 1148 | #header > *:before { 1149 | content: ''; 1150 | display: block; 1151 | position: absolute; 1152 | top: calc(-3.5rem - 1px); 1153 | left: calc(50% - 1px); 1154 | width: 1px; 1155 | height: calc(3.5rem + 1px); 1156 | background: #ffffff; 1157 | } 1158 | 1159 | #header > :first-child { 1160 | margin-top: 0; 1161 | } 1162 | 1163 | #header > :first-child:before { 1164 | display: none; 1165 | } 1166 | 1167 | #header .logo { 1168 | width: 5.5rem; 1169 | height: 5.5rem; 1170 | line-height: 5.5rem; 1171 | border: solid 1px #ffffff; 1172 | border-radius: 100%; 1173 | } 1174 | 1175 | #header .logo .icon:before { 1176 | font-size: 2rem; 1177 | } 1178 | 1179 | #header .content { 1180 | border-style: solid; 1181 | border-color: #ffffff; 1182 | border-top-width: 1px; 1183 | border-bottom-width: 1px; 1184 | max-width: 100%; 1185 | } 1186 | 1187 | #header .content .inner { 1188 | -moz-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; 1189 | -webkit-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; 1190 | -ms-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; 1191 | transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; 1192 | -moz-transition-delay: 0.25s; 1193 | -webkit-transition-delay: 0.25s; 1194 | -ms-transition-delay: 0.25s; 1195 | transition-delay: 0.25s; 1196 | padding: 3rem 2rem; 1197 | max-height: 40rem; 1198 | overflow: hidden; 1199 | } 1200 | 1201 | #header .content .inner > :last-child { 1202 | margin-bottom: 0; 1203 | } 1204 | 1205 | #header .content p { 1206 | text-transform: uppercase; 1207 | letter-spacing: 0.2rem; 1208 | font-size: 0.8rem; 1209 | line-height: 2; 1210 | } 1211 | 1212 | #header nav ul { 1213 | display: -moz-flex; 1214 | display: -webkit-flex; 1215 | display: -ms-flex; 1216 | display: flex; 1217 | margin-bottom: 0; 1218 | list-style: none; 1219 | padding-left: 0; 1220 | border: solid 1px #ffffff; 1221 | border-radius: 4px; 1222 | } 1223 | 1224 | #header nav ul li { 1225 | padding-left: 0; 1226 | border-left: solid 1px #ffffff; 1227 | } 1228 | 1229 | #header nav ul li:first-child { 1230 | border-left: 0; 1231 | } 1232 | 1233 | #header nav ul li a { 1234 | display: block; 1235 | min-width: 7.5rem; 1236 | height: 2.75rem; 1237 | line-height: 2.75rem; 1238 | padding: 0 1.25rem 0 1.45rem; 1239 | text-transform: uppercase; 1240 | letter-spacing: 0.2rem; 1241 | font-size: 0.8rem; 1242 | border-bottom: 0; 1243 | } 1244 | 1245 | #header nav ul li a:hover { 1246 | background-color: rgba(255, 255, 255, 0.075); 1247 | } 1248 | 1249 | #header nav ul li a:active { 1250 | background-color: rgba(255, 255, 255, 0.175); 1251 | } 1252 | 1253 | #header nav.use-middle:after { 1254 | content: ''; 1255 | display: block; 1256 | position: absolute; 1257 | top: 0; 1258 | left: calc(50% - 1px); 1259 | width: 1px; 1260 | height: 100%; 1261 | background: #ffffff; 1262 | } 1263 | 1264 | #header nav.use-middle ul li.is-middle { 1265 | border-left: 0; 1266 | } 1267 | 1268 | body.is-article-visible #header { 1269 | -moz-transform: scale(0.95); 1270 | -webkit-transform: scale(0.95); 1271 | -ms-transform: scale(0.95); 1272 | transform: scale(0.95); 1273 | -moz-filter: blur(0.1rem); 1274 | -webkit-filter: blur(0.1rem); 1275 | -ms-filter: blur(0.1rem); 1276 | filter: blur(0.1rem); 1277 | opacity: 0; 1278 | } 1279 | 1280 | body.is-loading #header { 1281 | -moz-filter: blur(0.125rem); 1282 | -webkit-filter: blur(0.125rem); 1283 | -ms-filter: blur(0.125rem); 1284 | filter: blur(0.125rem); 1285 | } 1286 | 1287 | body.is-loading #header > * { 1288 | opacity: 0; 1289 | } 1290 | 1291 | body.is-loading #header .content .inner { 1292 | max-height: 0; 1293 | padding-top: 0; 1294 | padding-bottom: 0; 1295 | opacity: 0; 1296 | } 1297 | 1298 | @media screen and (max-width: 980px) { 1299 | 1300 | #header .content p br { 1301 | display: none; 1302 | } 1303 | 1304 | } 1305 | 1306 | @media screen and (max-width: 736px) { 1307 | 1308 | #header > * { 1309 | margin-top: 2rem; 1310 | } 1311 | 1312 | #header > *:before { 1313 | top: calc(-2rem - 1px); 1314 | height: calc(2rem + 1px); 1315 | } 1316 | 1317 | #header .logo { 1318 | width: 4.75rem; 1319 | height: 4.75rem; 1320 | line-height: 4.75rem; 1321 | } 1322 | 1323 | #header .logo .icon:before { 1324 | font-size: 1.75rem; 1325 | } 1326 | 1327 | #header .content .inner { 1328 | padding: 2.5rem 1rem; 1329 | } 1330 | 1331 | #header .content p { 1332 | line-height: 1.875; 1333 | } 1334 | 1335 | } 1336 | 1337 | @media screen and (max-width: 480px) { 1338 | 1339 | #header { 1340 | padding: 1.5rem 0; 1341 | } 1342 | 1343 | #header .content .inner { 1344 | padding: 2.5rem 0; 1345 | } 1346 | 1347 | #header nav ul { 1348 | -moz-flex-direction: column; 1349 | -webkit-flex-direction: column; 1350 | -ms-flex-direction: column; 1351 | flex-direction: column; 1352 | min-width: 10rem; 1353 | max-width: 100%; 1354 | } 1355 | 1356 | #header nav ul li { 1357 | border-left: 0; 1358 | border-top: solid 1px #ffffff; 1359 | } 1360 | 1361 | #header nav ul li:first-child { 1362 | border-top: 0; 1363 | } 1364 | 1365 | #header nav ul li a { 1366 | height: 3rem; 1367 | line-height: 3rem; 1368 | min-width: 0; 1369 | width: 100%; 1370 | } 1371 | 1372 | #header nav.use-middle:after { 1373 | display: none; 1374 | } 1375 | 1376 | } 1377 | 1378 | /* Main */ 1379 | 1380 | #main { 1381 | -moz-flex-grow: 1; 1382 | -webkit-flex-grow: 1; 1383 | -ms-flex-grow: 1; 1384 | flex-grow: 1; 1385 | -moz-flex-shrink: 1; 1386 | -webkit-flex-shrink: 1; 1387 | -ms-flex-shrink: 1; 1388 | flex-shrink: 1; 1389 | display: -moz-flex; 1390 | display: -webkit-flex; 1391 | display: -ms-flex; 1392 | display: flex; 1393 | -moz-align-items: center; 1394 | -webkit-align-items: center; 1395 | -ms-align-items: center; 1396 | align-items: center; 1397 | -moz-justify-content: center; 1398 | -webkit-justify-content: center; 1399 | -ms-justify-content: center; 1400 | justify-content: center; 1401 | -moz-flex-direction: column; 1402 | -webkit-flex-direction: column; 1403 | -ms-flex-direction: column; 1404 | flex-direction: column; 1405 | position: relative; 1406 | max-width: 100%; 1407 | z-index: 3; 1408 | } 1409 | 1410 | #main article { 1411 | -moz-transform: translateY(0.25rem); 1412 | -webkit-transform: translateY(0.25rem); 1413 | -ms-transform: translateY(0.25rem); 1414 | transform: translateY(0.25rem); 1415 | -moz-transition: opacity 0.325s ease-in-out, -moz-transform 0.325s ease-in-out; 1416 | -webkit-transition: opacity 0.325s ease-in-out, -webkit-transform 0.325s ease-in-out; 1417 | -ms-transition: opacity 0.325s ease-in-out, -ms-transform 0.325s ease-in-out; 1418 | transition: opacity 0.325s ease-in-out, transform 0.325s ease-in-out; 1419 | padding: 4.5rem 2.5rem 1.5rem 2.5rem; 1420 | position: relative; 1421 | width: 40rem; 1422 | max-width: 100%; 1423 | background-color: rgba(27, 31, 34, 0.85); 1424 | border-radius: 4px; 1425 | opacity: 0; 1426 | } 1427 | 1428 | #main article.active { 1429 | -moz-transform: translateY(0); 1430 | -webkit-transform: translateY(0); 1431 | -ms-transform: translateY(0); 1432 | transform: translateY(0); 1433 | opacity: 1; 1434 | } 1435 | 1436 | #main article .close { 1437 | display: block; 1438 | position: absolute; 1439 | top: 0; 1440 | right: 0; 1441 | width: 4rem; 1442 | height: 4rem; 1443 | cursor: pointer; 1444 | text-indent: 4rem; 1445 | overflow: hidden; 1446 | white-space: nowrap; 1447 | } 1448 | 1449 | #main article .close:before { 1450 | -moz-transition: background-color 0.2s ease-in-out; 1451 | -webkit-transition: background-color 0.2s ease-in-out; 1452 | -ms-transition: background-color 0.2s ease-in-out; 1453 | transition: background-color 0.2s ease-in-out; 1454 | content: ''; 1455 | display: block; 1456 | position: absolute; 1457 | top: 0.75rem; 1458 | left: 0.75rem; 1459 | width: 2.5rem; 1460 | height: 2.5rem; 1461 | border-radius: 100%; 1462 | background-position: center; 1463 | background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='20px' height='20px' viewBox='0 0 20 20' zoomAndPan='disable'%3E%3Cstyle%3Eline %7B stroke: %23ffffff%3B stroke-width: 1%3B %7D%3C/style%3E%3Cline x1='2' y1='2' x2='18' y2='18' /%3E%3Cline x1='18' y1='2' x2='2' y2='18' /%3E%3C/svg%3E"); 1464 | background-size: 20px 20px; 1465 | background-repeat: no-repeat; 1466 | } 1467 | 1468 | #main article .close:hover:before { 1469 | background-color: rgba(255, 255, 255, 0.075); 1470 | } 1471 | 1472 | #main article .close:active:before { 1473 | background-color: rgba(255, 255, 255, 0.175); 1474 | } 1475 | 1476 | @media screen and (max-width: 736px) { 1477 | 1478 | #main article { 1479 | padding: 3.5rem 2rem 0.5rem 2rem; 1480 | } 1481 | 1482 | #main article .close:before { 1483 | top: 0.875rem; 1484 | left: 0.875rem; 1485 | width: 2.25rem; 1486 | height: 2.25rem; 1487 | background-size: 14px 14px; 1488 | } 1489 | 1490 | } 1491 | 1492 | @media screen and (max-width: 480px) { 1493 | 1494 | #main article { 1495 | padding: 3rem 1.5rem 0.5rem 1.5rem; 1496 | } 1497 | 1498 | } 1499 | 1500 | /* Footer */ 1501 | 1502 | #footer { 1503 | -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1504 | -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1505 | -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1506 | transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, opacity 0.325s ease-in-out; 1507 | width: 100%; 1508 | max-width: 100%; 1509 | margin-top: 2rem; 1510 | text-align: center; 1511 | } 1512 | 1513 | #footer .copyright { 1514 | letter-spacing: 0.2rem; 1515 | font-size: 0.6rem; 1516 | opacity: 0.75; 1517 | margin-bottom: 0; 1518 | text-transform: uppercase; 1519 | } 1520 | 1521 | body.is-article-visible #footer { 1522 | -moz-transform: scale(0.95); 1523 | -webkit-transform: scale(0.95); 1524 | -ms-transform: scale(0.95); 1525 | transform: scale(0.95); 1526 | -moz-filter: blur(0.1rem); 1527 | -webkit-filter: blur(0.1rem); 1528 | -ms-filter: blur(0.1rem); 1529 | filter: blur(0.1rem); 1530 | opacity: 0; 1531 | } 1532 | 1533 | body.is-loading #footer { 1534 | opacity: 0; 1535 | } 1536 | #xie { 1537 | background: rgba(0, 0, 0, 0.6); 1538 | color: black; 1539 | margin: 0 auto; 1540 | font-weight:bold; 1541 | -webkit-border-top-left-radius: 2em; 1542 | -webkit-border-top-right-radius: 2em; 1543 | -webkit-border-bottom-right-radius: 2em; 1544 | -webkit-border-bottom-left-radius: 2em; 1545 | -moz-border-radius-topleft: 2em; 1546 | -moz-border-radius-topright: 2em; 1547 | -moz-border-radius-bottomright: 2em; 1548 | -moz-border-radius-bottomleft: 2em; 1549 | border-top-left-radius: 2em; 1550 | border-top-right-radius: 2em; 1551 | border-bottom-right-radius: 2em; 1552 | border-bottom-left-radius: 2em; 1553 | } 1554 | .lb{ 1555 | width: 50%; 1556 | margin: 5px auto; 1557 | color: #eeeeee; 1558 | } 1559 | /* 小屏幕(平板,大于等于 ) */ 1560 | @media (min-width: 360px) { 1561 | #xie { 1562 | width: 100%; 1563 | padding: 10%; 1564 | margin-top: 20%; 1565 | } 1566 | .lb{ 1567 | width: 90%; 1568 | } 1569 | } 1570 | /* 小屏幕(平板,大于等于 ) */ 1571 | @media (min-width: 480px) { 1572 | #xie { 1573 | width: 90%; 1574 | padding: 10%; 1575 | margin-top: 10%; 1576 | } 1577 | } 1578 | 1579 | /* 小屏幕(平板,大于等于 ) */ 1580 | @media (min-width: 768px) { 1581 | #xie { 1582 | width: 80%; 1583 | padding: 5%; 1584 | margin-top: 0%; 1585 | } 1586 | } 1587 | /* 中等屏幕(桌面显示器,大于等于 ) */ 1588 | @media (min-width: 992px) { 1589 | #xie { 1590 | width: 60%; 1591 | } 1592 | } -------------------------------------------------------------------------------- /public/resource/js/jquery.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ 2 | !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(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 pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(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 ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; 3 | 4 | return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&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 m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("