Repository: KBRACER/kbracer.github.io Branch: master Commit: b2d3635ea97a Files: 22 Total size: 715.3 KB Directory structure: gitextract_ls4d2koz/ ├── .gitignore ├── CNAME ├── bigV.json ├── css/ │ ├── button.css │ ├── button.less │ └── index.css ├── goldport.json ├── index.html ├── js/ │ └── index.js ├── lib/ │ ├── bootstrap/ │ │ ├── css/ │ │ │ ├── bootstrap-table.css │ │ │ ├── bootstrap-theme.css │ │ │ └── bootstrap.css │ │ └── js/ │ │ ├── bootstrap-table.js │ │ ├── bootstrap.js │ │ └── npm.js │ ├── canvas-bg/ │ │ └── rAF.js │ ├── layer/ │ │ ├── layer.js │ │ ├── mobile/ │ │ │ ├── layer.js │ │ │ └── need/ │ │ │ └── layer.css │ │ └── theme/ │ │ └── default/ │ │ └── layer.css │ └── template.js └── speed.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ speed - 副本 (2).json ================================================ FILE: CNAME ================================================ kbracer.github.io ================================================ FILE: bigV.json ================================================ [ { "year":"2014", "car": "911 TurboS", "BID": "BV1eN4y1K7nf", "Btitle": "最烂仔的GT2RS?", "hp": "620", "hp_content": "620", "Powertrain": "3.8T/7DCT", "speed": "63.21", "mods": "2", "tyre": "F200", "temperature": "26", "lv": "S", "time": "", "accelerate": "3.38", "limit": "202.54", "powerType":"0", "producer":"2", "nationality":"DE", "price":"255.10", "driver":"阿飞" }, { "year":"2021", "car": "911 Carrara S", "BID": "BV1RN4y1P7ZH", "Btitle": "GIC最速传说,比GT3RS还快的992S..", "hp": "540", "hp_content": "540", "Powertrain": "3.0T/7DCT", "speed": "64.45", "mods": "1", "tyre": "Cup2R", "temperature": "26", "lv": "S", "time": "", "accelerate": "3.24", "limit": "189.07", "powerType":"0", "producer":"2", "nationality":"DE", "price":"146.00", "driver":"Jerry杨浩宇" }, { "year":"2019", "car": "AMG GTC", "BID": "BV1W7HczjEen", "Btitle": "【大V榜】小米工程师开AMG GTC", "hp": "557", "hp_content": "557", "Powertrain": "4.0T/7DCT", "speed": "66.01", "mods": "1", "tyre": "PT-01", "temperature": "12", "lv": "S", "time": "", "accelerate": "--", "limit": "193.34", "powerType":"0", "producer":"2", "nationality":"DE", "price":"182.68", "driver":"Frank" }, { "year":"2011", "car": "M3", "BID": "BV1AuvmBxEJr", "Btitle": "【大V榜】100万的宝马M4 vs 10万的宝马M4~!!", "hp": "420", "hp_content": "420", "Powertrain": "4.0/7DCT", "speed": "66.31", "mods": "1", "tyre": "CR-S", "temperature": "6", "lv": "B", "time": "", "accelerate": "4.64", "limit": "175.51", "powerType":"0", "producer":"2", "nationality":"DE", "price":"110.50", "driver":"约翰" }, { "year":"2014", "car": "GT86", "BID": "BV1PA41167u8", "Btitle": "北方一台快的86都没有?", "hp": "233", "hp_content": "233", "Powertrain": "2.0/6MT", "speed": "70.81", "mods": "1", "tyre": "TD", "temperature": "1", "lv": "S", "time": "", "accelerate": "6.21", "limit": "159.83", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.96", "driver":"键盘打工人" }, { "year":"2008", "car": "Lancer Evolution IX", "BID": "BV16T411T7qD", "Btitle": "EVO 9已经超过100W了?", "hp": "280", "hp_content": "280", "Powertrain": "2.0T/6MT", "speed": "74.30", "mods": "1", "tyre": "R888R", "temperature": "31", "lv": "A", "time": "", "accelerate": "6.18", "limit": "156.12", "powerType":"0", "producer":"2", "nationality":"JP", "price":"45.50", "driver":"李松桥" }, { "year":"2003", "car": "M3 CSL", "BID": "BV1KU4y1k7Ck", "Btitle": "20年的老车还要100W?E46M3 CSL喜欢您来!", "hp": "360", "hp_content": "360", "Powertrain": "3.2/6MT", "speed": "78.36", "mods": "1", "tyre": "Cup2", "temperature": "33", "lv": "B", "time": "", "accelerate": "6.62", "limit": "138.40", "powerType":"0", "producer":"2", "nationality":"DE", "price":"-", "driver":"亢岳" } ] ================================================ FILE: css/button.css ================================================ .button { position: relative; appearance: none; background: #337ab7; padding: 10px 20px; border: none; color: white; cursor: pointer; outline: none; overflow: hidden; border-radius: 10px; text-align: center; width: 180px; height: 40px; line-height: 20px; box-sizing: border-box; box-shadow: inset 0 -2px 0 #23527c; margin: 20px auto 40px; transform: scale(2); } .button span { position: relative; letter-spacing: 8px; } .button::before { --size: 0; content: ''; position: absolute; left: var(--x); top: var(--y); width: var(--size); height: var(--size); background: radial-gradient(circle closest-side, #4405f7, transparent); transform: translate(-50%, -50%); transition: width 0.2s ease, height 0.2s ease; } .button:hover::before { --size: 400px; } ================================================ FILE: css/button.less ================================================ .button { position: relative; appearance: none; background: #337ab7; // padding: 1em 2em; padding: 10px 20px; border: none; color: white; // font-size: 1.2em; cursor: pointer; outline: none; overflow: hidden; border-radius: 10px; text-align: center; width: 180px; height: 40px; line-height: 20px; box-sizing: border-box; box-shadow: inset 0 -2px 0 #23527c; margin: 20px auto 40px; transform: scale(2); span { position: relative; letter-spacing:8px } &::before { --size: 0; content: ''; position: absolute; left: var(--x); top: var(--y); width: var(--size); height: var(--size); background: radial-gradient(circle closest-side, #4405f7, transparent); transform: translate(-50%, -50%); transition: width .2s ease, height .2s ease; } &:hover::before { --size: 400px; } } ================================================ FILE: css/index.css ================================================ body { background-image: linear-gradient(90deg, #485563, #29323c); min-height: 100vh; display: flex; flex-direction: column; overflow-x: hidden; } table { width:100%; } tbody { color: #eeeeee; width: 100%; } thead { color: #e5e5e5; width: 100%; } .mini_banner { display: none; } tr.speed0 { background-image: linear-gradient(230deg, hsl(335, 58%, 48%), hsl(335, 47%, 60%)); } tr.speed1 { background-image: linear-gradient(230deg, hsl(0, 65%, 60%),hsl(0, 79%, 63%) ); } tr.speed2 { background-image: linear-gradient(230deg, hsl(282, 38%, 28%), hsl(282, 27%, 56%)); } tr.speed3 { background-image: linear-gradient(230deg, hsl(238, 38%, 28%), hsl(206, 53%, 56%)); } tr.speed4 { background-image: linear-gradient(230deg, hsl(186, 38%, 28%), hsl(186, 27%, 56%)); } tr.speed5 { background-image: linear-gradient(230deg, hsl(30, 83%, 38%), hsl(30, 49%, 56%)); } tr.speed6 { background-image: linear-gradient(230deg, hsl(0, 54%, 38%), hsl(10, 49%, 56%)); } tr.speed0:hover { background-image: linear-gradient(230deg, hsl(335, 58%, 60%), hsl(335, 47%, 72%)); color: fff; } tr.speed1:hover { background-image: linear-gradient(230deg, hsl(8, 58%, 67%),hsl(8, 80%, 69%) ); color: #fff; } tr.speed2:hover { background-image: linear-gradient(230deg, hsl(282, 38%, 40%), hsl(282, 27%, 68%)); color: #fff; } tr.speed3:hover { background-image: linear-gradient(230deg, hsl(238, 38%, 40%), hsl(206, 53%, 68%)); color: #fff; } tr.speed4:hover { background-image: linear-gradient(230deg, hsl(186, 38%, 40%), hsl(186, 27%, 68%)); color: #fff; } t tr.speed5:hover { background-image: linear-gradient(230deg, hsl(30, 83%, 50%), hsl(30, 49%, 68%)); color: #fff; } tr.speed6:hover { background-image: linear-gradient(230deg, hsl(0, 54%, 50%), hsl(10, 49%, 68%)); color: #fff; } .table-responsive { background-color: rgba(229, 229, 229, 0.3); border-radius: 4px; border: solid; border-width: 0; margin: 2em; } .black { background-color: rgba(0, 0, 0, 0.3); } .gray { background-color: rgba(33,33,33, 0.1); } .blue { background-color: rgba(33,33,33, 0.6); } .align-left { text-align:left !important; } .table { margin-bottom: 0; min-width: 1500px; display: none; text-align:center; } .table.active { display: table; } a { color: #bbffff !important; } a:hover { color: aqua; } a:checked { color: azure; } .index_banner { /* position: relative; */ padding: 2em 1em; margin: 1em 2em 0em; border-radius: 20px; box-shadow: 1px 1px 10px #333; background-image: linear-gradient(200deg, #2980b9, #2c3e50); text-align: left; vertical-align: middle; } #canvas_bg { position: absolute; /* width: 100%; height: 100%; */ z-index: -10; } .title { color: #fefeff } footer { color: #fff; background-image: linear-gradient(90deg, rgba(200, 200, 255, 0.2), rgba(255, 255, 255, 0.4)); box-shadow: -10px 0px 50px #333; width: 100%; padding: 2em; margin-bottom: 0px; line-height: 40px; } /* layer */ .tips-content { padding: 20px; background-color: #000; color: #fff; } .t-left { text-align: left; } .t-center { text-align: center; } .t-right { text-align: right; } #tb_results .icon , #tb_results2 .icon , #tb_results3 .icon { width: 15px; cursor: pointer; } #tb_results td , #tb_results2 td, #tb_results3 td, #tb_results thead , #tb_results2 thead, #tb_results3 thead, #tb_results tr , #tb_results2 tr, #tb_results3 tr, #tb_results th , #tb_results2 th, #tb_results3 th{ text-align:center; border: 1px solid; } #tb_results .ranking, #tb_results .limit, #tb_results .accelerate, #tb_results .speed , #tb_results2 .ranking, #tb_results3 .ranking, #tb_results2 .limit, #tb_results3 .limit, #tb_results2 .accelerate, #tb_results3 .accelerate, #tb_results2 .speed , #tb_results3 .speed { min-width: 65px; } #tb_results .mods , #tb_results2 .mods , #tb_results3 .mods { min-width: 80px; } #tb_results .lv , #tb_results2 .lv , #tb_results3 .lv { min-width: 50px; } #tb_results .temperature , #tb_results2 .temperature , #tb_results3 .temperature { min-width: 90px; } #tb_results .car , #tb_results2 .car , #tb_results3 .car { min-width: 135px; } /* 移动端适配 */ @media (max-width: 550px) { .hid { display: none; } .options>div { margin-bottom: 5px; } /* .index_banner { display: none; } .mini_banner { display: block; padding-left: 20px; padding-top: 20px; } .input_ctrl { margin-top: 20px; } */ } /* button动效 */ /* tab切换 */ .box-tabs { width:100%; padding: 30px 0 0 30px; } .box-tabs .tab { display:inline-block; width:160px; height:40px; line-height:40px; text-align:center; background-color: #fff; cursor: pointer; border-radius: 10px; margin-right: 10px; } .box-tabs .tab.active { background-color: #ff0080; color:#fff; } /* 国旗icon */ .icon-flag { width: 24px; height: 24px; display: inline-block; vertical-align: middle; background-size: 100%; background-position: center; background-repeat: no-repeat; } .icon-flag.DE { background-image: url(../img/flags/DE.png); } .icon-flag.BR { background-image: url(../img/flags/BR.png); } .icon-flag.CN { background-image: url(../img/flags/CN.png); } .icon-flag.FR { background-image: url(../img/flags/FR.png); } .icon-flag.IT { background-image: url(../img/flags/IT.png); } .icon-flag.JP { background-image: url(../img/flags/JP.png); } .icon-flag.KR { background-image: url(../img/flags/KR.png); } .icon-flag.RU { background-image: url(../img/flags/RU.png); } .icon-flag.SE { background-image: url(../img/flags/SE.png); } .icon-flag.UK { background-image: url(../img/flags/UK.png); } .icon-flag.US { background-image: url(../img/flags/US.png); } .icon-flag.CZ { background-image: url(../img/flags/CZ.png); } ================================================ FILE: goldport.json ================================================ [ { "year":"2018", "car": "911 GT3RS", "BID": "BV1W94y1X7JY", "Btitle": "GT3 RS刷新易车金港赛道纪录?", "hp": "540", "hp_content": "540", "Powertrain": "4.0/7DCT", "speed": "62.90", "mods": "1", "tyre": "Cup2R", "temperature": "18", "lv": "S", "time": "", "accelerate": "3.29", "limit": "201.34", "powerType":"0", "producer":"2", "nationality":"DE", "price":"226.80" }, { "year":"2025", "car": "SU7 ULTRA", "BID": "BV1GegizAETD", "Btitle": "小米SU7U,打不过日产轩逸?!", "hp": "1548", "hp_content": "1548", "Powertrain": "E", "speed": "63.52", "mods": "0", "tyre": "PT-01", "temperature": "15", "lv": "C", "time": "", "accelerate": "--", "limit": "227.99", "powerType":"1", "producer":"0", "nationality":"CN", "price":"52.99" }, { "year":"2017", "car": "911GT3", "BID": "BV1BZ42127z9", "Btitle": "键盘圈速榜,原厂榜首预定?", "hp": "500", "hp_content": "500", "Powertrain": "4.0/7DCT", "speed": "64.40", "mods": "0", "tyre": "Cup2R", "temperature": "5", "lv": "S", "time": "", "accelerate": "3.45", "limit": "200.58", "powerType":"0", "producer":"2", "nationality":"DE", "price":"183.00" }, { "year":"2020", "car": "SF90", "BID": "BV1iT411d76t", "Btitle": "800万,1000马力,法拉利SF90杀爆全场?", "hp": "1000", "hp_content": "1000", "Powertrain": "3.9T+E/8DCT", "speed": "64.41", "mods": "0", "tyre": "Cup2R", "temperature": "0", "lv": "S", "time": "", "accelerate": "2.61", "limit": "216.70", "powerType":"0", "producer":"2", "nationality":"IT", "price":"498.80" }, { "year":"2019", "car": "AMG GT R", "BID": "BV1VX4y1k7rR", "Btitle": "日产GT-R,AMG GT R,谁是真战神?", "hp": "585", "hp_content": "585", "Powertrain": "4.0T/7DCT", "speed": "64.64", "mods": "0", "tyre": "Cup2R", "temperature": "13", "lv": "S", "time": "", "accelerate": "3.76", "limit": "202.62", "powerType":"0", "producer":"2", "nationality":"DE", "price":"212.88" }, { "year":"2017", "car": "M4", "BID": "BV1HN4y157tk", "Btitle": "国产魔王最后一战?", "hp": "521", "hp_content": "521", "Powertrain": "3.0T/7DCT", "speed": "64.81", "mods": "1", "tyre": "F200", "temperature": "14", "lv": "B", "time": "", "accelerate": "--", "limit": "196.34", "powerType":"0", "producer":"2", "nationality":"DE", "price":"90.68" }, { "year":"2013", "car": "911GT3", "BID": "BV1jA4m1V7hB", "Btitle": "100万能买911 GT3,为什么还要玩本田?", "hp": "476", "hp_content": "476", "Powertrain": "3.8/7DCT", "speed": "65.28", "mods": "0", "tyre": "Cup2R", "temperature": "5", "lv": "S", "time": "", "accelerate": "3.68", "limit": "195.16", "powerType":"0", "producer":"2", "nationality":"DE", "price":"187.80" }, { "year":"2021", "car": "911 Carrera 4S", "BID": "BV1Sa411X7gx", "Btitle": "911有必要四驱么?-- 满配992 4S圈速测试", "hp": "530", "hp_content": "530", "Powertrain": "3.0T/8DCT", "speed": "66.38", "mods": "1", "tyre": "P0", "temperature": "28", "lv": "S", "time": "", "accelerate": "3.05", "limit": "197.19", "powerType":"0", "producer":"2", "nationality":"DE", "price":"155.10" }, { "year":"2022", "car": "M4雷霆版 M xDrive", "BID": "BV1jG4y1c7j8", "Btitle": "比保时捷还快的宝马?G82四驱赛道测试!", "hp": "510", "hp_content": "510", "Powertrain": "3.0T/8AT", "speed": "66.40", "mods": "0", "tyre": "PS4S*", "temperature": "6", "lv": "B", "time": "", "accelerate": "3.35", "limit": "192.18", "powerType":"0", "producer":"2", "nationality":"DE", "price":"94.39" }, { "year":"2022", "car": "911 Carrera S", "BID": "BV1ZG4y1j77t", "Btitle": "保时捷992S VS 马丁Vantage F1,谁快?", "hp": "450", "hp_content": "450", "Powertrain": "3.0T/8DCT", "speed": "66.73", "mods": "0", "tyre": "P0", "temperature": "15", "lv": "S", "time": "", "accelerate": "3.48", "limit": "192.98", "powerType":"0", "producer":"2", "nationality":"DE", "price":"147.30" }, { "year":"2015", "car": "GT-R", "BID": "BV1Bc411j7vu", "Btitle": "日产GTR,打得过宝马M4?", "hp": "600", "hp_content": "600", "Powertrain": "3.8T/6DCT", "speed": "66.76", "mods": "1", "tyre": "Cup2C/Cup2R", "temperature": "7", "lv": "S", "time": "", "accelerate": "3.55", "limit": "195.35", "powerType":"0", "producer":"2", "nationality":"JP", "price":"158.00" }, { "year":"-", "car": "领克03++赛车", "BID": "BV1JgmyB3EHw", "Btitle": "140万领克TCR的青春版,能打保时捷911~?", "hp": "350", "hp_content": "350", "Powertrain": "2.0T/8AT", "speed": "66.75", "mods": "1", "tyre": "赛轮", "temperature": "5", "lv": "A", "time": "", "accelerate": "4.96", "limit": "175.28", "powerType":"0", "producer":"0", "nationality":"CN", "price":"--" }, { "year":"2025", "car": "Ioniq5N", "BID": "BV1XHR1YoEQw", "Btitle": "金港最速量产SUV?", "hp": "650", "hp_content": "650", "Powertrain": "E", "speed": "67.45", "mods": "0", "tyre": "CUP2C", "temperature": "20", "lv": "SUV2", "time": "", "accelerate": "3.51", "limit": "189.03", "powerType":"1", "producer":"2", "nationality":"KR", "price":"38.88" }, { "year":"2020", "car": "718GTS", "BID": "BV1dY4y1o7oN", "Btitle": "60W,2.5T最强四缸保时捷~", "hp": "366", "hp_content": "366", "Powertrain": "2.5T/7DCT", "speed": "67.65", "mods": "0", "tyre": "PS4S", "temperature": "14", "lv": "S", "time": "", "accelerate": "3.85", "limit": "185.93", "powerType":"0", "producer":"2", "nationality":"DE", "price":"87.50" }, { "year":"-", "car": "思域FK8赛车", "BID": "BV1Lz4y1M7NL", "Btitle": "50W手搓本田FK8 TCR,居然能到9300转?", "hp": "300", "hp_content": "300", "Powertrain": "2.4/6SMG", "speed": "67.72", "mods": "1", "tyre": "F200", "temperature": "37", "lv": "A", "time": "", "accelerate": "--", "limit": "168.03", "powerType":"0", "producer":"1", "nationality":"JP", "price":"--" }, { "year":"2021", "car": "GTI", "BID": "BV113411X7WB", "Btitle": "改装GTI vs 原厂奥迪RS 3", "hp": "294", "hp_content": "294", "Powertrain": "2.0T/7DCT", "speed": "68.02", "mods": "1", "tyre": "TD/Cup2C", "temperature": "4", "lv": "A", "time": "", "accelerate": "5.59", "limit": "181.31", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2011", "car": "458", "BID": "BV1AK421y7xf", "Btitle": "法拉利458,赛道能打得过911?", "hp": "570", "hp_content": "570", "Powertrain": "4.5/7DCT", "speed": "68.08", "mods": "0", "tyre": "Cup2R", "temperature": "31", "lv": "S", "time": "", "accelerate": "--", "limit": "188.10", "powerType":"0", "producer":"2", "nationality":"IT", "price":"388.00" }, { "year":"2022", "car": "Vantage F1", "BID": "BV1ZG4y1j77t", "Btitle": "保时捷992S VS 马丁Vantage F1,谁快?", "hp": "534", "hp_content": "534", "Powertrain": "4.0T/8AT", "speed": "68.11", "mods": "0", "tyre": "P0", "temperature": "17", "lv": "S", "time": "", "accelerate": "3.91", "limit": "188.80", "powerType":"0", "producer":"2", "nationality":"UK", "price":"206.80" }, { "year":"2017", "car": "86", "BID": "BV1px4y1L7ki", "Btitle": "涡轮+ 86 = 911?", "hp": "320", "hp_content": "320", "Powertrain": "2.0T/6MT", "speed": "68.16", "mods": "1", "tyre": "TD", "temperature": "1", "lv": "S", "time": "", "accelerate": "5.38", "limit": "175.02", "powerType":"0", "producer":"2", "nationality":"JP", "price":"24.98" }, { "year":"2014", "car": "86", "BID": "BV1PA41167u8", "Btitle": "北方一台快的86都没有?", "hp": "233", "hp_content": "233", "Powertrain": "2.0/6MT", "speed": "68.73", "mods": "1", "tyre": "TD", "temperature": "1", "lv": "S", "time": "", "accelerate": "6.21", "limit": "164.15", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.96" }, { "year":"2022", "car": "思域Type-R", "BID": "BV15p421R7rD", "Btitle": "330马力的思域TYPE R,能有多快?", "hp": "330", "hp_content": "330", "Powertrain": "2.0T/6MT", "speed": "68.85", "mods": "1", "tyre": "Cup2C", "temperature": "16", "lv": "A", "time": "", "accelerate": "5.29", "limit": "177.08", "powerType":"0", "producer":"2", "nationality":"JP", "price":"42.00" }, { "year":"2023", "car": "影豹R", "BID": "BV12V6gYLEmu", "Btitle": "影豹RR第二季的最后一次圈速测试。", "hp": "350", "hp_content": "350", "Powertrain": "2.0T/8AT", "speed": "68.90", "mods": "1", "tyre": "DSS", "temperature": "18", "lv": "A", "time": "", "accelerate": "4.91", "limit": "175.14", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.80" }, { "year":"2005", "car": "菱帅 进化8", "BID": "BV1Bb4y13771", "Btitle": "200马力菱帅王,比思域TR快?", "hp": "200", "hp_content": "200", "Powertrain": "1.6/5MT", "speed": "68.96", "mods": "1", "tyre": "RC001", "temperature": "23", "lv": "A", "time": "", "accelerate": "5.99", "limit": "159.27", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2020", "car": "M2C", "BID": "BV14S4y1p74Y", "Btitle": "100W内天花板?", "hp": "411", "hp_content": "411", "Powertrain": "3.0T/7DCT", "speed": "69.00", "mods": "0", "tyre": "PS4S*", "temperature": "33", "lv": "A", "time": "", "accelerate": "4.54", "limit": "183.59", "powerType":"0", "producer":"2", "nationality":"DE", "price":"64.38" }, { "year":"2023", "car": "M2", "BID": "BV1V64y1w7KR", "Btitle": "宝马M2很丑,但S58", "hp": "460", "hp_content": "460", "Powertrain": "3.0T/8AT", "speed": "69.05", "mods": "0", "tyre": "P0*", "temperature": "27", "lv": "A", "time": "", "accelerate": "4.34", "limit": "188.41", "powerType":"0", "producer":"2", "nationality":"DE", "price":"59.90" },{ "year":"2024", "car": "RS6 Performance", "BID": "BV15f421Q7KG", "Btitle": "马力没有SU7大,新款RS6还行吗?", "hp": "630", "hp_content": "630", "Powertrain": "4.0T/8AT", "speed": "69.05", "mods": "0", "tyre": "SC7", "temperature": "25", "lv": "C", "time": "", "accelerate": "3.25", "limit": "190.20", "powerType":"0", "producer":"2", "nationality":"DE", "price":"145.38" }, { "year":"2022", "car": "Giulia QV", "BID": "BV1Bk4y1477X", "Btitle": "大家别骂键盘打工人了,Giulia QV二番战!", "hp": "510", "hp_content": "510", "Powertrain": "2.9T/8AT", "speed": "69.08", "mods": "0", "tyre": "Cup2C*", "temperature": "6", "lv": "B", "time": "", "accelerate": "4.29", "limit": "189.08", "powerType":"0", "producer":"2", "nationality":"IT", "price":"90.28" }, { "year":"2012", "car": "911 Carrera S", "BID": "BV1Gx4y1T7He", "Btitle": "老保时捷,能拿捏宝马M吗?", "hp": "400", "hp_content": "400", "Powertrain": "3.8/7DCT", "speed": "69.20", "mods": "0", "tyre": "P0", "temperature": "2", "lv": "S", "time": "", "accelerate": "4.34", "limit": "181.80", "powerType":"0", "producer":"2", "nationality":"DE", "price":"146.50" }, { "year":"2021", "car": "AMG GT", "BID": "BV1114y1g7tE", "Btitle": "V8即正义,AMG GT能干掉911么?", "hp": "476", "hp_content": "476", "Powertrain": "4.0T/7DCT", "speed": "69.38", "mods": "0", "tyre": "PS4S", "temperature": "17", "lv": "S", "time": "", "accelerate": "4.37", "limit": "183.74", "powerType":"0", "producer":"2", "nationality":"DE", "price":"146.88" }, { "year":"2022", "car": "BRZ", "BID": "BV16G4y1g7G8", "Btitle": "【新老BRZ进化】避震篇", "hp": "234", "hp_content": "234", "Powertrain": "2.4/6MT", "speed": "69.48", "mods": "1", "tyre": "V01R", "temperature": "17", "lv": "S", "time": "", "accelerate": "--", "limit": "161.37", "powerType":"0", "producer":"2", "nationality":"JP", "price":"30.88" }, { "year":"2022", "car": "Supra", "BID": "BV1wW4y1C7Zn", "Btitle": "丰田SUPRA和宝马Z4,性能差距有多大?", "hp": "340", "hp_content": "340", "Powertrain": "3.0T/8AT", "speed": "69.57", "mods": "0", "tyre": "PSS*", "temperature": "28", "lv": "S", "time": "", "accelerate": "4.70", "limit": "177.95", "powerType":"0", "producer":"2", "nationality":"JP", "price":"62.90" }, { "year":"2021", "car": "GTI", "BID": "BV1fA411k7WG", "Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!", "hp": "294", "hp_content": "294", "Powertrain": "2.0T/7DCT", "speed": "69.58", "mods": "1", "tyre": "Cup2C", "temperature": "4", "lv": "A", "time": "", "accelerate": "6.03", "limit": "178.37", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2017", "car": "RS3", "BID": "BV113411X7WB", "Btitle": "改装GTI vs 原厂奥迪RS 3", "hp": "400", "hp_content": "400", "Powertrain": "2.5T/7DCT", "speed": "69.83", "mods": "0", "tyre": "PS4S", "temperature": "4", "lv": "A", "time": "", "accelerate": "3.89", "limit": "180.80", "powerType":"0", "producer":"2", "nationality":"DE", "price":"51.38" }, { "year":"2018", "car": "718", "BID": "BV14S4y1p74Y", "Btitle": "100W内天花板?", "hp": "370", "hp_content": "370", "Powertrain": "2.0T/7DCT", "speed": "69.83", "mods": "1", "tyre": "P0", "temperature": "33", "lv": "S", "time": "", "accelerate": "4.50", "limit": "176.81", "powerType":"0", "producer":"2", "nationality":"DE", "price":"54.50" }, { "year":"2024", "car": "03+TCR", "BID": "BV1tw4m1a7UN", "Btitle": "42万领克王,降维打击“本田王和现代王”?", "hp": "350", "hp_content": "350", "Powertrain": "2.0T/8AT", "speed": "69.96", "mods": "0", "tyre": "R31红", "temperature": "32", "lv": "A", "time": "", "accelerate": "5.42", "limit": "171.76", "powerType":"0", "producer":"0", "nationality":"CN", "price":"42.03" }, { "year":"2024", "car": "SU7 MAX", "BID": "BV1J1421m791", "Btitle": "真 · 保时捷平替,小米SU7~!", "hp": "673", "hp_content": "673", "Powertrain": "E", "speed": "69.99", "mods": "0", "tyre": "P0PZ5EV", "temperature": "27", "lv": "C", "time": "", "accelerate": "3.14", "limit": "189.66", "powerType":"1", "producer":"0", "nationality":"CN", "price":"29.99" }, { "year":"2021", "car": "C43", "BID": "BV1jM411b7W6", "Btitle": "CUP2C VS AD09,谁能助力AMG C 43登顶榜首?", "hp": "390", "hp_content": "390", "Powertrain": "3.0T/9AT", "speed": "70.05", "mods": "1", "tyre": "Cup2C", "temperature": "12", "lv": "B", "time": "", "accelerate": "4.11", "limit": "177.03", "powerType":"0", "producer":"2", "nationality":"DE", "price":"57.38" }, { "year":"2021", "car": "C43", "BID": "BV1jM411b7W6", "Btitle": "CUP2C VS AD09,谁能助力AMG C 43登顶榜首?", "hp": "390", "hp_content": "390", "Powertrain": "3.0T/9AT", "speed": "70.05", "mods": "1", "tyre": "AD09", "temperature": "12", "lv": "B", "time": "", "accelerate": "4.11", "limit": "176.00", "powerType":"0", "producer":"2", "nationality":"DE", "price":"57.38" }, { "year":"2017", "car": "BRZ", "BID": "BV1JR4y167Uu", "Btitle": "【新老BRZ进化】轮上马力相差多少?", "hp": "217", "hp_content": "217", "Powertrain": "2.0/6MT", "speed": "70.26", "mods": "1", "tyre": "V01R", "temperature": "4", "lv": "S", "time": "", "accelerate": "6.98", "limit": "158.78", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.98" }, { "year":"2017", "car": "TT RS", "BID": "BV1DB4y1W75H", "Btitle": "TTRS直线居然输M2C?", "hp": "400", "hp_content": "400", "Powertrain": "2.5T/7DCT", "speed": "70.35", "mods": "0", "tyre": "PS4S*", "temperature": "24", "lv": "S", "time": "", "accelerate": "3.94", "limit": "181.65", "powerType":"0", "producer":"2", "nationality":"DE", "price":"76.98" }, { "year":"2021", "car": "思域HB", "BID": "BV1fA411k7WG", "Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!", "hp": "232", "hp_content": "232", "Powertrain": "1.5T/6MT", "speed": "70.50", "mods": "1", "tyre": "Cup2C", "temperature": "4", "lv": "A", "time": "", "accelerate": "6.27", "limit": "165.21", "powerType":"0", "producer":"1", "nationality":"JP", "price":"15.99" }, { "year":"2022", "car": "Z4 M40i", "BID": "BV1wW4y1C7Zn", "Btitle": "丰田SUPRA和宝马Z4,性能差距有多大?", "hp": "340", "hp_content": "340", "Powertrain": "3.0T/8AT", "speed": "70.52", "mods": "0", "tyre": "PSS*", "temperature": "30", "lv": "S", "time": "", "accelerate": "4.74", "limit": "174.90", "powerType":"0", "producer":"2", "nationality":"DE", "price":"62.98" }, { "year":"2014", "car": "STI11", "BID": "BV1XC41177oq", "Btitle": "斯巴鲁最后荣光,11代STI能打赢原厂TR么?~", "hp": "300", "hp_content": "300", "Powertrain": "2.5T/6MT", "speed": "70.55", "mods": "1", "tyre": "A052", "temperature": "13", "lv": "A", "time": "", "accelerate": "--", "limit": "164.68", "powerType":"0", "producer":"2", "nationality":"JP", "price":"--" }, { "year":"2019", "car": "C43 旅行", "BID": "BV1ST411f7sT", "Btitle": "改装C 43能战胜奥迪RS 5?", "hp": "520", "hp_content": "520", "Powertrain": "3.0T/9AT", "speed": "70.80", "mods": "1", "tyre": "PS4S", "temperature": "12", "lv": "B", "time": "", "accelerate": "3.69", "limit": "181.61", "powerType":"0", "producer":"2", "nationality":"DE", "price":"65.38" }, { "year":"2022", "car": "BRZ", "BID": "BV1rP4y1m7hJ", "Btitle": "【新老BRZ进化】刹车是反向改装?", "hp": "234", "hp_content": "234", "Powertrain": "2.4/6MT", "speed": "70.83", "mods": "0", "tyre": "V01R", "temperature": "17", "lv": "S", "time": "", "accelerate": "6.26", "limit": "163.72", "powerType":"0", "producer":"2", "nationality":"JP", "price":"30.88" }, { "year":"2017", "car": "BRZ", "BID": "BV16G4y1g7G8", "Btitle": "【新老BRZ进化】避震篇", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "70.95", "mods": "1", "tyre": "V01R", "temperature": "14", "lv": "S", "time": "", "accelerate": "--", "limit": "154.51", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.98" }, { "year":"2008", "car": "STI", "BID": "BV1Fu4m1u75P", "Btitle": "不到20W的斯巴鲁STI,能赢42W的本田TR么?", "hp": "350", "hp_content": "350", "Powertrain": "2.5T/6MT", "speed": "71.00", "mods": "1", "tyre": "AD09", "temperature": "13", "lv": "A", "time": "", "accelerate": "--", "limit": "165.26", "powerType":"0", "producer":"2", "nationality":"JP", "price":"48.80" }, { "year":"2023", "car": "思域 Type-R", "BID": "BV18e411C7bH", "Btitle": "本田,现代,谁是前驱王。", "hp": "300", "hp_content": "300", "Powertrain": "2.0T/6MT", "speed": "71.03", "mods": "0", "tyre": "PS4S", "temperature": "6", "lv": "A", "time": "", "accelerate": "5.66", "limit": "169.98", "powerType":"0", "producer":"2", "nationality":"JP", "price":"42.00" }, { "year":"2017", "car": "Panamera 4S", "BID": "BV1qr4y1j7Wd", "Btitle": "Panamera跑赛道和911差多少?", "hp": "441", "hp_content": "441", "Powertrain": "2.9T/8DCT", "speed": "71.32", "mods": "0", "tyre": "P0", "temperature": "24", "lv": "D", "time": "", "accelerate": "4.09", "limit": "175.32", "powerType":"0", "producer":"2", "nationality":"DE", "price":"152.80" }, { "year":"2022", "car": "718 Cayman", "BID": "BV15P411P7hu", "Btitle": "保时捷718能战胜同价位丰田SUPRA?", "hp": "250", "hp_content": "250", "Powertrain": "2.0T/7DCT", "speed": "71.33", "mods": "0", "tyre": "PS4S", "temperature": "17", "lv": "S", "time": "", "accelerate": "5.13", "limit": "164.44", "powerType":"0", "producer":"2", "nationality":"DE", "price":"56.50" }, { "year":"2003", "car": "360 Modena", "BID": "BV1SF411F78o", "Btitle": "40万买法拉利,跑不过86?", "hp": "400", "hp_content": "400", "Powertrain": "3.6/6SMG", "speed": "71.55", "mods": "0", "tyre": "PS4S*", "temperature": "22", "lv": "S", "time": "", "accelerate": "5.25", "limit": "176.26", "powerType":"0", "producer":"2", "nationality":"IT", "price":"330.00" }, { "year":"2023", "car": "Elantra N", "BID": "BV1Dc411278A", "Btitle": "中规伊兰特N,依然是前驱的王?", "hp": "276", "hp_content": "276", "Powertrain": "2.0T/8DCT", "speed": "71.56", "mods": "0", "tyre": "PS4S HN", "temperature": "6", "lv": "A", "time": "", "accelerate": "5.35", "limit": "170.89", "powerType":"0", "producer":"2", "nationality":"KR", "price":"24.98" }, { "year":"2022", "car": "03+ Cyan", "BID": "BV1fA411k7WG", "Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!", "hp": "269", "hp_content": "269", "Powertrain": "2.0T/8AT", "speed": "71.63", "mods": "1", "tyre": "Cup2C", "temperature": "5", "lv": "A", "time": "", "accelerate": "5.50", "limit": "157.68", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2021", "car": "GTI", "BID": "BV1U84y1j7L5", "Btitle": "【4车进化】领克03+,大众GTI,凯迪拉克CT4,本田思域,谁的轮上马力最大?", "hp": "294", "hp_content": "294", "Powertrain": "2.0T/7DCT", "speed": "71.69", "mods": "1", "tyre": "Cup2C", "temperature": "5", "lv": "A", "time": "", "accelerate": "5.66", "limit": "178.50", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2021", "car": "S4", "BID": "BV1Co4y1v7fq", "Btitle": "奥迪S4,山路赛道大败北?", "hp": "354", "hp_content": "354", "Powertrain": "3.0T/8AT", "speed": "71.71", "mods": "0", "tyre": "PS4S*", "temperature": "-2", "lv": "B", "time": "", "accelerate": "4.56", "limit": "171.54", "powerType":"0", "producer":"2", "nationality":"DE", "price":"46.88" }, { "year":"2022", "car": "ZEEKR 001", "BID": "BV1bD4y1s7WC", "Btitle": "极氪001赛道版来了?", "hp": "544", "hp_content": "544", "Powertrain": "E", "speed": "71.96", "mods": "0", "tyre": "PC6", "temperature": "15", "lv": "C", "time": "", "accelerate": "3.88", "limit": "179.37", "powerType":"1", "producer":"0", "nationality":"CN", "price":"38.60" }, { "year":"2021", "car": "CT4", "BID": "BV1fA411k7WG", "Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!", "hp": "264", "hp_content": "264", "Powertrain": "2.0T/8AT", "speed": "72.16", "mods": "1", "tyre": "Cup2C", "temperature": "4", "lv": "B", "time": "", "accelerate": "6.18", "limit": "159.45", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2012", "car": "劳恩斯-酷派", "BID": "BV1R54y1K7sP", "Btitle": "EVO的跑车版本:劳恩斯-酷派", "hp": "330", "hp_content": "330", "Powertrain": "2.0T/6MT", "speed": "72.16", "mods": "1", "tyre": "Cup2C", "temperature": "13", "lv": "S", "time": "", "accelerate": "5.86", "limit": "166.97", "powerType":"0", "producer":"2", "nationality":"KR", "price":"23.36" }, { "year":"2023", "car": "影豹R", "BID": "BV14N411p7uU", "Btitle": "国产车 X 国产改件,出征小纽北~", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "72.27", "mods": "1", "tyre": "A052", "temperature": "26", "lv": "A", "time": "", "accelerate": "--", "limit": "163.28", "powerType":"0", "producer":"0", "nationality":"CN", "price":"13.80" }, { "year":"2017", "car": "BRZ", "BID": "BV1rP4y1m7hJ", "Btitle": "【新老BRZ进化】刹车是反向改装?", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "72.31", "mods": "0", "tyre": "V01R", "temperature": "17", "lv": "S", "time": "", "accelerate": "7.18", "limit": "159.44", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.97" }, { "year":"2024", "car": "03+ Racing", "BID": "BV1TJ4m1Y76E", "Btitle": "32万国产车,是AMG A35克星?", "hp": "350", "hp_content": "350", "Powertrain": "2.0T/8AT", "speed": "72.46", "mods": "0", "tyre": "PS4S", "temperature": "14", "lv": "A", "time": "", "accelerate": "5.06", "limit": "169.98", "powerType":"0", "producer":"0", "nationality":"CN", "price":"32.58" }, { "year":"2022", "car": "03+ Cyan", "BID": "BV1He4y1s7wS", "Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "72.48", "mods": "1", "tyre": "Cup2C", "temperature": "13", "lv": "A", "time": "", "accelerate": "--", "limit": "157.34", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2021", "car": "CT4", "BID": "BV1U84y1j7L5", "Btitle": "【4车进化】领克03+,大众GTI,凯迪拉克CT4,本田思域,谁的轮上马力最大?", "hp": "264", "hp_content": "264", "Powertrain": "2.0T/8AT", "speed": "72.55", "mods": "1", "tyre": "Cup2C", "temperature": "5", "lv": "B", "time": "", "accelerate": "6.76", "limit": "158.39", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2022", "car": "03+ Cyan", "BID": "BV1U84y1j7L5", "Btitle": "【4车进化】领克03+,大众GTI,凯迪拉克CT4,本田思域,谁的轮上马力最大?", "hp": "269", "hp_content": "269", "Powertrain": "2.0T/8AT", "speed": "72.66", "mods": "1", "tyre": "Cup2C", "temperature": "5", "lv": "A", "time": "", "accelerate": "5.76", "limit": "156.83", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2022", "car": "BRZ", "BID": "BV1ia41157dM", "Btitle": "【新老BRZ进化】换山东胎,刹车秒杀保时捷?", "hp": "234", "hp_content": "234", "Powertrain": "2.4/6MT", "speed": "72.72", "mods": "0", "tyre": "V01R", "temperature": "34", "lv": "S", "time": "", "accelerate": "7.49", "limit": "154.02", "powerType":"0", "producer":"2", "nationality":"JP", "price":"30.88" }, { "year":"2021", "car": "极星2", "BID": "BV1Rg411m776", "Btitle": "极星2才是电车王!", "hp": "408", "hp_content": "408", "Powertrain": "E", "speed": "72.81", "mods": "0", "tyre": "PS4S", "temperature": "30", "lv": "A", "time": "", "accelerate": "4.66", "limit": "169.68", "powerType":"1", "producer":"1", "nationality":"SW", "price":"35.88" }, { "year":"2023", "car": "smart精灵#3", "BID": "BV1Qt4y1f7Lj", "Btitle": "20W+,买百奔之王!!!", "hp": "428", "hp_content": "428", "Powertrain": "E", "speed": "72.96", "mods": "0", "tyre": "EC6Q", "temperature": "40", "lv": "A", "time": "", "accelerate": "3.80", "limit": "176.84", "powerType":"1", "producer":"1", "nationality":"DE", "price":"28.99" }, { "year":"2021", "car": "GTI", "BID": "BV1He4y1s7wS", "Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "72.96", "mods": "1", "tyre": "Cup2C", "temperature": "13", "lv": "A", "time": "", "accelerate": "--", "limit": "158.00", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2020", "car": "Macan GTS", "BID": "BV1kB4y1873e", "Btitle": "不是山东胎的MACAN GTS,反杀榜首X4M?", "hp": "381", "hp_content": "381", "Powertrain": "2.9T/7DCT", "speed": "73.00", "mods": "0", "tyre": "P0", "temperature": "35", "lv": "SUV2", "time": "", "accelerate": "4.68", "limit": "169.55", "powerType":"0", "producer":"2", "nationality":"DE", "price":"76.80" }, { "year":"2025", "car": "03+", "BID": "BV177r8BmEcv", "Btitle": "309马力4驱的领克03+,只要23W~!!", "hp": "309", "hp_content": "309", "Powertrain": "2.0T/8AT", "speed": "73.00", "mods": "0", "tyre": "MC6", "temperature": "3", "lv": "A", "time": "", "accelerate": "5.61", "limit": "162.27", "powerType":"0", "producer":"0", "nationality":"CN", "price":"23.88" }, { "year":"2022", "car": "BRZ", "BID": "BV1nZ4y1q79U", "Btitle": "【新老BRZ进化】烂仔逆袭,新老BRZ同胎大战!", "hp": "234", "hp_content": "234", "Powertrain": "2.4/6MT", "speed": "73.07", "mods": "0", "tyre": "PS4", "temperature": "25", "lv": "S", "time": "", "accelerate": "6.35", "limit": "160.03", "powerType":"0", "producer":"2", "nationality":"JP", "price":"30.88" }, { "year":"2021", "car": "A35", "BID": "BV14T411K7pi", "Btitle": "A35能赢李松桥100W的EVO 9么?", "hp": "306", "hp_content": "306", "Powertrain": "2.0T/7DCT", "speed": "73.08", "mods": "0", "tyre": "P0", "temperature": "28", "lv": "A", "time": "", "accelerate": "4.84", "limit": "163.98", "powerType":"0", "producer":"2", "nationality":"DE", "price":"43.98" }, { "year":"2022", "car": "03+ Cyan(22", "BID": "BV1cD4y1k7ru", "Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "73.25", "mods": "1", "tyre": "Cup2C", "temperature": "15", "lv": "A", "time": "", "accelerate": "6.15", "limit": "155.91", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2021", "car": "GTI", "BID": "BV1cD4y1k7ru", "Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "73.43", "mods": "1", "tyre": "Cup2C", "temperature": "15", "lv": "A", "time": "", "accelerate": "6.75", "limit": "156.96", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2011", "car": "尚酷R", "BID": "BV1xW4y1W78E", "Btitle": "10W,买500匹潜力的钢炮王!", "hp": "256", "hp_content": "256", "Powertrain": "2.0T/7DCT", "speed": "73.66", "mods": "1", "tyre": "V02R", "temperature": "16", "lv": "S", "time": "", "accelerate": "5.97", "limit": "163.25", "powerType":"0", "producer":"2", "nationality":"DE", "price":"39.88" }, { "year":"2021", "car": "CT4", "BID": "BV1He4y1s7wS", "Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/8AT", "speed": "73.70", "mods": "1", "tyre": "Cup2C", "temperature": "13", "lv": "A", "time": "", "accelerate": "--", "limit": "148.49", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2023", "car": "M240i", "BID": "BV1XV411X7GJ", "Btitle": "最便宜的B58,宝马240i真香!", "hp": "333", "hp_content": "333", "Powertrain": "3.0T/8AT", "speed": "73.71", "mods": "0", "tyre": "P0 PZ4", "temperature": "25", "lv": "A", "time": "", "accelerate": "5.10", "limit": "168.84", "powerType":"0", "producer":"2", "nationality":"DE", "price":"41.98" }, { "year":"2017", "car": "BRZ", "BID": "BV1nZ4y1q79U", "Btitle": "【新老BRZ进化】烂仔逆袭,新老BRZ同胎大战!", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "73.72", "mods": "0", "tyre": "PS4", "temperature": "25", "lv": "S", "time": "", "accelerate": "7.77", "limit": "153.99", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.98" }, { "year":"2021", "car": "GTI", "BID": "BV1Ge4y117y9", "Btitle": "【4车进化】GTI变成了最难开的车..", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "73.81", "mods": "1", "tyre": "Cup2C", "temperature": "20", "lv": "A", "time": "", "accelerate": "--", "limit": "158.61", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2022", "car": "03+ Cyan", "BID": "BV1Ge4y117y9", "Btitle": "【4车进化】GTI变成了最难开的车..", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "73.81", "mods": "1", "tyre": "Cup2C", "temperature": "20", "lv": "A", "time": "", "accelerate": "--", "limit": "158.61", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2022", "car": "海豹", "BID": "BV1LP4y1272r", "Btitle": "四驱海豹,真性能么?", "hp": "530", "hp_content": "530", "Powertrain": "E", "speed": "73.97", "mods": "0", "tyre": "SC7", "temperature": "15", "lv": "A", "time": "", "accelerate": "3.89", "limit": "168.71", "powerType":"1", "producer":"0", "nationality":"CN", "price":"28.98" }, { "year":"2020", "car": "Mustang", "BID": "BV1y14y1n7ya", "Btitle": "野马杀爆电野马...", "hp": "299", "hp_content": "299", "Powertrain": "2.3T/10AT", "speed": "74.03", "mods": "0", "tyre": "P0", "temperature": "15", "lv": "S", "time": "", "accelerate": "5.64", "limit": "161.07", "powerType":"0", "producer":"2", "nationality":"US", "price":"36.98" }, { "year":"2017", "car": "BRZ", "BID": "BV1ia41157dM", "Btitle": "【新老BRZ进化】换山东胎,刹车秒杀保时捷?", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "74.11", "mods": "0", "tyre": "V01R", "temperature": "34", "lv": "S", "time": "", "accelerate": "8.32", "limit": "149.51", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.98" }, { "year":"2021", "car": "思域HB", "BID": "BV1He4y1s7wS", "Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/6MT", "speed": "74.11", "mods": "1", "tyre": "Cup2C", "temperature": "13", "lv": "A", "time": "", "accelerate": "--", "limit": "147.86", "powerType":"0", "producer":"1", "nationality":"JP", "price":"15.99" }, { "year":"2022", "car": "540i", "BID": "BV1px4y157Jf", "Btitle": "3.0T标轴后驱5系王,540i能干掉奥迪S4?", "hp": "340", "hp_content": "340", "Powertrain": "3.0T/8AT", "speed": "74.35", "mods": "0", "tyre": "Eagle F1*", "temperature": "11", "lv": "C", "time": "", "accelerate": "5.22", "limit": "167.74", "powerType":"0", "producer":"2", "nationality":"DE", "price":"61.99" }, { "year":"2021", "car": "CT4", "BID": "BV1cD4y1k7ru", "Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/8AT", "speed": "74.48", "mods": "1", "tyre": "Cup2C", "temperature": "15", "lv": "A", "time": "", "accelerate": "7.35", "limit": "152.73", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2022", "car": "ZEEKR 001", "BID": "BV1zF411c7Qd", "Btitle": "谁是国产之王?极氪 001挑战蔚来ET7榜首!", "hp": "544", "hp_content": "544", "Powertrain": "E", "speed": "74.61", "mods": "0", "tyre": "PC6", "temperature": "34", "lv": "C", "time": "", "accelerate": "3.88", "limit": "181.07", "powerType":"1", "producer":"0", "nationality":"CN", "price":"38.60" }, { "year":"2021", "car": "Mastang Mach-E", "BID": "BV1Ae4y1g7M6", "Btitle": "电野马和油野马,谁更强?", "hp": "488", "hp_content": "488", "Powertrain": "E", "speed": "74.66", "mods": "0", "tyre": "P0", "temperature": "14", "lv": "SUV2", "time": "", "accelerate": "4.00", "limit": "165.10", "powerType":"1", "producer":"2", "nationality":"US", "price":"36.99" }, { "year":"2021", "car": "CT4", "BID": "BV1Ge4y117y9", "Btitle": "【4车进化】GTI变成了最难开的车..", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/8AT", "speed": "74.68", "mods": "1", "tyre": "Cup2C", "temperature": "20", "lv": "A", "time": "", "accelerate": "--", "limit": "149.77", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2021", "car": "思域HB", "BID": "BV1cD4y1k7ru", "Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/6MT", "speed": "74.71", "mods": "1", "tyre": "Cup2C", "temperature": "15", "lv": "A", "time": "", "accelerate": "8.24", "limit": "149.12", "powerType":"0", "producer":"1", "nationality":"JP", "price":"15.99" }, { "year":"2022", "car": "A5", "BID": "BV1uG4y1o71X", "Btitle": "无敌的四驱A5,把宝马粉开哭了", "hp": "252", "hp_content": "252", "Powertrain": "2.0T/7DCT", "speed": "74.86", "mods": "0", "tyre": "S001", "temperature": "15", "lv": "B", "time": "", "accelerate": "5.81", "limit": "157.45", "powerType":"0", "producer":"2", "nationality":"DE", "price":"48.88" }, { "year":"2026", "car": "领克03", "BID": "BV1pHzxBrEon", "Btitle": "新领克03,比影豹R快么?", "hp": "272", "hp_content": "272", "Powertrain": "2.0T/8AT", "speed": "75.00", "mods": "0", "tyre": "MC6", "temperature": "-2", "lv": "A", "time": "", "accelerate": "6.27", "limit": "155.21", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.68" }, { "year":"2024", "car": "影豹R", "BID": "BV1Fx4y147mm", "Btitle": "2024款影豹R,更快了?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "75.28", "mods": "0", "tyre": "PS5", "temperature": "28", "lv": "A", "time": "", "accelerate": "5.92", "limit": "159.46", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.80" }, { "year":"2017", "car": "C200 Coupe", "BID": "BV16o2kBTE2p", "Btitle": "【同事的车】小锤的奔驰 vs 钊博的宝马!!!", "hp": "184", "hp_content": "184", "Powertrain": "2.0T/9AT", "speed": "75.28", "mods": "0", "tyre": "PS4", "temperature": "10", "lv": "B", "time": "", "accelerate": "6.52", "limit": "151.32", "powerType":"0", "producer":"1", "nationality":"DE", "price":"38.28" }, { "year":"2022", "car": "迈锐宝XL", "BID": "BV1Xe411A7dS", "Btitle": "20万最强!买菜车吊打小钢炮?", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/9AT", "speed": "75.48", "mods": "0", "tyre": "MC5", "temperature": "4", "lv": "A", "time": "", "accelerate": "6.78", "limit": "154.97", "powerType":"0", "producer":"1", "nationality":"US", "price":"21.99" }, { "year":"2021", "car": "思域HB", "BID": "BV1Ge4y117y9", "Btitle": "【4车进化】GTI变成了最难开的车..", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/6MT", "speed": "75.48", "mods": "1", "tyre": "Cup2C", "temperature": "20", "lv": "A", "time": "", "accelerate": "--", "limit": "146.13", "powerType":"0", "producer":"1", "nationality":"JP", "price":"15.99" }, { "year":"2019", "car": "S3", "BID": "BV1Ua411K767", "Btitle": "奥迪S3+卫途轮胎的圈速测试..", "hp": "290", "hp_content": "290", "Powertrain": "2.0T/7DCT", "speed": "75.56", "mods": "0", "tyre": "V02R", "temperature": "38", "lv": "A", "time": "", "accelerate": "5.42", "limit": "162.36", "powerType":"0", "producer":"2", "nationality":"DE", "price":"36.38" }, { "year":"2021", "car": "GTI", "BID": "BV1kB4y167xf", "Btitle": "【4车进化】前驱后驱四驱,谁最强?", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "75.69", "mods": "0", "tyre": "K127", "temperature": "38", "lv": "A", "time": "", "accelerate": "6.73", "limit": "158.84", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2014", "car": "思域Si", "BID": "BV1Rj411G7Wu", "Btitle": "2.4+手动+LSD,思域Si赛道能赢GTI?", "hp": "217", "hp_content": "217", "Powertrain": "2.4/6MT", "speed": "75.83", "mods": "1", "tyre": "PS5", "temperature": "6", "lv": "A", "time": "", "accelerate": "6.59", "limit": "154.65", "powerType":"0", "producer":"2", "nationality":"JP", "price":"19.98" }, { "year":"2022", "car": "ET7", "BID": "BV1zZ4y1Y7Lm", "Btitle": "易车圈速榜马力最大的车,蔚来ET7", "hp": "653", "hp_content": "653", "Powertrain": "E", "speed": "75.90", "mods": "0", "tyre": "EC6", "temperature": "24", "lv": "C", "time": "", "accelerate": "3.75", "limit": "175.76", "powerType":"1", "producer":"0", "nationality":"CN", "price":"45.80" }, { "year":"2022", "car": "03+ Cyan", "BID": "BV1kB4y167xf", "Btitle": "【4车进化】前驱后驱四驱,谁最强?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "75.90", "mods": "0", "tyre": "PS4S", "temperature": "36", "lv": "A", "time": "", "accelerate": "6.88", "limit": "155.07", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2022", "car": "i3 35L", "BID": "BV1Lg411Y7Wb", "Btitle": "比3系还3系?i3赛道测试", "hp": "286", "hp_content": "286", "Powertrain": "E", "speed": "76.05", "mods": "0", "tyre": "御乘II", "temperature": "28", "lv": "B", "time": "", "accelerate": "5.53", "limit": "155.18", "powerType":"1", "producer":"1", "nationality":"DE", "price":"34.99" }, { "year":"2017", "car": "220i", "BID": "BV16o2kBTE2p", "Btitle": "【同事的车】小锤的奔驰 vs 钊博的宝马!!!", "hp": "184", "hp_content": "184", "Powertrain": "2.0T/8AT", "speed": "77.21", "mods": "0", "tyre": "K117", "temperature": "10", "lv": "A", "time": "", "accelerate": "7.05", "limit": "148.17", "powerType":"0", "producer":"1", "nationality":"DE", "price":"32.00" }, { "year":"2022", "car": "05+", "BID": "BBV13N4y137Ha", "Btitle": "开完赛道SUV,再开领克05+是什么体验?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "77.43", "mods": "0", "tyre": "PS4S", "temperature": "27", "lv": "SUV1", "time": "", "accelerate": "7.07", "limit": "143.99", "powerType":"0", "producer":"0", "nationality":"CN", "price":"23.58" }, { "year":"2021", "car": "CC猎装", "BID": "BV1gY411U72a", "Btitle": "CC旅行跑赛道,GTI精神重现?", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "77.45", "mods": "0", "tyre": "P7", "temperature": "12", "lv": "B", "time": "", "accelerate": "7.26", "limit": "150.04", "powerType":"0", "producer":"1", "nationality":"DE", "price":"29.99" }, { "year":"2021", "car": "星越L", "BID": "BV1dA411C7nh", "Btitle": "星越L才是真正的赛道级?", "hp": "239", "hp_content": "239", "Powertrain": "2.0T/8AT", "speed": "77.83", "mods": "0", "tyre": "Eagle F1", "temperature": "2", "lv": "SUV1", "time": "", "accelerate": "6.84", "limit": "148.52", "powerType":"0", "producer":"0", "nationality":"CN", "price":"18.52" }, { "year":"2022", "car": "03", "BID": "BV1ZP4y1o7Bz", "Btitle": "2.0T+DCT的领克03,必秒03+?", "hp": "190", "hp_content": "190", "Powertrain": "2.0T/7DCT", "speed": "78.03", "mods": "0", "tyre": "御乘II", "temperature": "29", "lv": "A", "time": "", "accelerate": "7.83", "limit": "146.22", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.08" }, { "year":"2022", "car": "325i", "BID": "BV1qW4y1j7Eo", "Btitle": "40万184马力,宝马325i值么?", "hp": "184", "hp_content": "184", "Powertrain": "2.0T/8AT", "speed": "78.47", "mods": "0", "tyre": "T005", "temperature": "17", "lv": "B", "time": "", "accelerate": "7.65", "limit": "142.78", "powerType":"0", "producer":"1", "nationality":"DE", "price":"31.39" }, { "year":"2011", "car": "凯泽西", "BID": "BV1Xx4y1F7tp", "Btitle": "2.4手动凯泽西,纽北调校研发的铃木王!", "hp": "178", "hp_content": "178", "Powertrain": "2.0/6MT", "speed": "78.60", "mods": "0", "tyre": "PS5", "temperature": "6", "lv": "B", "time": "", "accelerate": "8.54", "limit": "141.95", "powerType":"0", "producer":"1", "nationality":"JP", "price":"18.88" }, { "year":"2022", "car": "型格", "BID": "BV1AY4y1x7kS", "Btitle": "本田内战,型格和思域性能PK~", "hp": "182", "hp_content": "182", "Powertrain": "1.5T/CVT", "speed": "78.62", "mods": "0", "tyre": "SP050", "temperature": "27", "lv": "A", "time": "", "accelerate": "8.46", "limit": "147.32", "powerType":"0", "producer":"1", "nationality":"JP", "price":"16.69" }, { "year":"2021", "car": "CT4", "BID": "BV1kB4y167xf", "Btitle": "【4车进化】前驱后驱四驱,谁最强?", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/8AT", "speed": "79.05", "mods": "0", "tyre": "PC6 SSR", "temperature": "38", "lv": "A", "time": "", "accelerate": "7.72", "limit": "145.19", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2022", "car": "UNI-V", "BID": "BV1vY4y1x7es", "Btitle": "思域克星:UNI-V!", "hp": "188", "hp_content": "188", "Powertrain": "1.5T/7DCT", "speed": "79.77", "mods": "0", "tyre": "MC6", "temperature": "25", "lv": "A", "time": "", "accelerate": "7.01", "limit": "142.15", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.69" }, { "year":"2020", "car": "福克斯", "BID": "BV1FT411F7X5", "Btitle": "四缸福克斯 vs 三缸福克斯,谁是赛道之王?", "hp": "174", "hp_content": "174", "Powertrain": "1.5T/8AT", "speed": "79.84", "mods": "0", "tyre": "PS4", "temperature": "30", "lv": "A", "time": "", "accelerate": "9.24", "limit": "134.59", "powerType":"0", "producer":"1", "nationality":"US", "price":"15.08" }, { "year":"2021", "car": "思域HB", "BID": "BV1kB4y167xf", "Btitle": "【4车进化】前驱后驱四驱,谁最强?", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/6MT", "speed": "79.95", "mods": "0", "tyre": "Advan DB", "temperature": "38", "lv": "A", "time": "", "accelerate": "8.65", "limit": "145.81", "powerType":"0", "producer":"1", "nationality":"JP", "price":"15.99" }, { "year":"2022", "car": "MG5天蝎座", "BID": "BV1c341137Qo", "Btitle": "MG5天蝎座,01加速9秒多…", "hp": "181", "hp_content": "181", "Powertrain": "1.5T/7DCT", "speed": "80.13", "mods": "0", "tyre": "3ST", "temperature": "28", "lv": "A", "time": "", "accelerate": "9.13", "limit": "145.22", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.79" }, { "year":"2022", "car": "思域", "BID": "BV1AY4y1x7kS", "Btitle": "本田内战,型格和思域性能PK~", "hp": "182", "hp_content": "182", "Powertrain": "1.5T/CVT", "speed": "80.20", "mods": "0", "tyre": "MA510", "temperature": "27", "lv": "A", "time": "", "accelerate": "8.27", "limit": "147.42", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.29" }, { "year":"2022", "car": "凌云S", "BID": "BV1bF411c7tW", "Btitle": "261马力的凌云S,大直线被1.5T思域拉爆?", "hp": "261", "hp_content": "261", "Powertrain": "2.0T/7DCT", "speed": "80.21", "mods": "0", "tyre": "UC6", "temperature": "27", "lv": "SUV1", "time": "", "accelerate": "7.46", "limit": "146.99", "powerType":"0", "producer":"0", "nationality":"CN", "price":"16.99" }, { "year":"2012", "car": "星骋", "BID": "BV1Gv4y1u7ZU", "Btitle": "新老马自达3圈速比拼!谁是A级自吸之王?", "hp": "150", "hp_content": "150", "Powertrain": "2.0/6MT", "speed": "80.32", "mods": "0", "tyre": "T005", "temperature": "25", "lv": "A", "time": "", "accelerate": "9.54", "limit": "137.70", "powerType":"0", "producer":"1", "nationality":"JP", "price":"13.98" }, { "year":"2022", "car": "福克斯", "BID": "BV1FT411F7X5", "Btitle": "四缸福克斯 vs 三缸福克斯,谁是赛道之王?", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/6AT", "speed": "80.55", "mods": "0", "tyre": "PS4", "temperature": "30", "lv": "A", "time": "", "accelerate": "8.50", "limit": "133.61", "powerType":"0", "producer":"1", "nationality":"US", "price":"14.38" }, { "year":"2022", "car": "ID.4 CROZZ", "BID": "BV1114y1L72H", "Btitle": "ID.4 vs ID.3,圈速测试", "hp": "204", "hp_content": "204", "Powertrain": "E", "speed": "80.60", "mods": "0", "tyre": "御乘II", "temperature": "28", "lv": "A", "time": "", "accelerate": "8.23", "limit": "138.28", "powerType":"1", "producer":"1", "nationality":"DE", "price":"23.13" }, { "year":"2022", "car": "ID.3", "BID": "BV1oN4y1G7Gf", "Btitle": "18W买后置后驱超跑?大众ID.3赛道测试!", "hp": "170", "hp_content": "170", "Powertrain": "E", "speed": "80.70", "mods": "0", "tyre": "K127 EV", "temperature": "31", "lv": "A", "time": "", "accelerate": "8.06", "limit": "144.34", "powerType":"1", "producer":"1", "nationality":"DE", "price":"18.53" }, { "year":"2021", "car": "昂克赛拉", "BID": "BV1Gv4y1u7ZU", "Btitle": "新老马自达3圈速比拼!谁是A级自吸之王?", "hp": "156", "hp_content": "156", "Powertrain": "2.0/6AT", "speed": "80.73", "mods": "0", "tyre": "T005", "temperature": "25", "lv": "A", "time": "", "accelerate": "9.53", "limit": "138.60", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.79" }, { "year":"2006", "car": "思域", "BID": "BV1wjShB2ETR", "Btitle": "八代思域进化,遇事不决米其林~!", "hp": "140", "hp_content": "140", "Powertrain": "1.8/5MT", "speed": "80.86", "mods": "0", "tyre": "浩悦5", "temperature": "9", "lv": "A", "time": "", "accelerate": "8.52", "limit": "135.64", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.78" }, { "year":"2022", "car": "X3 25i", "BID": "BV1rt4y1c7aa", "Btitle": "又是一个赛道级?宝马X3赛道测试", "hp": "184", "hp_content": "184", "Powertrain": "2.0T/8AT", "speed": "81.10", "mods": "0", "tyre": "P7", "temperature": "26", "lv": "SUV2", "time": "", "accelerate": "8.07", "limit": "133.80", "powerType":"0", "producer":"1", "nationality":"DE", "price":"39.69" }, { "year":"2021", "car": "奇骏", "BID": "BV1Rg411C7CH", "Btitle": "三缸奇骏真的好玩!", "hp": "204", "hp_content": "204", "Powertrain": "1.5T/CVT", "speed": "81.53", "mods": "0", "tyre": "SP050+", "temperature": "38", "lv": "SUV1", "time": "", "accelerate": "9.75", "limit": "138.49", "powerType":"0", "producer":"1", "nationality":"JP", "price":"26.29" }, { "year":"2021", "car": "海豚", "BID": "BV1Qt4y1E7oz", "Btitle": "海豚王必秒飞度!", "hp": "177", "hp_content": "177", "Powertrain": "E", "speed": "81.56", "mods": "0", "tyre": "RRP76", "temperature": "25", "lv": "A0", "time": "", "accelerate": "7.34", "limit": "143.40", "powerType":"1", "producer":"0", "nationality":"CN", "price":"13.08" }, { "year":"2022", "car": "皓影 AWD", "BID": "BV1km42157Zo", "Btitle": "广汽本田皓影,全能战士?!", "hp": "192", "hp_content": "192", "Powertrain": "1.5T/CVT", "speed": "81.68", "mods": "0", "tyre": "LS3", "temperature": "25", "lv": "SUV1", "time": "", "accelerate": "9.69", "limit": "141.91", "powerType":"0", "producer":"1", "nationality":"JP", "price":"24.99" }, { "year":"2021", "car": "飞度", "BID": "BV1UF411V7Gb", "Btitle": "飞度GR9,还是“超跑”么?", "hp": "131", "hp_content": "131", "Powertrain": "1.5/CVT", "speed": "81.71", "mods": "0", "tyre": "ENASAVE", "temperature": "28", "lv": "A0", "time": "", "accelerate": "9.95", "limit": "136.53", "powerType":"0", "producer":"1", "nationality":"JP", "price":"8.68" }, { "year":"2020", "car": "锐际", "BID": "BV1rD4y1i7hD", "Btitle": "(原视频已下架)", "hp": "248", "hp_content": "248", "Powertrain": "2.0T/8AT", "speed": "82.33", "mods": "0", "tyre": "SV", "temperature": "30", "lv": "SUV1", "time": "", "accelerate": "7.38", "limit": "140.22", "powerType":"0", "producer":"1", "nationality":"US", "price":"15.98" }, { "year":"2006", "car": "思域", "BID": "BV1uYSiB3Edf", "Btitle": "八代思域,万元烂仔王!", "hp": "140", "hp_content": "140", "Powertrain": "1.8/5MT", "speed": "82.65", "mods": "0", "tyre": "远路", "temperature": "9", "lv": "A", "time": "", "accelerate": "8.71", "limit": "136.55", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.78" }, { "year":"2022", "car": "奥德赛", "BID": "BV1ZP4y1f7cf", "Btitle": "土屋圭市座驾,赛道级MPV!", "hp": "215", "hp_content": "215", "Powertrain": "2.0+E/ECVT", "speed": "86.80", "mods": "0", "tyre": "Advan DB", "temperature": "30", "lv": "MPV", "time": "", "accelerate": "9.36", "limit": "131.62", "powerType":"0", "producer":"1", "nationality":"JP", "price":"32.88" }, { "year":"2021", "car": "海豚", "BID": "BV1bg41117k1", "Btitle": "海豚下赛道能比飞度快?", "hp": "95", "hp_content": "95", "Powertrain": "E", "speed": "86.83", "mods": "0", "tyre": "RRP76", "temperature": "31", "lv": "A0", "time": "", "accelerate": "11.29", "limit": "124.93", "powerType":"1", "producer":"0", "nationality":"CN", "price":"11.78" } ] ================================================ FILE: index.html ================================================ 键盘车神教锐思圈速榜

键盘车神教圈速榜

传说中的偶像派车评人教主的真实圈速榜单
锐思圈速榜
易车金港圈速榜
大V榜
排名 车型 售价 马力 (Ps) 圈速 轮胎 气温 (℃) 动力总成 尾速 0-100 改装程度 链接
排名 车型 售价 马力 (Ps) 圈速 轮胎 气温 (℃) 动力总成 尾速 0-100 是否改装 链接
排名 车型 车手 圈速 马力 (Ps) 轮胎 气温 (℃) 动力总成 尾速 0-100 是否改装 链接
圈速榜说明书
================================================ FILE: js/index.js ================================================ $(function () { var jsonData; var goldData; var bigVData; function setTable(arr) { var htmlStr = template("tb", { data: arr, }); $("#tb_results > tbody").html(htmlStr); } function setTableGold(arr) { var htmlStr = template("tb2", { data: arr, }); $("#tb_results2 > tbody").html(htmlStr); } function setTableBigV(arr) { var htmlStr = template("tb3", { data: arr, }); $("#tb_results3 > tbody").html(htmlStr); } template.defaults.imports.timeFormat = function (date) { var timeArr = date.split("."), sec = timeArr[0] % 60, min; timeArr[0] >= 60 ? (min = 1) : (min = 0); sec < 10 ? (sec = "0" + sec) : null; return `${min}:${sec}.${timeArr[1]}`; }; //获取json数据 $.ajax({ url: "./goldport.json?v=20240306", // async: false, success: function (res) { console.log('goldport',res); goldData = res; setTableGold(goldData); }, }); $.ajax({ url: "./speed.json?v=20240226", // async: false, success: function (res) { console.log('ruisi',res); jsonData = res; setTable(jsonData); }, }); $.ajax({ url: "./bigV.json?v=20240226", // async: false, success: function (res) { console.log('bigV',res); bigVData = res; setTableBigV(bigVData); }, }); // setTable(jsonData); // setTableGold(goldData); $(".mods,.lv,.powerType,.producer").on("change", function () { // screen($(this).val()) screen(jsonData,'ruisi'); screen(goldData,'gold'); screen(bigVData,'bigV'); }); // 筛选 function screen(arr,type) { var lv = $(".lv").val(), mods = $(".mods").val(), powerType = $(".powerType").val(), producer = $(".producer").val(), search = $('.search').val().toLowerCase(); // arr = jsonData; // 车型级别 if (lv !== "all") { if (lv == "SUV") { arr = arr.filter(function (v) { return ["SUV1", "SUV2", "SUV3", "SUV4","SUV5"].includes(v.lv); }); } else if (lv == "0") { arr = arr.filter(function (v) { return ["A00", "A0", "A", "B", "C","D"].includes(v.lv); }); } else { arr = arr.filter(function (v) { return v.lv == lv; }); } } // 改装程度 if (mods == "all") { // setTable(jsonData) } else if (mods == 0) { arr = arr.filter(function (v) { return v.mods <= 0; }); } else { arr = arr.filter(function (v) { return v.mods > 0; }); } // 动力类型: 0 燃油 , 1 电动 if (powerType != "all") { arr = arr.filter(function (v) { return v.powerType == powerType; }); } // 产地: 0 国产, 1 合资 , 2 进口 if (producer != "all") { arr = arr.filter(function (v) { return v.producer == producer; }); } if(search){ arr = arr.filter((v) => { return v.car.toLowerCase().indexOf(search) != -1; }) } console.log(type,arr); switch (type) { case 'ruisi': setTable(arr) break; case 'gold': setTableGold(arr) break; case 'bigV': setTableBigV(arr) break; default: break; } } //搜索车型 $(".search").on("input", function () { // var val = $(this).val().toLowerCase(); // var arr = jsonData.filter((v) => { // return v.car.toLowerCase().indexOf(val) != -1; // }); // setTable(arr); // screen() screen(jsonData,'ruisi'); screen(goldData,'gold'); screen(bigVData,'bigV'); }); // button动效 document.querySelector(".button").onmousemove = (e) => { const x = e.pageX - e.target.offsetLeft; const y = e.pageY - e.target.offsetTop; e.target.style.setProperty("--x", `${x}px`); e.target.style.setProperty("--y", `${y}px`); }; // 榜单切换 $('.box-tabs .tab').on('click',function(){ var index = $(this).index() $(this).addClass('active').siblings().removeClass('active') $('.table-hover').eq(index).addClass('active').siblings().removeClass('active') // console.log($(this).addClass('active').siblings()); }) // // 榜单说明 $(".button").on("click", function () { layer.open({ type: 1, area: ["820px", "640px"], title: null, shade: false, content: $(".tips"), }); }); // // 改装程度 // $('.mods .icon').click(function () { // layer.open({ // type: 1, // shade: false, // title: false, // content: $('.tips-content-mods'), // }); // }) // // 气温 // $('.temperature .icon').click(function () { // layer.open({ // type: 1, // shade: false, // title: false, // content: $('.tips-content-temperature'), // }); // }) // // 轮胎 // $('.tyre .icon').click(function () { // layer.open({ // type: 1, // shade: false, // title: false, // content: $('.tips-content-tyre'), // }); // }) // // 尾速 // $('.limit .icon').click(function () { // layer.open({ // type: 1, // shade: false, // title: false, // content: $('.tips-content-limit'), // }); // }) // // 排名 飞行圈说明 // $('.ranking .icon').click(function () { // layer.open({ // type: 1, // shade: false, // title: false, // content: $('.tips-content-ranking'), // }); // }) // // 圈速 // $('.speed .icon').click(function () { // layer.open({ // type: 1, // shade: false, // title: false, // content: $('.tips-content-speed'), // }); // }) (function () { var width, height, largeHeader, canvas, ctx, points, target, animateHeader = true; // Main initHeader(); initAnimation(); addListeners(); function initHeader() { // width = window.innerWidth; // height = window.innerHeight; target = { x: width / 2, y: height / 2 }; largeHeader = document.querySelector("body"); // largeHeader = document.getElementById("canvas_bg"); // largeHeader.style.height = height + "px"; width = largeHeader.offsetWidth; height = largeHeader.offsetHeight; canvas = document.getElementById("canvas1"); canvas.width = width; canvas.height = height; ctx = canvas.getContext("2d"); // create points points = []; for (var x = 0; x < width; x = x + width / 20) { for (var y = 0; y < height; y = y + height / 20) { var px = x + (Math.random() * width) / 20; var py = y + (Math.random() * height) / 20; var p = { x: px, originX: px, y: py, originY: py }; points.push(p); } } // for each point find the 5 closest points for (var i = 0; i < points.length; i++) { var closest = []; var p1 = points[i]; for (var j = 0; j < points.length; j++) { var p2 = points[j]; if (!(p1 == p2)) { var placed = false; for (var k = 0; k < 5; k++) { if (!placed) { if (closest[k] == undefined) { closest[k] = p2; placed = true; } } } for (var k = 0; k < 5; k++) { if (!placed) { if (getDistance(p1, p2) < getDistance(p1, closest[k])) { closest[k] = p2; placed = true; } } } } } p1.closest = closest; } // assign a circle to each point for (var i in points) { var c = new Circle( points[i], 2 + Math.random() * 2, "rgba(255,255,255,0.3)" ); points[i].circle = c; } } // Event handling function addListeners() { if (!("ontouchstart" in window)) { window.addEventListener("mousemove", mouseMove); } window.addEventListener("scroll", scrollCheck); // window.addEventListener("resize", resize); } function mouseMove(e) { // var posx = (posy = 0); // if (e.pageX || e.pageY) { // posx = e.pageX; // posy = e.pageY; // } else if (e.clientX || e.clientY) { // posx = // e.clientX + // document.body.scrollLeft + // document.documentElement.scrollLeft; // posy = // e.clientY + // document.body.scrollTop + // document.documentElement.scrollTop; // } var scrTop = largeHeader.parentNode.offsetTop, l = largeHeader.parentNode.offsetLeft, h = largeHeader.parentNode.offsetHeight; if (e.pageY >= scrTop && e.pageY <= scrTop + h) { target.x = e.pageX - l; // target.y = e.offsetY; target.y = e.pageY - scrTop; } else { target.x = -500; target.y = -500; } } function scrollCheck() { if (document.body.scrollTop > height) animateHeader = false; else animateHeader = true; } function resize() { width = window.innerWidth; height = window.innerHeight; largeHeader.style.height = height + "px"; canvas.width = width; canvas.height = height; } // animation function initAnimation() { animate(); for (var i in points) { shiftPoint(points[i]); } } function animate() { if (animateHeader) { ctx.clearRect(0, 0, width, height); for (var i in points) { // detect points in range if (Math.abs(getDistance(target, points[i])) < 4000) { points[i].active = 0.3; points[i].circle.active = 0.6; } else if (Math.abs(getDistance(target, points[i])) < 20000) { points[i].active = 0.1; points[i].circle.active = 0.3; } else if (Math.abs(getDistance(target, points[i])) < 40000) { points[i].active = 0.02; points[i].circle.active = 0.1; } else { points[i].active = 0; points[i].circle.active = 0; } drawLines(points[i]); points[i].circle.draw(); } } requestAnimationFrame(animate); } function shiftPoint(p) { TweenLite.to(p, 1 + 1 * Math.random(), { x: p.originX - 50 + Math.random() * 100, y: p.originY - 50 + Math.random() * 100, ease: Circ.easeInOut, onComplete: function () { shiftPoint(p); }, }); } // Canvas manipulation function drawLines(p) { if (!p.active) return; for (var i in p.closest) { ctx.beginPath(); ctx.moveTo(p.x, p.y); ctx.lineTo(p.closest[i].x, p.closest[i].y); ctx.strokeStyle = "rgba(156,217,249," + p.active + ")"; ctx.stroke(); } } function Circle(pos, rad, color) { var _this = this; // constructor (function () { _this.pos = pos || null; _this.radius = rad || null; _this.color = color || null; })(); this.draw = function () { if (!_this.active) return; ctx.beginPath(); ctx.arc(_this.pos.x, _this.pos.y, _this.radius, 0, 2 * Math.PI, false); ctx.fillStyle = "rgba(156,217,249," + _this.active + ")"; ctx.fill(); }; } // Util function getDistance(p1, p2) { return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2); } })(); console.log( "%c键盘车神教圈速榜 by铲子", "text-shadow:0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb, 0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,0.1),0 0 5px rgba(0,0,0,0.25),0 10px 10px rgba(0,0,0,0.2),0 20px 20px rgba(0,0,0,0.15);font-size:100px" ); }); ================================================ FILE: lib/bootstrap/css/bootstrap-table.css ================================================ @charset "UTF-8"; /** * @author zhixin wen * version: 1.15.5 * https://github.com/wenzhixin/bootstrap-table/ */ .bootstrap-table .fixed-table-toolbar::after { content: ""; display: block; clear: both; } .bootstrap-table .fixed-table-toolbar .bs-bars, .bootstrap-table .fixed-table-toolbar .search, .bootstrap-table .fixed-table-toolbar .columns { position: relative; margin-top: 10px; margin-bottom: 10px; } .bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group { display: inline-block; margin-left: -1px !important; } .bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group > .btn { border-radius: 0; } .bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:first-child > .btn { border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:last-child > .btn { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .bootstrap-table .fixed-table-toolbar .columns .dropdown-menu { text-align: left; max-height: 300px; overflow: auto; -ms-overflow-style: scrollbar; z-index: 1001; } .bootstrap-table .fixed-table-toolbar .columns label { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.428571429; } .bootstrap-table .fixed-table-toolbar .columns-left { margin-right: 5px; } .bootstrap-table .fixed-table-toolbar .columns-right { margin-left: 5px; } .bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu { right: 0; left: auto; } .bootstrap-table .fixed-table-container { position: relative; clear: both; } .bootstrap-table .fixed-table-container .table { width: 100%; margin-bottom: 0 !important; } .bootstrap-table .fixed-table-container .table th, .bootstrap-table .fixed-table-container .table td { vertical-align: middle; box-sizing: border-box; } .bootstrap-table .fixed-table-container .table thead th { vertical-align: bottom; padding: 0; margin: 0; } .bootstrap-table .fixed-table-container .table thead th:focus { outline: 0 solid transparent; } .bootstrap-table .fixed-table-container .table thead th.detail { width: 30px; } .bootstrap-table .fixed-table-container .table thead th .th-inner { padding: 0.75rem; vertical-align: bottom; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .bootstrap-table .fixed-table-container .table thead th .sortable { cursor: pointer; background-position: right; background-repeat: no-repeat; padding-right: 30px; } .bootstrap-table .fixed-table-container .table thead th .both { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC"); } .bootstrap-table .fixed-table-container .table thead th .asc { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=="); } .bootstrap-table .fixed-table-container .table thead th .desc { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= "); } .bootstrap-table .fixed-table-container .table tbody tr.selected td { background-color: rgba(0, 0, 0, 0.075); } .bootstrap-table .fixed-table-container .table tbody tr.no-records-found { text-align: center; } .bootstrap-table .fixed-table-container .table tbody tr .card-view { display: flex; } .bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title { font-weight: bold; display: inline-block; min-width: 30%; text-align: left !important; } .bootstrap-table .fixed-table-container .table .bs-checkbox { text-align: center; } .bootstrap-table .fixed-table-container .table .bs-checkbox label { margin-bottom: 0; } .bootstrap-table .fixed-table-container .table input[type=radio], .bootstrap-table .fixed-table-container .table input[type=checkbox] { margin: 0 auto !important; } .bootstrap-table .fixed-table-container .table.table-sm .th-inner { padding: 0.3rem; } .bootstrap-table .fixed-table-container.fixed-height:not(.has-footer) { border-bottom: 1px solid #dee2e6; } .bootstrap-table .fixed-table-container.fixed-height.has-card-view { border-top: 1px solid #dee2e6; border-bottom: 1px solid #dee2e6; } .bootstrap-table .fixed-table-container.fixed-height .fixed-table-border { border-left: 1px solid #dee2e6; border-right: 1px solid #dee2e6; } .bootstrap-table .fixed-table-container.fixed-height .table thead th { border-bottom: 1px solid #dee2e6; } .bootstrap-table .fixed-table-container.fixed-height .table-dark thead th { border-bottom: 1px solid #32383e; } .bootstrap-table .fixed-table-container .fixed-table-header { overflow: hidden; } .bootstrap-table .fixed-table-container .fixed-table-body { overflow-x: auto; overflow-y: auto; height: 100%; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading { align-items: center; background: #fff; display: none; justify-content: center; position: absolute; bottom: 0; width: 100%; z-index: 1000; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap { align-items: baseline; display: flex; justify-content: center; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text { font-size: 2rem; margin-right: 6px; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap { align-items: center; display: flex; justify-content: center; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot, .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after, .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before { content: ""; animation-duration: 1.5s; animation-iteration-count: infinite; animation-name: LOADING; background: #212529; border-radius: 50%; display: block; height: 5px; margin: 0 4px; opacity: 0; width: 5px; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot { animation-delay: 0.3s; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after { animation-delay: 0.6s; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark { background: #212529; } .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot, .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after, .bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before { background: #fff; } .bootstrap-table .fixed-table-container .fixed-table-footer { overflow: hidden; } .bootstrap-table .fixed-table-pagination::after { content: ""; display: block; clear: both; } .bootstrap-table .fixed-table-pagination > .pagination-detail, .bootstrap-table .fixed-table-pagination > .pagination { margin-top: 10px; margin-bottom: 10px; } .bootstrap-table .fixed-table-pagination > .pagination-detail .pagination-info { line-height: 34px; margin-right: 5px; } .bootstrap-table .fixed-table-pagination > .pagination-detail .page-list { display: inline-block; } .bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group { position: relative; display: inline-block; vertical-align: middle; } .bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group .dropdown-menu { margin-bottom: 0; } .bootstrap-table .fixed-table-pagination > .pagination ul.pagination { margin: 0; } .bootstrap-table .fixed-table-pagination > .pagination ul.pagination a { padding: 6px 12px; line-height: 1.428571429; } .bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a { color: #c8c8c8; } .bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::before { content: "⬅"; } .bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::after { content: "➡"; } .bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.disabled a { pointer-events: none; cursor: default; } .bootstrap-table.fullscreen { position: fixed; top: 0; left: 0; z-index: 1050; width: 100% !important; background: #fff; height: calc(100vh); overflow-y: scroll; } /* calculate scrollbar width */ div.fixed-table-scroll-inner { width: 100%; height: 200px; } div.fixed-table-scroll-outer { top: 0; left: 0; visibility: hidden; width: 200px; height: 150px; overflow: hidden; } @keyframes LOADING { 0% { opacity: 0; } 50% { opacity: 1; } to { opacity: 0; } } /*# sourceMappingURL=bootstrap-table.css.map */ ================================================ FILE: lib/bootstrap/css/bootstrap-theme.css ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ .btn-default, .btn-primary, .btn-success, .btn-info, .btn-warning, .btn-danger { text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); } .btn-default:active, .btn-primary:active, .btn-success:active, .btn-info:active, .btn-warning:active, .btn-danger:active, .btn-default.active, .btn-primary.active, .btn-success.active, .btn-info.active, .btn-warning.active, .btn-danger.active { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn-default.disabled, .btn-primary.disabled, .btn-success.disabled, .btn-info.disabled, .btn-warning.disabled, .btn-danger.disabled, .btn-default[disabled], .btn-primary[disabled], .btn-success[disabled], .btn-info[disabled], .btn-warning[disabled], .btn-danger[disabled], fieldset[disabled] .btn-default, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-success, fieldset[disabled] .btn-info, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-danger { -webkit-box-shadow: none; box-shadow: none; } .btn-default .badge, .btn-primary .badge, .btn-success .badge, .btn-info .badge, .btn-warning .badge, .btn-danger .badge { text-shadow: none; } .btn:active, .btn.active { background-image: none; } .btn-default { text-shadow: 0 1px 0 #fff; background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-color: #dbdbdb; border-color: #ccc; } .btn-default:hover, .btn-default:focus { background-color: #e0e0e0; background-position: 0 -15px; } .btn-default:active, .btn-default.active { background-color: #e0e0e0; border-color: #dbdbdb; } .btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default.focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active { background-color: #e0e0e0; background-image: none; } .btn-primary { background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-color: #245580; } .btn-primary:hover, .btn-primary:focus { background-color: #265a88; background-position: 0 -15px; } .btn-primary:active, .btn-primary.active { background-color: #265a88; border-color: #245580; } .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary.focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #265a88; background-image: none; } .btn-success { background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-color: #3e8f3e; } .btn-success:hover, .btn-success:focus { background-color: #419641; background-position: 0 -15px; } .btn-success:active, .btn-success.active { background-color: #419641; border-color: #3e8f3e; } .btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success.focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active { background-color: #419641; background-image: none; } .btn-info { background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-color: #28a4c9; } .btn-info:hover, .btn-info:focus { background-color: #2aabd2; background-position: 0 -15px; } .btn-info:active, .btn-info.active { background-color: #2aabd2; border-color: #28a4c9; } .btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info.focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active { background-color: #2aabd2; background-image: none; } .btn-warning { background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-color: #e38d13; } .btn-warning:hover, .btn-warning:focus { background-color: #eb9316; background-position: 0 -15px; } .btn-warning:active, .btn-warning.active { background-color: #eb9316; border-color: #e38d13; } .btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning.focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active { background-color: #eb9316; background-image: none; } .btn-danger { background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-color: #b92c28; } .btn-danger:hover, .btn-danger:focus { background-color: #c12e2a; background-position: 0 -15px; } .btn-danger:active, .btn-danger.active { background-color: #c12e2a; border-color: #b92c28; } .btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, fieldset[disabled] .btn-danger.focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active { background-color: #c12e2a; background-image: none; } .thumbnail, .img-thumbnail { -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); box-shadow: 0 1px 2px rgba(0, 0, 0, .075); } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { background-color: #e8e8e8; background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); background-repeat: repeat-x; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { background-color: #2e6da4; background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); background-repeat: repeat-x; } .navbar-default { background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .active > a { background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); background-repeat: repeat-x; -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); } .navbar-brand, .navbar-nav > li > a { text-shadow: 0 1px 0 rgba(255, 255, 255, .25); } .navbar-inverse { background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); background-repeat: repeat-x; border-radius: 4px; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .active > a { background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); background-repeat: repeat-x; -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); } .navbar-inverse .navbar-brand, .navbar-inverse .navbar-nav > li > a { text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); } .navbar-static-top, .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } @media (max-width: 767px) { .navbar .navbar-nav .open .dropdown-menu > .active > a, .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { color: #fff; background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); background-repeat: repeat-x; } } .alert { text-shadow: 0 1px 0 rgba(255, 255, 255, .2); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); } .alert-success { background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); background-repeat: repeat-x; border-color: #b2dba1; } .alert-info { background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); background-repeat: repeat-x; border-color: #9acfea; } .alert-warning { background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); background-repeat: repeat-x; border-color: #f5e79e; } .alert-danger { background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); background-repeat: repeat-x; border-color: #dca7a7; } .progress { background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); background-repeat: repeat-x; } .progress-bar { background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); background-repeat: repeat-x; } .progress-bar-success { background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); background-repeat: repeat-x; } .progress-bar-info { background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); background-repeat: repeat-x; } .progress-bar-warning { background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); background-repeat: repeat-x; } .progress-bar-danger { background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); background-repeat: repeat-x; } .progress-bar-striped { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .list-group { border-radius: 4px; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); box-shadow: 0 1px 2px rgba(0, 0, 0, .075); } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { text-shadow: 0 -1px 0 #286090; background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); background-repeat: repeat-x; border-color: #2b669a; } .list-group-item.active .badge, .list-group-item.active:hover .badge, .list-group-item.active:focus .badge { text-shadow: none; } .panel { -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); box-shadow: 0 1px 2px rgba(0, 0, 0, .05); } .panel-default > .panel-heading { background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); background-repeat: repeat-x; } .panel-primary > .panel-heading { background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); background-repeat: repeat-x; } .panel-success > .panel-heading { background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); background-repeat: repeat-x; } .panel-info > .panel-heading { background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); background-repeat: repeat-x; } .panel-warning > .panel-heading { background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); background-repeat: repeat-x; } .panel-danger > .panel-heading { background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); background-repeat: repeat-x; } .well { background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); background-repeat: repeat-x; border-color: #dcdcdc; -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); } /*# sourceMappingURL=bootstrap-theme.css.map */ ================================================ FILE: lib/bootstrap/css/bootstrap.css ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } body { margin: 0; } article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } audio, canvas, progress, video { display: inline-block; vertical-align: baseline; } audio:not([controls]) { display: none; height: 0; } [hidden], template { display: none; } a { background-color: transparent; } a:active, a:hover { outline: 0; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } h1 { margin: .67em 0; font-size: 2em; } mark { color: #000; background: #ff0; } small { font-size: 80%; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -.5em; } sub { bottom: -.25em; } img { border: 0; } svg:not(:root) { overflow: hidden; } figure { margin: 1em 40px; } hr { height: 0; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } pre { overflow: auto; } code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } button, input, optgroup, select, textarea { margin: 0; font: inherit; color: inherit; } button { overflow: visible; } button, select { text-transform: none; } button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; cursor: pointer; } button[disabled], html input[disabled] { cursor: default; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } input { line-height: normal; } input[type="checkbox"], input[type="radio"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 0; } input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } fieldset { padding: .35em .625em .75em; margin: 0 2px; border: 1px solid #c0c0c0; } legend { padding: 0; border: 0; } textarea { overflow: auto; } optgroup { font-weight: bold; } table { border-spacing: 0; border-collapse: collapse; } td, th { padding: 0; } /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ @media print { *, *:before, *:after { color: #000 !important; text-shadow: none !important; background: transparent !important; -webkit-box-shadow: none !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } .navbar { display: none; } .btn > .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered th, .table-bordered td { border: 1px solid #ddd !important; } } @font-face { font-family: 'Glyphicons Halflings'; src: url('../fonts/glyphicons-halflings-regular.eot'); src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); } .glyphicon { position: relative; top: 1px; display: inline-block; font-family: 'Glyphicons Halflings'; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .glyphicon-asterisk:before { content: "\002a"; } .glyphicon-plus:before { content: "\002b"; } .glyphicon-euro:before, .glyphicon-eur:before { content: "\20ac"; } .glyphicon-minus:before { content: "\2212"; } .glyphicon-cloud:before { content: "\2601"; } .glyphicon-envelope:before { content: "\2709"; } .glyphicon-pencil:before { content: "\270f"; } .glyphicon-glass:before { content: "\e001"; } .glyphicon-music:before { content: "\e002"; } .glyphicon-search:before { content: "\e003"; } .glyphicon-heart:before { content: "\e005"; } .glyphicon-star:before { content: "\e006"; } .glyphicon-star-empty:before { content: "\e007"; } .glyphicon-user:before { content: "\e008"; } .glyphicon-film:before { content: "\e009"; } .glyphicon-th-large:before { content: "\e010"; } .glyphicon-th:before { content: "\e011"; } .glyphicon-th-list:before { content: "\e012"; } .glyphicon-ok:before { content: "\e013"; } .glyphicon-remove:before { content: "\e014"; } .glyphicon-zoom-in:before { content: "\e015"; } .glyphicon-zoom-out:before { content: "\e016"; } .glyphicon-off:before { content: "\e017"; } .glyphicon-signal:before { content: "\e018"; } .glyphicon-cog:before { content: "\e019"; } .glyphicon-trash:before { content: "\e020"; } .glyphicon-home:before { content: "\e021"; } .glyphicon-file:before { content: "\e022"; } .glyphicon-time:before { content: "\e023"; } .glyphicon-road:before { content: "\e024"; } .glyphicon-download-alt:before { content: "\e025"; } .glyphicon-download:before { content: "\e026"; } .glyphicon-upload:before { content: "\e027"; } .glyphicon-inbox:before { content: "\e028"; } .glyphicon-play-circle:before { content: "\e029"; } .glyphicon-repeat:before { content: "\e030"; } .glyphicon-refresh:before { content: "\e031"; } .glyphicon-list-alt:before { content: "\e032"; } .glyphicon-lock:before { content: "\e033"; } .glyphicon-flag:before { content: "\e034"; } .glyphicon-headphones:before { content: "\e035"; } .glyphicon-volume-off:before { content: "\e036"; } .glyphicon-volume-down:before { content: "\e037"; } .glyphicon-volume-up:before { content: "\e038"; } .glyphicon-qrcode:before { content: "\e039"; } .glyphicon-barcode:before { content: "\e040"; } .glyphicon-tag:before { content: "\e041"; } .glyphicon-tags:before { content: "\e042"; } .glyphicon-book:before { content: "\e043"; } .glyphicon-bookmark:before { content: "\e044"; } .glyphicon-print:before { content: "\e045"; } .glyphicon-camera:before { content: "\e046"; } .glyphicon-font:before { content: "\e047"; } .glyphicon-bold:before { content: "\e048"; } .glyphicon-italic:before { content: "\e049"; } .glyphicon-text-height:before { content: "\e050"; } .glyphicon-text-width:before { content: "\e051"; } .glyphicon-align-left:before { content: "\e052"; } .glyphicon-align-center:before { content: "\e053"; } .glyphicon-align-right:before { content: "\e054"; } .glyphicon-align-justify:before { content: "\e055"; } .glyphicon-list:before { content: "\e056"; } .glyphicon-indent-left:before { content: "\e057"; } .glyphicon-indent-right:before { content: "\e058"; } .glyphicon-facetime-video:before { content: "\e059"; } .glyphicon-picture:before { content: "\e060"; } .glyphicon-map-marker:before { content: "\e062"; } .glyphicon-adjust:before { content: "\e063"; } .glyphicon-tint:before { content: "\e064"; } .glyphicon-edit:before { content: "\e065"; } .glyphicon-share:before { content: "\e066"; } .glyphicon-check:before { content: "\e067"; } .glyphicon-move:before { content: "\e068"; } .glyphicon-step-backward:before { content: "\e069"; } .glyphicon-fast-backward:before { content: "\e070"; } .glyphicon-backward:before { content: "\e071"; } .glyphicon-play:before { content: "\e072"; } .glyphicon-pause:before { content: "\e073"; } .glyphicon-stop:before { content: "\e074"; } .glyphicon-forward:before { content: "\e075"; } .glyphicon-fast-forward:before { content: "\e076"; } .glyphicon-step-forward:before { content: "\e077"; } .glyphicon-eject:before { content: "\e078"; } .glyphicon-chevron-left:before { content: "\e079"; } .glyphicon-chevron-right:before { content: "\e080"; } .glyphicon-plus-sign:before { content: "\e081"; } .glyphicon-minus-sign:before { content: "\e082"; } .glyphicon-remove-sign:before { content: "\e083"; } .glyphicon-ok-sign:before { content: "\e084"; } .glyphicon-question-sign:before { content: "\e085"; } .glyphicon-info-sign:before { content: "\e086"; } .glyphicon-screenshot:before { content: "\e087"; } .glyphicon-remove-circle:before { content: "\e088"; } .glyphicon-ok-circle:before { content: "\e089"; } .glyphicon-ban-circle:before { content: "\e090"; } .glyphicon-arrow-left:before { content: "\e091"; } .glyphicon-arrow-right:before { content: "\e092"; } .glyphicon-arrow-up:before { content: "\e093"; } .glyphicon-arrow-down:before { content: "\e094"; } .glyphicon-share-alt:before { content: "\e095"; } .glyphicon-resize-full:before { content: "\e096"; } .glyphicon-resize-small:before { content: "\e097"; } .glyphicon-exclamation-sign:before { content: "\e101"; } .glyphicon-gift:before { content: "\e102"; } .glyphicon-leaf:before { content: "\e103"; } .glyphicon-fire:before { content: "\e104"; } .glyphicon-eye-open:before { content: "\e105"; } .glyphicon-eye-close:before { content: "\e106"; } .glyphicon-warning-sign:before { content: "\e107"; } .glyphicon-plane:before { content: "\e108"; } .glyphicon-calendar:before { content: "\e109"; } .glyphicon-random:before { content: "\e110"; } .glyphicon-comment:before { content: "\e111"; } .glyphicon-magnet:before { content: "\e112"; } .glyphicon-chevron-up:before { content: "\e113"; } .glyphicon-chevron-down:before { content: "\e114"; } .glyphicon-retweet:before { content: "\e115"; } .glyphicon-shopping-cart:before { content: "\e116"; } .glyphicon-folder-close:before { content: "\e117"; } .glyphicon-folder-open:before { content: "\e118"; } .glyphicon-resize-vertical:before { content: "\e119"; } .glyphicon-resize-horizontal:before { content: "\e120"; } .glyphicon-hdd:before { content: "\e121"; } .glyphicon-bullhorn:before { content: "\e122"; } .glyphicon-bell:before { content: "\e123"; } .glyphicon-certificate:before { content: "\e124"; } .glyphicon-thumbs-up:before { content: "\e125"; } .glyphicon-thumbs-down:before { content: "\e126"; } .glyphicon-hand-right:before { content: "\e127"; } .glyphicon-hand-left:before { content: "\e128"; } .glyphicon-hand-up:before { content: "\e129"; } .glyphicon-hand-down:before { content: "\e130"; } .glyphicon-circle-arrow-right:before { content: "\e131"; } .glyphicon-circle-arrow-left:before { content: "\e132"; } .glyphicon-circle-arrow-up:before { content: "\e133"; } .glyphicon-circle-arrow-down:before { content: "\e134"; } .glyphicon-globe:before { content: "\e135"; } .glyphicon-wrench:before { content: "\e136"; } .glyphicon-tasks:before { content: "\e137"; } .glyphicon-filter:before { content: "\e138"; } .glyphicon-briefcase:before { content: "\e139"; } .glyphicon-fullscreen:before { content: "\e140"; } .glyphicon-dashboard:before { content: "\e141"; } .glyphicon-paperclip:before { content: "\e142"; } .glyphicon-heart-empty:before { content: "\e143"; } .glyphicon-link:before { content: "\e144"; } .glyphicon-phone:before { content: "\e145"; } .glyphicon-pushpin:before { content: "\e146"; } .glyphicon-usd:before { content: "\e148"; } .glyphicon-gbp:before { content: "\e149"; } .glyphicon-sort:before { content: "\e150"; } .glyphicon-sort-by-alphabet:before { content: "\e151"; } .glyphicon-sort-by-alphabet-alt:before { content: "\e152"; } .glyphicon-sort-by-order:before { content: "\e153"; } .glyphicon-sort-by-order-alt:before { content: "\e154"; } .glyphicon-sort-by-attributes:before { content: "\e155"; } .glyphicon-sort-by-attributes-alt:before { content: "\e156"; } .glyphicon-unchecked:before { content: "\e157"; } .glyphicon-expand:before { content: "\e158"; } .glyphicon-collapse-down:before { content: "\e159"; } .glyphicon-collapse-up:before { content: "\e160"; } .glyphicon-log-in:before { content: "\e161"; } .glyphicon-flash:before { content: "\e162"; } .glyphicon-log-out:before { content: "\e163"; } .glyphicon-new-window:before { content: "\e164"; } .glyphicon-record:before { content: "\e165"; } .glyphicon-save:before { content: "\e166"; } .glyphicon-open:before { content: "\e167"; } .glyphicon-saved:before { content: "\e168"; } .glyphicon-import:before { content: "\e169"; } .glyphicon-export:before { content: "\e170"; } .glyphicon-send:before { content: "\e171"; } .glyphicon-floppy-disk:before { content: "\e172"; } .glyphicon-floppy-saved:before { content: "\e173"; } .glyphicon-floppy-remove:before { content: "\e174"; } .glyphicon-floppy-save:before { content: "\e175"; } .glyphicon-floppy-open:before { content: "\e176"; } .glyphicon-credit-card:before { content: "\e177"; } .glyphicon-transfer:before { content: "\e178"; } .glyphicon-cutlery:before { content: "\e179"; } .glyphicon-header:before { content: "\e180"; } .glyphicon-compressed:before { content: "\e181"; } .glyphicon-earphone:before { content: "\e182"; } .glyphicon-phone-alt:before { content: "\e183"; } .glyphicon-tower:before { content: "\e184"; } .glyphicon-stats:before { content: "\e185"; } .glyphicon-sd-video:before { content: "\e186"; } .glyphicon-hd-video:before { content: "\e187"; } .glyphicon-subtitles:before { content: "\e188"; } .glyphicon-sound-stereo:before { content: "\e189"; } .glyphicon-sound-dolby:before { content: "\e190"; } .glyphicon-sound-5-1:before { content: "\e191"; } .glyphicon-sound-6-1:before { content: "\e192"; } .glyphicon-sound-7-1:before { content: "\e193"; } .glyphicon-copyright-mark:before { content: "\e194"; } .glyphicon-registration-mark:before { content: "\e195"; } .glyphicon-cloud-download:before { content: "\e197"; } .glyphicon-cloud-upload:before { content: "\e198"; } .glyphicon-tree-conifer:before { content: "\e199"; } .glyphicon-tree-deciduous:before { content: "\e200"; } .glyphicon-cd:before { content: "\e201"; } .glyphicon-save-file:before { content: "\e202"; } .glyphicon-open-file:before { content: "\e203"; } .glyphicon-level-up:before { content: "\e204"; } .glyphicon-copy:before { content: "\e205"; } .glyphicon-paste:before { content: "\e206"; } .glyphicon-alert:before { content: "\e209"; } .glyphicon-equalizer:before { content: "\e210"; } .glyphicon-king:before { content: "\e211"; } .glyphicon-queen:before { content: "\e212"; } .glyphicon-pawn:before { content: "\e213"; } .glyphicon-bishop:before { content: "\e214"; } .glyphicon-knight:before { content: "\e215"; } .glyphicon-baby-formula:before { content: "\e216"; } .glyphicon-tent:before { content: "\26fa"; } .glyphicon-blackboard:before { content: "\e218"; } .glyphicon-bed:before { content: "\e219"; } .glyphicon-apple:before { content: "\f8ff"; } .glyphicon-erase:before { content: "\e221"; } .glyphicon-hourglass:before { content: "\231b"; } .glyphicon-lamp:before { content: "\e223"; } .glyphicon-duplicate:before { content: "\e224"; } .glyphicon-piggy-bank:before { content: "\e225"; } .glyphicon-scissors:before { content: "\e226"; } .glyphicon-bitcoin:before { content: "\e227"; } .glyphicon-btc:before { content: "\e227"; } .glyphicon-xbt:before { content: "\e227"; } .glyphicon-yen:before { content: "\00a5"; } .glyphicon-jpy:before { content: "\00a5"; } .glyphicon-ruble:before { content: "\20bd"; } .glyphicon-rub:before { content: "\20bd"; } .glyphicon-scale:before { content: "\e230"; } .glyphicon-ice-lolly:before { content: "\e231"; } .glyphicon-ice-lolly-tasted:before { content: "\e232"; } .glyphicon-education:before { content: "\e233"; } .glyphicon-option-horizontal:before { content: "\e234"; } .glyphicon-option-vertical:before { content: "\e235"; } .glyphicon-menu-hamburger:before { content: "\e236"; } .glyphicon-modal-window:before { content: "\e237"; } .glyphicon-oil:before { content: "\e238"; } .glyphicon-grain:before { content: "\e239"; } .glyphicon-sunglasses:before { content: "\e240"; } .glyphicon-text-size:before { content: "\e241"; } .glyphicon-text-color:before { content: "\e242"; } .glyphicon-text-background:before { content: "\e243"; } .glyphicon-object-align-top:before { content: "\e244"; } .glyphicon-object-align-bottom:before { content: "\e245"; } .glyphicon-object-align-horizontal:before { content: "\e246"; } .glyphicon-object-align-left:before { content: "\e247"; } .glyphicon-object-align-vertical:before { content: "\e248"; } .glyphicon-object-align-right:before { content: "\e249"; } .glyphicon-triangle-right:before { content: "\e250"; } .glyphicon-triangle-left:before { content: "\e251"; } .glyphicon-triangle-bottom:before { content: "\e252"; } .glyphicon-triangle-top:before { content: "\e253"; } .glyphicon-console:before { content: "\e254"; } .glyphicon-superscript:before { content: "\e255"; } .glyphicon-subscript:before { content: "\e256"; } .glyphicon-menu-left:before { content: "\e257"; } .glyphicon-menu-right:before { content: "\e258"; } .glyphicon-menu-down:before { content: "\e259"; } .glyphicon-menu-up:before { content: "\e260"; } * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { font-size: 10px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.42857143; color: #333; background-color: #fff; } input, button, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } a { color: #337ab7; text-decoration: none; } a:hover, a:focus { color: #23527c; text-decoration: underline; } a:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } figure { margin: 0; } img { vertical-align: middle; } .img-responsive, .thumbnail > img, .thumbnail a > img, .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; max-width: 100%; height: auto; } .img-rounded { border-radius: 6px; } .img-thumbnail { display: inline-block; max-width: 100%; height: auto; padding: 4px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .img-circle { border-radius: 50%; } hr { margin-top: 20px; margin-bottom: 20px; border: 0; border-top: 1px solid #eee; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; } .sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; } [role="button"] { cursor: pointer; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { font-weight: normal; line-height: 1; color: #777; } h1, .h1, h2, .h2, h3, .h3 { margin-top: 20px; margin-bottom: 10px; } h1 small, .h1 small, h2 small, .h2 small, h3 small, .h3 small, h1 .small, .h1 .small, h2 .small, .h2 .small, h3 .small, .h3 .small { font-size: 65%; } h4, .h4, h5, .h5, h6, .h6 { margin-top: 10px; margin-bottom: 10px; } h4 small, .h4 small, h5 small, .h5 small, h6 small, .h6 small, h4 .small, .h4 .small, h5 .small, .h5 .small, h6 .small, .h6 .small { font-size: 75%; } h1, .h1 { font-size: 36px; } h2, .h2 { font-size: 30px; } h3, .h3 { font-size: 24px; } h4, .h4 { font-size: 18px; } h5, .h5 { font-size: 14px; } h6, .h6 { font-size: 12px; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 16px; font-weight: 300; line-height: 1.4; } @media (min-width: 768px) { .lead { font-size: 21px; } } small, .small { font-size: 85%; } mark, .mark { padding: .2em; background-color: #fcf8e3; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .text-justify { text-align: justify; } .text-nowrap { white-space: nowrap; } .text-lowercase { text-transform: lowercase; } .text-uppercase { text-transform: uppercase; } .text-capitalize { text-transform: capitalize; } .text-muted { color: #777; } .text-primary { color: #337ab7; } a.text-primary:hover, a.text-primary:focus { color: #286090; } .text-success { color: #3c763d; } a.text-success:hover, a.text-success:focus { color: #2b542c; } .text-info { color: #31708f; } a.text-info:hover, a.text-info:focus { color: #245269; } .text-warning { color: #8a6d3b; } a.text-warning:hover, a.text-warning:focus { color: #66512c; } .text-danger { color: #a94442; } a.text-danger:hover, a.text-danger:focus { color: #843534; } .bg-primary { color: #fff; background-color: #337ab7; } a.bg-primary:hover, a.bg-primary:focus { background-color: #286090; } .bg-success { background-color: #dff0d8; } a.bg-success:hover, a.bg-success:focus { background-color: #c1e2b3; } .bg-info { background-color: #d9edf7; } a.bg-info:hover, a.bg-info:focus { background-color: #afd9ee; } .bg-warning { background-color: #fcf8e3; } a.bg-warning:hover, a.bg-warning:focus { background-color: #f7ecb5; } .bg-danger { background-color: #f2dede; } a.bg-danger:hover, a.bg-danger:focus { background-color: #e4b9b9; } .page-header { padding-bottom: 9px; margin: 40px 0 20px; border-bottom: 1px solid #eee; } ul, ol { margin-top: 0; margin-bottom: 10px; } ul ul, ol ul, ul ol, ol ol { margin-bottom: 0; } .list-unstyled { padding-left: 0; list-style: none; } .list-inline { padding-left: 0; margin-left: -5px; list-style: none; } .list-inline > li { display: inline-block; padding-right: 5px; padding-left: 5px; } dl { margin-top: 0; margin-bottom: 20px; } dt, dd { line-height: 1.42857143; } dt { font-weight: bold; } dd { margin-left: 0; } @media (min-width: 768px) { .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #777; } .initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 10px 20px; margin: 0 0 20px; font-size: 17.5px; border-left: 5px solid #eee; } blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child { margin-bottom: 0; } blockquote footer, blockquote small, blockquote .small { display: block; font-size: 80%; line-height: 1.42857143; color: #777; } blockquote footer:before, blockquote small:before, blockquote .small:before { content: '\2014 \00A0'; } .blockquote-reverse, blockquote.pull-right { padding-right: 15px; padding-left: 0; text-align: right; border-right: 5px solid #eee; border-left: 0; } .blockquote-reverse footer:before, blockquote.pull-right footer:before, .blockquote-reverse small:before, blockquote.pull-right small:before, .blockquote-reverse .small:before, blockquote.pull-right .small:before { content: ''; } .blockquote-reverse footer:after, blockquote.pull-right footer:after, .blockquote-reverse small:after, blockquote.pull-right small:after, .blockquote-reverse .small:after, blockquote.pull-right .small:after { content: '\00A0 \2014'; } address { margin-bottom: 20px; font-style: normal; line-height: 1.42857143; } code, kbd, pre, samp { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } code { padding: 2px 4px; font-size: 90%; color: #c7254e; background-color: #f9f2f4; border-radius: 4px; } kbd { padding: 2px 4px; font-size: 90%; color: #fff; background-color: #333; border-radius: 3px; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); } kbd kbd { padding: 0; font-size: 100%; font-weight: bold; -webkit-box-shadow: none; box-shadow: none; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 1.42857143; color: #333; word-break: break-all; word-wrap: break-word; background-color: #f5f5f5; border: 1px solid #ccc; border-radius: 4px; } pre code { padding: 0; font-size: inherit; color: inherit; white-space: pre-wrap; background-color: transparent; border-radius: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } .container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } @media (min-width: 768px) { .container { width: 750px; } } @media (min-width: 992px) { .container { width: 970px; } } @media (min-width: 1200px) { .container { width: 1170px; } } .container-fluid { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } .row { margin-right: -15px; margin-left: -15px; } .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { float: left; } .col-xs-12 { width: 100%; } .col-xs-11 { width: 91.66666667%; } .col-xs-10 { width: 83.33333333%; } .col-xs-9 { width: 75%; } .col-xs-8 { width: 66.66666667%; } .col-xs-7 { width: 58.33333333%; } .col-xs-6 { width: 50%; } .col-xs-5 { width: 41.66666667%; } .col-xs-4 { width: 33.33333333%; } .col-xs-3 { width: 25%; } .col-xs-2 { width: 16.66666667%; } .col-xs-1 { width: 8.33333333%; } .col-xs-pull-12 { right: 100%; } .col-xs-pull-11 { right: 91.66666667%; } .col-xs-pull-10 { right: 83.33333333%; } .col-xs-pull-9 { right: 75%; } .col-xs-pull-8 { right: 66.66666667%; } .col-xs-pull-7 { right: 58.33333333%; } .col-xs-pull-6 { right: 50%; } .col-xs-pull-5 { right: 41.66666667%; } .col-xs-pull-4 { right: 33.33333333%; } .col-xs-pull-3 { right: 25%; } .col-xs-pull-2 { right: 16.66666667%; } .col-xs-pull-1 { right: 8.33333333%; } .col-xs-pull-0 { right: auto; } .col-xs-push-12 { left: 100%; } .col-xs-push-11 { left: 91.66666667%; } .col-xs-push-10 { left: 83.33333333%; } .col-xs-push-9 { left: 75%; } .col-xs-push-8 { left: 66.66666667%; } .col-xs-push-7 { left: 58.33333333%; } .col-xs-push-6 { left: 50%; } .col-xs-push-5 { left: 41.66666667%; } .col-xs-push-4 { left: 33.33333333%; } .col-xs-push-3 { left: 25%; } .col-xs-push-2 { left: 16.66666667%; } .col-xs-push-1 { left: 8.33333333%; } .col-xs-push-0 { left: auto; } .col-xs-offset-12 { margin-left: 100%; } .col-xs-offset-11 { margin-left: 91.66666667%; } .col-xs-offset-10 { margin-left: 83.33333333%; } .col-xs-offset-9 { margin-left: 75%; } .col-xs-offset-8 { margin-left: 66.66666667%; } .col-xs-offset-7 { margin-left: 58.33333333%; } .col-xs-offset-6 { margin-left: 50%; } .col-xs-offset-5 { margin-left: 41.66666667%; } .col-xs-offset-4 { margin-left: 33.33333333%; } .col-xs-offset-3 { margin-left: 25%; } .col-xs-offset-2 { margin-left: 16.66666667%; } .col-xs-offset-1 { margin-left: 8.33333333%; } .col-xs-offset-0 { margin-left: 0; } @media (min-width: 768px) { .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { float: left; } .col-sm-12 { width: 100%; } .col-sm-11 { width: 91.66666667%; } .col-sm-10 { width: 83.33333333%; } .col-sm-9 { width: 75%; } .col-sm-8 { width: 66.66666667%; } .col-sm-7 { width: 58.33333333%; } .col-sm-6 { width: 50%; } .col-sm-5 { width: 41.66666667%; } .col-sm-4 { width: 33.33333333%; } .col-sm-3 { width: 25%; } .col-sm-2 { width: 16.66666667%; } .col-sm-1 { width: 8.33333333%; } .col-sm-pull-12 { right: 100%; } .col-sm-pull-11 { right: 91.66666667%; } .col-sm-pull-10 { right: 83.33333333%; } .col-sm-pull-9 { right: 75%; } .col-sm-pull-8 { right: 66.66666667%; } .col-sm-pull-7 { right: 58.33333333%; } .col-sm-pull-6 { right: 50%; } .col-sm-pull-5 { right: 41.66666667%; } .col-sm-pull-4 { right: 33.33333333%; } .col-sm-pull-3 { right: 25%; } .col-sm-pull-2 { right: 16.66666667%; } .col-sm-pull-1 { right: 8.33333333%; } .col-sm-pull-0 { right: auto; } .col-sm-push-12 { left: 100%; } .col-sm-push-11 { left: 91.66666667%; } .col-sm-push-10 { left: 83.33333333%; } .col-sm-push-9 { left: 75%; } .col-sm-push-8 { left: 66.66666667%; } .col-sm-push-7 { left: 58.33333333%; } .col-sm-push-6 { left: 50%; } .col-sm-push-5 { left: 41.66666667%; } .col-sm-push-4 { left: 33.33333333%; } .col-sm-push-3 { left: 25%; } .col-sm-push-2 { left: 16.66666667%; } .col-sm-push-1 { left: 8.33333333%; } .col-sm-push-0 { left: auto; } .col-sm-offset-12 { margin-left: 100%; } .col-sm-offset-11 { margin-left: 91.66666667%; } .col-sm-offset-10 { margin-left: 83.33333333%; } .col-sm-offset-9 { margin-left: 75%; } .col-sm-offset-8 { margin-left: 66.66666667%; } .col-sm-offset-7 { margin-left: 58.33333333%; } .col-sm-offset-6 { margin-left: 50%; } .col-sm-offset-5 { margin-left: 41.66666667%; } .col-sm-offset-4 { margin-left: 33.33333333%; } .col-sm-offset-3 { margin-left: 25%; } .col-sm-offset-2 { margin-left: 16.66666667%; } .col-sm-offset-1 { margin-left: 8.33333333%; } .col-sm-offset-0 { margin-left: 0; } } @media (min-width: 992px) { .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { float: left; } .col-md-12 { width: 100%; } .col-md-11 { width: 91.66666667%; } .col-md-10 { width: 83.33333333%; } .col-md-9 { width: 75%; } .col-md-8 { width: 66.66666667%; } .col-md-7 { width: 58.33333333%; } .col-md-6 { width: 50%; } .col-md-5 { width: 41.66666667%; } .col-md-4 { width: 33.33333333%; } .col-md-3 { width: 25%; } .col-md-2 { width: 16.66666667%; } .col-md-1 { width: 8.33333333%; } .col-md-pull-12 { right: 100%; } .col-md-pull-11 { right: 91.66666667%; } .col-md-pull-10 { right: 83.33333333%; } .col-md-pull-9 { right: 75%; } .col-md-pull-8 { right: 66.66666667%; } .col-md-pull-7 { right: 58.33333333%; } .col-md-pull-6 { right: 50%; } .col-md-pull-5 { right: 41.66666667%; } .col-md-pull-4 { right: 33.33333333%; } .col-md-pull-3 { right: 25%; } .col-md-pull-2 { right: 16.66666667%; } .col-md-pull-1 { right: 8.33333333%; } .col-md-pull-0 { right: auto; } .col-md-push-12 { left: 100%; } .col-md-push-11 { left: 91.66666667%; } .col-md-push-10 { left: 83.33333333%; } .col-md-push-9 { left: 75%; } .col-md-push-8 { left: 66.66666667%; } .col-md-push-7 { left: 58.33333333%; } .col-md-push-6 { left: 50%; } .col-md-push-5 { left: 41.66666667%; } .col-md-push-4 { left: 33.33333333%; } .col-md-push-3 { left: 25%; } .col-md-push-2 { left: 16.66666667%; } .col-md-push-1 { left: 8.33333333%; } .col-md-push-0 { left: auto; } .col-md-offset-12 { margin-left: 100%; } .col-md-offset-11 { margin-left: 91.66666667%; } .col-md-offset-10 { margin-left: 83.33333333%; } .col-md-offset-9 { margin-left: 75%; } .col-md-offset-8 { margin-left: 66.66666667%; } .col-md-offset-7 { margin-left: 58.33333333%; } .col-md-offset-6 { margin-left: 50%; } .col-md-offset-5 { margin-left: 41.66666667%; } .col-md-offset-4 { margin-left: 33.33333333%; } .col-md-offset-3 { margin-left: 25%; } .col-md-offset-2 { margin-left: 16.66666667%; } .col-md-offset-1 { margin-left: 8.33333333%; } .col-md-offset-0 { margin-left: 0; } } @media (min-width: 1200px) { .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { float: left; } .col-lg-12 { width: 100%; } .col-lg-11 { width: 91.66666667%; } .col-lg-10 { width: 83.33333333%; } .col-lg-9 { width: 75%; } .col-lg-8 { width: 66.66666667%; } .col-lg-7 { width: 58.33333333%; } .col-lg-6 { width: 50%; } .col-lg-5 { width: 41.66666667%; } .col-lg-4 { width: 33.33333333%; } .col-lg-3 { width: 25%; } .col-lg-2 { width: 16.66666667%; } .col-lg-1 { width: 8.33333333%; } .col-lg-pull-12 { right: 100%; } .col-lg-pull-11 { right: 91.66666667%; } .col-lg-pull-10 { right: 83.33333333%; } .col-lg-pull-9 { right: 75%; } .col-lg-pull-8 { right: 66.66666667%; } .col-lg-pull-7 { right: 58.33333333%; } .col-lg-pull-6 { right: 50%; } .col-lg-pull-5 { right: 41.66666667%; } .col-lg-pull-4 { right: 33.33333333%; } .col-lg-pull-3 { right: 25%; } .col-lg-pull-2 { right: 16.66666667%; } .col-lg-pull-1 { right: 8.33333333%; } .col-lg-pull-0 { right: auto; } .col-lg-push-12 { left: 100%; } .col-lg-push-11 { left: 91.66666667%; } .col-lg-push-10 { left: 83.33333333%; } .col-lg-push-9 { left: 75%; } .col-lg-push-8 { left: 66.66666667%; } .col-lg-push-7 { left: 58.33333333%; } .col-lg-push-6 { left: 50%; } .col-lg-push-5 { left: 41.66666667%; } .col-lg-push-4 { left: 33.33333333%; } .col-lg-push-3 { left: 25%; } .col-lg-push-2 { left: 16.66666667%; } .col-lg-push-1 { left: 8.33333333%; } .col-lg-push-0 { left: auto; } .col-lg-offset-12 { margin-left: 100%; } .col-lg-offset-11 { margin-left: 91.66666667%; } .col-lg-offset-10 { margin-left: 83.33333333%; } .col-lg-offset-9 { margin-left: 75%; } .col-lg-offset-8 { margin-left: 66.66666667%; } .col-lg-offset-7 { margin-left: 58.33333333%; } .col-lg-offset-6 { margin-left: 50%; } .col-lg-offset-5 { margin-left: 41.66666667%; } .col-lg-offset-4 { margin-left: 33.33333333%; } .col-lg-offset-3 { margin-left: 25%; } .col-lg-offset-2 { margin-left: 16.66666667%; } .col-lg-offset-1 { margin-left: 8.33333333%; } .col-lg-offset-0 { margin-left: 0; } } table { background-color: transparent; } caption { padding-top: 8px; padding-bottom: 8px; color: #777; text-align: left; } th { text-align: left; } .table { width: 100%; max-width: 100%; margin-bottom: 20px; } .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd; } .table > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #ddd; } .table > caption + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td { border-top: 0; } .table > tbody + tbody { border-top: 2px solid #ddd; } .table .table { background-color: #fff; } .table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td, .table-condensed > tfoot > tr > td { padding: 5px; } .table-bordered { border: 1px solid #ddd; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #ddd; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table-striped > tbody > tr:nth-of-type(odd) { background-color: #f9f9f9; } .table-hover > tbody > tr:hover { background-color: #f5f5f5; } table col[class*="col-"] { position: static; display: table-column; float: none; } table td[class*="col-"], table th[class*="col-"] { position: static; display: table-cell; float: none; } .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th { background-color: #f5f5f5; } .table-hover > tbody > tr > td.active:hover, .table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { background-color: #e8e8e8; } .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th { background-color: #dff0d8; } .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { background-color: #d0e9c6; } .table > thead > tr > td.info, .table > tbody > tr > td.info, .table > tfoot > tr > td.info, .table > thead > tr > th.info, .table > tbody > tr > th.info, .table > tfoot > tr > th.info, .table > thead > tr.info > td, .table > tbody > tr.info > td, .table > tfoot > tr.info > td, .table > thead > tr.info > th, .table > tbody > tr.info > th, .table > tfoot > tr.info > th { background-color: #d9edf7; } .table-hover > tbody > tr > td.info:hover, .table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { background-color: #c4e3f3; } .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th { background-color: #fcf8e3; } .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { background-color: #faf2cc; } .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { background-color: #f2dede; } .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { background-color: #ebcccc; } .table-responsive { min-height: .01%; overflow-x: auto; } @media screen and (max-width: 767px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-y: hidden; -ms-overflow-style: -ms-autohiding-scrollbar; border: 1px solid #ddd; } .table-responsive > .table { margin-bottom: 0; } .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td { white-space: nowrap; } .table-responsive > .table-bordered { border: 0; } .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td { border-bottom: 0; } } fieldset { min-width: 0; padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: inherit; color: #333; border: 0; border-bottom: 1px solid #e5e5e5; } label { display: inline-block; max-width: 100%; margin-bottom: 5px; font-weight: bold; } input[type="search"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; line-height: normal; } input[type="file"] { display: block; } input[type="range"] { display: block; width: 100%; } select[multiple], select[size] { height: auto; } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } output { display: block; padding-top: 7px; font-size: 14px; line-height: 1.42857143; color: #555; } .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } .form-control:focus { border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); } .form-control::-moz-placeholder { color: #999; opacity: 1; } .form-control:-ms-input-placeholder { color: #999; } .form-control::-webkit-input-placeholder { color: #999; } .form-control::-ms-expand { background-color: transparent; border: 0; } .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { background-color: #eee; opacity: 1; } .form-control[disabled], fieldset[disabled] .form-control { cursor: not-allowed; } textarea.form-control { height: auto; } input[type="search"] { -webkit-appearance: none; } @media screen and (-webkit-min-device-pixel-ratio: 0) { input[type="date"].form-control, input[type="time"].form-control, input[type="datetime-local"].form-control, input[type="month"].form-control { line-height: 34px; } input[type="date"].input-sm, input[type="time"].input-sm, input[type="datetime-local"].input-sm, input[type="month"].input-sm, .input-group-sm input[type="date"], .input-group-sm input[type="time"], .input-group-sm input[type="datetime-local"], .input-group-sm input[type="month"] { line-height: 30px; } input[type="date"].input-lg, input[type="time"].input-lg, input[type="datetime-local"].input-lg, input[type="month"].input-lg, .input-group-lg input[type="date"], .input-group-lg input[type="time"], .input-group-lg input[type="datetime-local"], .input-group-lg input[type="month"] { line-height: 46px; } } .form-group { margin-bottom: 15px; } .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; } .radio label, .checkbox label { min-height: 20px; padding-left: 20px; margin-bottom: 0; font-weight: normal; cursor: pointer; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-top: 4px \9; margin-left: -20px; } .radio + .radio, .checkbox + .checkbox { margin-top: -5px; } .radio-inline, .checkbox-inline { position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; font-weight: normal; vertical-align: middle; cursor: pointer; } .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"].disabled, input[type="checkbox"].disabled, fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"] { cursor: not-allowed; } .radio-inline.disabled, .checkbox-inline.disabled, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox-inline { cursor: not-allowed; } .radio.disabled label, .checkbox.disabled label, fieldset[disabled] .radio label, fieldset[disabled] .checkbox label { cursor: not-allowed; } .form-control-static { min-height: 34px; padding-top: 7px; padding-bottom: 7px; margin-bottom: 0; } .form-control-static.input-lg, .form-control-static.input-sm { padding-right: 0; padding-left: 0; } .input-sm { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-sm { height: 30px; line-height: 30px; } textarea.input-sm, select[multiple].input-sm { height: auto; } .form-group-sm .form-control { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .form-group-sm select.form-control { height: 30px; line-height: 30px; } .form-group-sm textarea.form-control, .form-group-sm select[multiple].form-control { height: auto; } .form-group-sm .form-control-static { height: 30px; min-height: 32px; padding: 6px 10px; font-size: 12px; line-height: 1.5; } .input-lg { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } select.input-lg { height: 46px; line-height: 46px; } textarea.input-lg, select[multiple].input-lg { height: auto; } .form-group-lg .form-control { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } .form-group-lg select.form-control { height: 46px; line-height: 46px; } .form-group-lg textarea.form-control, .form-group-lg select[multiple].form-control { height: auto; } .form-group-lg .form-control-static { height: 46px; min-height: 38px; padding: 11px 16px; font-size: 18px; line-height: 1.3333333; } .has-feedback { position: relative; } .has-feedback .form-control { padding-right: 42.5px; } .form-control-feedback { position: absolute; top: 0; right: 0; z-index: 2; display: block; width: 34px; height: 34px; line-height: 34px; text-align: center; pointer-events: none; } .input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback, .form-group-lg .form-control + .form-control-feedback { width: 46px; height: 46px; line-height: 46px; } .input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback, .form-group-sm .form-control + .form-control-feedback { width: 30px; height: 30px; line-height: 30px; } .has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { color: #3c763d; } .has-success .form-control { border-color: #3c763d; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-success .form-control:focus { border-color: #2b542c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; } .has-success .input-group-addon { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } .has-success .form-control-feedback { color: #3c763d; } .has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { color: #8a6d3b; } .has-warning .form-control { border-color: #8a6d3b; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-warning .form-control:focus { border-color: #66512c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; } .has-warning .input-group-addon { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } .has-warning .form-control-feedback { color: #8a6d3b; } .has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { color: #a94442; } .has-error .form-control { border-color: #a94442; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-error .form-control:focus { border-color: #843534; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; } .has-error .input-group-addon { color: #a94442; background-color: #f2dede; border-color: #a94442; } .has-error .form-control-feedback { color: #a94442; } .has-feedback label ~ .form-control-feedback { top: 25px; } .has-feedback label.sr-only ~ .form-control-feedback { top: 0; } .help-block { display: block; margin-top: 5px; margin-bottom: 10px; color: #737373; } @media (min-width: 768px) { .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .form-inline .form-control { display: inline-block; width: auto; vertical-align: middle; } .form-inline .form-control-static { display: inline-block; } .form-inline .input-group { display: inline-table; vertical-align: middle; } .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control { width: auto; } .form-inline .input-group > .form-control { width: 100%; } .form-inline .control-label { margin-bottom: 0; vertical-align: middle; } .form-inline .radio, .form-inline .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .form-inline .radio label, .form-inline .checkbox label { padding-left: 0; } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .form-inline .has-feedback .form-control-feedback { top: 0; } } .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline { padding-top: 7px; margin-top: 0; margin-bottom: 0; } .form-horizontal .radio, .form-horizontal .checkbox { min-height: 27px; } .form-horizontal .form-group { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .form-horizontal .control-label { padding-top: 7px; margin-bottom: 0; text-align: right; } } .form-horizontal .has-feedback .form-control-feedback { right: 15px; } @media (min-width: 768px) { .form-horizontal .form-group-lg .control-label { padding-top: 11px; font-size: 18px; } } @media (min-width: 768px) { .form-horizontal .form-group-sm .control-label { padding-top: 6px; font-size: 12px; } } .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: normal; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px; } .btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, .btn:focus, .btn.focus { color: #333; text-decoration: none; } .btn:active, .btn.active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn.disabled, .btn[disabled], fieldset[disabled] .btn { cursor: not-allowed; filter: alpha(opacity=65); -webkit-box-shadow: none; box-shadow: none; opacity: .65; } a.btn.disabled, fieldset[disabled] a.btn { pointer-events: none; } .btn-default { color: #333; background-color: #fff; border-color: #ccc; } .btn-default:focus, .btn-default.focus { color: #333; background-color: #e6e6e6; border-color: #8c8c8c; } .btn-default:hover { color: #333; background-color: #e6e6e6; border-color: #adadad; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { color: #333; background-color: #e6e6e6; border-color: #adadad; } .btn-default:active:hover, .btn-default.active:hover, .open > .dropdown-toggle.btn-default:hover, .btn-default:active:focus, .btn-default.active:focus, .open > .dropdown-toggle.btn-default:focus, .btn-default:active.focus, .btn-default.active.focus, .open > .dropdown-toggle.btn-default.focus { color: #333; background-color: #d4d4d4; border-color: #8c8c8c; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default.focus { background-color: #fff; border-color: #ccc; } .btn-default .badge { color: #fff; background-color: #333; } .btn-primary { color: #fff; background-color: #337ab7; border-color: #2e6da4; } .btn-primary:focus, .btn-primary.focus { color: #fff; background-color: #286090; border-color: #122b40; } .btn-primary:hover { color: #fff; background-color: #286090; border-color: #204d74; } .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { color: #fff; background-color: #286090; border-color: #204d74; } .btn-primary:active:hover, .btn-primary.active:hover, .open > .dropdown-toggle.btn-primary:hover, .btn-primary:active:focus, .btn-primary.active:focus, .open > .dropdown-toggle.btn-primary:focus, .btn-primary:active.focus, .btn-primary.active.focus, .open > .dropdown-toggle.btn-primary.focus { color: #fff; background-color: #204d74; border-color: #122b40; } .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary.focus { background-color: #337ab7; border-color: #2e6da4; } .btn-primary .badge { color: #337ab7; background-color: #fff; } .btn-success { color: #fff; background-color: #5cb85c; border-color: #4cae4c; } .btn-success:focus, .btn-success.focus { color: #fff; background-color: #449d44; border-color: #255625; } .btn-success:hover { color: #fff; background-color: #449d44; border-color: #398439; } .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { color: #fff; background-color: #449d44; border-color: #398439; } .btn-success:active:hover, .btn-success.active:hover, .open > .dropdown-toggle.btn-success:hover, .btn-success:active:focus, .btn-success.active:focus, .open > .dropdown-toggle.btn-success:focus, .btn-success:active.focus, .btn-success.active.focus, .open > .dropdown-toggle.btn-success.focus { color: #fff; background-color: #398439; border-color: #255625; } .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success.focus { background-color: #5cb85c; border-color: #4cae4c; } .btn-success .badge { color: #5cb85c; background-color: #fff; } .btn-info { color: #fff; background-color: #5bc0de; border-color: #46b8da; } .btn-info:focus, .btn-info.focus { color: #fff; background-color: #31b0d5; border-color: #1b6d85; } .btn-info:hover { color: #fff; background-color: #31b0d5; border-color: #269abc; } .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { color: #fff; background-color: #31b0d5; border-color: #269abc; } .btn-info:active:hover, .btn-info.active:hover, .open > .dropdown-toggle.btn-info:hover, .btn-info:active:focus, .btn-info.active:focus, .open > .dropdown-toggle.btn-info:focus, .btn-info:active.focus, .btn-info.active.focus, .open > .dropdown-toggle.btn-info.focus { color: #fff; background-color: #269abc; border-color: #1b6d85; } .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info.focus { background-color: #5bc0de; border-color: #46b8da; } .btn-info .badge { color: #5bc0de; background-color: #fff; } .btn-warning { color: #fff; background-color: #f0ad4e; border-color: #eea236; } .btn-warning:focus, .btn-warning.focus { color: #fff; background-color: #ec971f; border-color: #985f0d; } .btn-warning:hover { color: #fff; background-color: #ec971f; border-color: #d58512; } .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { color: #fff; background-color: #ec971f; border-color: #d58512; } .btn-warning:active:hover, .btn-warning.active:hover, .open > .dropdown-toggle.btn-warning:hover, .btn-warning:active:focus, .btn-warning.active:focus, .open > .dropdown-toggle.btn-warning:focus, .btn-warning:active.focus, .btn-warning.active.focus, .open > .dropdown-toggle.btn-warning.focus { color: #fff; background-color: #d58512; border-color: #985f0d; } .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning.focus { background-color: #f0ad4e; border-color: #eea236; } .btn-warning .badge { color: #f0ad4e; background-color: #fff; } .btn-danger { color: #fff; background-color: #d9534f; border-color: #d43f3a; } .btn-danger:focus, .btn-danger.focus { color: #fff; background-color: #c9302c; border-color: #761c19; } .btn-danger:hover { color: #fff; background-color: #c9302c; border-color: #ac2925; } .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { color: #fff; background-color: #c9302c; border-color: #ac2925; } .btn-danger:active:hover, .btn-danger.active:hover, .open > .dropdown-toggle.btn-danger:hover, .btn-danger:active:focus, .btn-danger.active:focus, .open > .dropdown-toggle.btn-danger:focus, .btn-danger:active.focus, .btn-danger.active.focus, .open > .dropdown-toggle.btn-danger.focus { color: #fff; background-color: #ac2925; border-color: #761c19; } .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, fieldset[disabled] .btn-danger.focus { background-color: #d9534f; border-color: #d43f3a; } .btn-danger .badge { color: #d9534f; background-color: #fff; } .btn-link { font-weight: normal; color: #337ab7; border-radius: 0; } .btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { background-color: transparent; -webkit-box-shadow: none; box-shadow: none; } .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { border-color: transparent; } .btn-link:hover, .btn-link:focus { color: #23527c; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus { color: #777; text-decoration: none; } .btn-lg, .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } .btn-sm, .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-xs, .btn-group-xs > .btn { padding: 1px 5px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-block { display: block; width: 100%; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .fade { opacity: 0; -webkit-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } .fade.in { opacity: 1; } .collapse { display: none; } .collapse.in { display: block; } tr.collapse.in { display: table-row; } tbody.collapse.in { display: table-row-group; } .collapsing { position: relative; height: 0; overflow: hidden; -webkit-transition-timing-function: ease; -o-transition-timing-function: ease; transition-timing-function: ease; -webkit-transition-duration: .35s; -o-transition-duration: .35s; transition-duration: .35s; -webkit-transition-property: height, visibility; -o-transition-property: height, visibility; transition-property: height, visibility; } .caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: 4px dashed; border-top: 4px solid \9; border-right: 4px solid transparent; border-left: 4px solid transparent; } .dropup, .dropdown { position: relative; } .dropdown-toggle:focus { outline: 0; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; font-size: 14px; text-align: left; list-style: none; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, .15); border-radius: 4px; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); box-shadow: 0 6px 12px rgba(0, 0, 0, .175); } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.42857143; color: #333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { color: #262626; text-decoration: none; background-color: #f5f5f5; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #fff; text-decoration: none; background-color: #337ab7; outline: 0; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #777; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: not-allowed; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .open > .dropdown-menu { display: block; } .open > a { outline: 0; } .dropdown-menu-right { right: 0; left: auto; } .dropdown-menu-left { right: auto; left: 0; } .dropdown-header { display: block; padding: 3px 20px; font-size: 12px; line-height: 1.42857143; color: #777; white-space: nowrap; } .dropdown-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { content: ""; border-top: 0; border-bottom: 4px dashed; border-bottom: 4px solid \9; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 2px; } @media (min-width: 768px) { .navbar-right .dropdown-menu { right: 0; left: auto; } .navbar-right .dropdown-menu-left { right: auto; left: 0; } } .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } .btn-group > .btn, .btn-group-vertical > .btn { position: relative; float: left; } .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active { z-index: 2; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar { margin-left: -5px; } .btn-toolbar .btn, .btn-toolbar .btn-group, .btn-toolbar .input-group { float: left; } .btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group { margin-left: 5px; } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } .btn-group > .btn:first-child { margin-left: 0; } .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { padding-right: 8px; padding-left: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-right: 12px; padding-left: 12px; } .btn-group.open .dropdown-toggle { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn-group.open .dropdown-toggle.btn-link { -webkit-box-shadow: none; box-shadow: none; } .btn .caret { margin-left: 0; } .btn-lg .caret { border-width: 5px 5px 0; border-bottom-width: 0; } .dropup .btn-lg .caret { border-width: 0 5px 5px; } .btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } .btn-group-vertical > .btn-group > .btn { float: none; } .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-left-radius: 0; border-top-right-radius: 0; } .btn-group-justified { display: table; width: 100%; table-layout: fixed; border-collapse: separate; } .btn-group-justified > .btn, .btn-group-justified > .btn-group { display: table-cell; float: none; width: 1%; } .btn-group-justified > .btn-group .btn { width: 100%; } .btn-group-justified > .btn-group .dropdown-menu { left: auto; } [data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; } .input-group { position: relative; display: table; border-collapse: separate; } .input-group[class*="col-"] { float: none; padding-right: 0; padding-left: 0; } .input-group .form-control { position: relative; z-index: 2; float: left; width: 100%; margin-bottom: 0; } .input-group .form-control:focus { z-index: 3; } .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn { height: 46px; line-height: 46px; } textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn, select[multiple].input-group-lg > .form-control, select[multiple].input-group-lg > .input-group-addon, select[multiple].input-group-lg > .input-group-btn > .btn { height: auto; } .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn { height: 30px; line-height: 30px; } textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn, select[multiple].input-group-sm > .form-control, select[multiple].input-group-sm > .input-group-addon, select[multiple].input-group-sm > .input-group-btn > .btn { height: auto; } .input-group-addon, .input-group-btn, .input-group .form-control { display: table-cell; } .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } .input-group-addon, .input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; } .input-group-addon { padding: 6px 12px; font-size: 14px; font-weight: normal; line-height: 1; color: #555; text-align: center; background-color: #eee; border: 1px solid #ccc; border-radius: 4px; } .input-group-addon.input-sm { padding: 5px 10px; font-size: 12px; border-radius: 3px; } .input-group-addon.input-lg { padding: 10px 16px; font-size: 18px; border-radius: 6px; } .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { margin-top: 0; } .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group-addon:first-child { border-right: 0; } .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } .input-group-addon:last-child { border-left: 0; } .input-group-btn { position: relative; font-size: 0; white-space: nowrap; } .input-group-btn > .btn { position: relative; } .input-group-btn > .btn + .btn { margin-left: -1px; } .input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { z-index: 2; } .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group { margin-right: -1px; } .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { z-index: 2; margin-left: -1px; } .nav { padding-left: 0; margin-bottom: 0; list-style: none; } .nav > li { position: relative; display: block; } .nav > li > a { position: relative; display: block; padding: 10px 15px; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eee; } .nav > li.disabled > a { color: #777; } .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { color: #777; text-decoration: none; cursor: not-allowed; background-color: transparent; } .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #eee; border-color: #337ab7; } .nav .nav-divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .nav > li > a > img { max-width: none; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { float: left; margin-bottom: -1px; } .nav-tabs > li > a { margin-right: 2px; line-height: 1.42857143; border: 1px solid transparent; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover { border-color: #eee #eee #ddd; } .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { color: #555; cursor: default; background-color: #fff; border: 1px solid #ddd; border-bottom-color: transparent; } .nav-tabs.nav-justified { width: 100%; border-bottom: 0; } .nav-tabs.nav-justified > li { float: none; } .nav-tabs.nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-tabs.nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-tabs.nav-justified > li { display: table-cell; width: 1%; } .nav-tabs.nav-justified > li > a { margin-bottom: 0; } } .nav-tabs.nav-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border: 1px solid #ddd; } @media (min-width: 768px) { .nav-tabs.nav-justified > li > a { border-bottom: 1px solid #ddd; border-radius: 4px 4px 0 0; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border-bottom-color: #fff; } } .nav-pills > li { float: left; } .nav-pills > li > a { border-radius: 4px; } .nav-pills > li + li { margin-left: 2px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #fff; background-color: #337ab7; } .nav-stacked > li { float: none; } .nav-stacked > li + li { margin-top: 2px; margin-left: 0; } .nav-justified { width: 100%; } .nav-justified > li { float: none; } .nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-justified > li { display: table-cell; width: 1%; } .nav-justified > li > a { margin-bottom: 0; } } .nav-tabs-justified { border-bottom: 0; } .nav-tabs-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border: 1px solid #ddd; } @media (min-width: 768px) { .nav-tabs-justified > li > a { border-bottom: 1px solid #ddd; border-radius: 4px 4px 0 0; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border-bottom-color: #fff; } } .tab-content > .tab-pane { display: none; } .tab-content > .active { display: block; } .nav-tabs .dropdown-menu { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar { position: relative; min-height: 50px; margin-bottom: 20px; border: 1px solid transparent; } @media (min-width: 768px) { .navbar { border-radius: 4px; } } @media (min-width: 768px) { .navbar-header { float: left; } } .navbar-collapse { padding-right: 15px; padding-left: 15px; overflow-x: visible; -webkit-overflow-scrolling: touch; border-top: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); } .navbar-collapse.in { overflow-y: auto; } @media (min-width: 768px) { .navbar-collapse { width: auto; border-top: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-collapse.collapse { display: block !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } .navbar-collapse.in { overflow-y: visible; } .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { padding-right: 0; padding-left: 0; } } .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { max-height: 340px; } @media (max-device-width: 480px) and (orientation: landscape) { .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { max-height: 200px; } } .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { margin-right: 0; margin-left: 0; } } .navbar-static-top { z-index: 1000; border-width: 0 0 1px; } @media (min-width: 768px) { .navbar-static-top { border-radius: 0; } } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; } @media (min-width: 768px) { .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } } .navbar-fixed-top { top: 0; border-width: 0 0 1px; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; border-width: 1px 0 0; } .navbar-brand { float: left; height: 50px; padding: 15px 15px; font-size: 18px; line-height: 20px; } .navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } .navbar-brand > img { display: block; } @media (min-width: 768px) { .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { margin-left: -15px; } } .navbar-toggle { position: relative; float: right; padding: 9px 10px; margin-top: 8px; margin-right: 15px; margin-bottom: 8px; background-color: transparent; background-image: none; border: 1px solid transparent; border-radius: 4px; } .navbar-toggle:focus { outline: 0; } .navbar-toggle .icon-bar { display: block; width: 22px; height: 2px; border-radius: 1px; } .navbar-toggle .icon-bar + .icon-bar { margin-top: 4px; } @media (min-width: 768px) { .navbar-toggle { display: none; } } .navbar-nav { margin: 7.5px -15px; } .navbar-nav > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } @media (max-width: 767px) { .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { background-image: none; } } @media (min-width: 768px) { .navbar-nav { float: left; margin: 0; } .navbar-nav > li { float: left; } .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; } } .navbar-form { padding: 10px 15px; margin-top: 8px; margin-right: -15px; margin-bottom: 8px; margin-left: -15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); } @media (min-width: 768px) { .navbar-form .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-form .form-control { display: inline-block; width: auto; vertical-align: middle; } .navbar-form .form-control-static { display: inline-block; } .navbar-form .input-group { display: inline-table; vertical-align: middle; } .navbar-form .input-group .input-group-addon, .navbar-form .input-group .input-group-btn, .navbar-form .input-group .form-control { width: auto; } .navbar-form .input-group > .form-control { width: 100%; } .navbar-form .control-label { margin-bottom: 0; vertical-align: middle; } .navbar-form .radio, .navbar-form .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .navbar-form .radio label, .navbar-form .checkbox label { padding-left: 0; } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .navbar-form .has-feedback .form-control-feedback { top: 0; } } @media (max-width: 767px) { .navbar-form .form-group { margin-bottom: 5px; } .navbar-form .form-group:last-child { margin-bottom: 0; } } @media (min-width: 768px) { .navbar-form { width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } } .navbar-nav > li > .dropdown-menu { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { margin-bottom: 0; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .navbar-btn { margin-top: 8px; margin-bottom: 8px; } .navbar-btn.btn-sm { margin-top: 10px; margin-bottom: 10px; } .navbar-btn.btn-xs { margin-top: 14px; margin-bottom: 14px; } .navbar-text { margin-top: 15px; margin-bottom: 15px; } @media (min-width: 768px) { .navbar-text { float: left; margin-right: 15px; margin-left: 15px; } } @media (min-width: 768px) { .navbar-left { float: left !important; } .navbar-right { float: right !important; margin-right: -15px; } .navbar-right ~ .navbar-right { margin-right: 0; } } .navbar-default { background-color: #f8f8f8; border-color: #e7e7e7; } .navbar-default .navbar-brand { color: #777; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { color: #5e5e5e; background-color: transparent; } .navbar-default .navbar-text { color: #777; } .navbar-default .navbar-nav > li > a { color: #777; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { color: #ccc; background-color: transparent; } .navbar-default .navbar-toggle { border-color: #ddd; } .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { background-color: #ddd; } .navbar-default .navbar-toggle .icon-bar { background-color: #888; } .navbar-default .navbar-collapse, .navbar-default .navbar-form { border-color: #e7e7e7; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { color: #555; background-color: #e7e7e7; } @media (max-width: 767px) { .navbar-default .navbar-nav .open .dropdown-menu > li > a { color: #777; } .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #ccc; background-color: transparent; } } .navbar-default .navbar-link { color: #777; } .navbar-default .navbar-link:hover { color: #333; } .navbar-default .btn-link { color: #777; } .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { color: #333; } .navbar-default .btn-link[disabled]:hover, fieldset[disabled] .navbar-default .btn-link:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:focus { color: #ccc; } .navbar-inverse { background-color: #222; border-color: #080808; } .navbar-inverse .navbar-brand { color: #9d9d9d; } .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-text { color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { color: #444; background-color: transparent; } .navbar-inverse .navbar-toggle { border-color: #333; } .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { background-color: #333; } .navbar-inverse .navbar-toggle .icon-bar { background-color: #fff; } .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { border-color: #101010; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { color: #fff; background-color: #080808; } @media (max-width: 767px) { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { border-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu .divider { background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #444; background-color: transparent; } } .navbar-inverse .navbar-link { color: #9d9d9d; } .navbar-inverse .navbar-link:hover { color: #fff; } .navbar-inverse .btn-link { color: #9d9d9d; } .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { color: #fff; } .navbar-inverse .btn-link[disabled]:hover, fieldset[disabled] .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:focus { color: #444; } .breadcrumb { padding: 8px 15px; margin-bottom: 20px; list-style: none; background-color: #f5f5f5; border-radius: 4px; } .breadcrumb > li { display: inline-block; } .breadcrumb > li + li:before { padding: 0 5px; color: #ccc; content: "/\00a0"; } .breadcrumb > .active { color: #777; } .pagination { display: inline-block; padding-left: 0; margin: 20px 0; border-radius: 4px; } .pagination > li { display: inline; } .pagination > li > a, .pagination > li > span { position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #337ab7; text-decoration: none; background-color: #fff; border: 1px solid #ddd; } .pagination > li:first-child > a, .pagination > li:first-child > span { margin-left: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { z-index: 2; color: #23527c; background-color: #eee; border-color: #ddd; } .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { z-index: 3; color: #fff; cursor: default; background-color: #337ab7; border-color: #337ab7; } .pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus { color: #777; cursor: not-allowed; background-color: #fff; border-color: #ddd; } .pagination-lg > li > a, .pagination-lg > li > span { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; } .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { border-top-left-radius: 6px; border-bottom-left-radius: 6px; } .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .pagination-sm > li > a, .pagination-sm > li > span { padding: 5px 10px; font-size: 12px; line-height: 1.5; } .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .pager { padding-left: 0; margin: 20px 0; text-align: center; list-style: none; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #eee; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #777; cursor: not-allowed; background-color: #fff; } .label { display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: bold; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; } a.label:hover, a.label:focus { color: #fff; text-decoration: none; cursor: pointer; } .label:empty { display: none; } .btn .label { position: relative; top: -1px; } .label-default { background-color: #777; } .label-default[href]:hover, .label-default[href]:focus { background-color: #5e5e5e; } .label-primary { background-color: #337ab7; } .label-primary[href]:hover, .label-primary[href]:focus { background-color: #286090; } .label-success { background-color: #5cb85c; } .label-success[href]:hover, .label-success[href]:focus { background-color: #449d44; } .label-info { background-color: #5bc0de; } .label-info[href]:hover, .label-info[href]:focus { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } .label-warning[href]:hover, .label-warning[href]:focus { background-color: #ec971f; } .label-danger { background-color: #d9534f; } .label-danger[href]:hover, .label-danger[href]:focus { background-color: #c9302c; } .badge { display: inline-block; min-width: 10px; padding: 3px 7px; font-size: 12px; font-weight: bold; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: middle; background-color: #777; border-radius: 10px; } .badge:empty { display: none; } .btn .badge { position: relative; top: -1px; } .btn-xs .badge, .btn-group-xs > .btn .badge { top: 0; padding: 1px 5px; } a.badge:hover, a.badge:focus { color: #fff; text-decoration: none; cursor: pointer; } .list-group-item.active > .badge, .nav-pills > .active > a > .badge { color: #337ab7; background-color: #fff; } .list-group-item > .badge { float: right; } .list-group-item > .badge + .badge { margin-right: 5px; } .nav-pills > li > a > .badge { margin-left: 3px; } .jumbotron { padding-top: 30px; padding-bottom: 30px; margin-bottom: 30px; color: inherit; background-color: #eee; } .jumbotron h1, .jumbotron .h1 { color: inherit; } .jumbotron p { margin-bottom: 15px; font-size: 21px; font-weight: 200; } .jumbotron > hr { border-top-color: #d5d5d5; } .container .jumbotron, .container-fluid .jumbotron { padding-right: 15px; padding-left: 15px; border-radius: 6px; } .jumbotron .container { max-width: 100%; } @media screen and (min-width: 768px) { .jumbotron { padding-top: 48px; padding-bottom: 48px; } .container .jumbotron, .container-fluid .jumbotron { padding-right: 60px; padding-left: 60px; } .jumbotron h1, .jumbotron .h1 { font-size: 63px; } } .thumbnail { display: block; padding: 4px; margin-bottom: 20px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; -webkit-transition: border .2s ease-in-out; -o-transition: border .2s ease-in-out; transition: border .2s ease-in-out; } .thumbnail > img, .thumbnail a > img { margin-right: auto; margin-left: auto; } a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { border-color: #337ab7; } .thumbnail .caption { padding: 9px; color: #333; } .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert h4 { margin-top: 0; color: inherit; } .alert .alert-link { font-weight: bold; } .alert > p, .alert > ul { margin-bottom: 0; } .alert > p + p { margin-top: 5px; } .alert-dismissable, .alert-dismissible { padding-right: 35px; } .alert-dismissable .close, .alert-dismissible .close { position: relative; top: -2px; right: -21px; color: inherit; } .alert-success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success hr { border-top-color: #c9e2b3; } .alert-success .alert-link { color: #2b542c; } .alert-info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .alert-info hr { border-top-color: #a6e1ec; } .alert-info .alert-link { color: #245269; } .alert-warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .alert-warning hr { border-top-color: #f7e1b5; } .alert-warning .alert-link { color: #66512c; } .alert-danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .alert-danger hr { border-top-color: #e4b9c0; } .alert-danger .alert-link { color: #843534; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f5f5f5; border-radius: 4px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); } .progress-bar { float: left; width: 0; height: 100%; font-size: 12px; line-height: 20px; color: #fff; text-align: center; background-color: #337ab7; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); -webkit-transition: width .6s ease; -o-transition: width .6s ease; transition: width .6s ease; } .progress-striped .progress-bar, .progress-bar-striped { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .progress-bar, .progress-bar.active { -webkit-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { background-color: #5cb85c; } .progress-striped .progress-bar-success { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .progress-bar-info { background-color: #5bc0de; } .progress-striped .progress-bar-info { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .progress-bar-warning { background-color: #f0ad4e; } .progress-striped .progress-bar-warning { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .progress-bar-danger { background-color: #d9534f; } .progress-striped .progress-bar-danger { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media, .media-body { overflow: hidden; zoom: 1; } .media-body { width: 10000px; } .media-object { display: block; } .media-object.img-thumbnail { max-width: none; } .media-right, .media > .pull-right { padding-left: 10px; } .media-left, .media > .pull-left { padding-right: 10px; } .media-left, .media-right, .media-body { display: table-cell; vertical-align: top; } .media-middle { vertical-align: middle; } .media-bottom { vertical-align: bottom; } .media-heading { margin-top: 0; margin-bottom: 5px; } .media-list { padding-left: 0; list-style: none; } .list-group { padding-left: 0; margin-bottom: 20px; } .list-group-item { position: relative; display: block; padding: 10px 15px; margin-bottom: -1px; background-color: #fff; border: 1px solid #ddd; } .list-group-item:first-child { border-top-left-radius: 4px; border-top-right-radius: 4px; } .list-group-item:last-child { margin-bottom: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } a.list-group-item, button.list-group-item { color: #555; } a.list-group-item .list-group-item-heading, button.list-group-item .list-group-item-heading { color: #333; } a.list-group-item:hover, button.list-group-item:hover, a.list-group-item:focus, button.list-group-item:focus { color: #555; text-decoration: none; background-color: #f5f5f5; } button.list-group-item { width: 100%; text-align: left; } .list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { color: #777; cursor: not-allowed; background-color: #eee; } .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { color: inherit; } .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { color: #777; } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { z-index: 2; color: #fff; background-color: #337ab7; border-color: #337ab7; } .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading > .small { color: inherit; } .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { color: #c7ddef; } .list-group-item-success { color: #3c763d; background-color: #dff0d8; } a.list-group-item-success, button.list-group-item-success { color: #3c763d; } a.list-group-item-success .list-group-item-heading, button.list-group-item-success .list-group-item-heading { color: inherit; } a.list-group-item-success:hover, button.list-group-item-success:hover, a.list-group-item-success:focus, button.list-group-item-success:focus { color: #3c763d; background-color: #d0e9c6; } a.list-group-item-success.active, button.list-group-item-success.active, a.list-group-item-success.active:hover, button.list-group-item-success.active:hover, a.list-group-item-success.active:focus, button.list-group-item-success.active:focus { color: #fff; background-color: #3c763d; border-color: #3c763d; } .list-group-item-info { color: #31708f; background-color: #d9edf7; } a.list-group-item-info, button.list-group-item-info { color: #31708f; } a.list-group-item-info .list-group-item-heading, button.list-group-item-info .list-group-item-heading { color: inherit; } a.list-group-item-info:hover, button.list-group-item-info:hover, a.list-group-item-info:focus, button.list-group-item-info:focus { color: #31708f; background-color: #c4e3f3; } a.list-group-item-info.active, button.list-group-item-info.active, a.list-group-item-info.active:hover, button.list-group-item-info.active:hover, a.list-group-item-info.active:focus, button.list-group-item-info.active:focus { color: #fff; background-color: #31708f; border-color: #31708f; } .list-group-item-warning { color: #8a6d3b; background-color: #fcf8e3; } a.list-group-item-warning, button.list-group-item-warning { color: #8a6d3b; } a.list-group-item-warning .list-group-item-heading, button.list-group-item-warning .list-group-item-heading { color: inherit; } a.list-group-item-warning:hover, button.list-group-item-warning:hover, a.list-group-item-warning:focus, button.list-group-item-warning:focus { color: #8a6d3b; background-color: #faf2cc; } a.list-group-item-warning.active, button.list-group-item-warning.active, a.list-group-item-warning.active:hover, button.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, button.list-group-item-warning.active:focus { color: #fff; background-color: #8a6d3b; border-color: #8a6d3b; } .list-group-item-danger { color: #a94442; background-color: #f2dede; } a.list-group-item-danger, button.list-group-item-danger { color: #a94442; } a.list-group-item-danger .list-group-item-heading, button.list-group-item-danger .list-group-item-heading { color: inherit; } a.list-group-item-danger:hover, button.list-group-item-danger:hover, a.list-group-item-danger:focus, button.list-group-item-danger:focus { color: #a94442; background-color: #ebcccc; } a.list-group-item-danger.active, button.list-group-item-danger.active, a.list-group-item-danger.active:hover, button.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, button.list-group-item-danger.active:focus { color: #fff; background-color: #a94442; border-color: #a94442; } .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } .panel { margin-bottom: 20px; background-color: #fff; border: 1px solid transparent; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); box-shadow: 0 1px 1px rgba(0, 0, 0, .05); } .panel-body { padding: 15px; } .panel-heading { padding: 10px 15px; border-bottom: 1px solid transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel-heading > .dropdown .dropdown-toggle { color: inherit; } .panel-title { margin-top: 0; margin-bottom: 0; font-size: 16px; color: inherit; } .panel-title > a, .panel-title > small, .panel-title > .small, .panel-title > small > a, .panel-title > .small > a { color: inherit; } .panel-footer { padding: 10px 15px; background-color: #f5f5f5; border-top: 1px solid #ddd; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .list-group, .panel > .panel-collapse > .list-group { margin-bottom: 0; } .panel > .list-group .list-group-item, .panel > .panel-collapse > .list-group .list-group-item { border-width: 1px 0; border-radius: 0; } .panel > .list-group:first-child .list-group-item:first-child, .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { border-top: 0; border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .list-group:last-child .list-group-item:last-child, .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { border-bottom: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { border-top-left-radius: 0; border-top-right-radius: 0; } .panel-heading + .list-group .list-group-item:first-child { border-top-width: 0; } .list-group + .panel-footer { border-top-width: 0; } .panel > .table, .panel > .table-responsive > .table, .panel > .panel-collapse > .table { margin-bottom: 0; } .panel > .table caption, .panel > .table-responsive > .table caption, .panel > .panel-collapse > .table caption { padding-right: 15px; padding-left: 15px; } .panel > .table:first-child, .panel > .table-responsive:first-child > .table:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { border-top-left-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { border-top-right-radius: 3px; } .panel > .table:last-child, .panel > .table-responsive:last-child > .table:last-child { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { border-bottom-right-radius: 3px; } .panel > .panel-body + .table, .panel > .panel-body + .table-responsive, .panel > .table + .panel-body, .panel > .table-responsive + .panel-body { border-top: 1px solid #ddd; } .panel > .table > tbody:first-child > tr:first-child th, .panel > .table > tbody:first-child > tr:first-child td { border-top: 0; } .panel > .table-bordered, .panel > .table-responsive > .table-bordered { border: 0; } .panel > .table-bordered > thead > tr > th:first-child, .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, .panel > .table-bordered > tbody > tr > th:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, .panel > .table-bordered > tfoot > tr > th:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, .panel > .table-bordered > thead > tr > td:first-child, .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, .panel > .table-bordered > tbody > tr > td:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, .panel > .table-bordered > tfoot > tr > td:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .panel > .table-bordered > thead > tr > th:last-child, .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, .panel > .table-bordered > tbody > tr > th:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, .panel > .table-bordered > tfoot > tr > th:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, .panel > .table-bordered > thead > tr > td:last-child, .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, .panel > .table-bordered > tbody > tr > td:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, .panel > .table-bordered > tfoot > tr > td:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .panel > .table-bordered > thead > tr:first-child > td, .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, .panel > .table-bordered > tbody > tr:first-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, .panel > .table-bordered > thead > tr:first-child > th, .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, .panel > .table-bordered > tbody > tr:first-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { border-bottom: 0; } .panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > td, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, .panel > .table-bordered > tfoot > tr:last-child > th, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { border-bottom: 0; } .panel > .table-responsive { margin-bottom: 0; border: 0; } .panel-group { margin-bottom: 20px; } .panel-group .panel { margin-bottom: 0; border-radius: 4px; } .panel-group .panel + .panel { margin-top: 5px; } .panel-group .panel-heading { border-bottom: 0; } .panel-group .panel-heading + .panel-collapse > .panel-body, .panel-group .panel-heading + .panel-collapse > .list-group { border-top: 1px solid #ddd; } .panel-group .panel-footer { border-top: 0; } .panel-group .panel-footer + .panel-collapse .panel-body { border-bottom: 1px solid #ddd; } .panel-default { border-color: #ddd; } .panel-default > .panel-heading { color: #333; background-color: #f5f5f5; border-color: #ddd; } .panel-default > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ddd; } .panel-default > .panel-heading .badge { color: #f5f5f5; background-color: #333; } .panel-default > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ddd; } .panel-primary { border-color: #337ab7; } .panel-primary > .panel-heading { color: #fff; background-color: #337ab7; border-color: #337ab7; } .panel-primary > .panel-heading + .panel-collapse > .panel-body { border-top-color: #337ab7; } .panel-primary > .panel-heading .badge { color: #337ab7; background-color: #fff; } .panel-primary > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #337ab7; } .panel-success { border-color: #d6e9c6; } .panel-success > .panel-heading { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .panel-success > .panel-heading + .panel-collapse > .panel-body { border-top-color: #d6e9c6; } .panel-success > .panel-heading .badge { color: #dff0d8; background-color: #3c763d; } .panel-success > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #d6e9c6; } .panel-info { border-color: #bce8f1; } .panel-info > .panel-heading { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .panel-info > .panel-heading + .panel-collapse > .panel-body { border-top-color: #bce8f1; } .panel-info > .panel-heading .badge { color: #d9edf7; background-color: #31708f; } .panel-info > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #bce8f1; } .panel-warning { border-color: #faebcc; } .panel-warning > .panel-heading { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .panel-warning > .panel-heading + .panel-collapse > .panel-body { border-top-color: #faebcc; } .panel-warning > .panel-heading .badge { color: #fcf8e3; background-color: #8a6d3b; } .panel-warning > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #faebcc; } .panel-danger { border-color: #ebccd1; } .panel-danger > .panel-heading { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .panel-danger > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ebccd1; } .panel-danger > .panel-heading .badge { color: #f2dede; background-color: #a94442; } .panel-danger > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ebccd1; } .embed-responsive { position: relative; display: block; height: 0; padding: 0; overflow: hidden; } .embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { position: absolute; top: 0; bottom: 0; left: 0; width: 100%; height: 100%; border: 0; } .embed-responsive-16by9 { padding-bottom: 56.25%; } .embed-responsive-4by3 { padding-bottom: 75%; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, .15); } .well-lg { padding: 24px; border-radius: 6px; } .well-sm { padding: 9px; border-radius: 3px; } .close { float: right; font-size: 21px; font-weight: bold; line-height: 1; color: #000; text-shadow: 0 1px 0 #fff; filter: alpha(opacity=20); opacity: .2; } .close:hover, .close:focus { color: #000; text-decoration: none; cursor: pointer; filter: alpha(opacity=50); opacity: .5; } button.close { -webkit-appearance: none; padding: 0; cursor: pointer; background: transparent; border: 0; } .modal-open { overflow: hidden; } .modal { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1050; display: none; overflow: hidden; -webkit-overflow-scrolling: touch; outline: 0; } .modal.fade .modal-dialog { -webkit-transition: -webkit-transform .3s ease-out; -o-transition: -o-transform .3s ease-out; transition: transform .3s ease-out; -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); -o-transform: translate(0, -25%); transform: translate(0, -25%); } .modal.in .modal-dialog { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .modal-open .modal { overflow-x: hidden; overflow-y: auto; } .modal-dialog { position: relative; width: auto; margin: 10px; } .modal-content { position: relative; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, .2); border-radius: 6px; outline: 0; -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); box-shadow: 0 3px 9px rgba(0, 0, 0, .5); } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000; } .modal-backdrop.fade { filter: alpha(opacity=0); opacity: 0; } .modal-backdrop.in { filter: alpha(opacity=50); opacity: .5; } .modal-header { padding: 15px; border-bottom: 1px solid #e5e5e5; } .modal-header .close { margin-top: -2px; } .modal-title { margin: 0; line-height: 1.42857143; } .modal-body { position: relative; padding: 15px; } .modal-footer { padding: 15px; text-align: right; border-top: 1px solid #e5e5e5; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .modal-scrollbar-measure { position: absolute; top: -9999px; width: 50px; height: 50px; overflow: scroll; } @media (min-width: 768px) { .modal-dialog { width: 600px; margin: 30px auto; } .modal-content { -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); box-shadow: 0 5px 15px rgba(0, 0, 0, .5); } .modal-sm { width: 300px; } } @media (min-width: 992px) { .modal-lg { width: 900px; } } .tooltip { position: absolute; z-index: 1070; display: block; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: normal; line-height: 1.42857143; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; word-wrap: normal; white-space: normal; filter: alpha(opacity=0); opacity: 0; line-break: auto; } .tooltip.in { filter: alpha(opacity=90); opacity: .9; } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 3px 8px; color: #fff; text-align: center; background-color: #000; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.top-left .tooltip-arrow { right: 5px; bottom: 0; margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.top-right .tooltip-arrow { bottom: 0; left: 5px; margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .tooltip.bottom-left .tooltip-arrow { top: 0; right: 5px; margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .tooltip.bottom-right .tooltip-arrow { top: 0; left: 5px; margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .popover { position: absolute; top: 0; left: 0; z-index: 1060; display: none; max-width: 276px; padding: 1px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-weight: normal; line-height: 1.42857143; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; word-wrap: normal; white-space: normal; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, .2); border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); box-shadow: 0 5px 10px rgba(0, 0, 0, .2); line-break: auto; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; } .popover-content { padding: 9px 14px; } .popover > .arrow, .popover > .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover > .arrow { border-width: 11px; } .popover > .arrow:after { content: ""; border-width: 10px; } .popover.top > .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999; border-top-color: rgba(0, 0, 0, .25); border-bottom-width: 0; } .popover.top > .arrow:after { bottom: 1px; margin-left: -10px; content: " "; border-top-color: #fff; border-bottom-width: 0; } .popover.right > .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999; border-right-color: rgba(0, 0, 0, .25); border-left-width: 0; } .popover.right > .arrow:after { bottom: -10px; left: 1px; content: " "; border-right-color: #fff; border-left-width: 0; } .popover.bottom > .arrow { top: -11px; left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, .25); } .popover.bottom > .arrow:after { top: 1px; margin-left: -10px; content: " "; border-top-width: 0; border-bottom-color: #fff; } .popover.left > .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999; border-left-color: rgba(0, 0, 0, .25); } .popover.left > .arrow:after { right: 1px; bottom: -10px; content: " "; border-right-width: 0; border-left-color: #fff; } .carousel { position: relative; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: .6s ease-in-out left; -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { line-height: 1; } @media all and (transform-3d), (-webkit-transform-3d) { .carousel-inner > .item { -webkit-transition: -webkit-transform .6s ease-in-out; -o-transition: -o-transform .6s ease-in-out; transition: transform .6s ease-in-out; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-perspective: 1000px; perspective: 1000px; } .carousel-inner > .item.next, .carousel-inner > .item.active.right { left: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } .carousel-inner > .item.prev, .carousel-inner > .item.active.left { left: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { left: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 0; bottom: 0; left: 0; width: 15%; font-size: 20px; color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); background-color: rgba(0, 0, 0, 0); filter: alpha(opacity=50); opacity: .5; } .carousel-control.left { background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); background-repeat: repeat-x; } .carousel-control.right { right: 0; left: auto; background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); background-repeat: repeat-x; } .carousel-control:hover, .carousel-control:focus { color: #fff; text-decoration: none; filter: alpha(opacity=90); outline: 0; opacity: .9; } .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right { position: absolute; top: 50%; z-index: 5; display: inline-block; margin-top: -10px; } .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left { left: 50%; margin-left: -10px; } .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right { right: 50%; margin-right: -10px; } .carousel-control .icon-prev, .carousel-control .icon-next { width: 20px; height: 20px; font-family: serif; line-height: 1; } .carousel-control .icon-prev:before { content: '\2039'; } .carousel-control .icon-next:before { content: '\203a'; } .carousel-indicators { position: absolute; bottom: 10px; left: 50%; z-index: 15; width: 60%; padding-left: 0; margin-left: -30%; text-align: center; list-style: none; } .carousel-indicators li { display: inline-block; width: 10px; height: 10px; margin: 1px; text-indent: -999px; cursor: pointer; background-color: #000 \9; background-color: rgba(0, 0, 0, 0); border: 1px solid #fff; border-radius: 10px; } .carousel-indicators .active { width: 12px; height: 12px; margin: 0; background-color: #fff; } .carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); } .carousel-caption .btn { text-shadow: none; } @media screen and (min-width: 768px) { .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev, .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -10px; font-size: 30px; } .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev { margin-left: -10px; } .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next { margin-right: -10px; } .carousel-caption { right: 20%; left: 20%; padding-bottom: 30px; } .carousel-indicators { bottom: 20px; } } .clearfix:before, .clearfix:after, .dl-horizontal dd:before, .dl-horizontal dd:after, .container:before, .container:after, .container-fluid:before, .container-fluid:after, .row:before, .row:after, .form-horizontal .form-group:before, .form-horizontal .form-group:after, .btn-toolbar:before, .btn-toolbar:after, .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after, .nav:before, .nav:after, .navbar:before, .navbar:after, .navbar-header:before, .navbar-header:after, .navbar-collapse:before, .navbar-collapse:after, .pager:before, .pager:after, .panel-body:before, .panel-body:after, .modal-header:before, .modal-header:after, .modal-footer:before, .modal-footer:after { display: table; content: " "; } .clearfix:after, .dl-horizontal dd:after, .container:after, .container-fluid:after, .row:after, .form-horizontal .form-group:after, .btn-toolbar:after, .btn-group-vertical > .btn-group:after, .nav:after, .navbar:after, .navbar-header:after, .navbar-collapse:after, .pager:after, .panel-body:after, .modal-header:after, .modal-footer:after { clear: both; } .center-block { display: block; margin-right: auto; margin-left: auto; } .pull-right { float: right !important; } .pull-left { float: left !important; } .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .hidden { display: none !important; } .affix { position: fixed; } @-ms-viewport { width: device-width; } .visible-xs, .visible-sm, .visible-md, .visible-lg { display: none !important; } .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block { display: none !important; } @media (max-width: 767px) { .visible-xs { display: block !important; } table.visible-xs { display: table !important; } tr.visible-xs { display: table-row !important; } th.visible-xs, td.visible-xs { display: table-cell !important; } } @media (max-width: 767px) { .visible-xs-block { display: block !important; } } @media (max-width: 767px) { .visible-xs-inline { display: inline !important; } } @media (max-width: 767px) { .visible-xs-inline-block { display: inline-block !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm { display: block !important; } table.visible-sm { display: table !important; } tr.visible-sm { display: table-row !important; } th.visible-sm, td.visible-sm { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-block { display: block !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-inline { display: inline !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-inline-block { display: inline-block !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md { display: block !important; } table.visible-md { display: table !important; } tr.visible-md { display: table-row !important; } th.visible-md, td.visible-md { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-block { display: block !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-inline { display: inline !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-inline-block { display: inline-block !important; } } @media (min-width: 1200px) { .visible-lg { display: block !important; } table.visible-lg { display: table !important; } tr.visible-lg { display: table-row !important; } th.visible-lg, td.visible-lg { display: table-cell !important; } } @media (min-width: 1200px) { .visible-lg-block { display: block !important; } } @media (min-width: 1200px) { .visible-lg-inline { display: inline !important; } } @media (min-width: 1200px) { .visible-lg-inline-block { display: inline-block !important; } } @media (max-width: 767px) { .hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-lg { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: block !important; } table.visible-print { display: table !important; } tr.visible-print { display: table-row !important; } th.visible-print, td.visible-print { display: table-cell !important; } } .visible-print-block { display: none !important; } @media print { .visible-print-block { display: block !important; } } .visible-print-inline { display: none !important; } @media print { .visible-print-inline { display: inline !important; } } .visible-print-inline-block { display: none !important; } @media print { .visible-print-inline-block { display: inline-block !important; } } @media print { .hidden-print { display: none !important; } } /*# sourceMappingURL=bootstrap.css.map */ ================================================ FILE: lib/bootstrap/js/bootstrap-table.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) : typeof define === 'function' && define.amd ? define(['jquery'], factory) : (global = global || self, global.BootstrapTable = factory(global.jQuery)); }(this, function ($) { 'use strict'; $ = $ && $.hasOwnProperty('default') ? $['default'] : $; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } var O = 'object'; var check = function (it) { return it && it.Math == Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global_1 = // eslint-disable-next-line no-undef check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof commonjsGlobal == O && commonjsGlobal) || // eslint-disable-next-line no-new-func Function('return this')(); var fails = function (exec) { try { return !!exec(); } catch (error) { return true; } }; // Thank's IE8 for his funny defineProperty var descriptors = !fails(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); var nativePropertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable var f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : nativePropertyIsEnumerable; var objectPropertyIsEnumerable = { f: f }; var createPropertyDescriptor = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; var toString = {}.toString; var classofRaw = function (it) { return toString.call(it).slice(8, -1); }; var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings var indexedObject = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins return !Object('z').propertyIsEnumerable(0); }) ? function (it) { return classofRaw(it) == 'String' ? split.call(it, '') : Object(it); } : Object; // `RequireObjectCoercible` abstract operation // https://tc39.github.io/ecma262/#sec-requireobjectcoercible var requireObjectCoercible = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; // toObject with fallback for non-array-like ES3 strings var toIndexedObject = function (it) { return indexedObject(requireObjectCoercible(it)); }; var isObject = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; // `ToPrimitive` abstract operation // https://tc39.github.io/ecma262/#sec-toprimitive // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string var toPrimitive = function (input, PREFERRED_STRING) { if (!isObject(input)) return input; var fn, val; if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; var hasOwnProperty = {}.hasOwnProperty; var has = function (it, key) { return hasOwnProperty.call(it, key); }; var document$1 = global_1.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document$1) && isObject(document$1.createElement); var documentCreateElement = function (it) { return EXISTS ? document$1.createElement(it) : {}; }; // Thank's IE8 for his funny defineProperty var ie8DomDefine = !descriptors && !fails(function () { return Object.defineProperty(documentCreateElement('div'), 'a', { get: function () { return 7; } }).a != 7; }); var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (ie8DomDefine) try { return nativeGetOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]); }; var objectGetOwnPropertyDescriptor = { f: f$1 }; var anObject = function (it) { if (!isObject(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (ie8DomDefine) try { return nativeDefineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; var objectDefineProperty = { f: f$2 }; var hide = descriptors ? function (object, key, value) { return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; var setGlobal = function (key, value) { try { hide(global_1, key, value); } catch (error) { global_1[key] = value; } return value; }; var shared = createCommonjsModule(function (module) { var SHARED = '__core-js_shared__'; var store = global_1[SHARED] || setGlobal(SHARED, {}); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.1.3', mode: 'global', copyright: '© 2019 Denis Pushkarev (zloirock.ru)' }); }); var functionToString = shared('native-function-to-string', Function.toString); var WeakMap = global_1.WeakMap; var nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(functionToString.call(WeakMap)); var id = 0; var postfix = Math.random(); var uid = function (key) { return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; var keys = shared('keys'); var sharedKey = function (key) { return keys[key] || (keys[key] = uid(key)); }; var hiddenKeys = {}; var WeakMap$1 = global_1.WeakMap; var set, get, has$1; var enforce = function (it) { return has$1(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (nativeWeakMap) { var store = new WeakMap$1(); var wmget = store.get; var wmhas = store.has; var wmset = store.set; set = function (it, metadata) { wmset.call(store, it, metadata); return metadata; }; get = function (it) { return wmget.call(store, it) || {}; }; has$1 = function (it) { return wmhas.call(store, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { hide(it, STATE, metadata); return metadata; }; get = function (it) { return has(it, STATE) ? it[STATE] : {}; }; has$1 = function (it) { return has(it, STATE); }; } var internalState = { set: set, get: get, has: has$1, enforce: enforce, getterFor: getterFor }; var redefine = createCommonjsModule(function (module) { var getInternalState = internalState.get; var enforceInternalState = internalState.enforce; var TEMPLATE = String(functionToString).split('toString'); shared('inspectSource', function (it) { return functionToString.call(it); }); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global_1) { if (simple) O[key] = value; else setGlobal(key, value); return; } else if (!unsafe) { delete O[key]; } else if (!noTargetGet && O[key]) { simple = true; } if (simple) O[key] = value; else hide(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { return typeof this == 'function' && getInternalState(this).source || functionToString.call(this); }); }); var path = global_1; var aFunction = function (variable) { return typeof variable == 'function' ? variable : undefined; }; var getBuiltIn = function (namespace, method) { return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; }; var ceil = Math.ceil; var floor = Math.floor; // `ToInteger` abstract operation // https://tc39.github.io/ecma262/#sec-tointeger var toInteger = function (argument) { return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); }; var min = Math.min; // `ToLength` abstract operation // https://tc39.github.io/ecma262/#sec-tolength var toLength = function (argument) { return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; var max = Math.max; var min$1 = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). var toAbsoluteIndex = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min$1(integer, length); }; // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; var arrayIncludes = { // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; var indexOf = arrayIncludes.indexOf; var objectKeysInternal = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~indexOf(result, key) || result.push(key); } return result; }; // IE8- don't enum bug keys var enumBugKeys = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return objectKeysInternal(O, hiddenKeys$1); }; var objectGetOwnPropertyNames = { f: f$3 }; var f$4 = Object.getOwnPropertySymbols; var objectGetOwnPropertySymbols = { f: f$4 }; // all object keys, includes non-enumerable and symbols var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = objectGetOwnPropertyNames.f(anObject(it)); var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; }; var copyConstructorProperties = function (target, source) { var keys = ownKeys(source); var defineProperty = objectDefineProperty.f; var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } }; var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; var isForced_1 = isForced; var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.noTargetGet - prevent calling a getter on target */ var _export = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global_1; } else if (STATIC) { target = global_1[TARGET] || setGlobal(TARGET, {}); } else { target = (global_1[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.noTargetGet) { descriptor = getOwnPropertyDescriptor$1(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty === typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { hide(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); } }; var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () { // Chrome 38 Symbol has incorrect toString conversion // eslint-disable-next-line no-undef return !String(Symbol()); }); // `IsArray` abstract operation // https://tc39.github.io/ecma262/#sec-isarray var isArray = Array.isArray || function isArray(arg) { return classofRaw(arg) == 'Array'; }; // `ToObject` abstract operation // https://tc39.github.io/ecma262/#sec-toobject var toObject = function (argument) { return Object(requireObjectCoercible(argument)); }; // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys var objectKeys = Object.keys || function keys(O) { return objectKeysInternal(O, enumBugKeys); }; // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = objectKeys(Properties); var length = keys.length; var index = 0; var key; while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]); return O; }; var html = getBuiltIn('document', 'documentElement'); var IE_PROTO = sharedKey('IE_PROTO'); var PROTOTYPE = 'prototype'; var Empty = function () { /* empty */ }; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); var length = enumBugKeys.length; var lt = '<'; var script = 'script'; var gt = '>'; var js = 'java' + script + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); iframe.src = String(js); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); iframeDocument.close(); createDict = iframeDocument.F; while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; return createDict(); }; // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create var objectCreate = Object.create || function create(O, Properties) { var result; if (O !== null) { Empty[PROTOTYPE] = anObject(O); result = new Empty(); Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : objectDefineProperties(result, Properties); }; hiddenKeys[IE_PROTO] = true; var nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f; var toString$1 = {}.toString; var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function (it) { try { return nativeGetOwnPropertyNames(it); } catch (error) { return windowNames.slice(); } }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var f$5 = function getOwnPropertyNames(it) { return windowNames && toString$1.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it)); }; var objectGetOwnPropertyNamesExternal = { f: f$5 }; var Symbol$1 = global_1.Symbol; var store$1 = shared('wks'); var wellKnownSymbol = function (name) { return store$1[name] || (store$1[name] = nativeSymbol && Symbol$1[name] || (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name)); }; var f$6 = wellKnownSymbol; var wrappedWellKnownSymbol = { f: f$6 }; var defineProperty = objectDefineProperty.f; var defineWellKnownSymbol = function (NAME) { var Symbol = path.Symbol || (path.Symbol = {}); if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { value: wrappedWellKnownSymbol.f(NAME) }); }; var defineProperty$1 = objectDefineProperty.f; var TO_STRING_TAG = wellKnownSymbol('toStringTag'); var setToStringTag = function (it, TAG, STATIC) { if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { defineProperty$1(it, TO_STRING_TAG, { configurable: true, value: TAG }); } }; var aFunction$1 = function (it) { if (typeof it != 'function') { throw TypeError(String(it) + ' is not a function'); } return it; }; // optional / simple context binding var bindContext = function (fn, that, length) { aFunction$1(fn); if (that === undefined) return fn; switch (length) { case 0: return function () { return fn.call(that); }; case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation // https://tc39.github.io/ecma262/#sec-arrayspeciescreate var arraySpeciesCreate = function (originalArray, length) { var C; if (isArray(originalArray)) { C = originalArray.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; else if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); }; var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation var createMethod$1 = function (TYPE) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; return function ($this, callbackfn, that, specificCreate) { var O = toObject($this); var self = indexedObject(O); var boundFunction = bindContext(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var create = specificCreate || arraySpeciesCreate; var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var value, result; for (;length > index; index++) if (NO_HOLES || index in self) { value = self[index]; result = boundFunction(value, index, O); if (TYPE) { if (IS_MAP) target[index] = result; // map else if (result) switch (TYPE) { case 3: return true; // some case 5: return value; // find case 6: return index; // findIndex case 2: push.call(target, value); // filter } else if (IS_EVERY) return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; }; }; var arrayIteration = { // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach forEach: createMethod$1(0), // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map map: createMethod$1(1), // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter filter: createMethod$1(2), // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some some: createMethod$1(3), // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every every: createMethod$1(4), // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find find: createMethod$1(5), // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex findIndex: createMethod$1(6) }; var $forEach = arrayIteration.forEach; var HIDDEN = sharedKey('hidden'); var SYMBOL = 'Symbol'; var PROTOTYPE$1 = 'prototype'; var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); var setInternalState = internalState.set; var getInternalState = internalState.getterFor(SYMBOL); var ObjectPrototype = Object[PROTOTYPE$1]; var $Symbol = global_1.Symbol; var JSON$1 = global_1.JSON; var nativeJSONStringify = JSON$1 && JSON$1.stringify; var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; var nativeDefineProperty$1 = objectDefineProperty.f; var nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f; var nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f; var AllSymbols = shared('symbols'); var ObjectPrototypeSymbols = shared('op-symbols'); var StringToSymbolRegistry = shared('string-to-symbol-registry'); var SymbolToStringRegistry = shared('symbol-to-string-registry'); var WellKnownSymbolsStore = shared('wks'); var QObject = global_1.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDescriptor = descriptors && fails(function () { return objectCreate(nativeDefineProperty$1({}, 'a', { get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; } })).a != 7; }) ? function (O, P, Attributes) { var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype, P); if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; nativeDefineProperty$1(O, P, Attributes); if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { nativeDefineProperty$1(ObjectPrototype, P, ObjectPrototypeDescriptor); } } : nativeDefineProperty$1; var wrap = function (tag, description) { var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]); setInternalState(symbol, { type: SYMBOL, tag: tag, description: description }); if (!descriptors) symbol.description = description; return symbol; }; var isSymbol = nativeSymbol && typeof $Symbol.iterator == 'symbol' ? function (it) { return typeof it == 'symbol'; } : function (it) { return Object(it) instanceof $Symbol; }; var $defineProperty = function defineProperty(O, P, Attributes) { if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); anObject(O); var key = toPrimitive(P, true); anObject(Attributes); if (has(AllSymbols, key)) { if (!Attributes.enumerable) { if (!has(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {})); O[HIDDEN][key] = true; } else { if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); } return setSymbolDescriptor(O, key, Attributes); } return nativeDefineProperty$1(O, key, Attributes); }; var $defineProperties = function defineProperties(O, Properties) { anObject(O); var properties = toIndexedObject(Properties); var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); $forEach(keys, function (key) { if (!descriptors || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); }); return O; }; var $create = function create(O, Properties) { return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties); }; var $propertyIsEnumerable = function propertyIsEnumerable(V) { var P = toPrimitive(V, true); var enumerable = nativePropertyIsEnumerable$1.call(this, P); if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { var it = toIndexedObject(O); var key = toPrimitive(P, true); if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; var descriptor = nativeGetOwnPropertyDescriptor$1(it, key); if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { descriptor.enumerable = true; } return descriptor; }; var $getOwnPropertyNames = function getOwnPropertyNames(O) { var names = nativeGetOwnPropertyNames$1(toIndexedObject(O)); var result = []; $forEach(names, function (key) { if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); }); return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); var result = []; $forEach(names, function (key) { if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { result.push(AllSymbols[key]); } }); return result; }; // `Symbol` constructor // https://tc39.github.io/ecma262/#sec-symbol-constructor if (!nativeSymbol) { $Symbol = function Symbol() { if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); var tag = uid(description); var setter = function (value) { if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); }; if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); return wrap(tag, description); }; redefine($Symbol[PROTOTYPE$1], 'toString', function toString() { return getInternalState(this).tag; }); objectPropertyIsEnumerable.f = $propertyIsEnumerable; objectDefineProperty.f = $defineProperty; objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor; objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames; objectGetOwnPropertySymbols.f = $getOwnPropertySymbols; if (descriptors) { // https://github.com/tc39/proposal-Symbol-description nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', { configurable: true, get: function description() { return getInternalState(this).description; } }); { redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); } } wrappedWellKnownSymbol.f = function (name) { return wrap(wellKnownSymbol(name), name); }; } _export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, { Symbol: $Symbol }); $forEach(objectKeys(WellKnownSymbolsStore), function (name) { defineWellKnownSymbol(name); }); _export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, { // `Symbol.for` method // https://tc39.github.io/ecma262/#sec-symbol.for 'for': function (key) { var string = String(key); if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; var symbol = $Symbol(string); StringToSymbolRegistry[string] = symbol; SymbolToStringRegistry[symbol] = string; return symbol; }, // `Symbol.keyFor` method // https://tc39.github.io/ecma262/#sec-symbol.keyfor keyFor: function keyFor(sym) { if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; }, useSetter: function () { USE_SETTER = true; }, useSimple: function () { USE_SETTER = false; } }); _export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, { // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create create: $create, // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty defineProperty: $defineProperty, // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties defineProperties: $defineProperties, // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors getOwnPropertyDescriptor: $getOwnPropertyDescriptor }); _export({ target: 'Object', stat: true, forced: !nativeSymbol }, { // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames getOwnPropertyNames: $getOwnPropertyNames, // `Object.getOwnPropertySymbols` method // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols getOwnPropertySymbols: $getOwnPropertySymbols }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives // https://bugs.chromium.org/p/v8/issues/detail?id=3443 _export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, { getOwnPropertySymbols: function getOwnPropertySymbols(it) { return objectGetOwnPropertySymbols.f(toObject(it)); } }); // `JSON.stringify` method behavior with symbols // https://tc39.github.io/ecma262/#sec-json.stringify JSON$1 && _export({ target: 'JSON', stat: true, forced: !nativeSymbol || fails(function () { var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {} return nativeJSONStringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null || nativeJSONStringify({ a: symbol }) != '{}' // V8 throws on boxed symbols || nativeJSONStringify(Object(symbol)) != '{}'; }) }, { stringify: function stringify(it) { var args = [it]; var index = 1; var replacer, $replacer; while (arguments.length > index) args.push(arguments[index++]); $replacer = replacer = args[1]; if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined if (!isArray(replacer)) replacer = function (key, value) { if (typeof $replacer == 'function') value = $replacer.call(this, key, value); if (!isSymbol(value)) return value; }; args[1] = replacer; return nativeJSONStringify.apply(JSON$1, args); } }); // `Symbol.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf); // `Symbol.prototype[@@toStringTag]` property // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag setToStringTag($Symbol, SYMBOL); hiddenKeys[HIDDEN] = true; var defineProperty$2 = objectDefineProperty.f; var NativeSymbol = global_1.Symbol; if (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || // Safari 12 bug NativeSymbol().description !== undefined )) { var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description var SymbolWrapper = function Symbol() { var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]); var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' : description === undefined ? NativeSymbol() : NativeSymbol(description); if (description === '') EmptyStringDescriptionStore[result] = true; return result; }; copyConstructorProperties(SymbolWrapper, NativeSymbol); var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype; symbolPrototype.constructor = SymbolWrapper; var symbolToString = symbolPrototype.toString; var native = String(NativeSymbol('test')) == 'Symbol(test)'; var regexp = /^Symbol\((.*)\)[^)]+$/; defineProperty$2(symbolPrototype, 'description', { configurable: true, get: function description() { var symbol = isObject(this) ? this.valueOf() : this; var string = symbolToString.call(symbol); if (has(EmptyStringDescriptionStore, symbol)) return ''; var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1'); return desc === '' ? undefined : desc; } }); _export({ global: true, forced: true }, { Symbol: SymbolWrapper }); } // `Symbol.iterator` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.iterator defineWellKnownSymbol('iterator'); var createProperty = function (object, key, value) { var propertyKey = toPrimitive(key); if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value)); else object[propertyKey] = value; }; var SPECIES$1 = wellKnownSymbol('species'); var arrayMethodHasSpeciesSupport = function (METHOD_NAME) { return !fails(function () { var array = []; var constructor = array.constructor = {}; constructor[SPECIES$1] = function () { return { foo: 1 }; }; return array[METHOD_NAME](Boolean).foo !== 1; }); }; var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; var IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () { var array = []; array[IS_CONCAT_SPREADABLE] = false; return array.concat()[0] !== array; }); var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); var isConcatSpreadable = function (O) { if (!isObject(O)) return false; var spreadable = O[IS_CONCAT_SPREADABLE]; return spreadable !== undefined ? !!spreadable : isArray(O); }; var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method // https://tc39.github.io/ecma262/#sec-array.prototype.concat // with adding support of @@isConcatSpreadable and @@species _export({ target: 'Array', proto: true, forced: FORCED }, { concat: function concat(arg) { // eslint-disable-line no-unused-vars var O = toObject(this); var A = arraySpeciesCreate(O, 0); var n = 0; var i, k, length, len, E; for (i = -1, length = arguments.length; i < length; i++) { E = i === -1 ? O : arguments[i]; if (isConcatSpreadable(E)) { len = toLength(E.length); if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); } else { if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); createProperty(A, n++, E); } } A.length = n; return A; } }); var $filter = arrayIteration.filter; // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter // with adding support of @@species _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, { filter: function filter(callbackfn /* , thisArg */) { return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); var UNSCOPABLES = wellKnownSymbol('unscopables'); var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables if (ArrayPrototype[UNSCOPABLES] == undefined) { hide(ArrayPrototype, UNSCOPABLES, objectCreate(null)); } // add a key to Array.prototype[@@unscopables] var addToUnscopables = function (key) { ArrayPrototype[UNSCOPABLES][key] = true; }; var $find = arrayIteration.find; var FIND = 'find'; var SKIPS_HOLES = true; // Shouldn't skip holes if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find _export({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { find: function find(callbackfn /* , that = undefined */) { return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND); var $findIndex = arrayIteration.findIndex; var FIND_INDEX = 'findIndex'; var SKIPS_HOLES$1 = true; // Shouldn't skip holes if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES$1 = false; }); // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findindex _export({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 }, { findIndex: function findIndex(callbackfn /* , that = undefined */) { return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND_INDEX); var $includes = arrayIncludes.includes; // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes _export({ target: 'Array', proto: true }, { includes: function includes(el /* , fromIndex = 0 */) { return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('includes'); var sloppyArrayMethod = function (METHOD_NAME, argument) { var method = [][METHOD_NAME]; return !method || !fails(function () { // eslint-disable-next-line no-useless-call,no-throw-literal method.call(null, argument || function () { throw 1; }, 1); }); }; var $indexOf = arrayIncludes.indexOf; var nativeIndexOf = [].indexOf; var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; var SLOPPY_METHOD = sloppyArrayMethod('indexOf'); // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof _export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, { indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { return NEGATIVE_ZERO // convert -0 to +0 ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); } }); var correctPrototypeGetter = !fails(function () { function F() { /* empty */ } F.prototype.constructor = null; return Object.getPrototypeOf(new F()) !== F.prototype; }); var IE_PROTO$1 = sharedKey('IE_PROTO'); var ObjectPrototype$1 = Object.prototype; // `Object.getPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.getprototypeof var objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) { O = toObject(O); if (has(O, IE_PROTO$1)) return O[IE_PROTO$1]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectPrototype$1 : null; }; var ITERATOR = wellKnownSymbol('iterator'); var BUGGY_SAFARI_ITERATORS = false; var returnThis = function () { return this; }; // `%IteratorPrototype%` object // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; if ([].keys) { arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; else { PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)); if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; } } if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() if ( !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); var iteratorsCore = { IteratorPrototype: IteratorPrototype, BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; var createIteratorConstructor = function (IteratorConstructor, NAME, next) { var TO_STRING_TAG = NAME + ' Iterator'; IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) }); setToStringTag(IteratorConstructor, TO_STRING_TAG, false); return IteratorConstructor; }; var aPossiblePrototype = function (it) { if (!isObject(it) && it !== null) { throw TypeError("Can't set " + String(it) + ' as a prototype'); } return it; }; // `Object.setPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.setprototypeof // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { var CORRECT_SETTER = false; var test = {}; var setter; try { setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; setter.call(test, []); CORRECT_SETTER = test instanceof Array; } catch (error) { /* empty */ } return function setPrototypeOf(O, proto) { anObject(O); aPossiblePrototype(proto); if (CORRECT_SETTER) setter.call(O, proto); else O.__proto__ = proto; return O; }; }() : undefined); var IteratorPrototype$2 = iteratorsCore.IteratorPrototype; var BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS; var ITERATOR$1 = wellKnownSymbol('iterator'); var KEYS = 'keys'; var VALUES = 'values'; var ENTRIES = 'entries'; var returnThis$1 = function () { return this; }; var defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { createIteratorConstructor(IteratorConstructor, NAME, next); var getIterationMethod = function (KIND) { if (KIND === DEFAULT && defaultIterator) return defaultIterator; if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) return IterablePrototype[KIND]; switch (KIND) { case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; } return function () { return new IteratorConstructor(this); }; }; var TO_STRING_TAG = NAME + ' Iterator'; var INCORRECT_VALUES_NAME = false; var IterablePrototype = Iterable.prototype; var nativeIterator = IterablePrototype[ITERATOR$1] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT); var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; var CurrentIteratorPrototype, methods, KEY; // fix native if (anyNativeIterator) { CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable())); if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) { if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) { if (objectSetPrototypeOf) { objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2); } else if (typeof CurrentIteratorPrototype[ITERATOR$1] != 'function') { hide(CurrentIteratorPrototype, ITERATOR$1, returnThis$1); } } // Set @@toStringTag to native iterators setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true); } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { INCORRECT_VALUES_NAME = true; defaultIterator = function values() { return nativeIterator.call(this); }; } // define iterator if ( IterablePrototype[ITERATOR$1] !== defaultIterator) { hide(IterablePrototype, ITERATOR$1, defaultIterator); } // export additional methods if (DEFAULT) { methods = { values: getIterationMethod(VALUES), keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), entries: getIterationMethod(ENTRIES) }; if (FORCED) for (KEY in methods) { if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { redefine(IterablePrototype, KEY, methods[KEY]); } } else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods); } return methods; }; var ARRAY_ITERATOR = 'Array Iterator'; var setInternalState$1 = internalState.set; var getInternalState$1 = internalState.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method // https://tc39.github.io/ecma262/#sec-array.prototype.entries // `Array.prototype.keys` method // https://tc39.github.io/ecma262/#sec-array.prototype.keys // `Array.prototype.values` method // https://tc39.github.io/ecma262/#sec-array.prototype.values // `Array.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator // `CreateArrayIterator` internal method // https://tc39.github.io/ecma262/#sec-createarrayiterator var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) { setInternalState$1(this, { type: ARRAY_ITERATOR, target: toIndexedObject(iterated), // target index: 0, // next index kind: kind // kind }); // `%ArrayIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next }, function () { var state = getInternalState$1(this); var target = state.target; var kind = state.kind; var index = state.index++; if (!target || index >= target.length) { state.target = undefined; return { value: undefined, done: true }; } if (kind == 'keys') return { value: index, done: false }; if (kind == 'values') return { value: target[index], done: false }; return { value: [index, target[index]], done: false }; }, 'values'); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); var nativeJoin = [].join; var ES3_STRINGS = indexedObject != Object; var SLOPPY_METHOD$1 = sloppyArrayMethod('join', ','); // `Array.prototype.join` method // https://tc39.github.io/ecma262/#sec-array.prototype.join _export({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD$1 }, { join: function join(separator) { return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); } }); var SPECIES$2 = wellKnownSymbol('species'); var nativeSlice = [].slice; var max$1 = Math.max; // `Array.prototype.slice` method // https://tc39.github.io/ecma262/#sec-array.prototype.slice // fallback for not array-like ES3 strings and DOM objects _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, { slice: function slice(start, end) { var O = toIndexedObject(this); var length = toLength(O.length); var k = toAbsoluteIndex(start, length); var fin = toAbsoluteIndex(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible var Constructor, result, n; if (isArray(O)) { Constructor = O.constructor; // cross-realm fallback if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { Constructor = undefined; } else if (isObject(Constructor)) { Constructor = Constructor[SPECIES$2]; if (Constructor === null) Constructor = undefined; } if (Constructor === Array || Constructor === undefined) { return nativeSlice.call(O, k, fin); } } result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0)); for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); result.length = n; return result; } }); var nativeSort = [].sort; var test = [1, 2, 3]; // IE8- var FAILS_ON_UNDEFINED = fails(function () { test.sort(undefined); }); // V8 bug var FAILS_ON_NULL = fails(function () { test.sort(null); }); // Old WebKit var SLOPPY_METHOD$2 = sloppyArrayMethod('sort'); var FORCED$1 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD$2; // `Array.prototype.sort` method // https://tc39.github.io/ecma262/#sec-array.prototype.sort _export({ target: 'Array', proto: true, forced: FORCED$1 }, { sort: function sort(comparefn) { return comparefn === undefined ? nativeSort.call(toObject(this)) : nativeSort.call(toObject(this), aFunction$1(comparefn)); } }); var max$2 = Math.max; var min$2 = Math.min; var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method // https://tc39.github.io/ecma262/#sec-array.prototype.splice // with adding support of @@species _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, { splice: function splice(start, deleteCount /* , ...items */) { var O = toObject(this); var len = toLength(O.length); var actualStart = toAbsoluteIndex(start, len); var argumentsLength = arguments.length; var insertCount, actualDeleteCount, A, k, from, to; if (argumentsLength === 0) { insertCount = actualDeleteCount = 0; } else if (argumentsLength === 1) { insertCount = 0; actualDeleteCount = len - actualStart; } else { insertCount = argumentsLength - 2; actualDeleteCount = min$2(max$2(toInteger(deleteCount), 0), len - actualStart); } if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) { throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); } A = arraySpeciesCreate(O, actualDeleteCount); for (k = 0; k < actualDeleteCount; k++) { from = actualStart + k; if (from in O) createProperty(A, k, O[from]); } A.length = actualDeleteCount; if (insertCount < actualDeleteCount) { for (k = actualStart; k < len - actualDeleteCount; k++) { from = k + actualDeleteCount; to = k + insertCount; if (from in O) O[to] = O[from]; else delete O[to]; } for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; } else if (insertCount > actualDeleteCount) { for (k = len - actualDeleteCount; k > actualStart; k--) { from = k + actualDeleteCount - 1; to = k + insertCount - 1; if (from in O) O[to] = O[from]; else delete O[to]; } } for (k = 0; k < insertCount; k++) { O[k + actualStart] = arguments[k + 2]; } O.length = len - actualDeleteCount + insertCount; return A; } }); // makes subclassing work correct for wrapped built-ins var inheritIfRequired = function ($this, dummy, Wrapper) { var NewTarget, NewTargetPrototype; if ( // it can work only with native `setPrototypeOf` objectSetPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype ) objectSetPrototypeOf($this, NewTargetPrototype); return $this; }; // a string of all valid unicode whitespaces // eslint-disable-next-line max-len var whitespaces = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; var whitespace = '[' + whitespaces + ']'; var ltrim = RegExp('^' + whitespace + whitespace + '*'); var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation var createMethod$2 = function (TYPE) { return function ($this) { var string = String(requireObjectCoercible($this)); if (TYPE & 1) string = string.replace(ltrim, ''); if (TYPE & 2) string = string.replace(rtrim, ''); return string; }; }; var stringTrim = { // `String.prototype.{ trimLeft, trimStart }` methods // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart start: createMethod$2(1), // `String.prototype.{ trimRight, trimEnd }` methods // https://tc39.github.io/ecma262/#sec-string.prototype.trimend end: createMethod$2(2), // `String.prototype.trim` method // https://tc39.github.io/ecma262/#sec-string.prototype.trim trim: createMethod$2(3) }; var getOwnPropertyNames = objectGetOwnPropertyNames.f; var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; var defineProperty$3 = objectDefineProperty.f; var trim = stringTrim.trim; var NUMBER = 'Number'; var NativeNumber = global_1[NUMBER]; var NumberPrototype = NativeNumber.prototype; // Opera ~12 has broken Object#toString var BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER; // `ToNumber` abstract operation // https://tc39.github.io/ecma262/#sec-tonumber var toNumber = function (argument) { var it = toPrimitive(argument, false); var first, third, radix, maxCode, digits, length, index, code; if (typeof it == 'string' && it.length > 2) { it = trim(it); first = it.charCodeAt(0); if (first === 43 || first === 45) { third = it.charCodeAt(2); if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix } else if (first === 48) { switch (it.charCodeAt(1)) { case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i default: return +it; } digits = it.slice(2); length = digits.length; for (index = 0; index < length; index++) { code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol // but ToNumber should return NaN if a string contains unavailable symbols if (code < 48 || code > maxCode) return NaN; } return parseInt(digits, radix); } } return +it; }; // `Number` constructor // https://tc39.github.io/ecma262/#sec-number-constructor if (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { var NumberWrapper = function Number(value) { var it = arguments.length < 1 ? 0 : value; var dummy = this; return dummy instanceof NumberWrapper // check on 1..constructor(foo) case && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classofRaw(dummy) != NUMBER) ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); }; for (var keys$1 = descriptors ? getOwnPropertyNames(NativeNumber) : ( // ES3: 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before): 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' ).split(','), j = 0, key; keys$1.length > j; j++) { if (has(NativeNumber, key = keys$1[j]) && !has(NumberWrapper, key)) { defineProperty$3(NumberWrapper, key, getOwnPropertyDescriptor$2(NativeNumber, key)); } } NumberWrapper.prototype = NumberPrototype; NumberPrototype.constructor = NumberWrapper; redefine(global_1, NUMBER, NumberWrapper); } var nativeAssign = Object.assign; // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign // should work with symbols and should have deterministic property order (V8 bug) var objectAssign = !nativeAssign || fails(function () { var A = {}; var B = {}; // eslint-disable-next-line no-undef var symbol = Symbol(); var alphabet = 'abcdefghijklmnopqrst'; A[symbol] = 7; alphabet.split('').forEach(function (chr) { B[chr] = chr; }); return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; }) ? function assign(target, source) { // eslint-disable-line no-unused-vars var T = toObject(target); var argumentsLength = arguments.length; var index = 1; var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; var propertyIsEnumerable = objectPropertyIsEnumerable.f; while (argumentsLength > index) { var S = indexedObject(arguments[index++]); var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); var length = keys.length; var j = 0; var key; while (length > j) { key = keys[j++]; if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key]; } } return T; } : nativeAssign; // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { assign: objectAssign }); var propertyIsEnumerable = objectPropertyIsEnumerable.f; // `Object.{ entries, values }` methods implementation var createMethod$3 = function (TO_ENTRIES) { return function (it) { var O = toIndexedObject(it); var keys = objectKeys(O); var length = keys.length; var i = 0; var result = []; var key; while (length > i) { key = keys[i++]; if (!descriptors || propertyIsEnumerable.call(O, key)) { result.push(TO_ENTRIES ? [key, O[key]] : O[key]); } } return result; }; }; var objectToArray = { // `Object.entries` method // https://tc39.github.io/ecma262/#sec-object.entries entries: createMethod$3(true), // `Object.values` method // https://tc39.github.io/ecma262/#sec-object.values values: createMethod$3(false) }; var $entries = objectToArray.entries; // `Object.entries` method // https://tc39.github.io/ecma262/#sec-object.entries _export({ target: 'Object', stat: true }, { entries: function entries(O) { return $entries(O); } }); var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (error) { /* empty */ } }; // getting tag from ES6+ `Object.prototype.toString` var classof = function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; }; var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); var test$1 = {}; test$1[TO_STRING_TAG$2] = 'z'; // `Object.prototype.toString` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.tostring var objectToString = String(test$1) !== '[object z]' ? function toString() { return '[object ' + classof(this) + ']'; } : test$1.toString; var ObjectPrototype$2 = Object.prototype; // `Object.prototype.toString` method // https://tc39.github.io/ecma262/#sec-object.prototype.tostring if (objectToString !== ObjectPrototype$2.toString) { redefine(ObjectPrototype$2, 'toString', objectToString, { unsafe: true }); } var trim$1 = stringTrim.trim; var nativeParseFloat = global_1.parseFloat; var FORCED$2 = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity; // `parseFloat` method // https://tc39.github.io/ecma262/#sec-parsefloat-string var _parseFloat = FORCED$2 ? function parseFloat(string) { var trimmedString = trim$1(String(string)); var result = nativeParseFloat(trimmedString); return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result; } : nativeParseFloat; // `parseFloat` method // https://tc39.github.io/ecma262/#sec-parsefloat-string _export({ global: true, forced: parseFloat != _parseFloat }, { parseFloat: _parseFloat }); var trim$2 = stringTrim.trim; var nativeParseInt = global_1.parseInt; var hex = /^[+-]?0[Xx]/; var FORCED$3 = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22; // `parseInt` method // https://tc39.github.io/ecma262/#sec-parseint-string-radix var _parseInt = FORCED$3 ? function parseInt(string, radix) { var S = trim$2(String(string)); return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10)); } : nativeParseInt; // `parseInt` method // https://tc39.github.io/ecma262/#sec-parseint-string-radix _export({ global: true, forced: parseInt != _parseInt }, { parseInt: _parseInt }); // `RegExp.prototype.flags` getter implementation // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags var regexpFlags = function () { var that = anObject(this); var result = ''; if (that.global) result += 'g'; if (that.ignoreCase) result += 'i'; if (that.multiline) result += 'm'; if (that.dotAll) result += 's'; if (that.unicode) result += 'u'; if (that.sticky) result += 'y'; return result; }; var TO_STRING = 'toString'; var RegExpPrototype = RegExp.prototype; var nativeToString = RegExpPrototype[TO_STRING]; var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); // FF44- RegExp#toString has a wrong name var INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring if (NOT_GENERIC || INCORRECT_NAME) { redefine(RegExp.prototype, TO_STRING, function toString() { var R = anObject(this); var p = String(R.source); var rf = R.flags; var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf); return '/' + p + '/' + f; }, { unsafe: true }); } var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation // https://tc39.github.io/ecma262/#sec-isregexp var isRegexp = function (it) { var isRegExp; return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp'); }; var notARegexp = function (it) { if (isRegexp(it)) { throw TypeError("The method doesn't accept regular expressions"); } return it; }; var MATCH$1 = wellKnownSymbol('match'); var correctIsRegexpLogic = function (METHOD_NAME) { var regexp = /./; try { '/./'[METHOD_NAME](regexp); } catch (e) { try { regexp[MATCH$1] = false; return '/./'[METHOD_NAME](regexp); } catch (f) { /* empty */ } } return false; }; // `String.prototype.includes` method // https://tc39.github.io/ecma262/#sec-string.prototype.includes _export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, { includes: function includes(searchString /* , position = 0 */) { return !!~String(requireObjectCoercible(this)) .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined); } }); // `String.prototype.{ codePointAt, at }` methods implementation var createMethod$4 = function (CONVERT_TO_STRING) { return function ($this, pos) { var S = String(requireObjectCoercible($this)); var position = toInteger(pos); var size = S.length; var first, second; if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; first = S.charCodeAt(position); return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; }; }; var stringMultibyte = { // `String.prototype.codePointAt` method // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat codeAt: createMethod$4(false), // `String.prototype.at` method // https://github.com/mathiasbynens/String.prototype.at charAt: createMethod$4(true) }; var charAt = stringMultibyte.charAt; var STRING_ITERATOR = 'String Iterator'; var setInternalState$2 = internalState.set; var getInternalState$2 = internalState.getterFor(STRING_ITERATOR); // `String.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator defineIterator(String, 'String', function (iterated) { setInternalState$2(this, { type: STRING_ITERATOR, string: String(iterated), index: 0 }); // `%StringIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next }, function next() { var state = getInternalState$2(this); var string = state.string; var index = state.index; var point; if (index >= string.length) return { value: undefined, done: true }; point = charAt(string, index); state.index += point.length; return { value: point, done: false }; }); var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, // which loads this file before patching the method. var nativeReplace = String.prototype.replace; var patchedExec = nativeExec; var UPDATES_LAST_INDEX_WRONG = (function () { var re1 = /a/; var re2 = /b*/g; nativeExec.call(re1, 'a'); nativeExec.call(re2, 'a'); return re1.lastIndex !== 0 || re2.lastIndex !== 0; })(); // nonparticipating capturing group, copied from es5-shim's String#split patch. var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; if (PATCH) { patchedExec = function exec(str) { var re = this; var lastIndex, reCopy, match, i; if (NPCG_INCLUDED) { reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); } if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; match = nativeExec.call(re, str); if (UPDATES_LAST_INDEX_WRONG && match) { re.lastIndex = re.global ? match.index + match[0].length : lastIndex; } if (NPCG_INCLUDED && match && match.length > 1) { // Fix browsers whose `exec` methods don't consistently return `undefined` // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ nativeReplace.call(match[0], reCopy, function () { for (i = 1; i < arguments.length - 2; i++) { if (arguments[i] === undefined) match[i] = undefined; } }); } return match; }; } var regexpExec = patchedExec; var SPECIES$3 = wellKnownSymbol('species'); var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { // #replace needs built-in support for named groups. // #match works fine because it just return the exec results, even if it has // a "grops" property. var re = /./; re.exec = function () { var result = []; result.groups = { a: '7' }; return result; }; return ''.replace(re, '$') !== '7'; }); // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec // Weex JS has frozen built-in prototypes, so use try / catch wrapper var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { var re = /(?:)/; var originalExec = re.exec; re.exec = function () { return originalExec.apply(this, arguments); }; var result = 'ab'.split(re); return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; }); var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) { var SYMBOL = wellKnownSymbol(KEY); var DELEGATES_TO_SYMBOL = !fails(function () { // String methods call symbol-named RegEp methods var O = {}; O[SYMBOL] = function () { return 7; }; return ''[KEY](O) != 7; }); var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { // Symbol-named RegExp methods call .exec var execCalled = false; var re = /a/; re.exec = function () { execCalled = true; return null; }; if (KEY === 'split') { // RegExp[@@split] doesn't call the regex's exec method, but first creates // a new one. We need to return the patched regex when creating the new one. re.constructor = {}; re.constructor[SPECIES$3] = function () { return re; }; } re[SYMBOL](''); return !execCalled; }); if ( !DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) ) { var nativeRegExpMethod = /./[SYMBOL]; var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { if (regexp.exec === regexpExec) { if (DELEGATES_TO_SYMBOL && !forceStringMethod) { // The native String method already delegates to @@method (this // polyfilled function), leasing to infinite recursion. // We avoid it by directly calling the native @@method method. return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; } return { done: true, value: nativeMethod.call(str, regexp, arg2) }; } return { done: false }; }); var stringMethod = methods[0]; var regexMethod = methods[1]; redefine(String.prototype, KEY, stringMethod); redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) // 21.2.5.11 RegExp.prototype[@@split](string, limit) ? function (string, arg) { return regexMethod.call(string, this, arg); } // 21.2.5.6 RegExp.prototype[@@match](string) // 21.2.5.9 RegExp.prototype[@@search](string) : function (string) { return regexMethod.call(string, this); } ); if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true); } }; var charAt$1 = stringMultibyte.charAt; // `AdvanceStringIndex` abstract operation // https://tc39.github.io/ecma262/#sec-advancestringindex var advanceStringIndex = function (S, index, unicode) { return index + (unicode ? charAt$1(S, index).length : 1); }; // `RegExpExec` abstract operation // https://tc39.github.io/ecma262/#sec-regexpexec var regexpExecAbstract = function (R, S) { var exec = R.exec; if (typeof exec === 'function') { var result = exec.call(R, S); if (typeof result !== 'object') { throw TypeError('RegExp exec method returned something other than an Object or null'); } return result; } if (classofRaw(R) !== 'RegExp') { throw TypeError('RegExp#exec called on incompatible receiver'); } return regexpExec.call(R, S); }; var max$3 = Math.max; var min$3 = Math.min; var floor$1 = Math.floor; var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; var maybeToString = function (it) { return it === undefined ? it : String(it); }; // @@replace logic fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) { return [ // `String.prototype.replace` method // https://tc39.github.io/ecma262/#sec-string.prototype.replace function replace(searchValue, replaceValue) { var O = requireObjectCoercible(this); var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue); }, // `RegExp.prototype[@@replace]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace function (regexp, replaceValue) { var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var functionalReplace = typeof replaceValue === 'function'; if (!functionalReplace) replaceValue = String(replaceValue); var global = rx.global; if (global) { var fullUnicode = rx.unicode; rx.lastIndex = 0; } var results = []; while (true) { var result = regexpExecAbstract(rx, S); if (result === null) break; results.push(result); if (!global) break; var matchStr = String(result[0]); if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); } var accumulatedResult = ''; var nextSourcePosition = 0; for (var i = 0; i < results.length; i++) { result = results[i]; var matched = String(result[0]); var position = max$3(min$3(toInteger(result.index), S.length), 0); var captures = []; // NOTE: This is equivalent to // captures = result.slice(1).map(maybeToString) // but for some reason `nativeSlice.call(result, 1, result.length)` (called in // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); var namedCaptures = result.groups; if (functionalReplace) { var replacerArgs = [matched].concat(captures, position, S); if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); var replacement = String(replaceValue.apply(undefined, replacerArgs)); } else { replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); } if (position >= nextSourcePosition) { accumulatedResult += S.slice(nextSourcePosition, position) + replacement; nextSourcePosition = position + matched.length; } } return accumulatedResult + S.slice(nextSourcePosition); } ]; // https://tc39.github.io/ecma262/#sec-getsubstitution function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { var tailPos = position + matched.length; var m = captures.length; var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; if (namedCaptures !== undefined) { namedCaptures = toObject(namedCaptures); symbols = SUBSTITUTION_SYMBOLS; } return nativeReplace.call(replacement, symbols, function (match, ch) { var capture; switch (ch.charAt(0)) { case '$': return '$'; case '&': return matched; case '`': return str.slice(0, position); case "'": return str.slice(tailPos); case '<': capture = namedCaptures[ch.slice(1, -1)]; break; default: // \d\d? var n = +ch; if (n === 0) return match; if (n > m) { var f = floor$1(n / 10); if (f === 0) return match; if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); return match; } capture = captures[n - 1]; } return capture === undefined ? '' : capture; }); } }); // `SameValue` abstract operation // https://tc39.github.io/ecma262/#sec-samevalue var sameValue = Object.is || function is(x, y) { // eslint-disable-next-line no-self-compare return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; }; // @@search logic fixRegexpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { return [ // `String.prototype.search` method // https://tc39.github.io/ecma262/#sec-string.prototype.search function search(regexp) { var O = requireObjectCoercible(this); var searcher = regexp == undefined ? undefined : regexp[SEARCH]; return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); }, // `RegExp.prototype[@@search]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search function (regexp) { var res = maybeCallNative(nativeSearch, regexp, this); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var previousLastIndex = rx.lastIndex; if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; var result = regexpExecAbstract(rx, S); if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; return result === null ? -1 : result.index; } ]; }); var SPECIES$4 = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation // https://tc39.github.io/ecma262/#sec-speciesconstructor var speciesConstructor = function (O, defaultConstructor) { var C = anObject(O).constructor; var S; return C === undefined || (S = anObject(C)[SPECIES$4]) == undefined ? defaultConstructor : aFunction$1(S); }; var arrayPush = [].push; var min$4 = Math.min; var MAX_UINT32 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); }); // @@split logic fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { var internalSplit; if ( 'abbc'.split(/(b)*/)[1] == 'c' || 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || '.'.split(/()()/).length > 1 || ''.split(/.?/).length ) { // based on es5-shim implementation, need to rework it internalSplit = function (separator, limit) { var string = String(requireObjectCoercible(this)); var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; if (lim === 0) return []; if (separator === undefined) return [string]; // If `separator` is not a regex, use native split if (!isRegexp(separator)) { return nativeSplit.call(string, separator, lim); } var output = []; var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : ''); var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy var separatorCopy = new RegExp(separator.source, flags + 'g'); var match, lastIndex, lastLength; while (match = regexpExec.call(separatorCopy, string)) { lastIndex = separatorCopy.lastIndex; if (lastIndex > lastLastIndex) { output.push(string.slice(lastLastIndex, match.index)); if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); lastLength = match[0].length; lastLastIndex = lastIndex; if (output.length >= lim) break; } if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop } if (lastLastIndex === string.length) { if (lastLength || !separatorCopy.test('')) output.push(''); } else output.push(string.slice(lastLastIndex)); return output.length > lim ? output.slice(0, lim) : output; }; // Chakra, V8 } else if ('0'.split(undefined, 0).length) { internalSplit = function (separator, limit) { return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); }; } else internalSplit = nativeSplit; return [ // `String.prototype.split` method // https://tc39.github.io/ecma262/#sec-string.prototype.split function split(separator, limit) { var O = requireObjectCoercible(this); var splitter = separator == undefined ? undefined : separator[SPLIT]; return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit); }, // `RegExp.prototype[@@split]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split // // NOTE: This cannot be properly polyfilled in engines that don't support // the 'y' flag. function (regexp, limit) { var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var C = speciesConstructor(rx, RegExp); var unicodeMatching = rx.unicode; var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to // simulate the 'y' flag. var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; if (lim === 0) return []; if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : []; var p = 0; var q = 0; var A = []; while (q < S.length) { splitter.lastIndex = SUPPORTS_Y ? q : 0; var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q)); var e; if ( z === null || (e = min$4(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p ) { q = advanceStringIndex(S, q, unicodeMatching); } else { A.push(S.slice(p, q)); if (A.length === lim) return A; for (var i = 1; i <= z.length - 1; i++) { A.push(z[i]); if (A.length === lim) return A; } q = p = e; } } A.push(S.slice(p)); return A; } ]; }, !SUPPORTS_Y); var non = '\u200B\u0085\u180E'; // check that a method works with the correct list // of whitespaces and has a correct name var forcedStringTrimMethod = function (METHOD_NAME) { return fails(function () { return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; }); }; var $trim = stringTrim.trim; // `String.prototype.trim` method // https://tc39.github.io/ecma262/#sec-string.prototype.trim _export({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { trim: function trim() { return $trim(this); } }); // iterable DOM collections // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods var domIterables = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }; var $forEach$1 = arrayIteration.forEach; // `Array.prototype.forEach` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.foreach var arrayForEach = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) { return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } : [].forEach; for (var COLLECTION_NAME in domIterables) { var Collection = global_1[COLLECTION_NAME]; var CollectionPrototype = Collection && Collection.prototype; // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try { hide(CollectionPrototype, 'forEach', arrayForEach); } catch (error) { CollectionPrototype.forEach = arrayForEach; } } var ITERATOR$2 = wellKnownSymbol('iterator'); var TO_STRING_TAG$3 = wellKnownSymbol('toStringTag'); var ArrayValues = es_array_iterator.values; for (var COLLECTION_NAME$1 in domIterables) { var Collection$1 = global_1[COLLECTION_NAME$1]; var CollectionPrototype$1 = Collection$1 && Collection$1.prototype; if (CollectionPrototype$1) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$1[ITERATOR$2] !== ArrayValues) try { hide(CollectionPrototype$1, ITERATOR$2, ArrayValues); } catch (error) { CollectionPrototype$1[ITERATOR$2] = ArrayValues; } if (!CollectionPrototype$1[TO_STRING_TAG$3]) hide(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1); if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try { hide(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]); } catch (error) { CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME]; } } } } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } var VERSION = '1.15.5'; var bootstrapVersion = 4; try { var rawVersion = $.fn.dropdown.Constructor.VERSION; // Only try to parse VERSION if it is defined. // It is undefined in older versions of Bootstrap (tested with 3.1.1). if (rawVersion !== undefined) { bootstrapVersion = parseInt(rawVersion, 10); } } catch (e) {// ignore } var CONSTANTS = { 3: { iconsPrefix: 'glyphicon', icons: { paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down', paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up', refresh: 'glyphicon-refresh icon-refresh', toggleOff: 'glyphicon-list-alt icon-list-alt', toggleOn: 'glyphicon-list-alt icon-list-alt', columns: 'glyphicon-th icon-th', detailOpen: 'glyphicon-plus icon-plus', detailClose: 'glyphicon-minus icon-minus', fullscreen: 'glyphicon-fullscreen', search: 'glyphicon-search', clearSearch: 'glyphicon-trash' }, classes: { buttonsPrefix: 'btn', buttons: 'default', buttonsGroup: 'btn-group', buttonsDropdown: 'btn-group', pull: 'pull', inputGroup: 'input-group', inputPrefix: 'input-', input: 'form-control', paginationDropdown: 'btn-group dropdown', dropup: 'dropup', dropdownActive: 'active', paginationActive: 'active', buttonActive: 'active' }, html: { toolbarDropdown: [''], toolbarDropdownItem: '
  • ', toolbarDropdownSeparator: '
  • ', pageDropdown: [''], pageDropdownItem: '
    ', dropdownCaret: '', pagination: [''], paginationItem: '
  • %s
  • ', icon: '', inputGroup: '
    %s%s
    ', searchInput: '', searchButton: '', searchClearButton: '' } }, 4: { iconsPrefix: 'fa', icons: { paginationSwitchDown: 'fa-caret-square-down', paginationSwitchUp: 'fa-caret-square-up', refresh: 'fa-sync', toggleOff: 'fa-toggle-off', toggleOn: 'fa-toggle-on', columns: 'fa-th-list', detailOpen: 'fa-plus', detailClose: 'fa-minus', fullscreen: 'fa-arrows-alt', search: 'fa-search', clearSearch: 'fa-trash' }, classes: { buttonsPrefix: 'btn', buttons: 'secondary', buttonsGroup: 'btn-group', buttonsDropdown: 'btn-group', pull: 'float', inputGroup: 'btn-group', inputPrefix: 'form-control-', input: 'form-control', paginationDropdown: 'btn-group dropdown', dropup: 'dropup', dropdownActive: 'active', paginationActive: 'active', buttonActive: 'active' }, html: { toolbarDropdown: [''], toolbarDropdownItem: '', pageDropdown: [''], pageDropdownItem: '%s', toolbarDropdownSeparator: '', dropdownCaret: '', pagination: [''], paginationItem: '
  • %s
  • ', icon: '', inputGroup: '
    %s
    %s
    ', searchInput: '', searchButton: '', searchClearButton: '' } } }[bootstrapVersion]; var DEFAULTS = { height: undefined, classes: 'table table-bordered table-hover', theadClasses: '', rowStyle: function rowStyle(row, index) { return {}; }, rowAttributes: function rowAttributes(row, index) { return {}; }, undefinedText: '-', locale: undefined, virtualScroll: false, virtualScrollItemHeight: undefined, sortable: true, sortClass: undefined, silentSort: true, sortName: undefined, sortOrder: 'asc', sortStable: false, rememberOrder: false, customSort: undefined, columns: [[]], data: [], url: undefined, method: 'get', cache: true, contentType: 'application/json', dataType: 'json', ajax: undefined, ajaxOptions: {}, queryParams: function queryParams(params) { return params; }, queryParamsType: 'limit', // 'limit', undefined responseHandler: function responseHandler(res) { return res; }, totalField: 'total', totalNotFilteredField: 'totalNotFiltered', dataField: 'rows', pagination: false, onlyInfoPagination: false, showExtendedPagination: false, paginationLoop: true, sidePagination: 'client', // client or server totalRows: 0, totalNotFiltered: 0, pageNumber: 1, pageSize: 10, pageList: [10, 25, 50, 100], paginationHAlign: 'right', // right, left paginationVAlign: 'bottom', // bottom, top, both paginationDetailHAlign: 'left', // right, left paginationPreText: '‹', paginationNextText: '›', paginationSuccessivelySize: 5, // Maximum successively number of pages in a row paginationPagesBySide: 1, // Number of pages on each side (right, left) of the current page. paginationUseIntermediate: false, // Calculate intermediate pages for quick access search: false, searchOnEnterKey: false, strictSearch: false, visibleSearch: false, showButtonIcons: true, showButtonText: false, showSearchButton: false, showSearchClearButton: false, trimOnSearch: true, searchAlign: 'right', searchTimeOut: 500, searchText: '', customSearch: undefined, showHeader: true, showFooter: false, footerStyle: function footerStyle(row, index) { return {}; }, showColumns: false, showColumnsToggleAll: false, minimumCountColumns: 1, showPaginationSwitch: false, showRefresh: false, showToggle: false, showFullscreen: false, smartDisplay: true, escape: false, filterOptions: { filterAlgorithm: 'and' }, idField: undefined, selectItemName: 'btSelectItem', clickToSelect: false, ignoreClickToSelectOn: function ignoreClickToSelectOn(_ref) { var tagName = _ref.tagName; return ['A', 'BUTTON'].includes(tagName); }, singleSelect: false, checkboxHeader: true, maintainMetaData: false, multipleSelectRow: false, uniqueId: undefined, cardView: false, detailView: false, detailViewIcon: true, detailViewByClick: false, detailFormatter: function detailFormatter(index, row) { return ''; }, detailFilter: function detailFilter(index, row) { return true; }, toolbar: undefined, toolbarAlign: 'left', buttonsToolbar: undefined, buttonsAlign: 'right', buttonsPrefix: CONSTANTS.classes.buttonsPrefix, buttonsClass: CONSTANTS.classes.buttons, icons: CONSTANTS.icons, html: CONSTANTS.html, iconSize: undefined, iconsPrefix: CONSTANTS.iconsPrefix, // glyphicon or fa(font-awesome) onAll: function onAll(name, args) { return false; }, onClickCell: function onClickCell(field, value, row, $element) { return false; }, onDblClickCell: function onDblClickCell(field, value, row, $element) { return false; }, onClickRow: function onClickRow(item, $element) { return false; }, onDblClickRow: function onDblClickRow(item, $element) { return false; }, onSort: function onSort(name, order) { return false; }, onCheck: function onCheck(row) { return false; }, onUncheck: function onUncheck(row) { return false; }, onCheckAll: function onCheckAll(rows) { return false; }, onUncheckAll: function onUncheckAll(rows) { return false; }, onCheckSome: function onCheckSome(rows) { return false; }, onUncheckSome: function onUncheckSome(rows) { return false; }, onLoadSuccess: function onLoadSuccess(data) { return false; }, onLoadError: function onLoadError(status) { return false; }, onColumnSwitch: function onColumnSwitch(field, checked) { return false; }, onPageChange: function onPageChange(number, size) { return false; }, onSearch: function onSearch(text) { return false; }, onToggle: function onToggle(cardView) { return false; }, onPreBody: function onPreBody(data) { return false; }, onPostBody: function onPostBody() { return false; }, onPostHeader: function onPostHeader() { return false; }, onPostFooter: function onPostFooter() { return false; }, onExpandRow: function onExpandRow(index, row, $detail) { return false; }, onCollapseRow: function onCollapseRow(index, row) { return false; }, onRefreshOptions: function onRefreshOptions(options) { return false; }, onRefresh: function onRefresh(params) { return false; }, onResetView: function onResetView() { return false; }, onScrollBody: function onScrollBody() { return false; } }; var EN = { formatLoadingMessage: function formatLoadingMessage() { return 'Loading, please wait'; }, formatRecordsPerPage: function formatRecordsPerPage(pageNumber) { return "".concat(pageNumber, " rows per page"); }, formatShowingRows: function formatShowingRows(pageFrom, pageTo, totalRows, totalNotFiltered) { if (totalNotFiltered !== undefined && totalNotFiltered > 0 && totalNotFiltered > totalRows) { return "Showing ".concat(pageFrom, " to ").concat(pageTo, " of ").concat(totalRows, " rows (filtered from ").concat(totalNotFiltered, " total rows)"); } return "Showing ".concat(pageFrom, " to ").concat(pageTo, " of ").concat(totalRows, " rows"); }, formatSRPaginationPreText: function formatSRPaginationPreText() { return 'previous page'; }, formatSRPaginationPageText: function formatSRPaginationPageText(page) { return "to page ".concat(page); }, formatSRPaginationNextText: function formatSRPaginationNextText() { return 'next page'; }, formatDetailPagination: function formatDetailPagination(totalRows) { return "Showing ".concat(totalRows, " rows"); }, formatSearch: function formatSearch() { return 'Search'; }, formatClearSearch: function formatClearSearch() { return 'Clear Search'; }, formatNoMatches: function formatNoMatches() { return 'No matching records found'; }, formatPaginationSwitch: function formatPaginationSwitch() { return 'Hide/Show pagination'; }, formatPaginationSwitchDown: function formatPaginationSwitchDown() { return 'Show pagination'; }, formatPaginationSwitchUp: function formatPaginationSwitchUp() { return 'Hide pagination'; }, formatRefresh: function formatRefresh() { return 'Refresh'; }, formatToggle: function formatToggle() { return 'Toggle'; }, formatToggleOn: function formatToggleOn() { return 'Show card view'; }, formatToggleOff: function formatToggleOff() { return 'Hide card view'; }, formatColumns: function formatColumns() { return 'Columns'; }, formatColumnsToggleAll: function formatColumnsToggleAll() { return 'Toggle all'; }, formatFullscreen: function formatFullscreen() { return 'Fullscreen'; }, formatAllRows: function formatAllRows() { return 'All'; } }; var COLUMN_DEFAULTS = { field: undefined, title: undefined, titleTooltip: undefined, 'class': undefined, width: undefined, widthUnit: 'px', rowspan: undefined, colspan: undefined, align: undefined, // left, right, center halign: undefined, // left, right, center falign: undefined, // left, right, center valign: undefined, // top, middle, bottom cellStyle: undefined, radio: false, checkbox: false, checkboxEnabled: true, clickToSelect: true, showSelectTitle: false, sortable: false, sortName: undefined, order: 'asc', // asc, desc sorter: undefined, visible: true, switchable: true, cardVisible: true, searchable: true, formatter: undefined, footerFormatter: undefined, detailFormatter: undefined, searchFormatter: true, escape: false, events: undefined }; var METHODS = ['getOptions', 'refreshOptions', 'getData', 'getSelections', 'getAllSelections', 'load', 'append', 'prepend', 'remove', 'removeAll', 'insertRow', 'updateRow', 'getRowByUniqueId', 'updateByUniqueId', 'removeByUniqueId', 'updateCell', 'updateCellByUniqueId', 'showRow', 'hideRow', 'getHiddenRows', 'showColumn', 'hideColumn', 'getVisibleColumns', 'getHiddenColumns', 'showAllColumns', 'hideAllColumns', 'mergeCells', 'checkAll', 'uncheckAll', 'checkInvert', 'check', 'uncheck', 'checkBy', 'uncheckBy', 'refresh', 'destroy', 'resetView', 'resetWidth', 'showLoading', 'hideLoading', 'togglePagination', 'toggleFullscreen', 'toggleView', 'resetSearch', 'filterBy', 'scrollTo', 'getScrollPosition', 'selectPage', 'prevPage', 'nextPage', 'toggleDetailView', 'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows', 'updateColumnTitle', 'updateFormatText']; var EVENTS = { 'all.bs.table': 'onAll', 'click-row.bs.table': 'onClickRow', 'dbl-click-row.bs.table': 'onDblClickRow', 'click-cell.bs.table': 'onClickCell', 'dbl-click-cell.bs.table': 'onDblClickCell', 'sort.bs.table': 'onSort', 'check.bs.table': 'onCheck', 'uncheck.bs.table': 'onUncheck', 'check-all.bs.table': 'onCheckAll', 'uncheck-all.bs.table': 'onUncheckAll', 'check-some.bs.table': 'onCheckSome', 'uncheck-some.bs.table': 'onUncheckSome', 'load-success.bs.table': 'onLoadSuccess', 'load-error.bs.table': 'onLoadError', 'column-switch.bs.table': 'onColumnSwitch', 'page-change.bs.table': 'onPageChange', 'search.bs.table': 'onSearch', 'toggle.bs.table': 'onToggle', 'pre-body.bs.table': 'onPreBody', 'post-body.bs.table': 'onPostBody', 'post-header.bs.table': 'onPostHeader', 'post-footer.bs.table': 'onPostFooter', 'expand-row.bs.table': 'onExpandRow', 'collapse-row.bs.table': 'onCollapseRow', 'refresh-options.bs.table': 'onRefreshOptions', 'reset-view.bs.table': 'onResetView', 'refresh.bs.table': 'onRefresh', 'scroll-body.bs.table': 'onScrollBody' }; Object.assign(DEFAULTS, EN); var Constants = { VERSION: VERSION, THEME: "bootstrap".concat(bootstrapVersion), CONSTANTS: CONSTANTS, DEFAULTS: DEFAULTS, COLUMN_DEFAULTS: COLUMN_DEFAULTS, METHODS: METHODS, EVENTS: EVENTS, LOCALES: { en: EN, 'en-US': EN } }; // `FlattenIntoArray` abstract operation // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { var targetIndex = start; var sourceIndex = 0; var mapFn = mapper ? bindContext(mapper, thisArg, 3) : false; var element; while (sourceIndex < sourceLen) { if (sourceIndex in source) { element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; if (depth > 0 && isArray(element)) { targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; } else { if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length'); target[targetIndex] = element; } targetIndex++; } sourceIndex++; } return targetIndex; }; var flattenIntoArray_1 = flattenIntoArray; // `Array.prototype.flat` method // https://github.com/tc39/proposal-flatMap _export({ target: 'Array', proto: true }, { flat: function flat(/* depthArg = 1 */) { var depthArg = arguments.length ? arguments[0] : undefined; var O = toObject(this); var sourceLen = toLength(O.length); var A = arraySpeciesCreate(O, 0); A.length = flattenIntoArray_1(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg)); return A; } }); // this method was added to unscopables after implementation // in popular engines, so it's moved to a separate module addToUnscopables('flat'); var FAILS_ON_PRIMITIVES = fails(function () { objectKeys(1); }); // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { keys: function keys(it) { return objectKeys(toObject(it)); } }); var Utils = { // it only does '%s', and return '' when arguments are undefined sprintf: function sprintf(_str) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } var flag = true; var i = 0; var str = _str.replace(/%s/g, function () { var arg = args[i++]; if (typeof arg === 'undefined') { flag = false; return ''; } return arg; }); return flag ? str : ''; }, isEmptyObject: function isEmptyObject() { var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.entries(obj).length === 0 && obj.constructor === Object; }, isNumeric: function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n); }, getFieldTitle: function getFieldTitle(list, value) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var item = _step.value; if (item.field === value) { return item.title; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return ''; }, setFieldIndex: function setFieldIndex(columns) { var totalCol = 0; var flag = []; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = columns[0][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var column = _step2.value; totalCol += column.colspan || 1; } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return != null) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } for (var i = 0; i < columns.length; i++) { flag[i] = []; for (var j = 0; j < totalCol; j++) { flag[i][j] = false; } } for (var _i = 0; _i < columns.length; _i++) { var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = columns[_i][Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var r = _step3.value; var rowspan = r.rowspan || 1; var colspan = r.colspan || 1; var index = flag[_i].indexOf(false); r.colspanIndex = index; if (colspan === 1) { r.fieldIndex = index; // when field is undefined, use index instead if (typeof r.field === 'undefined') { r.field = index; } } else { r.colspanGroup = r.colspan; } for (var k = 0; k < rowspan; k++) { flag[_i + k][index] = true; } for (var _k = 0; _k < colspan; _k++) { flag[_i][index + _k] = true; } } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return != null) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } } }, updateFieldGroup: function updateFieldGroup(columns) { var allColumns = columns.flat(); var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = columns[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var c = _step4.value; var _iteratorNormalCompletion5 = true; var _didIteratorError5 = false; var _iteratorError5 = undefined; try { for (var _iterator5 = c[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { var r = _step5.value; if (r.colspanGroup > 1) { var colspan = 0; var _loop = function _loop(i) { var column = allColumns.find(function (col) { return col.fieldIndex === i; }); if (column.visible) { colspan++; } }; for (var i = r.colspanIndex; i < r.colspanIndex + r.colspanGroup; i++) { _loop(i); } r.colspan = colspan; r.visible = colspan > 0; } } } catch (err) { _didIteratorError5 = true; _iteratorError5 = err; } finally { try { if (!_iteratorNormalCompletion5 && _iterator5.return != null) { _iterator5.return(); } } finally { if (_didIteratorError5) { throw _iteratorError5; } } } } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4.return != null) { _iterator4.return(); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } }, getScrollBarWidth: function getScrollBarWidth() { if (this.cachedWidth === undefined) { var $inner = $('
    ').addClass('fixed-table-scroll-inner'); var $outer = $('
    ').addClass('fixed-table-scroll-outer'); $outer.append($inner); $('body').append($outer); var w1 = $inner[0].offsetWidth; $outer.css('overflow', 'scroll'); var w2 = $inner[0].offsetWidth; if (w1 === w2) { w2 = $outer[0].clientWidth; } $outer.remove(); this.cachedWidth = w1 - w2; } return this.cachedWidth; }, calculateObjectValue: function calculateObjectValue(self, name, args, defaultValue) { var func = name; if (typeof name === 'string') { // support obj.func1.func2 var names = name.split('.'); if (names.length > 1) { func = window; var _iteratorNormalCompletion6 = true; var _didIteratorError6 = false; var _iteratorError6 = undefined; try { for (var _iterator6 = names[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { var f = _step6.value; func = func[f]; } } catch (err) { _didIteratorError6 = true; _iteratorError6 = err; } finally { try { if (!_iteratorNormalCompletion6 && _iterator6.return != null) { _iterator6.return(); } } finally { if (_didIteratorError6) { throw _iteratorError6; } } } } else { func = window[name]; } } if (func !== null && _typeof(func) === 'object') { return func; } if (typeof func === 'function') { return func.apply(self, args || []); } if (!func && typeof name === 'string' && this.sprintf.apply(this, [name].concat(_toConsumableArray(args)))) { return this.sprintf.apply(this, [name].concat(_toConsumableArray(args))); } return defaultValue; }, compareObjects: function compareObjects(objectA, objectB, compareLength) { var aKeys = Object.keys(objectA); var bKeys = Object.keys(objectB); if (compareLength && aKeys.length !== bKeys.length) { return false; } for (var _i2 = 0, _aKeys = aKeys; _i2 < _aKeys.length; _i2++) { var key = _aKeys[_i2]; if (bKeys.includes(key) && objectA[key] !== objectB[key]) { return false; } } return true; }, escapeHTML: function escapeHTML(text) { if (typeof text === 'string') { return text.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/`/g, '`'); } return text; }, getRealDataAttr: function getRealDataAttr(dataAttr) { for (var _i3 = 0, _Object$entries = Object.entries(dataAttr); _i3 < _Object$entries.length; _i3++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i3], 2), attr = _Object$entries$_i[0], value = _Object$entries$_i[1]; var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase(); if (auxAttr !== attr) { dataAttr[auxAttr] = value; delete dataAttr[attr]; } } return dataAttr; }, getItemField: function getItemField(item, field, escape) { var value = item; if (typeof field !== 'string' || item.hasOwnProperty(field)) { return escape ? this.escapeHTML(item[field]) : item[field]; } var props = field.split('.'); var _iteratorNormalCompletion7 = true; var _didIteratorError7 = false; var _iteratorError7 = undefined; try { for (var _iterator7 = props[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { var p = _step7.value; value = value && value[p]; } } catch (err) { _didIteratorError7 = true; _iteratorError7 = err; } finally { try { if (!_iteratorNormalCompletion7 && _iterator7.return != null) { _iterator7.return(); } } finally { if (_didIteratorError7) { throw _iteratorError7; } } } return escape ? this.escapeHTML(value) : value; }, isIEBrowser: function isIEBrowser() { return navigator.userAgent.includes('MSIE ') || /Trident.*rv:11\./.test(navigator.userAgent); }, findIndex: function findIndex(items, item) { var _iteratorNormalCompletion8 = true; var _didIteratorError8 = false; var _iteratorError8 = undefined; try { for (var _iterator8 = items[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { var it = _step8.value; if (JSON.stringify(it) === JSON.stringify(item)) { return items.indexOf(it); } } } catch (err) { _didIteratorError8 = true; _iteratorError8 = err; } finally { try { if (!_iteratorNormalCompletion8 && _iterator8.return != null) { _iterator8.return(); } } finally { if (_didIteratorError8) { throw _iteratorError8; } } } return -1; }, trToData: function trToData(columns, $els) { var _this = this; var data = []; var m = []; $els.each(function (y, el) { var row = {}; // save tr's id, class and data-* attributes row._id = $(el).attr('id'); row._class = $(el).attr('class'); row._data = _this.getRealDataAttr($(el).data()); $(el).find('>td,>th').each(function (_x, el) { var cspan = +$(el).attr('colspan') || 1; var rspan = +$(el).attr('rowspan') || 1; var x = _x; // skip already occupied cells in current row for (; m[y] && m[y][x]; x++) {} // ignore // mark matrix elements occupied by current cell with true for (var tx = x; tx < x + cspan; tx++) { for (var ty = y; ty < y + rspan; ty++) { if (!m[ty]) { // fill missing rows m[ty] = []; } m[ty][tx] = true; } } var field = columns[x].field; row[field] = $(el).html().trim(); // save td's id, class and data-* attributes row["_".concat(field, "_id")] = $(el).attr('id'); row["_".concat(field, "_class")] = $(el).attr('class'); row["_".concat(field, "_rowspan")] = $(el).attr('rowspan'); row["_".concat(field, "_colspan")] = $(el).attr('colspan'); row["_".concat(field, "_title")] = $(el).attr('title'); row["_".concat(field, "_data")] = _this.getRealDataAttr($(el).data()); }); data.push(row); }); return data; }, sort: function sort(a, b, order, sortStable) { if (a === undefined || a === null) { a = ''; } if (b === undefined || b === null) { b = ''; } if (sortStable && a === b) { a = a._position; b = b._position; } // If both values are numeric, do a numeric comparison if (this.isNumeric(a) && this.isNumeric(b)) { // Convert numerical values form string to float. a = parseFloat(a); b = parseFloat(b); if (a < b) { return order * -1; } if (a > b) { return order; } return 0; } if (a === b) { return 0; } // If value is not a string, convert to string if (typeof a !== 'string') { a = a.toString(); } if (a.localeCompare(b) === -1) { return order * -1; } return order; } }; var BLOCK_ROWS = 50; var CLUSTER_BLOCKS = 4; var VirtualScroll = /*#__PURE__*/ function () { function VirtualScroll(options) { var _this = this; _classCallCheck(this, VirtualScroll); this.rows = options.rows; this.scrollEl = options.scrollEl; this.contentEl = options.contentEl; this.callback = options.callback; this.itemHeight = options.itemHeight; this.cache = {}; this.scrollTop = this.scrollEl.scrollTop; this.initDOM(this.rows, options.fixedScroll); this.scrollEl.scrollTop = this.scrollTop; this.lastCluster = 0; var onScroll = function onScroll() { if (_this.lastCluster !== (_this.lastCluster = _this.getNum())) { _this.initDOM(_this.rows); _this.callback(); } }; this.scrollEl.addEventListener('scroll', onScroll, false); this.destroy = function () { _this.contentEl.innerHtml = ''; _this.scrollEl.removeEventListener('scroll', onScroll, false); }; } _createClass(VirtualScroll, [{ key: "initDOM", value: function initDOM(rows, fixedScroll) { if (typeof this.clusterHeight === 'undefined') { this.cache.scrollTop = this.scrollEl.scrollTop; this.cache.data = this.contentEl.innerHTML = rows[0] + rows[0] + rows[0]; this.getRowsHeight(rows); } var data = this.initData(rows, this.getNum(fixedScroll)); var thisRows = data.rows.join(''); var dataChanged = this.checkChanges('data', thisRows); var topOffsetChanged = this.checkChanges('top', data.topOffset); var bottomOffsetChanged = this.checkChanges('bottom', data.bottomOffset); var html = []; if (dataChanged && topOffsetChanged) { if (data.topOffset) { html.push(this.getExtra('top', data.topOffset)); } html.push(thisRows); if (data.bottomOffset) { html.push(this.getExtra('bottom', data.bottomOffset)); } this.contentEl.innerHTML = html.join(''); if (fixedScroll) { this.contentEl.scrollTop = this.cache.scrollTop; } } else if (bottomOffsetChanged) { this.contentEl.lastChild.style.height = "".concat(data.bottomOffset, "px"); } } }, { key: "getRowsHeight", value: function getRowsHeight() { if (typeof this.itemHeight === 'undefined') { var nodes = this.contentEl.children; var node = nodes[Math.floor(nodes.length / 2)]; this.itemHeight = node.offsetHeight; } this.blockHeight = this.itemHeight * BLOCK_ROWS; this.clusterRows = BLOCK_ROWS * CLUSTER_BLOCKS; this.clusterHeight = this.blockHeight * CLUSTER_BLOCKS; } }, { key: "getNum", value: function getNum(fixedScroll) { this.scrollTop = fixedScroll ? this.cache.scrollTop : this.scrollEl.scrollTop; return Math.floor(this.scrollTop / (this.clusterHeight - this.blockHeight)) || 0; } }, { key: "initData", value: function initData(rows, num) { if (rows.length < BLOCK_ROWS) { return { topOffset: 0, bottomOffset: 0, rowsAbove: 0, rows: rows }; } var start = Math.max((this.clusterRows - BLOCK_ROWS) * num, 0); var end = start + this.clusterRows; var topOffset = Math.max(start * this.itemHeight, 0); var bottomOffset = Math.max((rows.length - end) * this.itemHeight, 0); var thisRows = []; var rowsAbove = start; if (topOffset < 1) { rowsAbove++; } for (var i = start; i < end; i++) { rows[i] && thisRows.push(rows[i]); } return { topOffset: topOffset, bottomOffset: bottomOffset, rowsAbove: rowsAbove, rows: thisRows }; } }, { key: "checkChanges", value: function checkChanges(type, value) { var changed = value !== this.cache[type]; this.cache[type] = value; return changed; } }, { key: "getExtra", value: function getExtra(className, height) { var tag = document.createElement('tr'); tag.className = "virtual-scroll-".concat(className); if (height) { tag.style.height = "".concat(height, "px"); } return tag.outerHTML; } }]); return VirtualScroll; }(); var BootstrapTable = /*#__PURE__*/ function () { function BootstrapTable(el, options) { _classCallCheck(this, BootstrapTable); this.options = options; this.$el = $(el); this.$el_ = this.$el.clone(); this.timeoutId_ = 0; this.timeoutFooter_ = 0; this.init(); } _createClass(BootstrapTable, [{ key: "init", value: function init() { this.initConstants(); this.initLocale(); this.initContainer(); this.initTable(); this.initHeader(); this.initData(); this.initHiddenRows(); this.initToolbar(); this.initPagination(); this.initBody(); this.initSearchText(); this.initServer(); } }, { key: "initConstants", value: function initConstants() { var o = this.options; this.constants = Constants.CONSTANTS; this.constants.theme = $.fn.bootstrapTable.theme; var buttonsPrefix = o.buttonsPrefix ? "".concat(o.buttonsPrefix, "-") : ''; this.constants.buttonsClass = [o.buttonsPrefix, buttonsPrefix + o.buttonsClass, Utils.sprintf("".concat(buttonsPrefix, "%s"), o.iconSize)].join(' ').trim(); } }, { key: "initLocale", value: function initLocale() { if (this.options.locale) { var locales = $.fn.bootstrapTable.locales; var parts = this.options.locale.split(/-|_/); parts[0] = parts[0].toLowerCase(); if (parts[1]) { parts[1] = parts[1].toUpperCase(); } if (locales[this.options.locale]) { $.extend(this.options, locales[this.options.locale]); } else if (locales[parts.join('-')]) { $.extend(this.options, locales[parts.join('-')]); } else if (locales[parts[0]]) { $.extend(this.options, locales[parts[0]]); } } } }, { key: "initContainer", value: function initContainer() { var topPagination = ['top', 'both'].includes(this.options.paginationVAlign) ? '
    ' : ''; var bottomPagination = ['bottom', 'both'].includes(this.options.paginationVAlign) ? '
    ' : ''; this.$container = $("\n
    \n
    \n ").concat(topPagination, "\n
    \n
    \n
    \n
    \n \n ").concat(this.options.formatLoadingMessage(), "\n \n \n
    \n
    \n
    \n
    \n ").concat(bottomPagination, "\n
    \n ")); this.$container.insertAfter(this.$el); this.$tableContainer = this.$container.find('.fixed-table-container'); this.$tableHeader = this.$container.find('.fixed-table-header'); this.$tableBody = this.$container.find('.fixed-table-body'); this.$tableLoading = this.$container.find('.fixed-table-loading'); this.$tableFooter = this.$el.find('tfoot'); // checking if custom table-toolbar exists or not if (this.options.buttonsToolbar) { this.$toolbar = $('body').find(this.options.buttonsToolbar); } else { this.$toolbar = this.$container.find('.fixed-table-toolbar'); } this.$pagination = this.$container.find('.fixed-table-pagination'); this.$tableBody.append(this.$el); this.$container.after('
    '); this.$el.addClass(this.options.classes); this.$tableLoading.addClass(this.options.classes); if (this.options.height) { this.$tableContainer.addClass('fixed-height'); if (this.options.showFooter) { this.$tableContainer.addClass('has-footer'); } if (this.options.classes.split(' ').includes('table-bordered')) { this.$tableBody.append('
    '); this.$tableBorder = this.$tableBody.find('.fixed-table-border'); this.$tableLoading.addClass('fixed-table-border'); } this.$tableFooter = this.$container.find('.fixed-table-footer'); } else { if (!this.$tableFooter.length) { this.$el.append(''); this.$tableFooter = this.$el.find('tfoot'); } } } }, { key: "initTable", value: function initTable() { var _this = this; var columns = []; var data = []; this.$header = this.$el.find('>thead'); if (!this.$header.length) { this.$header = $("")).appendTo(this.$el); } else if (this.options.theadClasses) { this.$header.addClass(this.options.theadClasses); } this.$header.find('tr').each(function (i, el) { var column = []; $(el).find('th').each(function (i, el) { // #2014: getFieldIndex and elsewhere assume this is string, causes issues if not if (typeof $(el).data('field') !== 'undefined') { $(el).data('field', "".concat($(el).data('field'))); } column.push($.extend({}, { title: $(el).html(), 'class': $(el).attr('class'), titleTooltip: $(el).attr('title'), rowspan: $(el).attr('rowspan') ? +$(el).attr('rowspan') : undefined, colspan: $(el).attr('colspan') ? +$(el).attr('colspan') : undefined }, $(el).data())); }); columns.push(column); }); if (!Array.isArray(this.options.columns[0])) { this.options.columns = [this.options.columns]; } this.options.columns = $.extend(true, [], columns, this.options.columns); this.columns = []; this.fieldsColumnsIndex = []; Utils.setFieldIndex(this.options.columns); this.options.columns.forEach(function (columns, i) { columns.forEach(function (_column, j) { var column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, _column); if (typeof column.fieldIndex !== 'undefined') { _this.columns[column.fieldIndex] = column; _this.fieldsColumnsIndex[column.field] = column.fieldIndex; } _this.options.columns[i][j] = column; }); }); // if options.data is setting, do not process tbody and tfoot data if (!this.options.data.length) { this.options.data = Utils.trToData(this.columns, this.$el.find('>tbody>tr')); if (data.length) { this.fromHtml = true; } } this.footerData = Utils.trToData(this.columns, this.$el.find('>tfoot>tr')); if (this.footerData) { this.$el.find('tfoot').html(''); } if (!this.options.showFooter || this.options.cardView) { this.$tableFooter.hide(); } else { this.$tableFooter.show(); } } }, { key: "initHeader", value: function initHeader() { var _this2 = this; var visibleColumns = {}; var html = []; this.header = { fields: [], styles: [], classes: [], formatters: [], detailFormatters: [], events: [], sorters: [], sortNames: [], cellStyles: [], searchables: [] }; Utils.updateFieldGroup(this.options.columns); this.options.columns.forEach(function (columns, i) { html.push(''); if (i === 0 && !_this2.options.cardView && _this2.options.detailView && _this2.options.detailViewIcon) { html.push("\n
    \n \n ")); } columns.forEach(function (column, j) { var class_ = Utils.sprintf(' class="%s"', column['class']); var unitWidth = column.widthUnit; var width = parseFloat(column.width); var halign = Utils.sprintf('text-align: %s; ', column.halign ? column.halign : column.align); var align = Utils.sprintf('text-align: %s; ', column.align); var style = Utils.sprintf('vertical-align: %s; ', column.valign); style += Utils.sprintf('width: %s; ', (column.checkbox || column.radio) && !width ? !column.showSelectTitle ? '36px' : undefined : width ? width + unitWidth : undefined); if (typeof column.fieldIndex === 'undefined' && !column.visible) { return; } if (typeof column.fieldIndex !== 'undefined') { _this2.header.fields[column.fieldIndex] = column.field; _this2.header.styles[column.fieldIndex] = align + style; _this2.header.classes[column.fieldIndex] = class_; _this2.header.formatters[column.fieldIndex] = column.formatter; _this2.header.detailFormatters[column.fieldIndex] = column.detailFormatter; _this2.header.events[column.fieldIndex] = column.events; _this2.header.sorters[column.fieldIndex] = column.sorter; _this2.header.sortNames[column.fieldIndex] = column.sortName; _this2.header.cellStyles[column.fieldIndex] = column.cellStyle; _this2.header.searchables[column.fieldIndex] = column.searchable; if (!column.visible) { return; } if (_this2.options.cardView && !column.cardVisible) { return; } visibleColumns[column.field] = column; } html.push(" 0 ? ' data-not-first-th' : '', '>'); html.push(Utils.sprintf('
    ', _this2.options.sortable && column.sortable ? 'sortable both' : '')); var text = _this2.options.escape ? Utils.escapeHTML(column.title) : column.title; var title = text; if (column.checkbox) { text = ''; if (!_this2.options.singleSelect && _this2.options.checkboxHeader) { text = ''; } _this2.header.stateField = column.field; } if (column.radio) { text = ''; _this2.header.stateField = column.field; _this2.options.singleSelect = true; } if (!text && column.showSelectTitle) { text += title; } html.push(text); html.push('
    '); html.push('
    '); html.push('
    '); html.push(''); }); html.push(''); }); this.$header.html(html.join('')); this.$header.find('th[data-field]').each(function (i, el) { $(el).data(visibleColumns[$(el).data('field')]); }); this.$container.off('click', '.th-inner').on('click', '.th-inner', function (e) { var $this = $(e.currentTarget); if (_this2.options.detailView && !$this.parent().hasClass('bs-checkbox')) { if ($this.closest('.bootstrap-table')[0] !== _this2.$container[0]) { return false; } } if (_this2.options.sortable && $this.parent().data().sortable) { _this2.onSort(e); } }); this.$header.children().children().off('keypress').on('keypress', function (e) { if (_this2.options.sortable && $(e.currentTarget).data().sortable) { var code = e.keyCode || e.which; if (code === 13) { // Enter keycode _this2.onSort(e); } } }); var resizeEvent = "resize.bootstrap-table".concat(this.$el.attr('id') || ''); $(window).off(resizeEvent); if (!this.options.showHeader || this.options.cardView) { this.$header.hide(); this.$tableHeader.hide(); this.$tableLoading.css('top', 0); } else { this.$header.show(); this.$tableHeader.show(); this.$tableLoading.css('top', this.$header.outerHeight() + 1); // Assign the correct sortable arrow this.getCaret(); $(window).on(resizeEvent, function (e) { return _this2.resetWidth(e); }); } this.$selectAll = this.$header.find('[name="btSelectAll"]'); this.$selectAll.off('click').on('click', function (_ref) { var currentTarget = _ref.currentTarget; var checked = $(currentTarget).prop('checked'); _this2[checked ? 'checkAll' : 'uncheckAll'](); _this2.updateSelected(); }); } }, { key: "initData", value: function initData(data, type) { if (type === 'append') { this.options.data = this.options.data.concat(data); } else if (type === 'prepend') { this.options.data = [].concat(data).concat(this.options.data); } else { this.options.data = data || this.options.data; } this.data = this.options.data; if (this.options.sidePagination === 'server') { return; } this.initSort(); } }, { key: "initSort", value: function initSort() { var _this3 = this; var name = this.options.sortName; var order = this.options.sortOrder === 'desc' ? -1 : 1; var index = this.header.fields.indexOf(this.options.sortName); var timeoutId = 0; if (index !== -1) { if (this.options.sortStable) { this.data.forEach(function (row, i) { if (!row.hasOwnProperty('_position')) { row._position = i; } }); } if (this.options.customSort) { Utils.calculateObjectValue(this.options, this.options.customSort, [this.options.sortName, this.options.sortOrder, this.data]); } else { this.data.sort(function (a, b) { if (_this3.header.sortNames[index]) { name = _this3.header.sortNames[index]; } var aa = Utils.getItemField(a, name, _this3.options.escape); var bb = Utils.getItemField(b, name, _this3.options.escape); var value = Utils.calculateObjectValue(_this3.header, _this3.header.sorters[index], [aa, bb, a, b]); if (value !== undefined) { if (_this3.options.sortStable && value === 0) { return order * (a._position - b._position); } return order * value; } return Utils.sort(aa, bb, order, _this3.options.sortStable); }); } if (this.options.sortClass !== undefined) { clearTimeout(timeoutId); timeoutId = setTimeout(function () { _this3.$el.removeClass(_this3.options.sortClass); var index = _this3.$header.find("[data-field=\"".concat(_this3.options.sortName, "\"]")).index(); _this3.$el.find("tr td:nth-child(".concat(index + 1, ")")).addClass(_this3.options.sortClass); }, 250); } } } }, { key: "onSort", value: function onSort(_ref2) { var type = _ref2.type, currentTarget = _ref2.currentTarget; var $this = type === 'keypress' ? $(currentTarget) : $(currentTarget).parent(); var $this_ = this.$header.find('th').eq($this.index()); this.$header.add(this.$header_).find('span.order').remove(); if (this.options.sortName === $this.data('field')) { this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc'; } else { this.options.sortName = $this.data('field'); if (this.options.rememberOrder) { this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc'; } else { this.options.sortOrder = this.columns[this.fieldsColumnsIndex[$this.data('field')]].sortOrder || this.columns[this.fieldsColumnsIndex[$this.data('field')]].order; } } this.trigger('sort', this.options.sortName, this.options.sortOrder); $this.add($this_).data('order', this.options.sortOrder); // Assign the correct sortable arrow this.getCaret(); if (this.options.sidePagination === 'server') { this.options.pageNumber = 1; this.initServer(this.options.silentSort); return; } this.initSort(); this.initBody(); } }, { key: "initToolbar", value: function initToolbar() { var _this4 = this; var o = this.options; var html = []; var timeoutId = 0; var $keepOpen; var switchableCount = 0; if (this.$toolbar.find('.bs-bars').children().length) { $('body').append($(o.toolbar)); } this.$toolbar.html(''); if (typeof o.toolbar === 'string' || _typeof(o.toolbar) === 'object') { $(Utils.sprintf('
    ', this.constants.classes.pull, o.toolbarAlign)).appendTo(this.$toolbar).append($(o.toolbar)); } // showColumns, showToggle, showRefresh html = ["
    ")]; if (typeof o.icons === 'string') { o.icons = Utils.calculateObjectValue(null, o.icons); } if (o.showPaginationSwitch) { html.push("")); } if (o.showRefresh) { html.push("")); } if (o.showToggle) { html.push("")); } if (o.showFullscreen) { html.push("")); } if (o.showColumns) { html.push("
    \n \n ").concat(this.constants.html.toolbarDropdown[0])); if (o.showColumnsToggleAll) { var allFieldsVisible = this.getVisibleColumns().length === this.columns.length; html.push(Utils.sprintf(this.constants.html.toolbarDropdownItem, Utils.sprintf(' %s', allFieldsVisible ? 'checked="checked"' : '', o.formatColumnsToggleAll()))); html.push(this.constants.html.toolbarDropdownSeparator); } this.columns.forEach(function (column, i) { if (column.radio || column.checkbox) { return; } if (o.cardView && !column.cardVisible) { return; } var checked = column.visible ? ' checked="checked"' : ''; if (column.switchable) { html.push(Utils.sprintf(_this4.constants.html.toolbarDropdownItem, Utils.sprintf(' %s', column.field, i, checked, column.title))); switchableCount++; } }); html.push(this.constants.html.toolbarDropdown[1], '
    '); } html.push('
    '); // Fix #188: this.showToolbar is for extensions if (this.showToolbar || html.length > 2) { this.$toolbar.append(html.join('')); } if (o.showPaginationSwitch) { this.$toolbar.find('button[name="paginationSwitch"]').off('click').on('click', function () { return _this4.togglePagination(); }); } if (o.showFullscreen) { this.$toolbar.find('button[name="fullscreen"]').off('click').on('click', function () { return _this4.toggleFullscreen(); }); } if (o.showRefresh) { this.$toolbar.find('button[name="refresh"]').off('click').on('click', function () { return _this4.refresh(); }); } if (o.showToggle) { this.$toolbar.find('button[name="toggle"]').off('click').on('click', function () { _this4.toggleView(); }); } if (o.showColumns) { $keepOpen = this.$toolbar.find('.keep-open'); var $checkboxes = $keepOpen.find('input:not(".toggle-all")'); var $toggleAll = $keepOpen.find('input.toggle-all'); if (switchableCount <= o.minimumCountColumns) { $keepOpen.find('input').prop('disabled', true); } $keepOpen.find('li, label').off('click').on('click', function (e) { e.stopImmediatePropagation(); }); $checkboxes.off('click').on('click', function (_ref3) { var currentTarget = _ref3.currentTarget; var $this = $(currentTarget); _this4._toggleColumn($this.val(), $this.prop('checked'), false); _this4.trigger('column-switch', $this.data('field'), $this.prop('checked')); $toggleAll.prop('checked', $checkboxes.filter(':checked').length === _this4.columns.length); }); $toggleAll.off('click').on('click', function (_ref4) { var currentTarget = _ref4.currentTarget; _this4._toggleAllColumns($(currentTarget).prop('checked')); }); } // Fix #4516: this.showSearchClearButton is for extensions if (o.search || this.showSearchClearButton) { html = []; var showSearchButton = Utils.sprintf(this.constants.html.searchButton, this.constants.buttonsClass, o.formatSearch(), o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.search) : '', o.showButtonText ? o.formatSearch() : ''); var showSearchClearButton = Utils.sprintf(this.constants.html.searchClearButton, this.constants.buttonsClass, o.formatClearSearch(), o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.clearSearch) : '', o.showButtonText ? o.formatClearSearch() : ''); var searchInputHtml = ""); var searchInputFinalHtml = searchInputHtml; if (o.showSearchButton || o.showSearchClearButton) { var buttonsHtml = (o.showSearchButton ? showSearchButton : '') + (o.showSearchClearButton ? showSearchClearButton : ''); searchInputFinalHtml = o.search ? Utils.sprintf(this.constants.html.inputGroup, searchInputHtml, buttonsHtml) : buttonsHtml; } html.push(Utils.sprintf("\n
    \n %s\n
    \n "), searchInputFinalHtml)); this.$toolbar.append(html.join('')); var $searchInput = this.$toolbar.find('.search input'); var handleInputEvent = function handleInputEvent() { var eventTriggers = Utils.isIEBrowser() ? 'mouseup' : 'keyup drop blur'; $searchInput.off(eventTriggers).on(eventTriggers, function (event) { if (o.searchOnEnterKey && event.keyCode !== 13) { return; } if ([37, 38, 39, 40].includes(event.keyCode)) { return; } clearTimeout(timeoutId); // doesn't matter if it's 0 timeoutId = setTimeout(function () { _this4.onSearch(event); }, o.searchTimeOut); }); }; if (o.showSearchButton) { this.$toolbar.find('.search button[name=search]').off('click').on('click', function (event) { clearTimeout(timeoutId); // doesn't matter if it's 0 timeoutId = setTimeout(function () { _this4.onSearch({ currentTarget: $searchInput }); }, o.searchTimeOut); }); if (o.searchOnEnterKey) { handleInputEvent(); } } else { handleInputEvent(); } if (o.showSearchClearButton) { this.$toolbar.find('.search button[name=clearSearch]').click(function () { _this4.resetSearch(); }); } } } }, { key: "onSearch", value: function onSearch() { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, currentTarget = _ref5.currentTarget, firedByInitSearchText = _ref5.firedByInitSearchText; var overwriteSearchText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (currentTarget !== undefined && $(currentTarget).length && overwriteSearchText) { var text = $(currentTarget).val().trim(); if (this.options.trimOnSearch && $(currentTarget).val() !== text) { $(currentTarget).val(text); } if (this.searchText === text) { return; } if ($(currentTarget).hasClass('search-input')) { this.searchText = text; this.options.searchText = text; } } if (!firedByInitSearchText) { this.options.pageNumber = 1; } this.initSearch(); if (firedByInitSearchText) { if (this.options.sidePagination === 'client') { this.updatePagination(); } } else { this.updatePagination(); } this.trigger('search', this.searchText); } }, { key: "initSearch", value: function initSearch() { var _this5 = this; this.filterOptions = this.filterOptions || this.options.filterOptions; if (this.options.sidePagination !== 'server') { if (this.options.customSearch) { this.data = Utils.calculateObjectValue(this.options, this.options.customSearch, [this.options.data, this.searchText, this.filterColumns]); return; } var s = this.searchText && (this.options.escape ? Utils.escapeHTML(this.searchText) : this.searchText).toLowerCase(); var f = Utils.isEmptyObject(this.filterColumns) ? null : this.filterColumns; // Check filter if (typeof this.filterOptions.filterAlgorithm === 'function') { this.data = this.options.data.filter(function (item, i) { return _this5.filterOptions.filterAlgorithm.apply(null, [item, f]); }); } else if (typeof this.filterOptions.filterAlgorithm === 'string') { this.data = f ? this.options.data.filter(function (item, i) { var filterAlgorithm = _this5.filterOptions.filterAlgorithm; if (filterAlgorithm === 'and') { for (var key in f) { if (Array.isArray(f[key]) && !f[key].includes(item[key]) || !Array.isArray(f[key]) && item[key] !== f[key]) { return false; } } } else if (filterAlgorithm === 'or') { var match = false; for (var _key in f) { if (Array.isArray(f[_key]) && f[_key].includes(item[_key]) || !Array.isArray(f[_key]) && item[_key] === f[_key]) { match = true; } } return match; } return true; }) : this.options.data; } var visibleFields = this.getVisibleFields(); this.data = s ? this.data.filter(function (item, i) { for (var j = 0; j < _this5.header.fields.length; j++) { if (!_this5.header.searchables[j] || _this5.options.visibleSearch && visibleFields.indexOf(_this5.header.fields[j]) === -1) { continue; } var key = Utils.isNumeric(_this5.header.fields[j]) ? parseInt(_this5.header.fields[j], 10) : _this5.header.fields[j]; var column = _this5.columns[_this5.fieldsColumnsIndex[key]]; var value = void 0; if (typeof key === 'string') { value = item; var props = key.split('.'); for (var _i = 0; _i < props.length; _i++) { if (value[props[_i]] !== null) { value = value[props[_i]]; } } } else { value = item[key]; } // Fix #142: respect searchFormatter boolean if (column && column.searchFormatter) { value = Utils.calculateObjectValue(column, _this5.header.formatters[j], [value, item, i, column.field], value); } if (typeof value === 'string' || typeof value === 'number') { if (_this5.options.strictSearch) { if ("".concat(value).toLowerCase() === s) { return true; } } else { var largerSmallerEqualsRegex = /(?:(<=|=>|=<|>=|>|<)(?:\s+)?(\d+)?|(\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm; var matches = largerSmallerEqualsRegex.exec(s); var comparisonCheck = false; if (matches) { var operator = matches[1] || "".concat(matches[5], "l"); var comparisonValue = matches[2] || matches[3]; var int = parseInt(value, 10); var comparisonInt = parseInt(comparisonValue, 10); switch (operator) { case '>': case ' comparisonInt; break; case '<': case '>l': comparisonCheck = int < comparisonInt; break; case '<=': case '=<': case '>=l': case '=>l': comparisonCheck = int <= comparisonInt; break; case '>=': case '=>': case '<=l': case '== comparisonInt; break; default: break; } } if (comparisonCheck || "".concat(value).toLowerCase().includes(s)) { return true; } } } } return false; }) : this.data; } } }, { key: "initPagination", value: function initPagination() { var _this6 = this; var o = this.options; if (!o.pagination) { this.$pagination.hide(); return; } this.$pagination.show(); var html = []; var $allSelected = false; var i; var from; var to; var $pageList; var $pre; var $next; var $number; var data = this.getData({ includeHiddenRows: false }); var pageList = o.pageList; if (o.sidePagination !== 'server') { o.totalRows = data.length; } this.totalPages = 0; if (o.totalRows) { if (o.pageSize === o.formatAllRows()) { o.pageSize = o.totalRows; $allSelected = true; } else if (o.pageSize === o.totalRows) { // Fix #667 Table with pagination, // multiple pages and a search this matches to one page throws exception var pageLst = typeof o.pageList === 'string' ? o.pageList.replace('[', '').replace(']', '').replace(/ /g, '').toLowerCase().split(',') : o.pageList; if (pageLst.includes(o.formatAllRows().toLowerCase())) { $allSelected = true; } } this.totalPages = ~~((o.totalRows - 1) / o.pageSize) + 1; o.totalPages = this.totalPages; } if (this.totalPages > 0 && o.pageNumber > this.totalPages) { o.pageNumber = this.totalPages; } this.pageFrom = (o.pageNumber - 1) * o.pageSize + 1; this.pageTo = o.pageNumber * o.pageSize; if (this.pageTo > o.totalRows) { this.pageTo = o.totalRows; } if (this.options.pagination && this.options.sidePagination !== 'server') { this.options.totalNotFiltered = this.options.data.length; } if (!this.options.showExtendedPagination) { this.options.totalNotFiltered = undefined; } var paginationInfo = o.onlyInfoPagination ? o.formatDetailPagination(o.totalRows) : o.formatShowingRows(this.pageFrom, this.pageTo, o.totalRows, o.totalNotFiltered); html.push("
    \n \n ").concat(paginationInfo, "\n ")); if (!o.onlyInfoPagination) { html.push(''); var pageNumber = ["\n \n ").concat(this.constants.html.pageDropdown[0])]; if (typeof o.pageList === 'string') { var list = o.pageList.replace('[', '').replace(']', '').replace(/ /g, '').split(','); pageList = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; pageList.push(value.toLowerCase() === o.formatAllRows().toLowerCase() || ['all', 'unlimited'].includes(value.toLowerCase()) ? o.formatAllRows() : +value); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } pageList.forEach(function (page, i) { if (!o.smartDisplay || i === 0 || pageList[i - 1] < o.totalRows) { var active; if ($allSelected) { active = page === o.formatAllRows() ? _this6.constants.classes.dropdownActive : ''; } else { active = page === o.pageSize ? _this6.constants.classes.dropdownActive : ''; } pageNumber.push(Utils.sprintf(_this6.constants.html.pageDropdownItem, active, page)); } }); pageNumber.push("".concat(this.constants.html.pageDropdown[1], "")); html.push(o.formatRecordsPerPage(pageNumber.join(''))); html.push('
    '); html.push("
    "), Utils.sprintf(this.constants.html.pagination[0], Utils.sprintf(' pagination-%s', o.iconSize)), Utils.sprintf(this.constants.html.paginationItem, ' page-pre', o.formatSRPaginationPreText(), o.paginationPreText)); if (this.totalPages < o.paginationSuccessivelySize) { from = 1; to = this.totalPages; } else { from = o.pageNumber - o.paginationPagesBySide; to = from + o.paginationPagesBySide * 2; } if (o.pageNumber < o.paginationSuccessivelySize - 1) { to = o.paginationSuccessivelySize; } if (o.paginationSuccessivelySize > this.totalPages - from) { from = from - (o.paginationSuccessivelySize - (this.totalPages - from)) + 1; } if (from < 1) { from = 1; } if (to > this.totalPages) { to = this.totalPages; } var middleSize = Math.round(o.paginationPagesBySide / 2); var pageItem = function pageItem(i) { var classes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return Utils.sprintf(_this6.constants.html.paginationItem, classes + (i === o.pageNumber ? " ".concat(_this6.constants.classes.paginationActive) : ''), o.formatSRPaginationPageText(i), i); }; if (from > 1) { var max = o.paginationPagesBySide; if (max >= from) max = from - 1; for (i = 1; i <= max; i++) { html.push(pageItem(i)); } if (from - 1 === max + 1) { i = from - 1; html.push(pageItem(i)); } else { if (from - 1 > max) { if (from - o.paginationPagesBySide * 2 > o.paginationPagesBySide && o.paginationUseIntermediate) { i = Math.round((from - middleSize) / 2 + middleSize); html.push(pageItem(i, ' page-intermediate')); } else { html.push(Utils.sprintf(this.constants.html.paginationItem, ' page-first-separator disabled', '', '...')); } } } } for (i = from; i <= to; i++) { html.push(pageItem(i)); } if (this.totalPages > to) { var min = this.totalPages - (o.paginationPagesBySide - 1); if (to >= min) min = to + 1; if (to + 1 === min - 1) { i = to + 1; html.push(pageItem(i)); } else { if (min > to + 1) { if (this.totalPages - to > o.paginationPagesBySide * 2 && o.paginationUseIntermediate) { i = Math.round((this.totalPages - middleSize - to) / 2 + to); html.push(pageItem(i, ' page-intermediate')); } else { html.push(Utils.sprintf(this.constants.html.paginationItem, ' page-last-separator disabled', '', '...')); } } } for (i = min; i <= this.totalPages; i++) { html.push(pageItem(i)); } } html.push(Utils.sprintf(this.constants.html.paginationItem, ' page-next', o.formatSRPaginationNextText(), o.paginationNextText)); html.push(this.constants.html.pagination[1], '
    '); } this.$pagination.html(html.join('')); var dropupClass = ['bottom', 'both'].includes(o.paginationVAlign) ? " ".concat(this.constants.classes.dropup) : ''; this.$pagination.last().find('.page-list > span').addClass(dropupClass); if (!o.onlyInfoPagination) { $pageList = this.$pagination.find('.page-list a'); $pre = this.$pagination.find('.page-pre'); $next = this.$pagination.find('.page-next'); $number = this.$pagination.find('.page-item').not('.page-next, .page-pre, .page-last-separator, .page-first-separator'); if (this.totalPages <= 1) { this.$pagination.find('div.pagination').hide(); } if (o.smartDisplay) { if (pageList.length < 2 || o.totalRows <= pageList[0]) { this.$pagination.find('span.page-list').hide(); } } // when data is empty, hide the pagination this.$pagination[this.getData().length ? 'show' : 'hide'](); if (!o.paginationLoop) { if (o.pageNumber === 1) { $pre.addClass('disabled'); } if (o.pageNumber === this.totalPages) { $next.addClass('disabled'); } } if ($allSelected) { o.pageSize = o.formatAllRows(); } // removed the events for last and first, onPageNumber executeds the same logic $pageList.off('click').on('click', function (e) { return _this6.onPageListChange(e); }); $pre.off('click').on('click', function (e) { return _this6.onPagePre(e); }); $next.off('click').on('click', function (e) { return _this6.onPageNext(e); }); $number.off('click').on('click', function (e) { return _this6.onPageNumber(e); }); } } }, { key: "updatePagination", value: function updatePagination(event) { // Fix #171: IE disabled button can be clicked bug. if (event && $(event.currentTarget).hasClass('disabled')) { return; } if (!this.options.maintainMetaData) { this.resetRows(); } this.initPagination(); if (this.options.sidePagination === 'server') { this.initServer(); } else { this.initBody(); } this.trigger('page-change', this.options.pageNumber, this.options.pageSize); } }, { key: "onPageListChange", value: function onPageListChange(event) { event.preventDefault(); var $this = $(event.currentTarget); $this.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive); this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ? this.options.formatAllRows() : +$this.text(); this.$toolbar.find('.page-size').text(this.options.pageSize); this.updatePagination(event); return false; } }, { key: "onPagePre", value: function onPagePre(event) { event.preventDefault(); if (this.options.pageNumber - 1 === 0) { this.options.pageNumber = this.options.totalPages; } else { this.options.pageNumber--; } this.updatePagination(event); return false; } }, { key: "onPageNext", value: function onPageNext(event) { event.preventDefault(); if (this.options.pageNumber + 1 > this.options.totalPages) { this.options.pageNumber = 1; } else { this.options.pageNumber++; } this.updatePagination(event); return false; } }, { key: "onPageNumber", value: function onPageNumber(event) { event.preventDefault(); if (this.options.pageNumber === +$(event.currentTarget).text()) { return; } this.options.pageNumber = +$(event.currentTarget).text(); this.updatePagination(event); return false; } }, { key: "initRow", value: function initRow(item, i, data, trFragments) { var _this7 = this; var html = []; var style = {}; var csses = []; var data_ = ''; var attributes = {}; var htmlAttributes = []; if (Utils.findIndex(this.hiddenRows, item) > -1) { return; } style = Utils.calculateObjectValue(this.options, this.options.rowStyle, [item, i], style); if (style && style.css) { for (var _i2 = 0, _Object$entries = Object.entries(style.css); _i2 < _Object$entries.length; _i2++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2), key = _Object$entries$_i[0], value = _Object$entries$_i[1]; csses.push("".concat(key, ": ").concat(value)); } } attributes = Utils.calculateObjectValue(this.options, this.options.rowAttributes, [item, i], attributes); if (attributes) { for (var _i3 = 0, _Object$entries2 = Object.entries(attributes); _i3 < _Object$entries2.length; _i3++) { var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2), key = _Object$entries2$_i[0], value = _Object$entries2$_i[1]; htmlAttributes.push("".concat(key, "=\"").concat(Utils.escapeHTML(value), "\"")); } } if (item._data && !Utils.isEmptyObject(item._data)) { for (var _i4 = 0, _Object$entries3 = Object.entries(item._data); _i4 < _Object$entries3.length; _i4++) { var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i4], 2), k = _Object$entries3$_i[0], v = _Object$entries3$_i[1]; // ignore data-index if (k === 'index') { return; } data_ += " data-".concat(k, "='").concat(_typeof(v) === 'object' ? JSON.stringify(v) : v, "'"); } } html.push(''); if (this.options.cardView) { html.push("
    ")); } if (!this.options.cardView && this.options.detailView && this.options.detailViewIcon) { html.push(''); if (Utils.calculateObjectValue(null, this.options.detailFilter, [i, item])) { html.push("\n \n ".concat(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.detailOpen), "\n \n ")); } html.push(''); } this.header.fields.forEach(function (field, j) { var text = ''; var value_ = Utils.getItemField(item, field, _this7.options.escape); var value = ''; var type = ''; var cellStyle = {}; var id_ = ''; var class_ = _this7.header.classes[j]; var style_ = ''; var data_ = ''; var rowspan_ = ''; var colspan_ = ''; var title_ = ''; var column = _this7.columns[j]; if (_this7.fromHtml && typeof value_ === 'undefined') { if (!column.checkbox && !column.radio) { return; } } if (!column.visible) { return; } if (_this7.options.cardView && !column.cardVisible) { return; } if (column.escape) { value_ = Utils.escapeHTML(value_); } if (csses.concat([_this7.header.styles[j]]).length) { style_ = " style=\"".concat(csses.concat([_this7.header.styles[j]]).join('; '), "\""); } // handle td's id and class if (item["_".concat(field, "_id")]) { id_ = Utils.sprintf(' id="%s"', item["_".concat(field, "_id")]); } if (item["_".concat(field, "_class")]) { class_ = Utils.sprintf(' class="%s"', item["_".concat(field, "_class")]); } if (item["_".concat(field, "_rowspan")]) { rowspan_ = Utils.sprintf(' rowspan="%s"', item["_".concat(field, "_rowspan")]); } if (item["_".concat(field, "_colspan")]) { colspan_ = Utils.sprintf(' colspan="%s"', item["_".concat(field, "_colspan")]); } if (item["_".concat(field, "_title")]) { title_ = Utils.sprintf(' title="%s"', item["_".concat(field, "_title")]); } cellStyle = Utils.calculateObjectValue(_this7.header, _this7.header.cellStyles[j], [value_, item, i, field], cellStyle); if (cellStyle.classes) { class_ = " class=\"".concat(cellStyle.classes, "\""); } if (cellStyle.css) { var csses_ = []; for (var _i5 = 0, _Object$entries4 = Object.entries(cellStyle.css); _i5 < _Object$entries4.length; _i5++) { var _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2), key = _Object$entries4$_i[0], _value = _Object$entries4$_i[1]; csses_.push("".concat(key, ": ").concat(_value)); } style_ = " style=\"".concat(csses_.concat(_this7.header.styles[j]).join('; '), "\""); } value = Utils.calculateObjectValue(column, _this7.header.formatters[j], [value_, item, i, field], value_); if (item["_".concat(field, "_data")] && !Utils.isEmptyObject(item["_".concat(field, "_data")])) { for (var _i6 = 0, _Object$entries5 = Object.entries(item["_".concat(field, "_data")]); _i6 < _Object$entries5.length; _i6++) { var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2), k = _Object$entries5$_i[0], v = _Object$entries5$_i[1]; // ignore data-index if (k === 'index') { return; } data_ += " data-".concat(k, "=\"").concat(v, "\""); } } if (column.checkbox || column.radio) { type = column.checkbox ? 'checkbox' : type; type = column.radio ? 'radio' : type; var c = column['class'] || ''; var isChecked = (value === true || value_ || value && value.checked) && value !== false; var isDisabled = !column.checkboxEnabled || value && value.disabled; text = [_this7.options.cardView ? "
    ") : ""), ""), _this7.header.formatters[j] && typeof value === 'string' ? value : '', _this7.options.cardView ? '
    ' : ''].join(''); item[_this7.header.stateField] = value === true || !!value_ || value && value.checked; } else { value = typeof value === 'undefined' || value === null ? _this7.options.undefinedText : value; if (_this7.options.cardView) { var cardTitle = _this7.options.showHeader ? "").concat(Utils.getFieldTitle(_this7.columns, field), "") : ''; text = "
    ".concat(cardTitle, "").concat(value, "
    "); if (_this7.options.smartDisplay && value === '') { text = '
    '; } } else { text = "").concat(value, ""); } } html.push(text); }); if (this.options.cardView) { html.push('
    '); } html.push(''); return html.join(''); } }, { key: "initBody", value: function initBody(fixedScroll) { var _this8 = this; var data = this.getData(); this.trigger('pre-body', data); this.$body = this.$el.find('>tbody'); if (!this.$body.length) { this.$body = $('').appendTo(this.$el); } // Fix #389 Bootstrap-table-flatJSON is not working if (!this.options.pagination || this.options.sidePagination === 'server') { this.pageFrom = 1; this.pageTo = data.length; } var rows = []; var trFragments = $(document.createDocumentFragment()); var hasTr = false; for (var i = this.pageFrom - 1; i < this.pageTo; i++) { var item = data[i]; var tr = this.initRow(item, i, data, trFragments); hasTr = hasTr || !!tr; if (tr && typeof tr === 'string') { if (!this.options.virtualScroll) { trFragments.append(tr); } else { rows.push(tr); } } } // show no records if (!hasTr) { this.$body.html("".concat(Utils.sprintf('%s', this.$header.find('th').length, this.options.formatNoMatches()), "")); } else { if (!this.options.virtualScroll) { this.$body.html(trFragments); } else { if (this.virtualScroll) { this.virtualScroll.destroy(); } this.virtualScroll = new VirtualScroll({ rows: rows, fixedScroll: fixedScroll, scrollEl: this.$tableBody[0], contentEl: this.$body[0], itemHeight: this.options.virtualScrollItemHeight, callback: function callback() { _this8.fitHeader(); _this8.initBodyEvent(); } }); } } if (!fixedScroll) { this.scrollTo(0); } this.initBodyEvent(); this.updateSelected(); this.initFooter(); this.resetView(); if (this.options.sidePagination !== 'server') { this.options.totalRows = data.length; } this.trigger('post-body', data); } }, { key: "initBodyEvent", value: function initBodyEvent() { var _this9 = this; // click to select by column this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) { var $td = $(e.currentTarget); var $tr = $td.parent(); var $cardViewArr = $(e.target).parents('.card-views').children(); var $cardViewTarget = $(e.target).parents('.card-view'); var rowIndex = $tr.data('index'); var item = _this9.data[rowIndex]; var index = _this9.options.cardView ? $cardViewArr.index($cardViewTarget) : $td[0].cellIndex; var fields = _this9.getVisibleFields(); var field = fields[_this9.options.detailView && _this9.options.detailViewIcon && !_this9.options.cardView ? index - 1 : index]; var column = _this9.columns[_this9.fieldsColumnsIndex[field]]; var value = Utils.getItemField(item, field, _this9.options.escape); if ($td.find('.detail-icon').length) { return; } _this9.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td); _this9.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr, field); // if click to select - then trigger the checkbox/radio click if (e.type === 'click' && _this9.options.clickToSelect && column.clickToSelect && !Utils.calculateObjectValue(_this9.options, _this9.options.ignoreClickToSelectOn, [e.target])) { var $selectItem = $tr.find(Utils.sprintf('[name="%s"]', _this9.options.selectItemName)); if ($selectItem.length) { $selectItem[0].click(); } } if (e.type === 'click' && _this9.options.detailViewByClick) { _this9.toggleDetailView(rowIndex, _this9.header.detailFormatters[_this9.fieldsColumnsIndex[field]]); } }).off('mousedown').on('mousedown', function (e) { // https://github.com/jquery/jquery/issues/1741 _this9.multipleSelectRowCtrlKey = e.ctrlKey || e.metaKey; _this9.multipleSelectRowShiftKey = e.shiftKey; }); this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function (e) { e.preventDefault(); _this9.toggleDetailView($(e.currentTarget).parent().parent().data('index')); return false; }); this.$selectItem = this.$body.find(Utils.sprintf('[name="%s"]', this.options.selectItemName)); this.$selectItem.off('click').on('click', function (e) { e.stopImmediatePropagation(); var $this = $(e.currentTarget); _this9._toggleCheck($this.prop('checked'), $this.data('index')); }); this.header.events.forEach(function (_events, i) { var events = _events; if (!events) { return; } // fix bug, if events is defined with namespace if (typeof events === 'string') { events = Utils.calculateObjectValue(null, events); } var field = _this9.header.fields[i]; var fieldIndex = _this9.getVisibleFields().indexOf(field); if (fieldIndex === -1) { return; } if (_this9.options.detailView && !_this9.options.cardView) { fieldIndex += 1; } var _loop = function _loop(key) { if (!events.hasOwnProperty(key)) { return "continue"; } var event = events[key]; _this9.$body.find('>tr:not(.no-records-found)').each(function (i, tr) { var $tr = $(tr); var $td = $tr.find(_this9.options.cardView ? '.card-views>.card-view' : '>td').eq(fieldIndex); var index = key.indexOf(' '); var name = key.substring(0, index); var el = key.substring(index + 1); $td.find(el).off(name).on(name, function (e) { var index = $tr.data('index'); var row = _this9.data[index]; var value = row[field]; event.apply(_this9, [e, value, row, index]); }); }); }; for (var key in events) { var _ret = _loop(key); if (_ret === "continue") continue; } }); } }, { key: "initServer", value: function initServer(silent, query, url) { var _this10 = this; var data = {}; var index = this.header.fields.indexOf(this.options.sortName); var params = { searchText: this.searchText, sortName: this.options.sortName, sortOrder: this.options.sortOrder }; if (this.header.sortNames[index]) { params.sortName = this.header.sortNames[index]; } if (this.options.pagination && this.options.sidePagination === 'server') { params.pageSize = this.options.pageSize === this.options.formatAllRows() ? this.options.totalRows : this.options.pageSize; params.pageNumber = this.options.pageNumber; } if (!(url || this.options.url) && !this.options.ajax) { return; } if (this.options.queryParamsType === 'limit') { params = { search: params.searchText, sort: params.sortName, order: params.sortOrder }; if (this.options.pagination && this.options.sidePagination === 'server') { params.offset = this.options.pageSize === this.options.formatAllRows() ? 0 : this.options.pageSize * (this.options.pageNumber - 1); params.limit = this.options.pageSize === this.options.formatAllRows() ? this.options.totalRows : this.options.pageSize; if (params.limit === 0) { delete params.limit; } } } if (!Utils.isEmptyObject(this.filterColumnsPartial)) { params.filter = JSON.stringify(this.filterColumnsPartial, null); } $.extend(params, query || {}); data = Utils.calculateObjectValue(this.options, this.options.queryParams, [params], data); // false to stop request if (data === false) { return; } if (!silent) { this.showLoading(); } var request = $.extend({}, Utils.calculateObjectValue(null, this.options.ajaxOptions), { type: this.options.method, url: url || this.options.url, data: this.options.contentType === 'application/json' && this.options.method === 'post' ? JSON.stringify(data) : data, cache: this.options.cache, contentType: this.options.contentType, dataType: this.options.dataType, success: function success(_res, textStatus, jqXHR) { var res = Utils.calculateObjectValue(_this10.options, _this10.options.responseHandler, [_res, jqXHR], _res); _this10.load(res); _this10.trigger('load-success', res, jqXHR.status, jqXHR); if (!silent) { _this10.hideLoading(); } }, error: function error(jqXHR) { var data = []; if (_this10.options.sidePagination === 'server') { data = {}; data[_this10.options.totalField] = 0; data[_this10.options.dataField] = []; } _this10.load(data); _this10.trigger('load-error', jqXHR.status, jqXHR); if (!silent) _this10.$tableLoading.hide(); } }); if (this.options.ajax) { Utils.calculateObjectValue(this, this.options.ajax, [request], null); } else { if (this._xhr && this._xhr.readyState !== 4) { this._xhr.abort(); } this._xhr = $.ajax(request); } return data; } }, { key: "initSearchText", value: function initSearchText() { if (this.options.search) { this.searchText = ''; if (this.options.searchText !== '') { var $search = this.$toolbar.find('.search input'); $search.val(this.options.searchText); this.onSearch({ currentTarget: $search, firedByInitSearchText: true }); } } } }, { key: "getCaret", value: function getCaret() { var _this11 = this; this.$header.find('th').each(function (i, th) { $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === _this11.options.sortName ? _this11.options.sortOrder : 'both'); }); } }, { key: "updateSelected", value: function updateSelected() { var checkAll = this.$selectItem.filter(':enabled').length && this.$selectItem.filter(':enabled').length === this.$selectItem.filter(':enabled').filter(':checked').length; this.$selectAll.add(this.$selectAll_).prop('checked', checkAll); this.$selectItem.each(function (i, el) { $(el).closest('tr')[$(el).prop('checked') ? 'addClass' : 'removeClass']('selected'); }); } }, { key: "updateRows", value: function updateRows() { var _this12 = this; this.$selectItem.each(function (i, el) { _this12.data[$(el).data('index')][_this12.header.stateField] = $(el).prop('checked'); }); } }, { key: "resetRows", value: function resetRows() { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = this.data[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var row = _step2.value; this.$selectAll.prop('checked', false); this.$selectItem.prop('checked', false); if (this.header.stateField) { row[this.header.stateField] = false; } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return != null) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } this.initHiddenRows(); } }, { key: "trigger", value: function trigger(_name) { var _this$options; var name = "".concat(_name, ".bs.table"); for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) { args[_key2 - 1] = arguments[_key2]; } (_this$options = this.options)[BootstrapTable.EVENTS[name]].apply(_this$options, args); this.$el.trigger($.Event(name), args); this.options.onAll(name, args); this.$el.trigger($.Event('all.bs.table'), [name, args]); } }, { key: "resetHeader", value: function resetHeader() { var _this13 = this; // fix #61: the hidden table reset header bug. // fix bug: get $el.css('width') error sometime (height = 500) clearTimeout(this.timeoutId_); this.timeoutId_ = setTimeout(function () { return _this13.fitHeader(); }, this.$el.is(':hidden') ? 100 : 0); } }, { key: "fitHeader", value: function fitHeader() { var _this14 = this; if (this.$el.is(':hidden')) { this.timeoutId_ = setTimeout(function () { return _this14.fitHeader(); }, 100); return; } var fixedBody = this.$tableBody.get(0); var scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth && fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ? Utils.getScrollBarWidth() : 0; this.$el.css('margin-top', -this.$header.outerHeight()); var focused = $(':focus'); if (focused.length > 0) { var $th = focused.parents('th'); if ($th.length > 0) { var dataField = $th.attr('data-field'); if (dataField !== undefined) { var $headerTh = this.$header.find("[data-field='".concat(dataField, "']")); if ($headerTh.length > 0) { $headerTh.find(':input').addClass('focus-temp'); } } } } this.$header_ = this.$header.clone(true, true); this.$selectAll_ = this.$header_.find('[name="btSelectAll"]'); this.$tableHeader.css('margin-right', scrollWidth).find('table').css('width', this.$el.outerWidth()).html('').attr('class', this.$el.attr('class')).append(this.$header_); this.$tableLoading.css('width', this.$el.outerWidth()); var focusedTemp = $('.focus-temp:visible:eq(0)'); if (focusedTemp.length > 0) { focusedTemp.focus(); this.$header.find('.focus-temp').removeClass('focus-temp'); } // fix bug: $.data() is not working as expected after $.append() this.$header.find('th[data-field]').each(function (i, el) { _this14.$header_.find(Utils.sprintf('th[data-field="%s"]', $(el).data('field'))).data($(el).data()); }); var visibleFields = this.getVisibleFields(); var $ths = this.$header_.find('th'); var $tr = this.$body.find('>tr:not(.no-records-found,.virtual-scroll-top)').eq(0); while ($tr.length && $tr.find('>td[colspan]:not([colspan="1"])').length) { $tr = $tr.next(); } $tr.find('> *').each(function (i, el) { var $this = $(el); var index = i; if (_this14.options.detailView && _this14.options.detailViewIcon && !_this14.options.cardView) { if (i === 0) { var $thDetail = $ths.filter('.detail'); var _zoomWidth = $thDetail.innerWidth() - $thDetail.find('.fht-cell').width(); $thDetail.find('.fht-cell').width($this.innerWidth() - _zoomWidth); } index = i - 1; } if (index === -1) { return; } var $th = _this14.$header_.find(Utils.sprintf('th[data-field="%s"]', visibleFields[index])); if ($th.length > 1) { $th = $($ths[$this[0].cellIndex]); } var zoomWidth = $th.innerWidth() - $th.find('.fht-cell').width(); $th.find('.fht-cell').width($this.innerWidth() - zoomWidth); }); this.horizontalScroll(); this.trigger('post-header'); } }, { key: "initFooter", value: function initFooter() { if (!this.options.showFooter || this.options.cardView) { // do nothing return; } var data = this.getData(); var html = []; if (!this.options.cardView && this.options.detailView && this.options.detailViewIcon) { html.push('
    '); } var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = this.columns[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var column = _step3.value; var falign = ''; var valign = ''; var csses = []; var style = {}; var class_ = Utils.sprintf(' class="%s"', column['class']); if (!column.visible) { continue; } if (this.options.cardView && !column.cardVisible) { return; } falign = Utils.sprintf('text-align: %s; ', column.falign ? column.falign : column.align); valign = Utils.sprintf('vertical-align: %s; ', column.valign); style = Utils.calculateObjectValue(null, this.options.footerStyle, [column]); if (style && style.css) { for (var _i7 = 0, _Object$entries6 = Object.entries(style.css); _i7 < _Object$entries6.length; _i7++) { var _Object$entries6$_i = _slicedToArray(_Object$entries6[_i7], 2), key = _Object$entries6$_i[0], value = _Object$entries6$_i[1]; csses.push("".concat(key, ": ").concat(value)); } } if (style && style.classes) { class_ = Utils.sprintf(' class="%s"', column['class'] ? [column['class'], style.classes].join(' ') : style.classes); } html.push(''); html.push('
    '); html.push(Utils.calculateObjectValue(column, column.footerFormatter, [data], this.footerData[0] && this.footerData[0][column.field] || '')); html.push('
    '); html.push('
    '); html.push('
    '); html.push(''); } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return != null) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } this.$tableFooter.find('tr').html(html.join('')); this.trigger('post-footer', this.$tableFooter); } }, { key: "fitFooter", value: function fitFooter() { var _this15 = this; if (this.$el.is(':hidden')) { setTimeout(function () { return _this15.fitFooter(); }, 100); return; } var fixedBody = this.$tableBody.get(0); var scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth && fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ? Utils.getScrollBarWidth() : 0; this.$tableFooter.css('margin-right', scrollWidth).find('table').css('width', this.$el.outerWidth()).attr('class', this.$el.attr('class')); var visibleFields = this.getVisibleFields(); var $ths = this.$tableFooter.find('th'); var $tr = this.$body.find('>tr:first-child:not(.no-records-found)'); while ($tr.length && $tr.find('>td[colspan]:not([colspan="1"])').length) { $tr = $tr.next(); } $tr.find('> *').each(function (i, el) { var $this = $(el); var index = i; if (_this15.options.detailView && !_this15.options.cardView) { if (i === 0) { var $thDetail = $ths.filter('.detail'); var _zoomWidth2 = $thDetail.innerWidth() - $thDetail.find('.fht-cell').width(); $thDetail.find('.fht-cell').width($this.innerWidth() - _zoomWidth2); } index = i - 1; } if (index === -1) { return; } var $th = $ths.eq(i); var zoomWidth = $th.innerWidth() - $th.find('.fht-cell').width(); $th.find('.fht-cell').width($this.innerWidth() - zoomWidth); }); this.horizontalScroll(); } }, { key: "horizontalScroll", value: function horizontalScroll() { var _this16 = this; // horizontal scroll event // TODO: it's probably better improving the layout than binding to scroll event this.$tableBody.off('scroll').on('scroll', function (_ref6) { var currentTarget = _ref6.currentTarget; if (_this16.options.showHeader && _this16.options.height) { _this16.$tableHeader.scrollLeft($(currentTarget).scrollLeft()); } if (_this16.options.showFooter && !_this16.options.cardView) { _this16.$tableFooter.scrollLeft($(currentTarget).scrollLeft()); } _this16.trigger('scroll-body', $(currentTarget)); }); } }, { key: "getVisibleFields", value: function getVisibleFields() { var visibleFields = []; var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = this.header.fields[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var field = _step4.value; var column = this.columns[this.fieldsColumnsIndex[field]]; if (!column || !column.visible) { continue; } visibleFields.push(field); } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4.return != null) { _iterator4.return(); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } return visibleFields; } }, { key: "initHiddenRows", value: function initHiddenRows() { this.hiddenRows = []; } // PUBLIC FUNCTION DEFINITION // ======================= }, { key: "getOptions", value: function getOptions() { // deep copy and remove data var options = $.extend({}, this.options); delete options.data; return $.extend(true, {}, options); } }, { key: "refreshOptions", value: function refreshOptions(options) { // If the objects are equivalent then avoid the call of destroy / init methods if (Utils.compareObjects(this.options, options, true)) { return; } this.options = $.extend(this.options, options); this.trigger('refresh-options', this.options); this.destroy(); this.init(); } }, { key: "getData", value: function getData(params) { var data = this.options.data; if (this.searchText || this.options.sortName || !Utils.isEmptyObject(this.filterColumns) || !Utils.isEmptyObject(this.filterColumnsPartial)) { data = this.data; } if (params && params.useCurrentPage) { data = data.slice(this.pageFrom - 1, this.pageTo); } if (params && !params.includeHiddenRows) { var hiddenRows = this.getHiddenRows(); data = data.filter(function (row) { return Utils.findIndex(hiddenRows, row) === -1; }); } return data; } }, { key: "getSelections", value: function getSelections() { var _this17 = this; // fix #2424: from html with checkbox return this.data.filter(function (row) { return row[_this17.header.stateField] === true; }); } }, { key: "getAllSelections", value: function getAllSelections() { var _this18 = this; return this.options.data.filter(function (row) { return row[_this18.header.stateField] === true; }); } }, { key: "load", value: function load(_data) { var fixedScroll = false; var data = _data; // #431: support pagination if (this.options.pagination && this.options.sidePagination === 'server') { this.options.totalRows = data[this.options.totalField]; } if (this.options.pagination && this.options.sidePagination === 'server') { this.options.totalNotFiltered = data[this.options.totalNotFilteredField]; } fixedScroll = data.fixedScroll; data = Array.isArray(data) ? data : data[this.options.dataField]; this.initData(data); this.initSearch(); this.initPagination(); this.initBody(fixedScroll); } }, { key: "append", value: function append(data) { this.initData(data, 'append'); this.initSearch(); this.initPagination(); this.initSort(); this.initBody(true); } }, { key: "prepend", value: function prepend(data) { this.initData(data, 'prepend'); this.initSearch(); this.initPagination(); this.initSort(); this.initBody(true); } }, { key: "remove", value: function remove(params) { var len = this.options.data.length; var i; var row; if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) { return; } for (i = len - 1; i >= 0; i--) { row = this.options.data[i]; if (!row.hasOwnProperty(params.field)) { continue; } if (params.values.includes(row[params.field])) { this.options.data.splice(i, 1); if (this.options.sidePagination === 'server') { this.options.totalRows -= 1; } } } if (len === this.options.data.length) { return; } this.initSearch(); this.initPagination(); this.initSort(); this.initBody(true); } }, { key: "removeAll", value: function removeAll() { if (this.options.data.length > 0) { this.options.data.splice(0, this.options.data.length); this.initSearch(); this.initPagination(); this.initBody(true); } } }, { key: "insertRow", value: function insertRow(params) { if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) { return; } this.options.data.splice(params.index, 0, params.row); this.initSearch(); this.initPagination(); this.initSort(); this.initBody(true); } }, { key: "updateRow", value: function updateRow(params) { var allParams = Array.isArray(params) ? params : [params]; var _iteratorNormalCompletion5 = true; var _didIteratorError5 = false; var _iteratorError5 = undefined; try { for (var _iterator5 = allParams[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { var _params = _step5.value; if (!_params.hasOwnProperty('index') || !_params.hasOwnProperty('row')) { continue; } $.extend(this.options.data[_params.index], _params.row); if (_params.hasOwnProperty('replace') && _params.replace) { this.options.data[_params.index] = _params.row; } else { $.extend(this.options.data[_params.index], _params.row); } } } catch (err) { _didIteratorError5 = true; _iteratorError5 = err; } finally { try { if (!_iteratorNormalCompletion5 && _iterator5.return != null) { _iterator5.return(); } } finally { if (_didIteratorError5) { throw _iteratorError5; } } } this.initSearch(); this.initPagination(); this.initSort(); this.initBody(true); } }, { key: "getRowByUniqueId", value: function getRowByUniqueId(_id) { var uniqueId = this.options.uniqueId; var len = this.options.data.length; var id = _id; var dataRow = null; var i; var row; var rowUniqueId; for (i = len - 1; i >= 0; i--) { row = this.options.data[i]; if (row.hasOwnProperty(uniqueId)) { // uniqueId is a column rowUniqueId = row[uniqueId]; } else if (row._data && row._data.hasOwnProperty(uniqueId)) { // uniqueId is a row data property rowUniqueId = row._data[uniqueId]; } else { continue; } if (typeof rowUniqueId === 'string') { id = id.toString(); } else if (typeof rowUniqueId === 'number') { if (Number(rowUniqueId) === rowUniqueId && rowUniqueId % 1 === 0) { id = parseInt(id); } else if (rowUniqueId === Number(rowUniqueId) && rowUniqueId !== 0) { id = parseFloat(id); } } if (rowUniqueId === id) { dataRow = row; break; } } return dataRow; } }, { key: "updateByUniqueId", value: function updateByUniqueId(params) { var allParams = Array.isArray(params) ? params : [params]; var _iteratorNormalCompletion6 = true; var _didIteratorError6 = false; var _iteratorError6 = undefined; try { for (var _iterator6 = allParams[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { var _params2 = _step6.value; if (!_params2.hasOwnProperty('id') || !_params2.hasOwnProperty('row')) { continue; } var rowId = this.options.data.indexOf(this.getRowByUniqueId(_params2.id)); if (rowId === -1) { continue; } if (_params2.hasOwnProperty('replace') && _params2.replace) { this.options.data[rowId] = _params2.row; } else { $.extend(this.options.data[rowId], _params2.row); } } } catch (err) { _didIteratorError6 = true; _iteratorError6 = err; } finally { try { if (!_iteratorNormalCompletion6 && _iterator6.return != null) { _iterator6.return(); } } finally { if (_didIteratorError6) { throw _iteratorError6; } } } this.initSearch(); this.initPagination(); this.initSort(); this.initBody(true); } }, { key: "removeByUniqueId", value: function removeByUniqueId(id) { var len = this.options.data.length; var row = this.getRowByUniqueId(id); if (row) { this.options.data.splice(this.options.data.indexOf(row), 1); } if (len === this.options.data.length) { return; } this.initSearch(); this.initPagination(); this.initBody(true); } }, { key: "updateCell", value: function updateCell(params) { if (!params.hasOwnProperty('index') || !params.hasOwnProperty('field') || !params.hasOwnProperty('value')) { return; } this.data[params.index][params.field] = params.value; if (params.reinit === false) { return; } this.initSort(); this.initBody(true); } }, { key: "updateCellByUniqueId", value: function updateCellByUniqueId(params) { var _this19 = this; if (!params.hasOwnProperty('id') || !params.hasOwnProperty('field') || !params.hasOwnProperty('value')) { return; } var allParams = Array.isArray(params) ? params : [params]; allParams.forEach(function (_ref7) { var id = _ref7.id, field = _ref7.field, value = _ref7.value; var rowId = _this19.options.data.indexOf(_this19.getRowByUniqueId(id)); if (rowId === -1) { return; } _this19.options.data[rowId][field] = value; }); if (params.reinit === false) { return; } this.initSort(); this.initBody(true); } }, { key: "showRow", value: function showRow(params) { this._toggleRow(params, true); } }, { key: "hideRow", value: function hideRow(params) { this._toggleRow(params, false); } }, { key: "_toggleRow", value: function _toggleRow(params, visible) { var row; if (params.hasOwnProperty('index')) { row = this.getData()[params.index]; } else if (params.hasOwnProperty('uniqueId')) { row = this.getRowByUniqueId(params.uniqueId); } if (!row) { return; } var index = Utils.findIndex(this.hiddenRows, row); if (!visible && index === -1) { this.hiddenRows.push(row); } else if (visible && index > -1) { this.hiddenRows.splice(index, 1); } if (visible) { this.updatePagination(); } else { this.initBody(true); this.initPagination(); } } }, { key: "getHiddenRows", value: function getHiddenRows(show) { if (show) { this.initHiddenRows(); this.initBody(true); return; } var data = this.getData(); var rows = []; var _iteratorNormalCompletion7 = true; var _didIteratorError7 = false; var _iteratorError7 = undefined; try { for (var _iterator7 = data[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { var row = _step7.value; if (this.hiddenRows.includes(row)) { rows.push(row); } } } catch (err) { _didIteratorError7 = true; _iteratorError7 = err; } finally { try { if (!_iteratorNormalCompletion7 && _iterator7.return != null) { _iterator7.return(); } } finally { if (_didIteratorError7) { throw _iteratorError7; } } } this.hiddenRows = rows; return rows; } }, { key: "showColumn", value: function showColumn(field) { var _this20 = this; var fields = Array.isArray(field) ? field : [field]; fields.forEach(function (field) { _this20._toggleColumn(_this20.fieldsColumnsIndex[field], true, true); }); } }, { key: "hideColumn", value: function hideColumn(field) { var _this21 = this; var fields = Array.isArray(field) ? field : [field]; fields.forEach(function (field) { _this21._toggleColumn(_this21.fieldsColumnsIndex[field], false, true); }); } }, { key: "_toggleColumn", value: function _toggleColumn(index, checked, needUpdate) { if (index === -1 || this.columns[index].visible === checked) { return; } this.columns[index].visible = checked; this.initHeader(); this.initSearch(); this.initPagination(); this.initBody(); if (this.options.showColumns) { var $items = this.$toolbar.find('.keep-open input').prop('disabled', false); if (needUpdate) { $items.filter(Utils.sprintf('[value="%s"]', index)).prop('checked', checked); } if ($items.filter(':checked').length <= this.options.minimumCountColumns) { $items.filter(':checked').prop('disabled', true); } } } }, { key: "getVisibleColumns", value: function getVisibleColumns() { return this.columns.filter(function (_ref8) { var visible = _ref8.visible; return visible; }); } }, { key: "getHiddenColumns", value: function getHiddenColumns() { return this.columns.filter(function (_ref9) { var visible = _ref9.visible; return !visible; }); } }, { key: "showAllColumns", value: function showAllColumns() { this._toggleAllColumns(true); } }, { key: "hideAllColumns", value: function hideAllColumns() { this._toggleAllColumns(false); } }, { key: "_toggleAllColumns", value: function _toggleAllColumns(visible) { var _this22 = this; var _iteratorNormalCompletion8 = true; var _didIteratorError8 = false; var _iteratorError8 = undefined; try { for (var _iterator8 = this.columns.slice().reverse()[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { var column = _step8.value; if (column.switchable) { if (!visible && this.options.showColumns && this.getVisibleColumns().length === this.options.minimumCountColumns) { continue; } column.visible = visible; } } } catch (err) { _didIteratorError8 = true; _iteratorError8 = err; } finally { try { if (!_iteratorNormalCompletion8 && _iterator8.return != null) { _iterator8.return(); } } finally { if (_didIteratorError8) { throw _iteratorError8; } } } this.initHeader(); this.initSearch(); this.initPagination(); this.initBody(); if (this.options.showColumns) { var $items = this.$toolbar.find('.keep-open input:not(".toggle-all")').prop('disabled', false); if (visible) { $items.prop('checked', visible); } else { $items.get().reverse().forEach(function (item) { if ($items.filter(':checked').length > _this22.options.minimumCountColumns) { $(item).prop('checked', visible); } }); } if ($items.filter(':checked').length <= this.options.minimumCountColumns) { $items.filter(':checked').prop('disabled', true); } } } }, { key: "mergeCells", value: function mergeCells(options) { var row = options.index; var col = this.getVisibleFields().indexOf(options.field); var rowspan = options.rowspan || 1; var colspan = options.colspan || 1; var i; var j; var $tr = this.$body.find('>tr'); if (this.options.detailView && !this.options.cardView) { col += 1; } var $td = $tr.eq(row).find('>td').eq(col); if (row < 0 || col < 0 || row >= this.data.length) { return; } for (i = row; i < row + rowspan; i++) { for (j = col; j < col + colspan; j++) { $tr.eq(i).find('>td').eq(j).hide(); } } $td.attr('rowspan', rowspan).attr('colspan', colspan).show(); } }, { key: "checkAll", value: function checkAll() { this._toggleCheckAll(true); } }, { key: "uncheckAll", value: function uncheckAll() { this._toggleCheckAll(false); } }, { key: "_toggleCheckAll", value: function _toggleCheckAll(checked) { var rowsBefore = this.getSelections(); this.$selectAll.add(this.$selectAll_).prop('checked', checked); this.$selectItem.filter(':enabled').prop('checked', checked); this.updateRows(); var rowsAfter = this.getSelections(); if (checked) { this.trigger('check-all', rowsAfter, rowsBefore); return; } this.trigger('uncheck-all', rowsAfter, rowsBefore); } }, { key: "checkInvert", value: function checkInvert() { var $items = this.$selectItem.filter(':enabled'); var checked = $items.filter(':checked'); $items.each(function (i, el) { $(el).prop('checked', !$(el).prop('checked')); }); this.updateRows(); this.updateSelected(); this.trigger('uncheck-some', checked); checked = this.getSelections(); this.trigger('check-some', checked); } }, { key: "check", value: function check(index) { this._toggleCheck(true, index); } }, { key: "uncheck", value: function uncheck(index) { this._toggleCheck(false, index); } }, { key: "_toggleCheck", value: function _toggleCheck(checked, index) { var $el = this.$selectItem.filter("[data-index=\"".concat(index, "\"]")); var row = this.data[index]; if ($el.is(':radio') || this.options.singleSelect || this.options.multipleSelectRow && !this.multipleSelectRowCtrlKey && !this.multipleSelectRowShiftKey) { var _iteratorNormalCompletion9 = true; var _didIteratorError9 = false; var _iteratorError9 = undefined; try { for (var _iterator9 = this.options.data[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) { var r = _step9.value; r[this.header.stateField] = false; } } catch (err) { _didIteratorError9 = true; _iteratorError9 = err; } finally { try { if (!_iteratorNormalCompletion9 && _iterator9.return != null) { _iterator9.return(); } } finally { if (_didIteratorError9) { throw _iteratorError9; } } } this.$selectItem.filter(':checked').not($el).prop('checked', false); } row[this.header.stateField] = checked; if (this.options.multipleSelectRow) { if (this.multipleSelectRowShiftKey && this.multipleSelectRowLastSelectedIndex >= 0) { var indexes = [this.multipleSelectRowLastSelectedIndex, index].sort(); for (var i = indexes[0] + 1; i < indexes[1]; i++) { this.data[i][this.header.stateField] = true; this.$selectItem.filter("[data-index=\"".concat(i, "\"]")).prop('checked', true); } } this.multipleSelectRowCtrlKey = false; this.multipleSelectRowShiftKey = false; this.multipleSelectRowLastSelectedIndex = checked ? index : -1; } $el.prop('checked', checked); this.updateSelected(); this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el); } }, { key: "checkBy", value: function checkBy(obj) { this._toggleCheckBy(true, obj); } }, { key: "uncheckBy", value: function uncheckBy(obj) { this._toggleCheckBy(false, obj); } }, { key: "_toggleCheckBy", value: function _toggleCheckBy(checked, obj) { var _this23 = this; if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) { return; } var rows = []; this.data.forEach(function (row, i) { if (!row.hasOwnProperty(obj.field)) { return false; } if (obj.values.includes(row[obj.field])) { var $el = _this23.$selectItem.filter(':enabled').filter(Utils.sprintf('[data-index="%s"]', i)); $el = checked ? $el.not(':checked') : $el.filter(':checked'); if (!$el.length) { return; } $el.prop('checked', checked); row[_this23.header.stateField] = checked; rows.push(row); _this23.trigger(checked ? 'check' : 'uncheck', row, $el); } }); this.updateSelected(); this.trigger(checked ? 'check-some' : 'uncheck-some', rows); } }, { key: "refresh", value: function refresh(params) { if (params && params.url) { this.options.url = params.url; } if (params && params.pageNumber) { this.options.pageNumber = params.pageNumber; } if (params && params.pageSize) { this.options.pageSize = params.pageSize; } this.trigger('refresh', this.initServer(params && params.silent, params && params.query, params && params.url)); } }, { key: "destroy", value: function destroy() { this.$el.insertBefore(this.$container); $(this.options.toolbar).insertBefore(this.$el); this.$container.next().remove(); this.$container.remove(); this.$el.html(this.$el_.html()).css('margin-top', '0').attr('class', this.$el_.attr('class') || ''); // reset the class } }, { key: "resetView", value: function resetView(params) { var padding = 0; if (params && params.height) { this.options.height = params.height; } this.$selectAll.prop('checked', this.$selectItem.length > 0 && this.$selectItem.length === this.$selectItem.filter(':checked').length); this.$tableContainer.toggleClass('has-card-view', this.options.cardView); if (!this.options.cardView && this.options.showHeader && this.options.height) { this.$tableHeader.show(); this.resetHeader(); padding += this.$header.outerHeight(true) + 1; } else { this.$tableHeader.hide(); this.trigger('post-header'); } if (!this.options.cardView && this.options.showFooter) { this.$tableFooter.show(); this.fitFooter(); if (this.options.height) { padding += this.$tableFooter.outerHeight(true); } } if (this.options.height) { var toolbarHeight = this.$toolbar.outerHeight(true); var paginationHeight = this.$pagination.outerHeight(true); var height = this.options.height - toolbarHeight - paginationHeight; var tableHeight = this.$tableBody.find('table').outerHeight(true); this.$tableContainer.css('height', "".concat(height, "px")); this.$tableBorder && this.$tableBorder.css('height', "".concat(height - tableHeight - padding - 1, "px")); } if (this.options.cardView) { // remove the element css this.$el.css('margin-top', '0'); this.$tableContainer.css('padding-bottom', '0'); this.$tableFooter.hide(); } else { // Assign the correct sortable arrow this.getCaret(); this.$tableContainer.css('padding-bottom', "".concat(padding, "px")); } this.trigger('reset-view'); } }, { key: "resetWidth", value: function resetWidth() { if (this.options.showHeader && this.options.height) { this.fitHeader(); } if (this.options.showFooter && !this.options.cardView) { this.fitFooter(); } } }, { key: "showLoading", value: function showLoading() { this.$tableLoading.css('display', 'flex'); } }, { key: "hideLoading", value: function hideLoading() { this.$tableLoading.css('display', 'none'); } }, { key: "togglePagination", value: function togglePagination() { this.options.pagination = !this.options.pagination; var icon = this.options.showButtonIcons ? this.options.pagination ? this.options.icons.paginationSwitchDown : this.options.icons.paginationSwitchUp : ''; var text = this.options.showButtonText ? this.options.pagination ? this.options.formatPaginationSwitchUp() : this.options.formatPaginationSwitchDown() : ''; this.$toolbar.find('button[name="paginationSwitch"]').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, icon) + ' ' + text); this.updatePagination(); } }, { key: "toggleFullscreen", value: function toggleFullscreen() { this.$el.closest('.bootstrap-table').toggleClass('fullscreen'); this.resetView(); } }, { key: "toggleView", value: function toggleView() { this.options.cardView = !this.options.cardView; this.initHeader(); var icon = this.options.showButtonIcons ? this.options.cardView ? this.options.icons.toggleOn : this.options.icons.toggleOff : ''; var text = this.options.showButtonText ? this.options.cardView ? this.options.formatToggleOff() : this.options.formatToggleOn() : ''; this.$toolbar.find('button[name="toggle"]').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, icon) + ' ' + text); this.initBody(); this.trigger('toggle', this.options.cardView); } }, { key: "resetSearch", value: function resetSearch(text) { var $search = this.$toolbar.find('.search input'); $search.val(text || ''); this.onSearch({ currentTarget: $search }); } }, { key: "filterBy", value: function filterBy(columns, options) { this.filterOptions = Utils.isEmptyObject(options) ? this.options.filterOptions : $.extend(this.options.filterOptions, options); this.filterColumns = Utils.isEmptyObject(columns) ? {} : columns; this.options.pageNumber = 1; this.initSearch(); this.updatePagination(); } }, { key: "scrollTo", value: function scrollTo(params) { if (typeof params === 'undefined') { return this.$tableBody.scrollTop(); } var options = { unit: 'px', value: 0 }; if (_typeof(params) === 'object') { options = Object.assign(options, params); } else if (typeof params === 'string' && params === 'bottom') { options.value = this.$tableBody[0].scrollHeight; } else if (typeof params === 'string') { options.value = params; } var scrollTo = options.value; if (options.unit === 'rows') { scrollTo = 0; this.$body.find("> tr:lt(".concat(options.value, ")")).each(function (i, el) { scrollTo += $(el).outerHeight(true); }); } this.$tableBody.scrollTop(scrollTo); } }, { key: "getScrollPosition", value: function getScrollPosition() { return this.scrollTo(); } }, { key: "selectPage", value: function selectPage(page) { if (page > 0 && page <= this.options.totalPages) { this.options.pageNumber = page; this.updatePagination(); } } }, { key: "prevPage", value: function prevPage() { if (this.options.pageNumber > 1) { this.options.pageNumber--; this.updatePagination(); } } }, { key: "nextPage", value: function nextPage() { if (this.options.pageNumber < this.options.totalPages) { this.options.pageNumber++; this.updatePagination(); } } }, { key: "toggleDetailView", value: function toggleDetailView(index, _columnDetailFormatter) { var $tr = this.$body.find(Utils.sprintf('> tr[data-index="%s"]', index)); if ($tr.next().is('tr.detail-view')) { this.collapseRow(index); } else { this.expandRow(index, _columnDetailFormatter); } this.resetView(); } }, { key: "expandRow", value: function expandRow(index, _columnDetailFormatter) { var row = this.data[index]; var $tr = this.$body.find(Utils.sprintf('> tr[data-index="%s"][data-has-detail-view]', index)); if ($tr.next().is('tr.detail-view')) { return; } if (this.options.detailViewIcon) { $tr.find('a.detail-icon').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.detailClose)); } $tr.after(Utils.sprintf('', $tr.children('td').length)); var $element = $tr.next().find('td'); var detailFormatter = _columnDetailFormatter || this.options.detailFormatter; var content = Utils.calculateObjectValue(this.options, detailFormatter, [index, row, $element], ''); if ($element.length === 1) { $element.append(content); } this.trigger('expand-row', index, row, $element); } }, { key: "collapseRow", value: function collapseRow(index) { var row = this.data[index]; var $tr = this.$body.find(Utils.sprintf('> tr[data-index="%s"][data-has-detail-view]', index)); if (!$tr.next().is('tr.detail-view')) { return; } if (this.options.detailViewIcon) { $tr.find('a.detail-icon').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.detailOpen)); } this.trigger('collapse-row', index, row, $tr.next()); $tr.next().remove(); } }, { key: "expandAllRows", value: function expandAllRows() { var trs = this.$body.find('> tr[data-index][data-has-detail-view]'); for (var i = 0; i < trs.length; i++) { this.expandRow($(trs[i]).data('index')); } } }, { key: "collapseAllRows", value: function collapseAllRows() { var trs = this.$body.find('> tr[data-index][data-has-detail-view]'); for (var i = 0; i < trs.length; i++) { this.collapseRow($(trs[i]).data('index')); } } }, { key: "updateColumnTitle", value: function updateColumnTitle(params) { if (!params.hasOwnProperty('field') || !params.hasOwnProperty('title')) { return; } this.columns[this.fieldsColumnsIndex[params.field]].title = this.options.escape ? Utils.escapeHTML(params.title) : params.title; if (this.columns[this.fieldsColumnsIndex[params.field]].visible) { var header = this.options.height !== undefined ? this.$tableHeader : this.$header; header.find('th[data-field]').each(function (i, el) { if ($(el).data('field') === params.field) { $($(el).find('.th-inner')[0]).text(params.title); return false; } }); } } }, { key: "updateFormatText", value: function updateFormatText(formatName, text) { if (!/^format/.test(formatName) || !this.options[formatName]) { return; } if (typeof text === 'string') { this.options[formatName] = function () { return text; }; } else if (typeof text === 'function') { this.options[formatName] = text; } this.initToolbar(); this.initPagination(); this.initBody(); } }]); return BootstrapTable; }(); BootstrapTable.VERSION = Constants.VERSION; BootstrapTable.DEFAULTS = Constants.DEFAULTS; BootstrapTable.LOCALES = Constants.LOCALES; BootstrapTable.COLUMN_DEFAULTS = Constants.COLUMN_DEFAULTS; BootstrapTable.METHODS = Constants.METHODS; BootstrapTable.EVENTS = Constants.EVENTS; // BOOTSTRAP TABLE PLUGIN DEFINITION // ======================= $.BootstrapTable = BootstrapTable; $.fn.bootstrapTable = function (option) { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key3 = 1; _key3 < _len2; _key3++) { args[_key3 - 1] = arguments[_key3]; } var value; this.each(function (i, el) { var data = $(el).data('bootstrap.table'); var options = $.extend({}, BootstrapTable.DEFAULTS, $(el).data(), _typeof(option) === 'object' && option); if (typeof option === 'string') { var _data2; if (!Constants.METHODS.includes(option)) { throw new Error("Unknown method: ".concat(option)); } if (!data) { return; } value = (_data2 = data)[option].apply(_data2, args); if (option === 'destroy') { $(el).removeData('bootstrap.table'); } } if (!data) { $(el).data('bootstrap.table', data = new $.BootstrapTable(el, options)); } }); return typeof value === 'undefined' ? this : value; }; $.fn.bootstrapTable.Constructor = BootstrapTable; $.fn.bootstrapTable.theme = Constants.THEME; $.fn.bootstrapTable.VERSION = Constants.VERSION; $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS; $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS; $.fn.bootstrapTable.events = BootstrapTable.EVENTS; $.fn.bootstrapTable.locales = BootstrapTable.LOCALES; $.fn.bootstrapTable.methods = BootstrapTable.METHODS; $.fn.bootstrapTable.utils = Utils; // BOOTSTRAP TABLE INIT // ======================= $(function () { $('[data-toggle="table"]').bootstrapTable(); }); return BootstrapTable; })); ================================================ FILE: lib/bootstrap/js/bootstrap.js ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under the MIT license */ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } +function ($) { 'use strict'; var version = $.fn.jquery.split(' ')[0].split('.') if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') } }(jQuery); /* ======================================================================== * Bootstrap: transition.js v3.3.7 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery); /* ======================================================================== * Bootstrap: alert.js v3.3.7 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="alert"]' var Alert = function (el) { $(el).on('click', dismiss, this.close) } Alert.VERSION = '3.3.7' Alert.TRANSITION_DURATION = 150 Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector === '#' ? [] : selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.closest('.alert') } $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { // detach from parent, fire event then clean up data $parent.detach().trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.alert $.fn.alert = Plugin $.fn.alert.Constructor = Alert // ALERT NO CONFLICT // ================= $.fn.alert.noConflict = function () { $.fn.alert = old return this } // ALERT DATA-API // ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: button.js v3.3.7 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ============================== var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, Button.DEFAULTS, options) this.isLoading = false } Button.VERSION = '3.3.7' Button.DEFAULTS = { loadingText: 'loading...' } Button.prototype.setState = function (state) { var d = 'disabled' var $el = this.$element var val = $el.is('input') ? 'val' : 'html' var data = $el.data() state += 'Text' if (data.resetText == null) $el.data('resetText', $el[val]()) // push to event loop to allow forms to submit setTimeout($.proxy(function () { $el[val](data[state] == null ? this.options[state] : data[state]) if (state == 'loadingText') { this.isLoading = true $el.addClass(d).attr(d, d).prop(d, true) } else if (this.isLoading) { this.isLoading = false $el.removeClass(d).removeAttr(d).prop(d, false) } }, this), 0) } Button.prototype.toggle = function () { var changed = true var $parent = this.$element.closest('[data-toggle="buttons"]') if ($parent.length) { var $input = this.$element.find('input') if ($input.prop('type') == 'radio') { if ($input.prop('checked')) changed = false $parent.find('.active').removeClass('active') this.$element.addClass('active') } else if ($input.prop('type') == 'checkbox') { if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false this.$element.toggleClass('active') } $input.prop('checked', this.$element.hasClass('active')) if (changed) $input.trigger('change') } else { this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.toggleClass('active') } } // BUTTON PLUGIN DEFINITION // ======================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') var options = typeof option == 'object' && option if (!data) $this.data('bs.button', (data = new Button(this, options))) if (option == 'toggle') data.toggle() else if (option) data.setState(option) }) } var old = $.fn.button $.fn.button = Plugin $.fn.button.Constructor = Button // BUTTON NO CONFLICT // ================== $.fn.button.noConflict = function () { $.fn.button = old return this } // BUTTON DATA-API // =============== $(document) .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { var $btn = $(e.target).closest('.btn') Plugin.call($btn, 'toggle') if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { // Prevent double click on radios, and the double selections (so cancellation) on checkboxes e.preventDefault() // The target component still receive the focus if ($btn.is('input,button')) $btn.trigger('focus') else $btn.find('input:visible,button:visible').first().trigger('focus') } }) .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) }) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.3.7 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CAROUSEL CLASS DEFINITION // ========================= var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.paused = null this.sliding = null this.interval = null this.$active = null this.$items = null this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } Carousel.VERSION = '3.3.7' Carousel.TRANSITION_DURATION = 600 Carousel.DEFAULTS = { interval: 5000, pause: 'hover', wrap: true, keyboard: true } Carousel.prototype.keydown = function (e) { if (/input|textarea/i.test(e.target.tagName)) return switch (e.which) { case 37: this.prev(); break case 39: this.next(); break default: return } e.preventDefault() } Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } Carousel.prototype.getItemIndex = function (item) { this.$items = item.parent().children('.item') return this.$items.index(item || this.$active) } Carousel.prototype.getItemForDirection = function (direction, active) { var activeIndex = this.getItemIndex(active) var willWrap = (direction == 'prev' && activeIndex === 0) || (direction == 'next' && activeIndex == (this.$items.length - 1)) if (willWrap && !this.options.wrap) return active var delta = direction == 'prev' ? -1 : 1 var itemIndex = (activeIndex + delta) % this.$items.length return this.$items.eq(itemIndex) } Carousel.prototype.to = function (pos) { var that = this var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) } Carousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } Carousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } Carousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') var $next = next || this.getItemForDirection(type, $active) var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var that = this if ($next.hasClass('active')) return (this.sliding = false) var relatedTarget = $next[0] var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) this.$element.trigger(slideEvent) if (slideEvent.isDefaultPrevented()) return this.sliding = true isCycling && this.pause() if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) $nextIndicator && $nextIndicator.addClass('active') } var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger(slidEvent) }, 0) }) .emulateTransitionEnd(Carousel.TRANSITION_DURATION) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger(slidEvent) } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } var old = $.fn.carousel $.fn.carousel = Plugin $.fn.carousel.Constructor = Carousel // CAROUSEL NO CONFLICT // ==================== $.fn.carousel.noConflict = function () { $.fn.carousel = old return this } // CAROUSEL DATA-API // ================= var clickHandler = function (e) { var href var $this = $(this) var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 if (!$target.hasClass('carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false Plugin.call($target, options) if (slideIndex) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() } $(document) .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.3.7 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ /* jshint latedef: false */ +function ($) { 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION // ================================ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + '[data-toggle="collapse"][data-target="#' + element.id + '"]') this.transitioning = null if (this.options.parent) { this.$parent = this.getParent() } else { this.addAriaAndCollapsedClass(this.$element, this.$trigger) } if (this.options.toggle) this.toggle() } Collapse.VERSION = '3.3.7' Collapse.TRANSITION_DURATION = 350 Collapse.DEFAULTS = { toggle: true } Collapse.prototype.dimension = function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return var activesData var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') if (actives && actives.length) { activesData = actives.data('bs.collapse') if (activesData && activesData.transitioning) return } var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return if (actives && actives.length) { Plugin.call(actives, 'hide') activesData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') .addClass('collapsing')[dimension](0) .attr('aria-expanded', true) this.$trigger .removeClass('collapsed') .attr('aria-expanded', true) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') .addClass('collapse in')[dimension]('') this.transitioning = 0 this.$element .trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { if (this.transitioning || !this.$element.hasClass('in')) return var startEvent = $.Event('hide.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var dimension = this.dimension() this.$element[dimension](this.$element[dimension]())[0].offsetHeight this.$element .addClass('collapsing') .removeClass('collapse in') .attr('aria-expanded', false) this.$trigger .addClass('collapsed') .attr('aria-expanded', false) this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element .removeClass('collapsing') .addClass('collapse') .trigger('hidden.bs.collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } Collapse.prototype.getParent = function () { return $(this.options.parent) .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') .each($.proxy(function (i, element) { var $element = $(element) this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) }, this)) .end() } Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { var isOpen = $element.hasClass('in') $element.attr('aria-expanded', isOpen) $trigger .toggleClass('collapsed', !isOpen) .attr('aria-expanded', isOpen) } function getTargetFromTrigger($trigger) { var href var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 return $(target) } // COLLAPSE PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.collapse $.fn.collapse = Plugin $.fn.collapse.Constructor = Collapse // COLLAPSE NO CONFLICT // ==================== $.fn.collapse.noConflict = function () { $.fn.collapse = old return this } // COLLAPSE DATA-API // ================= $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { var $this = $(this) if (!$this.attr('data-target')) e.preventDefault() var $target = getTargetFromTrigger($this) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() Plugin.call($target, option) }) }(jQuery); /* ======================================================================== * Bootstrap: dropdown.js v3.3.7 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle="dropdown"]' var Dropdown = function (element) { $(element).on('click.bs.dropdown', this.toggle) } Dropdown.VERSION = '3.3.7' function getParent($this) { var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) return $parent && $parent.length ? $parent : $this.parent() } function clearMenus(e) { if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { var $this = $(this) var $parent = getParent($this) var relatedTarget = { relatedTarget: this } if (!$parent.hasClass('open')) return if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) }) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we use a backdrop because click events don't delegate $(document.createElement('div')) .addClass('dropdown-backdrop') .insertAfter($(this)) .on('click', clearMenus) } var relatedTarget = { relatedTarget: this } $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this .trigger('focus') .attr('aria-expanded', 'true') $parent .toggleClass('open') .trigger($.Event('shown.bs.dropdown', relatedTarget)) } return false } Dropdown.prototype.keydown = function (e) { if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) e.preventDefault() e.stopPropagation() if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') if (!isActive && e.which != 27 || isActive && e.which == 27) { if (e.which == 27) $parent.find(toggle).trigger('focus') return $this.trigger('click') } var desc = ' li:not(.disabled):visible a' var $items = $parent.find('.dropdown-menu' + desc) if (!$items.length) return var index = $items.index(e.target) if (e.which == 38 && index > 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.dropdown') if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.dropdown $.fn.dropdown = Plugin $.fn.dropdown.Constructor = Dropdown // DROPDOWN NO CONFLICT // ==================== $.fn.dropdown.noConflict = function () { $.fn.dropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) }(jQuery); /* ======================================================================== * Bootstrap: modal.js v3.3.7 * http://getbootstrap.com/javascript/#modals * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // MODAL CLASS DEFINITION // ====================== var Modal = function (element, options) { this.options = options this.$body = $(document.body) this.$element = $(element) this.$dialog = this.$element.find('.modal-dialog') this.$backdrop = null this.isShown = null this.originalBodyPad = null this.scrollbarWidth = 0 this.ignoreBackdropClick = false if (this.options.remote) { this.$element .find('.modal-content') .load(this.options.remote, $.proxy(function () { this.$element.trigger('loaded.bs.modal') }, this)) } } Modal.VERSION = '3.3.7' Modal.TRANSITION_DURATION = 300 Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.DEFAULTS = { backdrop: true, keyboard: true, show: true } Modal.prototype.toggle = function (_relatedTarget) { return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { var that = this var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) this.$element.trigger(e) if (this.isShown || e.isDefaultPrevented()) return this.isShown = true this.checkScrollbar() this.setScrollbar() this.$body.addClass('modal-open') this.escape() this.resize() this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) this.$dialog.on('mousedown.dismiss.bs.modal', function () { that.$element.one('mouseup.dismiss.bs.modal', function (e) { if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true }) }) this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) that.adjustDialog() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') that.enforceFocus() var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) transition ? that.$dialog // wait for modal to slide in .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e) }) } Modal.prototype.hide = function (e) { if (e) e.preventDefault() e = $.Event('hide.bs.modal') this.$element.trigger(e) if (!this.isShown || e.isDefaultPrevented()) return this.isShown = false this.escape() this.resize() $(document).off('focusin.bs.modal') this.$element .removeClass('in') .off('click.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal') this.$dialog.off('mousedown.dismiss.bs.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } Modal.prototype.enforceFocus = function () { $(document) .off('focusin.bs.modal') // guard against infinite focus loop .on('focusin.bs.modal', $.proxy(function (e) { if (document !== e.target && this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { this.$element.off('keydown.dismiss.bs.modal') } } Modal.prototype.resize = function () { if (this.isShown) { $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) } else { $(window).off('resize.bs.modal') } } Modal.prototype.hideModal = function () { var that = this this.$element.hide() this.backdrop(function () { that.$body.removeClass('modal-open') that.resetAdjustments() that.resetScrollbar() that.$element.trigger('hidden.bs.modal') }) } Modal.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove() this.$backdrop = null } Modal.prototype.backdrop = function (callback) { var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $(document.createElement('div')) .addClass('modal-backdrop ' + animate) .appendTo(this.$body) this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { if (this.ignoreBackdropClick) { this.ignoreBackdropClick = false return } if (e.target !== e.currentTarget) return this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide() }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow this.$backdrop.addClass('in') if (!callback) return doAnimate ? this.$backdrop .one('bsTransitionEnd', callback) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in') var callbackRemove = function () { that.removeBackdrop() callback && callback() } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove() } else if (callback) { callback() } } // these following methods are used to handle overflowing modals Modal.prototype.handleUpdate = function () { this.adjustDialog() } Modal.prototype.adjustDialog = function () { var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight this.$element.css({ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' }) } Modal.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: '', paddingRight: '' }) } Modal.prototype.checkScrollbar = function () { var fullWindowWidth = window.innerWidth if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 var documentElementRect = document.documentElement.getBoundingClientRect() fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) } this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth this.scrollbarWidth = this.measureScrollbar() } Modal.prototype.setScrollbar = function () { var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) this.originalBodyPad = document.body.style.paddingRight || '' if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) } Modal.prototype.resetScrollbar = function () { this.$body.css('padding-right', this.originalBodyPad) } Modal.prototype.measureScrollbar = function () { // thx walsh var scrollDiv = document.createElement('div') scrollDiv.className = 'modal-scrollbar-measure' this.$body.append(scrollDiv) var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth this.$body[0].removeChild(scrollDiv) return scrollbarWidth } // MODAL PLUGIN DEFINITION // ======================= function Plugin(option, _relatedTarget) { return this.each(function () { var $this = $(this) var data = $this.data('bs.modal') var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('bs.modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option](_relatedTarget) else if (options.show) data.show(_relatedTarget) }) } var old = $.fn.modal $.fn.modal = Plugin $.fn.modal.Constructor = Modal // MODAL NO CONFLICT // ================= $.fn.modal.noConflict = function () { $.fn.modal = old return this } // MODAL DATA-API // ============== $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) if ($this.is('a')) e.preventDefault() $target.one('show.bs.modal', function (showEvent) { if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown $target.one('hidden.bs.modal', function () { $this.is(':visible') && $this.trigger('focus') }) }) Plugin.call($target, option, this) }) }(jQuery); /* ======================================================================== * Bootstrap: tooltip.js v3.3.7 * http://getbootstrap.com/javascript/#tooltip * Inspired by the original jQuery.tipsy by Jason Frame * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TOOLTIP PUBLIC CLASS DEFINITION // =============================== var Tooltip = function (element, options) { this.type = null this.options = null this.enabled = null this.timeout = null this.hoverState = null this.$element = null this.inState = null this.init('tooltip', element, options) } Tooltip.VERSION = '3.3.7' Tooltip.TRANSITION_DURATION = 150 Tooltip.DEFAULTS = { animation: true, placement: 'top', selector: false, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, container: false, viewport: { selector: 'body', padding: 0 } } Tooltip.prototype.init = function (type, element, options) { this.enabled = true this.type = type this.$element = $(element) this.options = this.getOptions(options) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) this.inState = { click: false, hover: false, focus: false } if (this.$element[0] instanceof document.constructor && !this.options.selector) { throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') } var triggers = this.options.trigger.split(' ') for (var i = triggers.length; i--;) { var trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) } } this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle() } Tooltip.prototype.getDefaults = function () { return Tooltip.DEFAULTS } Tooltip.prototype.getOptions = function (options) { options = $.extend({}, this.getDefaults(), this.$element.data(), options) if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay } } return options } Tooltip.prototype.getDelegateOptions = function () { var options = {} var defaults = this.getDefaults() this._options && $.each(this._options, function (key, value) { if (defaults[key] != value) options[key] = value }) return options } Tooltip.prototype.enter = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true } if (self.tip().hasClass('in') || self.hoverState == 'in') { self.hoverState = 'in' return } clearTimeout(self.timeout) self.hoverState = 'in' if (!self.options.delay || !self.options.delay.show) return self.show() self.timeout = setTimeout(function () { if (self.hoverState == 'in') self.show() }, self.options.delay.show) } Tooltip.prototype.isInStateTrue = function () { for (var key in this.inState) { if (this.inState[key]) return true } return false } Tooltip.prototype.leave = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false } if (self.isInStateTrue()) return clearTimeout(self.timeout) self.hoverState = 'out' if (!self.options.delay || !self.options.delay.hide) return self.hide() self.timeout = setTimeout(function () { if (self.hoverState == 'out') self.hide() }, self.options.delay.hide) } Tooltip.prototype.show = function () { var e = $.Event('show.bs.' + this.type) if (this.hasContent() && this.enabled) { this.$element.trigger(e) var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) if (e.isDefaultPrevented() || !inDom) return var that = this var $tip = this.tip() var tipId = this.getUID(this.type) this.setContent() $tip.attr('id', tipId) this.$element.attr('aria-describedby', tipId) if (this.options.animation) $tip.addClass('fade') var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement var autoToken = /\s?auto?\s?/i var autoPlace = autoToken.test(placement) if (autoPlace) placement = placement.replace(autoToken, '') || 'top' $tip .detach() .css({ top: 0, left: 0, display: 'block' }) .addClass(placement) .data('bs.' + this.type, this) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.$element.trigger('inserted.bs.' + this.type) var pos = this.getPosition() var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (autoPlace) { var orgPlacement = placement var viewportDim = this.getPosition(this.$viewport) placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : placement $tip .removeClass(orgPlacement) .addClass(placement) } var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) this.applyPlacement(calculatedOffset, placement) var complete = function () { var prevHoverState = that.hoverState that.$element.trigger('shown.bs.' + that.type) that.hoverState = null if (prevHoverState == 'out') that.leave(that) } $.support.transition && this.$tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() } } Tooltip.prototype.applyPlacement = function (offset, placement) { var $tip = this.tip() var width = $tip[0].offsetWidth var height = $tip[0].offsetHeight // manually read margins because getBoundingClientRect includes difference var marginTop = parseInt($tip.css('margin-top'), 10) var marginLeft = parseInt($tip.css('margin-left'), 10) // we must check for NaN for ie 8/9 if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginLeft)) marginLeft = 0 offset.top += marginTop offset.left += marginLeft // $.fn.offset doesn't round pixel values // so we use setOffset directly with our own function B-0 $.offset.setOffset($tip[0], $.extend({ using: function (props) { $tip.css({ top: Math.round(props.top), left: Math.round(props.left) }) } }, offset), 0) $tip.addClass('in') // check to see if placing tip in new offset caused the tip to resize itself var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight } var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) if (delta.left) offset.left += delta.left else offset.top += delta.top var isVertical = /top|bottom/.test(placement) var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' $tip.offset(offset) this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) } Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { this.arrow() .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') .css(isVertical ? 'top' : 'left', '') } Tooltip.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') } Tooltip.prototype.hide = function (callback) { var that = this var $tip = $(this.$tip) var e = $.Event('hide.bs.' + this.type) function complete() { if (that.hoverState != 'in') $tip.detach() if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. that.$element .removeAttr('aria-describedby') .trigger('hidden.bs.' + that.type) } callback && callback() } this.$element.trigger(e) if (e.isDefaultPrevented()) return $tip.removeClass('in') $.support.transition && $tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() this.hoverState = null return this } Tooltip.prototype.fixTitle = function () { var $e = this.$element if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') } } Tooltip.prototype.hasContent = function () { return this.getTitle() } Tooltip.prototype.getPosition = function ($element) { $element = $element || this.$element var el = $element[0] var isBody = el.tagName == 'BODY' var elRect = el.getBoundingClientRect() if (elRect.width == null) { // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) } var isSvg = window.SVGElement && el instanceof window.SVGElement // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. // See https://github.com/twbs/bootstrap/issues/20280 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null return $.extend({}, elRect, scroll, outerDims, elOffset) } Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } } Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { var delta = { top: 0, left: 0 } if (!this.$viewport) return delta var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 var viewportDimensions = this.getPosition(this.$viewport) if (/right|left/.test(placement)) { var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight if (topEdgeOffset < viewportDimensions.top) { // top overflow delta.top = viewportDimensions.top - topEdgeOffset } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset } } else { var leftEdgeOffset = pos.left - viewportPadding var rightEdgeOffset = pos.left + viewportPadding + actualWidth if (leftEdgeOffset < viewportDimensions.left) { // left overflow delta.left = viewportDimensions.left - leftEdgeOffset } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset } } return delta } Tooltip.prototype.getTitle = function () { var title var $e = this.$element var o = this.options title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) return title } Tooltip.prototype.getUID = function (prefix) { do prefix += ~~(Math.random() * 1000000) while (document.getElementById(prefix)) return prefix } Tooltip.prototype.tip = function () { if (!this.$tip) { this.$tip = $(this.options.template) if (this.$tip.length != 1) { throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') } } return this.$tip } Tooltip.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) } Tooltip.prototype.enable = function () { this.enabled = true } Tooltip.prototype.disable = function () { this.enabled = false } Tooltip.prototype.toggleEnabled = function () { this.enabled = !this.enabled } Tooltip.prototype.toggle = function (e) { var self = this if (e) { self = $(e.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(e.currentTarget, this.getDelegateOptions()) $(e.currentTarget).data('bs.' + this.type, self) } } if (e) { self.inState.click = !self.inState.click if (self.isInStateTrue()) self.enter(self) else self.leave(self) } else { self.tip().hasClass('in') ? self.leave(self) : self.enter(self) } } Tooltip.prototype.destroy = function () { var that = this clearTimeout(this.timeout) this.hide(function () { that.$element.off('.' + that.type).removeData('bs.' + that.type) if (that.$tip) { that.$tip.detach() } that.$tip = null that.$arrow = null that.$viewport = null that.$element = null }) } // TOOLTIP PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tooltip') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tooltip $.fn.tooltip = Plugin $.fn.tooltip.Constructor = Tooltip // TOOLTIP NO CONFLICT // =================== $.fn.tooltip.noConflict = function () { $.fn.tooltip = old return this } }(jQuery); /* ======================================================================== * Bootstrap: popover.js v3.3.7 * http://getbootstrap.com/javascript/#popovers * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // POPOVER PUBLIC CLASS DEFINITION // =============================== var Popover = function (element, options) { this.init('popover', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') Popover.VERSION = '3.3.7' Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '' }) // NOTE: POPOVER EXTENDS tooltip.js // ================================ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) Popover.prototype.constructor = Popover Popover.prototype.getDefaults = function () { return Popover.DEFAULTS } Popover.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() var content = this.getContent() $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' ](content) $tip.removeClass('fade top bottom left right in') // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do // this manually by checking the contents. if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() } Popover.prototype.hasContent = function () { return this.getTitle() || this.getContent() } Popover.prototype.getContent = function () { var $e = this.$element var o = this.options return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) } Popover.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.arrow')) } // POPOVER PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.popover') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.popover', (data = new Popover(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.popover $.fn.popover = Plugin $.fn.popover.Constructor = Popover // POPOVER NO CONFLICT // =================== $.fn.popover.noConflict = function () { $.fn.popover = old return this } }(jQuery); /* ======================================================================== * Bootstrap: scrollspy.js v3.3.7 * http://getbootstrap.com/javascript/#scrollspy * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // SCROLLSPY CLASS DEFINITION // ========================== function ScrollSpy(element, options) { this.$body = $(document.body) this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) this.options = $.extend({}, ScrollSpy.DEFAULTS, options) this.selector = (this.options.target || '') + ' .nav li > a' this.offsets = [] this.targets = [] this.activeTarget = null this.scrollHeight = 0 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) this.refresh() this.process() } ScrollSpy.VERSION = '3.3.7' ScrollSpy.DEFAULTS = { offset: 10 } ScrollSpy.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) } ScrollSpy.prototype.refresh = function () { var that = this var offsetMethod = 'offset' var offsetBase = 0 this.offsets = [] this.targets = [] this.scrollHeight = this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod = 'position' offsetBase = this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el = $(this) var href = $el.data('target') || $el.attr('href') var $href = /^#./.test(href) && $(href) return ($href && $href.length && $href.is(':visible') && [[$href[offsetMethod]().top + offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } ScrollSpy.prototype.process = function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset var scrollHeight = this.getScrollHeight() var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() var offsets = this.offsets var targets = this.targets var activeTarget = this.activeTarget var i if (this.scrollHeight != scrollHeight) { this.refresh() } if (scrollTop >= maxScroll) { return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) } if (activeTarget && scrollTop < offsets[0]) { this.activeTarget = null return this.clear() } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) && this.activate(targets[i]) } } ScrollSpy.prototype.activate = function (target) { this.activeTarget = target this.clear() var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]' var active = $(selector) .parents('li') .addClass('active') if (active.parent('.dropdown-menu').length) { active = active .closest('li.dropdown') .addClass('active') } active.trigger('activate.bs.scrollspy') } ScrollSpy.prototype.clear = function () { $(this.selector) .parentsUntil(this.options.target, '.active') .removeClass('active') } // SCROLLSPY PLUGIN DEFINITION // =========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.scrollspy') var options = typeof option == 'object' && option if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.scrollspy $.fn.scrollspy = Plugin $.fn.scrollspy.Constructor = ScrollSpy // SCROLLSPY NO CONFLICT // ===================== $.fn.scrollspy.noConflict = function () { $.fn.scrollspy = old return this } // SCROLLSPY DATA-API // ================== $(window).on('load.bs.scrollspy.data-api', function () { $('[data-spy="scroll"]').each(function () { var $spy = $(this) Plugin.call($spy, $spy.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: tab.js v3.3.7 * http://getbootstrap.com/javascript/#tabs * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TAB CLASS DEFINITION // ==================== var Tab = function (element) { // jscs:disable requireDollarBeforejQueryAssignment this.element = $(element) // jscs:enable requireDollarBeforejQueryAssignment } Tab.VERSION = '3.3.7' Tab.TRANSITION_DURATION = 150 Tab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } if ($this.parent('li').hasClass('active')) return var $previous = $ul.find('.active:last a') var hideEvent = $.Event('hide.bs.tab', { relatedTarget: $this[0] }) var showEvent = $.Event('show.bs.tab', { relatedTarget: $previous[0] }) $previous.trigger(hideEvent) $this.trigger(showEvent) if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return var $target = $(selector) this.activate($this.closest('li'), $ul) this.activate($target, $target.parent(), function () { $previous.trigger({ type: 'hidden.bs.tab', relatedTarget: $this[0] }) $this.trigger({ type: 'shown.bs.tab', relatedTarget: $previous[0] }) }) } Tab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', false) element .addClass('active') .find('[data-toggle="tab"]') .attr('aria-expanded', true) if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') } if (element.parent('.dropdown-menu').length) { element .closest('li.dropdown') .addClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', true) } callback && callback() } $active.length && transition ? $active .one('bsTransitionEnd', next) .emulateTransitionEnd(Tab.TRANSITION_DURATION) : next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tab') if (!data) $this.data('bs.tab', (data = new Tab(this))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tab $.fn.tab = Plugin $.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } // TAB DATA-API // ============ var clickHandler = function (e) { e.preventDefault() Plugin.call($(this), 'show') } $(document) .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) }(jQuery); /* ======================================================================== * Bootstrap: affix.js v3.3.7 * http://getbootstrap.com/javascript/#affix * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // AFFIX CLASS DEFINITION // ====================== var Affix = function (element, options) { this.options = $.extend({}, Affix.DEFAULTS, options) this.$target = $(this.options.target) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) this.$element = $(element) this.affixed = null this.unpin = null this.pinnedOffset = null this.checkPosition() } Affix.VERSION = '3.3.7' Affix.RESET = 'affix affix-top affix-bottom' Affix.DEFAULTS = { offset: 0, target: window } Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { var scrollTop = this.$target.scrollTop() var position = this.$element.offset() var targetHeight = this.$target.height() if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false if (this.affixed == 'bottom') { if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' } var initializing = this.affixed == null var colliderTop = initializing ? scrollTop : position.top var colliderHeight = initializing ? targetHeight : height if (offsetTop != null && scrollTop <= offsetTop) return 'top' if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' return false } Affix.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset this.$element.removeClass(Affix.RESET).addClass('affix') var scrollTop = this.$target.scrollTop() var position = this.$element.offset() return (this.pinnedOffset = position.top - scrollTop) } Affix.prototype.checkPositionWithEventLoop = function () { setTimeout($.proxy(this.checkPosition, this), 1) } Affix.prototype.checkPosition = function () { if (!this.$element.is(':visible')) return var height = this.$element.height() var offset = this.options.offset var offsetTop = offset.top var offsetBottom = offset.bottom var scrollHeight = Math.max($(document).height(), $(document.body).height()) if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) if (this.affixed != affix) { if (this.unpin != null) this.$element.css('top', '') var affixType = 'affix' + (affix ? '-' + affix : '') var e = $.Event(affixType + '.bs.affix') this.$element.trigger(e) if (e.isDefaultPrevented()) return this.affixed = affix this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null this.$element .removeClass(Affix.RESET) .addClass(affixType) .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') } if (affix == 'bottom') { this.$element.offset({ top: scrollHeight - height - offsetBottom }) } } // AFFIX PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.affix') var options = typeof option == 'object' && option if (!data) $this.data('bs.affix', (data = new Affix(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.affix $.fn.affix = Plugin $.fn.affix.Constructor = Affix // AFFIX NO CONFLICT // ================= $.fn.affix.noConflict = function () { $.fn.affix = old return this } // AFFIX DATA-API // ============== $(window).on('load', function () { $('[data-spy="affix"]').each(function () { var $spy = $(this) var data = $spy.data() data.offset = data.offset || {} if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom if (data.offsetTop != null) data.offset.top = data.offsetTop Plugin.call($spy, data) }) }) }(jQuery); ================================================ FILE: lib/bootstrap/js/npm.js ================================================ // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. require('../../js/transition.js') require('../../js/alert.js') require('../../js/button.js') require('../../js/carousel.js') require('../../js/collapse.js') require('../../js/dropdown.js') require('../../js/modal.js') require('../../js/tooltip.js') require('../../js/popover.js') require('../../js/scrollspy.js') require('../../js/tab.js') require('../../js/affix.js') ================================================ FILE: lib/canvas-bg/rAF.js ================================================ // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel // MIT license (function() { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function(callback, element) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function(id) { clearTimeout(id); }; }()); ================================================ FILE: lib/layer/layer.js ================================================ /*! layer-v3.1.1 Web弹层组件 MIT License http://layer.layui.com/ By 贤心 */ ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
    '+(f?r.title[0]:r.title)+"
    ":"";return r.zIndex=s,t([r.shade?'
    ':"",'
    '+(e&&2!=r.type?"":u)+'
    '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
    '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
    '+e+"
    "}():"")+(r.resize?'':"")+"
    "],u,i('
    ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
      '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
    • '+(t[0].content||"no content")+"
    • ";i'+(t[i].content||"no content")+"";return a}()+"
    ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
    '+(u.length>1?'':"")+'
    '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
    ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); ================================================ FILE: lib/layer/mobile/layer.js ================================================ /*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */ ;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'

    '+(e?n.title[0]:n.title)+"

    ":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+"",2===t&&(e=''+n.btn[1]+""+e),'
    '+e+"
    "):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='

    '+(n.content||"")+"

    "),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
    ':"")+'
    "+l+'
    '+n.content+"
    "+c+"
    ",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px} ================================================ FILE: lib/layer/theme/default/layer.css ================================================ .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#3e62e2;background-color:#3e62e2;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} ================================================ FILE: lib/template.js ================================================ /*! art-template@4.13.1 for browser | https://github.com/aui/art-template */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.template=t():e.template=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";var r=n(6),i=n(2),o=n(22),s=function(e,t){t.onerror(e,t);var n=function(){return"{Template Error}"};return n.mappings=[],n.sourcesContent=[],n},a=function u(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};"string"!=typeof e?t=e:t.source=e,t=i.$extend(t),e=t.source,!0===t.debug&&(t.cache=!1,t.minimize=!1,t.compileDebug=!0),t.compileDebug&&(t.minimize=!1),t.filename&&(t.filename=t.resolveFilename(t.filename,t));var n=t.filename,a=t.cache,c=t.caches;if(a&&n){var l=c.get(n);if(l)return l}if(!e)try{e=t.loader(n,t),t.source=e}catch(m){var f=new o({name:"CompileError",path:n,message:"template not found: "+m.message,stack:m.stack});if(t.bail)throw f;return s(f,t)}var p=void 0,h=new r(t);try{p=h.build()}catch(f){if(f=new o(f),t.bail)throw f;return s(f,t)}var d=function(e,n){try{return p(e,n)}catch(f){if(!t.compileDebug)return t.cache=!1,t.compileDebug=!0,u(t)(e,n);if(f=new o(f),t.bail)throw f;return s(f,t)()}};return d.mappings=p.mappings,d.sourcesContent=p.sourcesContent,d.toString=function(){return p.toString()},a&&n&&c.set(n,d),d};a.Compiler=r,e.exports=a},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t,n){"use strict";function r(){this.$extend=function(e){return e=e||{},o(e,e instanceof r?e:this)}}var i=n(10),o=n(12),s=n(13),a=n(14),u=n(15),c=n(16),l=n(17),f=n(18),p=n(19),h=n(21),d="undefined"==typeof window,m={source:null,filename:null,rules:[f,l],escape:!0,debug:!!d&&"production"!==process.env.NODE_ENV,bail:!0,cache:!0,minimize:!0,compileDebug:!1,resolveFilename:h,include:s,htmlMinifier:p,htmlMinifierOptions:{collapseWhitespace:!0,minifyCSS:!0,minifyJS:!0,ignoreCustomFragments:[]},onerror:a,loader:c,caches:u,root:"/",extname:".art",ignore:[],imports:i};r.prototype=m,e.exports=new r},function(e,t){},function(e,t,n){"use strict";var r=n(5),i=n(0),o=n(23),s=function(e,t){return t instanceof Object?r({filename:e},t):i({filename:e,source:t})};s.render=r,s.compile=i,s.defaults=o,e.exports=s},function(e,t,n){"use strict";var r=n(0),i=function(e,t,n){return r(e,n)(t)};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t|\([\w\W]*?\))\s*{[\s;]*$)/,"$1})"],[/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/,"$1}"]],n=0;n2&&arguments[2]!==undefined?arguments[2]:{},o=[new i("string",e)],s=0;sd&&(p=new i("string",v.slice(d,h.index),p),m.push(p)),p=new i("expression",h[0],p),h[0]=r(p),p.script=a.use.apply(n,h),m.push(p),d=h.index+h[0].length;d]/;o.$escape=function(e){return r(n(e))},o.$each=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n {{"+n+"}}")};switch("#"===t&&h("#value","@value"),p){case"set":i="var "+u.join("").trim();break;case"if":i="if("+u.join("").trim()+"){";break;case"else":var d=u.indexOf("if");~d?(u.splice(0,d+1),i="}else if("+u.join("").trim()+"){"):i="}else{";break;case"/if":i="}";break;case"each":l=r._split(a),l.shift(),"as"===l[1]&&(h("each object as value index","each object value index"),l.splice(1,1));i="$each("+(l[0]||"$data")+",function("+(l[1]||"$value")+","+(l[2]||"$index")+"){";break;case"/each":i="})";break;case"block":l=r._split(a),l.shift(),i="block("+l.join(",").trim()+",function(){";break;case"/block":i="})";break;case"echo":p="print",h("echo value","value");case"print":case"include":case"extend":if(0!==u.join("").trim().indexOf("(")){l=r._split(a),l.shift(),i=p+"("+l.join(",")+")";break}default:if(~u.indexOf("|")){var m=a.reduce(function(e,t){var n=t.value,r=t.type;return"|"===n?e.push([]):"whitespace"!==r&&"comment"!==r&&(e.length||e.push([]),":"===n&&1===e[e.length-1].length?h("value | filter: argv","value | filter argv"):e[e.length-1].push(t)),e},[]).map(function(e){return r._split(e)});i=m.reduce(function(e,t){var n=t.shift();return t.unshift(e),"$imports."+n+"("+t.join(",")+")"},m.shift().join(" ").trim())}f=f||"escape"}return c.code=i,c.output=f,c},_split:function(e){e=e.filter(function(e){var t=e.type;return"whitespace"!==t&&"comment"!==t});for(var t=0,n=e.shift(),r=/\]|\)/,i=[[n]];t/,use:function(e,t,n,r){return n={"-":"raw","=":"escape","":!1,"==":"raw","=#":"raw"}[n],t&&(r="/*"+r+"*/",n=!1),{code:r,output:n}}};e.exports=r},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t> ":" ")+n+"| "+e}).join("\n");return(r||"anonymous")+":"+i+":"+o+"\n"+f+"\n\n"+t+": "+a+(s?"\n generated: "+s:"")}var a=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e.message));return n.name="TemplateError",n.message=s(e),Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n}return o(t,e),t}(Error);e.exports=a},function(e,t,n){"use strict";e.exports=n(2)}])}); ================================================ FILE: speed.json ================================================ [ { "year":"2018", "car": "911 GT3RS", "BID": "BV1fA411g7RK", "Btitle": "300万的911 开起来像“小马力前驱车”?-- 911 GT3RS", "hp": "570", "hp_content": "570", "Powertrain": "4.0/7DCT", "speed": "52.34", "mods": "1", "tyre": "Cup2R", "temperature": "26", "lv": "S", "time": "", "accelerate": "3.29", "limit": "164.96", "powerType":"0", "producer":"2", "nationality":"DE", "price":"226.80" }, { "year":"2017", "car": "BMW M4", "BID": "BV1ES4y1z7yC", "Btitle": "卖车前,复盘“国产魔王M4”的改装思路...", "hp": "521", "hp_content": "521", "Powertrain": "3.0T/7DCT", "speed": "53.52", "mods": "2", "tyre": "F200", "temperature": "13", "lv": "B", "time": "", "accelerate": "--", "limit": "163.465", "powerType":"0", "producer":"2", "nationality":"DE", "price":"90.68" }, { "year":"2017", "car": "BMW M4", "BID": "BV1oU4y1d7PB", "Btitle": "【国产魔王计划】圈速测试,我差点哭了...", "hp": "521", "hp_content": "521", "Powertrain": "3.0T/7DCT", "speed": "54.77", "mods": "2", "tyre": "TD", "temperature": "0", "lv": "B", "time": "", "accelerate": "--", "limit": "159.49", "powerType":"0", "producer":"2", "nationality":"DE", "price":"90.68" }, { "year":"2020", "car": "911 S", "BID": "BV16y4y167AL", "Btitle": "911=赛场上的爸爸?", "hp": "450", "hp_content": "450", "Powertrain": "3.0T/8DCT", "speed": "54.83", "mods": "0", "tyre": "P0 PZ4", "temperature": "13", "lv": "S", "time": "", "accelerate": "3.28", "limit": "163", "powerType":"0", "producer":"2", "nationality":"DE", "price":"147.30" }, { "year":"2017", "car": "BMW M4", "BID": "BV1kq4y1n7VB", "Btitle": "M4换上CUP2能干911?-- 米其林全系运动胎指南", "hp": "431", "hp_content": "431", "Powertrain": "3.0T/7DCT", "speed": "55.43", "mods": "0", "tyre": "Cup 2C", "temperature": "32", "lv": "B", "time": "", "accelerate": "4.49", "limit": "155.49", "powerType":"0", "producer":"2", "nationality":"DE", "price":"90.68" }, { "year":"2019", "car": "F8 Tributo", "BID": "BV1UQ4y1Q7CX", "Btitle": "为了你们,我不能买法拉利了……", "hp": "720", "hp_content": "720", "Powertrain": "3.9T/7DCT", "speed": "55.49", "mods": "0", "tyre": "P0", "temperature": "31", "lv": "S", "time": "", "accelerate": "3.72", "limit": "166.44", "powerType":"0", "producer":"2", "nationality":"IT", "price":"305.70" }, { "year":"2018", "car": "718", "BID": "BV1Ut4y1s7ZA", "Btitle": "370马力丐版718,锤爆911?", "hp": "370", "hp_content": "250+150", "Powertrain": "2.0T/7DCT", "speed": "55.69", "mods": "2", "tyre": "CUP2R", "temperature": "14", "lv": "S", "time": "", "accelerate": "4.30", "limit": "149.159", "powerType":"0", "producer":"2", "nationality":"DE", "price":"54.50" }, { "year":"2017", "car": "911 GTS", "BID": "BV1qi4y1c7kK", "Btitle": "保时捷911,推头还是甩尾?", "hp": "450", "hp_content": "450", "Powertrain": "3.0T/7DCT", "speed": "55.80", "mods": "0", "tyre": "P0", "temperature": "24", "lv": "S", "time": "", "accelerate": "3.6", "limit": "157", "powerType":"0", "producer":"2", "nationality":"DE", "price":"146.00" }, { "year":"2011", "car": "E92 M3", "BID": "BV1JK4y177cW", "Btitle": "自吸老宝马怎么改,能赢新款M4?", "hp": "420", "hp_content": "420", "Powertrain": "4.0/7DCT", "speed": "55.80", "mods": "2", "tyre": "DH", "temperature": "11", "lv": "B", "time": "", "accelerate": "5.24", "limit": "152", "powerType":"0", "producer":"2", "nationality":"DE", "price":"110.50" }, { "year":"2013", "car": "丰田86", "BID": "BV13L411e7Kc", "Btitle": "丰田,比兰博基尼快?", "hp": "233", "hp_content": "233", "Powertrain": "2.0L/6MT", "speed": "55.88", "mods": "2", "tyre": "TD", "temperature": "13", "lv": "S", "time": "", "accelerate": "6.21", "limit": "139.52", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.90" }, { "year":"2020", "car": "BMW M2C", "BID": "BV1UZ4y1y7qE", "Btitle": "半热熔胎M2C跑不过街胎M4?", "hp": "410", "hp_content": "410", "Powertrain": "3.0T/7DCT", "speed": "55.95", "mods": "2", "tyre": "TR", "temperature": "7", "lv": "A", "time": "", "accelerate": "--", "limit": "155.127", "powerType":"0", "producer":"2", "nationality":"DE", "price":"64.38" }, { "year":"2020", "car": "Huracan EVO", "BID": "BV1T44y1P7fP", "Btitle": "喜欢本田的高转?不如买兰博基尼!", "hp": "611", "hp_content": "611", "Powertrain": "5.2/7DCT", "speed": "55.98", "mods": "0", "tyre": "P0", "temperature": "4", "lv": "S", "time": "", "accelerate": "3.60", "limit": "162.601", "powerType":"0", "producer":"2", "nationality":"IT", "price":"254.00" }, { "year":"2020", "car": "Cayman GTS", "BID": "BV1s44y1V7aS", "Btitle": "40万,约等于超跑!", "hp": "340", "hp_content": "340", "Powertrain": "3.4/7DCT", "speed": "56.14", "mods": "0", "tyre": "Cup2C", "temperature": "11", "lv": "S", "time": "", "accelerate": "4.45", "limit": "150.08", "powerType":"0", "producer":"2", "nationality":"DE", "price":"87.5" }, { "year":"2017", "car": "奥迪RS3", "BID": "BV13L4y1g72v", "Btitle": "500马力+热熔胎,奥迪RS3成为赛道新王?", "hp": "530", "hp_content": "530", "Powertrain": "2.5T/7DCT", "speed": "56.25", "mods": "2", "tyre": "Z214", "temperature": "30", "lv": "A", "time": "", "accelerate": "3.67", "limit": "153.39", "powerType":"0", "producer":"2", "nationality":"DE", "price":"51.38" }, { "year":"2020", "car": "迈锐宝XL", "BID": "BV1R44y1b7sf", "Btitle": "【迈锐宝XL进化3.0】15W我花完了,这TCR你就说要不要吧!", "hp": "257", "hp_content": "257", "Powertrain": "2.0T/9AT", "speed": "56.29", "mods": "2", "tyre": "DM", "temperature": "27", "lv": "B", "time": "", "accelerate": "6.21", "limit": "141.09", "powerType":"0", "producer":"1", "nationality":"US", "price":"21.99" }, { "year":"2022", "car": "奥迪RS4", "BID": "BV1NL411F79s", "Btitle": "四驱打爆一切?旅行车键盘值0分", "hp": "450", "hp_content": "450", "Powertrain": "2.9T/8AT", "speed": "56.30", "mods": "0", "tyre": "SC6", "temperature": "13", "lv": "B", "time": "", "accelerate": "3.93", "limit": "150.22", "powerType":"0", "producer":"2", "nationality":"DE", "price":"82.88" }, { "year":"2021", "car": "G82 M4", "BID": "BV1pP4y1x7dg", "Btitle": "大80马力,新M4动力却输给老M4?", "hp": "510", "hp_content": "510", "Powertrain": "3.0T/8AT", "speed": "56.38", "mods": "0", "tyre": "PS4S", "temperature": "31", "lv": "B", "time": "", "accelerate": "4.34", "limit": "154.03", "powerType":"0", "producer":"2", "nationality":"DE", "price":"87.99" }, { "year":"2017", "car": "BMW M4", "BID": "BV1pP4y1x7dg?", "Btitle": "大80马力,新M4动力却输给老M4?", "hp": "431", "hp_content": "431", "Powertrain": "3.0T/7DCT", "speed": "56.45", "mods": "0", "tyre": "PS4S*", "temperature": "31", "lv": "B", "time": "", "accelerate": "4.49", "limit": "152.19", "powerType":"0", "producer":"2", "nationality":"DE", "price":"90.68" }, { "year":"2018", "car": "BMW M2", "BID": "BV1zX4y137RJ", "Btitle": "改装30W,宝马M2 vs M3 赛道大战~", "hp": "410", "hp_content": "410", "Powertrain": "3.0/7DCT", "speed": "56.60", "mods": "2", "tyre": "AR-1", "temperature": "32", "lv": "A", "time": "", "accelerate": "4.3", "limit": "--", "powerType":"0", "producer":"2", "nationality":"DE", "price":"59.98" }, { "year":"2021", "car": "C43", "BID": "BV1e44y1V74o", "Btitle": "四驱能让C43干翻C63么?", "hp": "390", "hp_content": "390", "Powertrain": "3.0T/9AT", "speed": "56.76", "mods": "0", "tyre": "CUP2C", "temperature": "6", "lv": "B", "time": "", "accelerate": "4.25", "limit": "149.19", "powerType":"0", "producer":"2", "nationality":"DE", "price":"57.38" }, { "year":"2020", "car": "BMW M2C", "BID": "BV1tA411N7ot", "Btitle": "换胎快1秒?键盘车神の终极改装~", "hp": "410", "hp_content": "410", "Powertrain": "3.0T/7DCT", "speed": "56.80", "mods": "0", "tyre": "Cup 2", "temperature": "12", "lv": "A", "time": "", "accelerate": "4.2", "limit": "154", "powerType":"0", "producer":"2", "nationality":"DE", "price":"63.38" }, { "year":"2023", "car": "718 GT4", "BID": "BV19o4y1B7XG", "Btitle": "250万,买一台手动挡718?", "hp": "414", "hp_content": "414", "Powertrain": "4.0/6MT", "speed": "56.81", "mods": "0", "tyre": "Race 2", "temperature": "14", "lv": "S", "time": "", "accelerate": "--", "limit": "154.26", "powerType":"0", "producer":"2", "nationality":"DE", "price":"250.00" }, { "year":"2018", "car": "BMW M3", "BID": "BV1zX4y137RJ", "Btitle": "改装30W,宝马M2 vs M3 赛道大战~", "hp": "550", "hp_content": "450+100", "Powertrain": "3.0T/7DCT", "speed": "56.90", "mods": "1", "tyre": "PS4S", "temperature": "32", "lv": "B", "time": "", "accelerate": "4.1", "limit": "--", "powerType":"0", "producer":"2", "nationality":"DE", "price":"108.89" }, { "year":"2017", "car": "GT-R", "BID": "BV1nK4y1m7pg", "Btitle": "虽然我的GTR车头很重,但是入弯却不推头~", "hp": "555", "hp_content": "555", "Powertrain": "3.8T/6DCT", "speed": "56.90", "mods": "-1", "tyre": "PS4S", "temperature": "5", "lv": "S", "time": "", "accelerate": "3.5", "limit": "159", "powerType":"0", "producer":"2", "nationality":"JP", "price":"162.80" }, { "year":"2022", "car": "伊兰特N", "BID": "BV1MZ4y1D7w9", "Btitle": "10000块四条胎,为了伊兰特N我尽力了!", "hp": "280", "hp_content": "280", "Powertrain": "2.0T/8DCT", "speed": "56.91", "mods": "0", "tyre": "Cup2C", "temperature": "5", "lv": "A", "time": "", "accelerate": "5.67", "limit": "143.75", "powerType":"0", "producer":"2", "nationality":"KR", "price":"--" }, { "year":"2019", "car": "奥迪S3", "BID": "BV1b34y1C7PY", "Btitle": "米其林CUP2C,卫途01,韩泰Z214对比测评,奥迪S3不推头了?", "hp": "290", "hp_content": "290", "Powertrain": "2.0T/7DCT", "speed": "56.98", "mods": "2", "tyre": "214", "temperature": "4", "lv": "A", "time": "", "accelerate": "5.04", "limit": "144.02", "powerType":"0", "producer":"2", "nationality":"DE", "price":"36.38" }, { "year":"2017", "car": "86", "BID": "BV1zS4y1c7cL", "Btitle": "2.0T内战,丰田SUPRA操控吊打丰田86?", "hp": "240", "hp_content": "240", "Powertrain": "2.0T/6MT", "speed": "57.05", "mods": "2", "tyre": "A052", "temperature": "4", "lv": "S", "time": "", "accelerate": "6.62", "limit": "143.748", "powerType":"0", "producer":"2", "nationality":"JP", "price":"24.98" }, { "year":"2023", "car": "影豹R", "BID": "BV1wu411g7bK", "Btitle": "13000公里,我把影豹R带去了纽北~", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "57.13", "mods": "2", "tyre": "A052", "temperature": "28", "lv": "A", "time": "144", "accelerate": "--", "limit": "141.13", "powerType":"0", "producer":"0", "nationality":"CN", "price":"13.80" }, { "year":"2021", "car": "Supra", "BID": "BV1bU4y1V7Cf", "Btitle": "SUPRA赛道吊打M-Power全系!", "hp": "340", "hp_content": "340", "Powertrain": "3.0T/8AT", "speed": "57.18", "mods": "0", "tyre": "PSS", "temperature": "35", "lv": "S", "time": "", "accelerate": "4.3", "limit": "147.37", "powerType":"0", "producer":"2", "nationality":"JP", "price":"62.90" }, { "year":"2021", "car": "X4M", "BID": "BV1GF411h7Xk", "Btitle": "Jacky说这玩意能赢我M4?——X4 M赛道测评", "hp": "510", "hp_content": "510", "Powertrain": "3.0T/8AT", "speed": "57.19", "mods": "0", "tyre": "SC6", "temperature": "9", "lv": "B", "time": "", "accelerate": "3.9", "limit": "151.967", "powerType":"0", "producer":"2", "nationality":"DE", "price":"92.59" }, { "year":"2019", "car": "BMW M4 ZCP", "BID": "BV1mz4y1o7kP", "Btitle": "千古谜题:宝马M4 vs M2C,谁厉害?", "hp": "450", "hp_content": "450", "Powertrain": "3.0T/7DCT", "speed": "57.24", "mods": "0", "tyre": "PSS", "temperature": "32", "lv": "B", "time": "", "accelerate": "4.5", "limit": "150.42", "powerType":"0", "producer":"2", "nationality":"DE", "price":"89.99" }, { "year":"2017", "car": "BMW M4", "BID": "BV1Eo4y1k7PD", "Btitle": "教主卖车?F82 M4超长伪干货全面详解。(对比C63 GIULIA QV RS5 911 G82)", "hp": "431", "hp_content": "431", "Powertrain": "3.0T/7DCT", "speed": "57.33", "mods": "0", "tyre": "PSS", "temperature": "26", "lv": "B", "time": "", "accelerate": "4.3", "limit": "153.79", "powerType":"0", "producer":"2", "nationality":"DE", "price":"90.68" }, { "year":"2020", "car": "A45s", "BID": "BV1d3411z7rd", "Btitle": "A 45 S比A 35强多少,能值70W?", "hp": "421", "hp_content": "421", "Powertrain": "2.0T/8DCT", "speed": "57.36", "mods": "0", "tyre": "PS4S", "temperature": "24", "lv": "A", "time": "", "accelerate": "3.99", "limit": "150.29", "powerType":"0", "producer":"2", "nationality":"DE", "price":"57.98" }, { "year":"2020", "car": "CT5 2.7", "BID": "BV1pf4y1u7ds", "Btitle": "全国最强CT5,2.7T能打几台宝马3系?", "hp": "325", "hp_content": "325", "Powertrain": "2.7T/10AT", "speed": "57.38", "mods": "2", "tyre": "CUP2R", "temperature": "19", "lv": "B", "time": "", "accelerate": "5.40", "limit": "145.06", "powerType":"0", "producer":"1", "nationality":"US", "price":"33.97" }, { "year":"2016", "car": "Focus RS", "BID": "BV1vJ411n7TY", "Btitle": "【干货】如何用“4550块”爆改一台福克斯RS,赛道锤爆A45/EVO/S3...", "hp": "350", "hp_content": "350", "Powertrain": "2.3T/6MT", "speed": "57.40", "mods": "2", "tyre": "米其林Slick", "temperature": "18", "lv": "A", "time": "144", "accelerate": "5.0", "limit": "144", "powerType":"0", "producer":"2", "nationality":"US", "price":"37.88" }, { "year":"2019", "car": "奥迪S3", "BID": "BV1b34y1C7PY", "Btitle": "米其林CUP2C,卫途01,韩泰Z214对比测评,奥迪S3不推头了?", "hp": "290", "hp_content": "290", "Powertrain": "2.0T/7DCT", "speed": "57.56", "mods": "0", "tyre": "Cup2C", "temperature": "4", "lv": "A", "time": "", "accelerate": "5.04", "limit": "141.90", "powerType":"0", "producer":"2", "nationality":"DE", "price":"36.38" }, { "year":"2022", "car": "Model 3P", "BID": "BV1YF411u7HW", "Btitle": "真正的M3,Model 3P到底强在哪?", "hp": "486", "hp_content": "486", "Powertrain": "E", "speed": "57.58", "mods": "0", "tyre": "P0", "temperature": "7", "lv": "B", "time": "", "accelerate": "3.64", "limit": "148.176", "powerType":"1", "producer":"1", "nationality":"US", "price":"36.79" }, { "year":"2011", "car": "BMW 1M", "BID": "BV1Gg411L7cQ", "Btitle": "开3000km来北京 改装1M赛道屠榜M全系?", "hp": "400", "hp_content": "400", "Powertrain": "3.0T/6MT", "speed": "57.63", "mods": "1", "tyre": "Cup 2", "temperature": "29", "lv": "A", "time": "", "accelerate": "5.65", "limit": "148.56", "powerType":"0", "producer":"2", "nationality":"DE", "price":"59.8" }, { "year":"2022", "car": "伊兰特N", "BID": "BV1TL411j7X5", "Btitle": "M Power不行,N Power行!——伊兰特N赛道测试", "hp": "280", "hp_content": "280", "Powertrain": "2.0T/8DCT", "speed": "57.68", "mods": "0", "tyre": "PS4S(HN)", "temperature": "4", "lv": "A", "time": "", "accelerate": "5.67", "limit": "145.83", "powerType":"0", "producer":"2", "nationality":"KR", "price":"--" }, { "year":"2005", "car": "菱帅 进化6", "BID": "BV1oM41127vJ", "Btitle": "锻造菱帅王,杀爆新手村!", "hp": "140", "hp_content": "100+40", "Powertrain": "1.6/5MT", "speed": "57.71", "mods": "2", "tyre": "TD", "temperature": "10", "lv": "A", "time": "", "accelerate": "7.88", "limit": "130.10", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2020", "car": "迈锐宝XL", "BID": "BV1VU4y1N7T8", "Btitle": "【迈锐宝XL进化2.0】刷ECU,干掉宝马M2C!", "hp": "257", "hp_content": "257", "Powertrain": "2.0T/9AT", "speed": "57.77", "mods": "2", "tyre": "Cup2C", "temperature": "26", "lv": "B", "time": "", "accelerate": "6.11", "limit": "141.06", "powerType":"0", "producer":"1", "nationality":"US", "price":"20.49" }, { "year":"2019", "car": "奥迪S3", "BID": "BV1b34y1C7PY", "Btitle": "米其林CUP2C,卫途01,韩泰Z214对比测评,奥迪S3不推头了?", "hp": "290", "hp_content": "290", "Powertrain": "2.0T/7DCT", "speed": "57.78", "mods": "0", "tyre": "卫途01", "temperature": "4", "lv": "A", "time": "", "accelerate": "5.04", "limit": "141.02", "powerType":"0", "producer":"2", "nationality":"DE", "price":"36.38" }, { "year":"2022", "car": "Giulia QV", "BID": "BV15g411v7uF", "Btitle": "四叶草,在哪快?", "hp": "510", "hp_content": "510", "Powertrain": "2.9T/8AT", "speed": "57.80", "mods": "1", "tyre": "CUP2 C", "temperature": "36", "lv": "B", "time": "", "accelerate": "4.33", "limit": "153.06", "powerType":"0", "producer":"2", "nationality":"IT", "price":"90.28" }, { "year":"2022", "car": "03+", "BID": "BV1oH4y1S7zD", "Btitle": "南北最强的领克03+,谁才是天下第一?", "hp": "289", "hp_content": "289", "Powertrain": "2.0T/8AT", "speed": "57.85", "mods": "2", "tyre": "TR", "temperature": "40", "lv": "A", "time": "", "accelerate": "5.91", "limit": "139.89", "powerType":"0", "producer":"0", "nationality":"CN", "price":"22.28" }, { "year":"2023", "car": "极氪001", "BID": "BV1Zc411H7gx", "Btitle": "国产电车,超越特斯拉?", "hp": "544", "hp_content": "544", "Powertrain": "E", "speed": "57.90", "mods": "0", "tyre": "PS4S", "temperature": "17", "lv": "C", "time": "", "accelerate": "3.78", "limit": "153.22", "powerType":"1", "producer":"0", "nationality":"CN", "price":"38.60" }, { "year":"2022", "car": "03+Cyan", "BID": "BV1oH4y1S7zD", "Btitle": "南北最强的领克03+,谁才是天下第一?", "hp": "289", "hp_content": "289", "Powertrain": "2.0T/8AT", "speed": "57.93", "mods": "2", "tyre": "TR", "temperature": "40", "lv": "A", "time": "", "accelerate": "6.41", "limit": "138.93", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2020", "car": "BMW M2C", "BID": "BV1mz4y1o7kP", "Btitle": "千古谜题:宝马M4 vs M2C,谁厉害?", "hp": "410", "hp_content": "410", "Powertrain": "3.0T/7DCT", "speed": "57.95", "mods": "0", "tyre": "PSS", "temperature": "32", "lv": "A", "time": "", "accelerate": "4.5", "limit": "148.42", "powerType":"0", "producer":"2", "nationality":"DE", "price":"64.38" }, { "year":"2023", "car": "影豹R", "BID": "BV1wN4y197AG", "Btitle": "完全体影豹R,强无敌!", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "57.95", "mods": "2", "tyre": "卫途02", "temperature": "29", "lv": "A", "time": "", "accelerate": "--", "limit": "139.73", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.80" }, { "year":"2018", "car": "MX-5 ND", "BID": "BV1N14y1s7qE", "Btitle": "超级MX5,BRZ杀手?", "hp": "260", "hp_content": "260", "Powertrain": "2.0/6AT", "speed": "57.95", "mods": "2", "tyre": "A052", "temperature": "19", "lv": "S", "time": "", "accelerate": "5.87", "limit": "141.39", "powerType":"0", "producer":"2", "nationality":"JP", "price":"33.9" }, { "year":"2022", "car": "Kona N", "BID": "BV1Mb4y1H7xA", "Btitle": "比伊兰特N更纯粹更好玩,Kona N赛道测试", "hp": "280", "hp_content": "280", "Powertrain": "2.0T/8DCT", "speed": "58.25", "mods": "-1", "tyre": "P0 PZ4", "temperature": "7", "lv": "A", "time": "", "accelerate": "5.77", "limit": "142.27", "powerType":"0", "producer":"2", "nationality":"KR", "price":"--" }, { "year":"2016", "car": "思域", "BID": "BV1NK4y1A7UW", "Btitle": "国货之光领克03+被东瀛烂仔暴打?", "hp": "225", "hp_content": "225", "Powertrain": "1.5T/6MT", "speed": "58.26", "mods": "2", "tyre": "AR-1/MC6", "temperature": "15", "lv": "A", "time": "", "accelerate": "6.8", "limit": "139.34", "powerType":"0", "producer":"1", "nationality":"JP", "price":"12.99" }, { "year":"2022", "car": "Model YP", "BID": "BV17a411a76E", "Btitle": "刷新SUV记录?Model YP赛道测试", "hp": "486", "hp_content": "486", "Powertrain": "E", "speed": "58.30", "mods": "0", "tyre": "PS4S", "temperature": "6", "lv": "B", "time": "", "accelerate": "4.02", "limit": "147.40", "powerType":"1", "producer":"1", "nationality":"US", "price":"41.79" }, { "year":"2010", "car": "C63", "BID": "BV1r44y167gi", "Btitle": "30多万的老奔驰-AMG C 63,操控堪比宝马M2C", "hp": "487", "hp_content": "487", "Powertrain": "6.2/7AT", "speed": "58.34", "mods": "0", "tyre": "PS4S", "temperature": "5", "lv": "B", "time": "", "accelerate": "4.4", "limit": "-", "powerType":"0", "producer":"2", "nationality":"DE", "price":"133.80" }, { "year":"2018", "car": "Golf GTI", "BID": "BV1JA411G7WK", "Btitle": "“GTI”吊打思域,成为键盘车神の前驱新神?", "hp": "340", "hp_content": "340", "Powertrain": "2.0T/7DCT", "speed": "58.35", "mods": "2", "tyre": "AR-1", "temperature": "18", "lv": "A", "time": "", "accelerate": "5.8", "limit": "140.45", "powerType":"0", "producer":"1", "nationality":"DE", "price":"23.99" }, { "year":"2017", "car": "BRZ", "BID": "BV1L5411m7bj", "Btitle": "我把丰田86开着火了...", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "58.57", "mods": "1", "tyre": "卫途02", "temperature": "15", "lv": "S", "time": "", "accelerate": "7.63", "limit": "134.892", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.98" }, { "year":"2018", "car": "718", "BID": "BV1cX4y1G7EH", "Btitle": "保时捷中置跑车内战,自然吸气6缸 vs 涡轮增压4缸~ | 新老Cayman谁更强?", "hp": "250", "hp_content": "250", "Powertrain": "2.0T/7DCT", "speed": "58.60", "mods": "0", "tyre": "PS4S", "temperature": "31", "lv": "S", "time": "", "accelerate": "5.6", "limit": "140", "powerType":"0", "producer":"2", "nationality":"DE", "price":"54.5" }, { "year":"2020", "car": "A35", "BID": "BV1rv411K7fD", "Btitle": "35块买个签名,A 35就是AMG!", "hp": "306", "hp_content": "306", "Powertrain": "2.0T/7DCT", "speed": "58.61", "mods": "0", "tyre": "P0", "temperature": "24", "lv": "A", "time": "", "accelerate": "5.22", "limit": "142.67", "powerType":"0", "producer":"2", "nationality":"DE", "price":"39.98" }, { "year":"2021", "car": "GTI 8", "BID": "BV1sm4y1o7Xs", "Btitle": "30000块改装GTI,CYAN和N都是辣鸡?", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "58.61", "mods": "1", "tyre": "Cup2C", "temperature": "2", "lv": "A", "time": "", "accelerate": "6.5", "limit": "139.40", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2022", "car": "BRZ", "BID": "BV1MR4y1A7WS", "Btitle": "全国首提二手新BRZ...", "hp": "234", "hp_content": "234", "Powertrain": "2.4/6MT", "speed": "58.66", "mods": "0", "tyre": "PS4", "temperature": "32", "lv": "S", "time": "", "accelerate": "6.63", "limit": "137.578", "powerType":"0", "producer":"2", "nationality":"JP", "price":"30.88" }, { "year":"2013", "car": "Cayman 981", "BID": "BV1cX4y1G7EH", "Btitle": "保时捷中置跑车内战,自然吸气6缸 vs 涡轮增压4缸~ | 新老Cayman谁更强?", "hp": "275", "hp_content": "275", "Powertrain": "2.7/7DCT", "speed": "58.70", "mods": "1", "tyre": "Cup 2", "temperature": "32", "lv": "S", "time": "", "accelerate": "5.6", "limit": "139", "powerType":"0", "producer":"2", "nationality":"DE", "price":"72.7" }, { "year":"2005", "car": "菱帅 进化6", "BID": "BV1oM41127vJ", "Btitle": "锻造菱帅王,杀爆新手村!", "hp": "140", "hp_content": "140", "Powertrain": "1.6/5MT", "speed": "58.77", "mods": "2", "tyre": "卫途01", "temperature": "15", "lv": "A", "time": "", "accelerate": "7.88", "limit": "126.41", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2021", "car": "Supra", "BID": "BV1zS4y1c7cL", "Btitle": "2.0T内战,丰田SUPRA操控吊打丰田86?", "hp": "197", "hp_content": "197", "Powertrain": "2.0T/8AT", "speed": "58.84", "mods": "0", "tyre": "PSS", "temperature": "4", "lv": "S", "time": "", "accelerate": "6.34", "limit": "134.845", "powerType":"0", "producer":"2", "nationality":"JP", "price":"49.60" }, { "year":"2016", "car": "Benz A45", "BID": "BV1u64y1x757", "Btitle": "AMG A 45的真实实力,领克03+怎么比", "hp": "381", "hp_content": "381", "Powertrain": "2.0T/7DCT", "speed": "58.86", "mods": "0", "tyre": "SC6", "temperature": "6", "lv": "A", "time": "", "accelerate": "4.28S", "limit": "146.72", "powerType":"0", "producer":"2", "nationality":"DE", "price":"49.80" }, { "year":"2023", "car": "思域Type-R", "BID": "BV1az4y1p7ct", "Btitle": "本田TYPE-R没有领克快,是人性的扭曲还是被充值了...", "hp": "300", "hp_content": "300", "Powertrain": "2.0T/6MT", "speed": "58.95", "mods": "0", "tyre": "PS4S", "temperature": "29", "lv": "A", "time": "", "accelerate": "5.72", "limit": "142.71", "powerType":"0", "producer":"2", "nationality":"JP", "price":"40.20" }, { "year":"2016", "car": "Focus RS", "BID": "av78690283", "Btitle": "特斯拉Model3 vs 福克斯RS,教主的战车终于出现了!", "hp": "350", "hp_content": "350", "Powertrain": "2.3T/6MT", "speed": "58.96", "mods": "0", "tyre": "PSS", "temperature": "32", "lv": "A", "time": "138", "accelerate": "5.0", "limit": "138", "powerType":"0", "producer":"2", "nationality":"US", "price":"40.18" }, { "year":"2020", "car": "小鹏P7", "BID": "BV1Yq4y1E7Y8", "Btitle": "小鹏P7能刷到1000ps么?", "hp": "430", "hp_content": "430", "Powertrain": "E", "speed": "59.00", "mods": "1", "tyre": "PS4", "temperature": "13", "lv": "C", "time": "", "accelerate": "4.3", "limit": "148.20", "powerType":"1", "producer":"0", "nationality":"CN", "price":"34.99" }, { "year":"2020", "car": "CT4", "BID": "BV1Qy4y1g79T", "Btitle": "开一台改装“CT4”干掉全场“M2C”是什么体验?-- CT4改装分析", "hp": "270", "hp_content": "270", "Powertrain": "2.0T/8AT", "speed": "59.10", "mods": "2", "tyre": "Cup 2", "temperature": "21", "lv": "B", "time": "", "accelerate": "6.22", "limit": "140.24", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2010", "car": "Z4", "BID": "BV1P5411R7zs", "Btitle": "轻松600马力神车,N54宝马Z4赛道测试", "hp": "306", "hp_content": "306", "Powertrain": "3.0T/7DCT", "speed": "59.19", "mods": "1", "tyre": "卫途02", "temperature": "13", "lv": "S", "time": "", "accelerate": "5.53", "limit": "141.31", "powerType":"0", "producer":"2", "nationality":"DE", "price":"78.80" }, { "year":"2018", "car": "奥迪S4", "BID": "BV1KC4y1x7bk", "Btitle": "V6+四驱=神,你想打几台86?--奥迪S4", "hp": "354", "hp_content": "354", "Powertrain": "3T/8AT", "speed": "59.30", "mods": "0", "tyre": "P0", "temperature": "12", "lv": "B", "time": "", "accelerate": "4.5", "limit": "141", "powerType":"0", "producer":"2", "nationality":"DE", "price":"45.98" }, { "year":"2020", "car": "CT5", "BID": "BV1Gt4y1B7De", "Btitle": "凯迪拉克CT5干掉宝马330i,要花多少钱?", "hp": "241", "hp_content": "241", "Powertrain": "2.0T/10AT", "speed": "59.50", "mods": "1", "tyre": "Cup 2", "temperature": "26", "lv": "B", "time": "", "accelerate": "--", "limit": "129", "powerType":"0", "producer":"1", "nationality":"US", "price":"33.97" }, { "year":"2022", "car": "03+Cyan", "BID": "BV1Aa411B7HM", "Btitle": "领克03+Cyan徒有其表?值么?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "59.54", "mods": "0", "tyre": "PS4S", "temperature": "2", "lv": "A", "time": "", "accelerate": "6.10", "limit": "134.06", "powerType":"0", "producer":"0", "nationality":"CN", "price":"25.68" }, { "year":"2020", "car": "领克03+", "BID": "BV1A84y1c7fR", "Btitle": "京城最速03+有多快,手动思域追不上?【头文字D追走】", "hp": "254", "hp_content": "254", "Powertrain": "2.0T/8AT", "speed": "59.61", "mods": "2", "tyre": "AR-1/MC6", "temperature": "15", "lv": "A", "time": "", "accelerate": "6.1", "limit": "135.49", "powerType":"0", "producer":"0", "nationality":"CN", "price":"22.88" }, { "year":"2020", "car": "飞凡F7", "BID": "BV1oc411N7qx", "Btitle": "飞凡F7跑赛道,是一种什么体验?", "hp": "544", "hp_content": "544", "Powertrain": "E", "speed": "59.63", "mods": "0", "tyre": "PS EV", "temperature": "12", "lv": "C", "time": "", "accelerate": "3.83", "limit": "149.24", "powerType":"1", "producer":"0", "nationality":"CN", "price":"30.19" }, { "year":"2017", "car": "86", "BID": "BV1L5411m7bj", "Btitle": "我把丰田86开着火了...", "hp": "200", "hp_content": "220", "Powertrain": "2.0/6MT", "speed": "59.78", "mods": "1", "tyre": "AD08R", "temperature": "11", "lv": "S", "time": "", "accelerate": "6.80", "limit": "135.184", "powerType":"0", "producer":"2", "nationality":"JP", "price":"27.78" }, { "year":"2014", "car": "飞度", "BID": "BV13S4y1N7Gs", "Btitle": "80000块移植K20A,飞度王!", "hp": "220", "hp_content": "220", "Powertrain": "2.0/6MT", "speed": "59.81", "mods": "3", "tyre": "NS2R", "temperature": "30", "lv": "A0", "time": "", "accelerate": "--", "limit": "136.96", "powerType":"0", "producer":"1", "nationality":"JP", "price":"7.38" }, { "year":"2020", "car": "野马", "BID": "BV15f4y1u79p", "Btitle": "2.3T原厂Mustang的操控如何,赛道轻松干掉原厂86?", "hp": "299", "hp_content": "299", "Powertrain": "2.3T/10AT", "speed": "59.89", "mods": "0", "tyre": "P0", "temperature": "3", "lv": "S", "time": "", "accelerate": "5.57", "limit": "135.16", "powerType":"0", "producer":"2", "nationality":"US", "price":"36.98" }, { "year":"2021", "car": "极氪001", "BID": "BV1yS4y197Qp", "Btitle": "赛道拉爆极氪001,要露馅了?", "hp": "544", "hp_content": "544", "Powertrain": "E", "speed": "59.91", "mods": "0", "tyre": "PC6", "temperature": "10", "lv": "C", "time": "", "accelerate": "3.88", "limit": "149.39", "powerType":"1", "producer":"0", "nationality":"CN", "price":"36.00" }, { "year":"2013", "car": "MINI JCW", "BID": "BV1Bb4y1871i", "Btitle": "小拉力赛车?MINI JCW R56性能测试!", "hp": "211", "hp_content": "211", "Powertrain": "1.6T/6AT", "speed": "59.96", "mods": "2", "tyre": "TD", "temperature": "9", "lv": "A0", "time": "", "accelerate": "6.08", "limit": "136.57", "powerType":"0", "producer":"2", "nationality":"UK", "price":"39.90" }, { "year":"2019", "car": "LOTUS GT410", "BID": "BV1hZ4y1P7Br", "Btitle": "路特斯GT410,比保时捷911更硬?", "hp": "410", "hp_content": "410", "Powertrain": "3.5SC/6AT", "speed": "60.0", "mods": "0", "tyre": "PS4S", "temperature": "6", "lv": "S", "time": "", "accelerate": "--", "limit": "147", "powerType":"0", "producer":"2", "nationality":"UK", "price":"97.20" }, { "year":"2021", "car": "Model Y", "BID": "BV1qo4y1C7dt", "Btitle": "SUV吊打小钢炮?特斯拉Model Y赛道测评!", "hp": "432", "hp_content": "432", "Powertrain": "E", "speed": "60.08", "mods": "0", "tyre": "K127", "temperature": "21", "lv": "B", "time": "", "accelerate": "4.95", "limit": "145.751", "powerType":"1", "producer":"1", "nationality":"US", "price":"34.79" }, { "year":"2021", "car": "宝马I4 M50", "BID": "BV1cg411R7xw", "Btitle": "半价M4,跑不过86?", "hp": "544", "hp_content": "544", "Powertrain": "E", "speed": "60.08", "mods": "0", "tyre": "K127", "temperature": "27", "lv": "B", "time": "", "accelerate": "3.87", "limit": "150.53", "powerType":"1", "producer":"2", "nationality":"DE", "price":"53.99" }, { "year":"2005", "car": "菱帅 进化5", "BID": "BV1eK41167Xe", "Btitle": "8000转的超级菱帅!【菱帅进化5.0】", "hp": "125", "hp_content": "125", "Powertrain": "1.6/5MT", "speed": "60.14", "mods": "2", "tyre": "卫途01", "temperature": "14", "lv": "A", "time": "", "accelerate": "8.96", "limit": "122.91", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2014", "car": "飞度", "BID": "av48683350", "Btitle": "7W买车7W改,超跑飞度成功刷新“键盘车神圈速榜”", "hp": "151", "hp_content": "151", "Powertrain": "1.5/5MT", "speed": "60.20", "mods": "2", "tyre": "RE71R+AD08R", "temperature": "15", "lv": "A0", "time": "360", "accelerate": "8.0", "limit": "128", "powerType":"0", "producer":"1", "nationality":"JP", "price":"7.38" }, { "year":"2020", "car": "领克03+", "BID": "BV1NK4y1A7UW", "Btitle": "国货之光领克03+被东瀛烂仔暴打?", "hp": "254", "hp_content": "254", "Powertrain": "2.0T/8AT", "speed": "60.21", "mods": "1", "tyre": "MC6", "temperature": "15", "lv": "A", "time": "", "accelerate": "6.3", "limit": "133.08", "powerType":"0", "producer":"0", "nationality":"CN", "price":"22.88" }, { "year":"2019", "car": "谢尔比GTE", "BID": "BV1144y1g72R", "Btitle": "40W的野马王,比超跑还宽", "hp": "368", "hp_content": "368", "Powertrain": "2.3T/10AT", "speed": "60.22", "mods": "0", "tyre": "P0", "temperature": "13", "lv": "S", "time": "", "accelerate": "6.77", "limit": "135.371", "powerType":"0", "producer":"2", "nationality":"US", "price":"41.80" }, { "year":"2021", "car": "CT5 尊贵型", "BID": "BV1P64y1v7f1", "Btitle": "30万级最强底盘中型轿车 可能就是它!", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/10AT", "speed": "60.26", "mods": "0", "tyre": "PS4S", "temperature": "29", "lv": "B", "time": "", "accelerate": "7.73", "limit": "130.22", "powerType":"0", "producer":"1", "nationality":"US", "price":"32.27" }, { "year":"2023", "car": "影豹R", "BID": "BV1nV4y1Y7r3", "Btitle": "影豹R+LSD,可能是全国首测?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "60.33", "mods": "2", "tyre": "PS5", "temperature": "29", "lv": "A", "time": "", "accelerate": "--", "limit": "140.00", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.80" }, { "year":"2014", "car": "梅甘娜RS", "BID": "BV1PU4y1878m", "Btitle": "【最强手动挡钢炮特辑】梅甘娜RS,嘉年华ST,速翼特赛道PK!", "hp": "275", "hp_content": "275", "Powertrain": "2.0T/6MT", "speed": "60.35", "mods": "0", "tyre": "P0", "temperature": "8", "lv": "A", "time": "", "accelerate": "5.71", "limit": "139.4", "powerType":"0", "producer":"2", "nationality":"FR", "price":"35.99" }, { "year":"2013", "car": "宝马328i", "BID": "BV1gY4y167rz", "Btitle": "永远的标杆,宝马328i~", "hp": "245", "hp_content": "245", "Powertrain": "2.0T/8AT", "speed": "60.35", "mods": "0", "tyre": "PS4", "temperature": "13", "lv": "B", "time": "", "accelerate": "5.92", "limit": "135.317", "powerType":"0", "producer":"1", "nationality":"DE", "price":"42.60" }, { "year":"2017", "car": "Giulia 280", "BID": "BV1mK411p7rK", "Btitle": "Giulia是B级运动车最强?他能打爆CT5/宝马3/奥迪A4么?", "hp": "330", "hp_content": "330", "Powertrain": "2.0T/8AT", "speed": "60.40", "mods": "1", "tyre": "PS4S", "temperature": "30", "lv": "B", "time": "", "accelerate": "5.7", "limit": "135", "powerType":"0", "producer":"2", "nationality":"IT", "price":"44.98" }, { "year":"2015", "car": "Brz", "BID": "BV1PP4y1E7m2", "Btitle": "换上米其林PS4,BRZ直接干翻小钢炮", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "60.50", "mods": "0", "tyre": "PS4", "temperature": "10", "lv": "S", "time": "", "accelerate": "7.70", "limit": "133.77", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.90" }, { "year":"2020", "car": "小鹏P7", "BID": "BV1Ra4y1L7p2", "Btitle": "电动妖刀!小鹏P7!", "hp": "430", "hp_content": "430", "Powertrain": "E", "speed": "60.60", "mods": "0", "tyre": "PS4", "temperature": "31", "lv": "C", "time": "", "accelerate": "4.3", "limit": "145", "powerType":"1", "producer":"0", "nationality":"CN", "price":"33.99" }, { "year":"2017", "car": "Brz", "BID": "BV1PP4y1E7m2", "Btitle": "换上米其林PS4,BRZ直接干翻小钢炮", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6AT", "speed": "60.61", "mods": "0", "tyre": "PS4", "temperature": "10", "lv": "S", "time": "", "accelerate": "8.40", "limit": "132.28", "powerType":"0", "producer":"2", "nationality":"JP", "price":"27.98" }, { "year":"2013", "car": "MINI JCW", "BID": "BV1Bb4y1871i", "Btitle": "小拉力赛车?MINI JCW R56性能测试!", "hp": "211", "hp_content": "211", "Powertrain": "1.6T/6AT", "speed": "60.63", "mods": "0", "tyre": "PS4", "temperature": "9", "lv": "A0", "time": "", "accelerate": "6.08", "limit": "138.19", "powerType":"0", "producer":"2", "nationality":"UK", "price":"39.90" }, { "year":"2020", "car": "迈锐宝XL", "BID": "BV1pU4y177kq", "Btitle": "【迈锐宝XL进化1.0】白嫖的15W改装经费怎么花?", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/9AT", "speed": "60.67", "mods": "1", "tyre": "Cup2C", "temperature": "33", "lv": "B", "time": "", "accelerate": "--", "limit": "125.01", "powerType":"0", "producer":"1", "nationality":"US", "price":"20.49" }, { "year":"2020", "car": "BMW 330i", "BID": "BV1Sv4y1f76E", "Btitle": "宝马3系,运动亡者?-- 330i挑战CT5圈速", "hp": "258", "hp_content": "258", "Powertrain": "2.0T/8AT", "speed": "60.70", "mods": "1", "tyre": "MC6", "temperature": "26", "lv": "B", "time": "", "accelerate": "5.8", "limit": "136", "powerType":"0", "producer":"1", "nationality":"DE", "price":"37.99" }, { "year":"2018", "car": "BMW 540i", "BID": "BV1Ya4y1i7mL", "Btitle": "3.0T标轴C级运动王 | 宝马540 vs 捷豹XF对比测评", "hp": "340", "hp_content": "340", "Powertrain": "3.0T/8AT", "speed": "60.80", "mods": "0", "tyre": "Eagle F1*", "temperature": "7", "lv": "C", "time": "", "accelerate": "5.2", "limit": "139", "powerType":"0", "producer":"2", "nationality":"DE", "price":"59.39" }, { "year":"2013", "car": "福克斯ST", "BID": "BV12g4y1z7WV", "Btitle": "10万块买的“低配”梅甘娜RS有多香?--福克斯ST", "hp": "275", "hp_content": "275", "Powertrain": "2.0T/6MT", "speed": "60.80", "mods": "1", "tyre": "R888R/F1", "temperature": "3", "lv": "A", "time": "", "accelerate": "6.5", "limit": "134", "powerType":"0", "producer":"2", "nationality":"US", "price":"25.98" }, { "year":"2020", "car": "野马", "BID": "BV1hQ4y1q7RW", "Btitle": "流言终结者:Mustang操控真的很差?", "hp": "350", "hp_content": "350", "Powertrain": "2.3T/10AT", "speed": "60.84", "mods": "1", "tyre": "P0", "temperature": "5", "lv": "S", "time": "", "accelerate": "5.58", "limit": "134.31", "powerType":"0", "producer":"2", "nationality":"US", "price":"36.98" }, { "year":"2020", "car": "CT5 顶配", "BID": "BV1ci4y1V7Ko", "Btitle": "“洗浴城”的运动之王!--凯迪拉克CT5", "hp": "241", "hp_content": "241", "Powertrain": "2.0T/10AT", "speed": "60.90", "mods": "0", "tyre": "PS4S", "temperature": "32", "lv": "B", "time": "", "accelerate": "8.0", "limit": "--", "powerType":"0", "producer":"1", "nationality":"US", "price":"33.97" }, { "year":"2003", "car": "菱帅", "BID": "BV1TK411u7k2", "Btitle": "我膨胀了!又买了台菱帅!【赛车 vs 街车】", "hp": "100", "hp_content": "100", "Powertrain": "1.6/5MT", "speed": "61.00", "mods": "1", "tyre": "AD08R", "temperature": "27", "lv": "A", "time": "", "accelerate": "--", "limit": "125", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2021", "car": "GTI 8", "BID": "BV1F34y1Q7JC", "Btitle": "GTI换上领克03+的轮胎,赛道圈速竟然这么快", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "61.25", "mods": "0", "tyre": "MC6", "temperature": "26", "lv": "A", "time": "", "accelerate": "6.54", "limit": "135.10", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2021", "car": "02HB", "BID": "BV1oq4y1h7vb", "Btitle": "18万,是钢炮?", "hp": "254", "hp_content": "254", "Powertrain": "2.0T/8AT", "speed": "61.27", "mods": "0", "tyre": "PS4", "temperature": "15", "lv": "A", "time": "", "accelerate": "6.84", "limit": "129.15", "powerType":"0", "producer":"0", "nationality":"CN", "price":"18.18" }, { "year":"2013", "car": "福克斯ST", "BID": "BV12g4y1z7WV", "Btitle": "10万块买的“低配”梅甘娜RS有多香?", "hp": "250", "hp_content": "250", "Powertrain": "2.0T/6MT", "speed": "61.30", "mods": "0", "tyre": "F1", "temperature": "13", "lv": "A", "time": "", "accelerate": "6.7", "limit": "135", "powerType":"0", "producer":"2", "nationality":"US", "price":"25.98" }, { "year":"2014", "car": "思域SI", "BID": "BV1ii4y1S7LB", "Btitle": "大排量自吸前驱车,谁最强?", "hp": "207", "hp_content": "207", "Powertrain": "2.4/6MT", "speed": "61.33", "mods": "1", "tyre": "AD08R", "temperature": "33", "lv": "A", "time": "", "accelerate": "7.1", "limit": "130.97", "powerType":"0", "producer":"1", "nationality":"JP", "price":"19.98" }, { "year":"2015", "car": "Brz", "BID": "BV11Z4y1Q7a8", "Btitle": "手动vs自动,原厂BRZ赛道测试!", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6MT", "speed": "61.38", "mods": "0", "tyre": "Advan DB", "temperature": "10", "lv": "S", "time": "", "accelerate": "7.70", "limit": "133.33", "powerType":"0", "producer":"2", "nationality":"JP", "price":"26.90" }, { "year":"2019", "car": "领克03+", "BID": "BV1ui4y137jA", "Btitle": "奥迪S3/大众GTI,被领克03+打爆了?", "hp": "254", "hp_content": "254", "Powertrain": "2.0T/8AT", "speed": "61.40", "mods": "0", "tyre": "MC6", "temperature": "34", "lv": "A", "time": "", "accelerate": "6.5", "limit": "129", "powerType":"0", "producer":"0", "nationality":"CN", "price":"22.88" }, { "year":"2020", "car": "奥迪A4L", "BID": "BV1iD4y1Q7KH", "Btitle": "奥迪A4L的“运动性”反而退步了?", "hp": "252", "hp_content": "252", "Powertrain": "2.0T/7DCT", "speed": "61.40", "mods": "0", "tyre": "P0", "temperature": "32", "lv": "B", "time": "", "accelerate": "6.6", "limit": "129", "powerType":"0", "producer":"1", "nationality":"DE", "price":"39.68" }, { "year":"2022", "car": "领克05+", "BID": "BV1AF411V7CP", "Btitle": "领克05+算的上“赛道级SUV”?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "61.46", "mods": "0", "tyre": "PS4S", "temperature": "22", "lv": "A", "time": "", "accelerate": "6.86", "limit": "130.86", "powerType":"0", "producer":"0", "nationality":"CN", "price":"23.58" }, { "year":"2006", "car": "BMW M6", "BID": "BV1Hy4y1Y7Jz", "Btitle": "20多万,买F1的V10引擎~", "hp": "507", "hp_content": "507", "Powertrain": "5.0/7SMG", "speed": "61.50", "mods": "0", "tyre": "PS4S", "temperature": "5", "lv": "C", "time": "", "accelerate": "5.2", "limit": "149", "powerType":"0", "producer":"2", "nationality":"DE", "price":"229.80" }, { "year":"2021", "car": "沃尔沃S60 T8", "BID": "BV1BA4y197S3", "Btitle": "30万出头落地,S60 T8平替S4?", "hp": "404", "hp_content": "404", "Powertrain": "2.0T+E/8AT", "speed": "61.51", "mods": "1", "tyre": "P0", "temperature": "27", "lv": "B", "time": "", "accelerate": "5.10", "limit": "138.26", "powerType":"0", "producer":"1", "nationality":"SE", "price":"46.19" }, { "year":"2013", "car": "嘉年华ST", "BID": "BV1PU4y1878m", "Btitle": "【最强手动挡钢炮特辑】梅甘娜RS,嘉年华ST,速翼特赛道PK!", "hp": "182", "hp_content": "182", "Powertrain": "1.6T/6MT", "speed": "61.56", "mods": "2", "tyre": "AR-1", "temperature": "8", "lv": "A0", "time": "", "accelerate": "7.78", "limit": "131.3", "powerType":"0", "producer":"2", "nationality":"US", "price":"18.59" }, { "year":"2017", "car": "马自达3", "BID": "BV1BT4y1C767", "Btitle": "2.5引擎+手动挡,帝王马自达3来了!", "hp": "192", "hp_content": "192", "Powertrain": "2.5/6MT", "speed": "61.61", "mods": "2", "tyre": "PS4S", "temperature": "3", "lv": "A", "time": "", "accelerate": "7.96", "limit": "130.76", "powerType":"0", "producer":"1", "nationality":"JP", "price":"11.30" }, { "year":"2017", "car": "Brz", "BID": "BV11Z4y1Q7a8", "Btitle": "手动vs自动,原厂BRZ赛道测试!", "hp": "200", "hp_content": "200", "Powertrain": "2.0/6AT", "speed": "61.62", "mods": "0", "tyre": "DB", "temperature": "10", "lv": "S", "time": "", "accelerate": "8.40", "limit": "129.20", "powerType":"0", "producer":"2", "nationality":"JP", "price":"27.98" }, { "year":"2023", "car": "影豹R", "BID": "BV1Wa4y1F72T", "Btitle": "影豹R,低配如何变高配?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "61.75", "mods": "0", "tyre": "卫途02", "temperature": "40", "lv": "A", "time": "", "accelerate": "5.91", "limit": "132.16", "powerType":"0", "producer":"0", "nationality":"CN", "price":"13.80" }, { "year":"2020", "car": "迈锐宝XL", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/9AT", "speed": "61.80", "mods": "0", "tyre": "MC5", "temperature": "13", "lv": "B", "time": "", "accelerate": "6.78", "limit": "131", "powerType":"0", "producer":"1", "nationality":"US", "price":"21.99" }, { "year":"2005", "car": "菱帅 进化4", "BID": "BV1dh411474c", "Btitle": "【菱帅进化4.0】小马力的春药,3000块你要么?", "hp": "100", "hp_content": "100", "Powertrain": "1.6/5MT", "speed": "61.81", "mods": "2", "tyre": "AD08R", "temperature": "5", "lv": "A", "time": "", "accelerate": "10.5", "limit": "", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2010", "car": "SLK", "BID": "BV1W84y1178n", "Btitle": "6万块奔驰SLK,赛道日大杀四方?", "hp": "184", "hp_content": "184", "Powertrain": "1.8SC/5AT", "speed": "61.85", "mods": "0", "tyre": "PS5", "temperature": "18", "lv": "S", "time": "", "accelerate": "8.06", "limit": "124.55", "powerType":"0", "producer":"2", "nationality":"DE", "price":"59.80" }, { "year":"2015", "car": "野马", "BID": "BV1hQ4y1q7RW", "Btitle": "流言终结者:Mustang操控真的很差?", "hp": "350", "hp_content": "350", "Powertrain": "2.3T/6AT", "speed": "62.00", "mods": "1", "tyre": "PSS", "temperature": "5", "lv": "S", "time": "", "accelerate": "6.45", "limit": "134.63", "powerType":"0", "producer":"2", "nationality":"US", "price":"39.98" }, { "year":"2018", "car": "BMW 330Li", "BID": "BV1uk4y1o7NE", "Btitle": "5W改装宝马330Li,还跑不过捷豹XEL嘛?", "hp": "252", "hp_content": "252", "Powertrain": "2.0T/8AT", "speed": "62.10", "mods": "1", "tyre": "P7", "temperature": "34", "lv": "B", "time": "", "accelerate": "6.2", "limit": "132", "powerType":"0", "producer":"1", "nationality":"DE", "price":"42.98" }, { "year":"2009", "car": "G37", "BID": "BV1mu411z7Y9", "Btitle": "人人都吹的奇瑞王G37,就这?", "hp": "351", "hp_content": "351", "Powertrain": "3.7/7AT", "speed": "62.16", "mods": "0", "tyre": "PS4S", "temperature": "11", "lv": "B", "time": "", "accelerate": "5.78", "limit": "138.9", "powerType":"0", "producer":"2", "nationality":"JP", "price":"49.10" }, { "year":"2020", "car": "CT4", "BID": "BV1wa4y1H72F", "Btitle": "凯迪拉克CT4:美国的宝马E90~", "hp": "270", "hp_content": "270", "Powertrain": "2.0T/8AT", "speed": "62.20", "mods": "2", "tyre": "RE003", "temperature": "1", "lv": "B", "time": "", "accelerate": "6.67", "limit": "135", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2021", "car": "君威GS", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/9AT", "speed": "62.30", "mods": "0", "tyre": "MC5", "temperature": "13", "lv": "B", "time": "", "accelerate": "6.98", "limit": "129", "powerType":"0", "producer":"1", "nationality":"US", "price":"21.88" }, { "year":"2005", "car": "菱帅 进化3", "BID": "BV1ai4y1o7mB", "Btitle": "【菱帅进化3.0】小马力前驱回归,自信男人の大杀器:Camber!", "hp": "100", "hp_content": "100", "Powertrain": "1.6/5MT", "speed": "62.35", "mods": "1", "tyre": "AD08R", "temperature": "16", "lv": "A", "time": "", "accelerate": "10.5", "limit": "", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2017", "car": "ATS-L", "BID": "BV1Pv411s7Tf", "Btitle": "去洗浴中心,凯迪拉克ATS-L和CT4谁更快?", "hp": "279", "hp_content": "279", "Powertrain": "2.0T/8AT", "speed": "62.40", "mods": "0", "tyre": "泰然者", "temperature": "30", "lv": "B", "time": "", "accelerate": "6.2", "limit": "131", "powerType":"0", "producer":"1", "nationality":"US", "price":"36.88" }, { "year":"2022", "car": "思域", "BID": "BV1zi4y117xQ", "Btitle": "【米其林PS5】性能测试,11代思域圈速提升几秒?", "hp": "182", "hp_content": "182", "Powertrain": "1.5T/CVT", "speed": "62.42", "mods": "0", "tyre": "PS5", "temperature": "0", "lv": "A", "time": "", "accelerate": "--", "limit": "131.46", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.29" }, { "year":"2020", "car": "CT4", "BID": "BV1wa4y1H72F", "Btitle": "凯迪拉克CT4:美国的宝马E90~", "hp": "237", "hp_content": "237", "Powertrain": "2.0T/8AT", "speed": "62.50", "mods": "0", "tyre": "PC6SSR", "temperature": "1", "lv": "B", "time": "", "accelerate": "7.0", "limit": "135", "powerType":"0", "producer":"1", "nationality":"US", "price":"25.97" }, { "year":"2016", "car": "速腾GLI", "BID": "av76939481", "Btitle": "GTI vs GLI -- 大众“推头王”之间的对决?", "hp": "290", "hp_content": "290", "Powertrain": "2.0T/6DCT", "speed": "62.50", "mods": "1", "tyre": "S001", "temperature": "28", "lv": "A", "time": "303", "accelerate": "6.6", "limit": "134", "powerType":"0", "producer":"1", "nationality":"DE", "price":"21.88" }, { "year":"2014", "car": "C63 507", "BID": "BV1r44y167gi", "Btitle": "30多万的老奔驰-AMG C 63,操控堪比宝马M2C", "hp": "507", "hp_content": "507", "Powertrain": "6.2/7AT", "speed": "62.54", "mods": "0", "tyre": "PS4S", "temperature": "31", "lv": "B", "time": "", "accelerate": "4.2", "limit": "--", "powerType":"0", "producer":"2", "nationality":"DE", "price":"114.80" }, { "year":"2021", "car": "星越L", "BID": "BV1Yq4y1z77X", "Btitle": "教主也造假?星越L比宝马3系快?", "hp": "238", "hp_content": "238", "Powertrain": "2.0T/8AT", "speed": "62.61", "mods": "0", "tyre": "Eagle F1", "temperature": "12", "lv": "A", "time": "", "accelerate": "7.07", "limit": "-", "powerType":"0", "producer":"0", "nationality":"CN", "price":"18.52" }, { "year":"2006", "car": "206 进化3", "BID": "", "Btitle": "", "hp": "165", "hp_content": "165", "Powertrain": "1.8/5MT", "speed": "62.68", "mods": "2", "tyre": "AD08R", "temperature": "10", "lv": "A0", "time": "", "accelerate": "7.1", "limit": "--", "powerType":"0", "producer":"1", "nationality":"CN", "price":"7.78" }, { "year":"2021", "car": "GTI 8", "BID": "BV1F34y1Q7JC", "Btitle": "GTI换上领克03+的轮胎,赛道圈速竟然这么快", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "62.69", "mods": "0", "tyre": "邓禄普050", "temperature": "26", "lv": "A", "time": "", "accelerate": "6.92", "limit": "132.71", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2019", "car": "捷豹XEL", "BID": "av40240801", "Btitle": "你以为宝马3系同级别操控秒天秒地?试试捷豹XEL吧", "hp": "250", "hp_content": "250", "Powertrain": "2.0T/8AT", "speed": "62.80", "mods": "0", "tyre": "P7", "temperature": "14", "lv": "B", "time": "1364", "accelerate": "7.8", "limit": "--", "powerType":"0", "producer":"1", "nationality":"UK", "price":"36.28" }, { "year":"2023", "car": "影豹R", "BID": "BV1va4y1A7sA", "Btitle": "影豹R,低配才香?", "hp": "265", "hp_content": "265", "Powertrain": "2.0T/8AT", "speed": "62.81", "mods": "0", "tyre": "PS4", "temperature": "28", "lv": "A", "time": "", "accelerate": "5.91", "limit": "133.66", "powerType":"0", "producer":"0", "nationality":"CN", "price":"13.80" }, { "year":"2021", "car": "BMW 430i", "BID": "BV1kK4y1R7Lb", "Btitle": "2.0T卖60W+?宝马430i性能让我很失望", "hp": "258", "hp_content": "258", "Powertrain": "2.0T/8AT", "speed": "62.94", "mods": "0", "tyre": "泰然者+S001", "temperature": "15", "lv": "B", "time": "", "accelerate": "5.8", "limit": "136.10", "powerType":"0", "producer":"2", "nationality":"DE", "price":"45.98" }, { "year":"2019", "car": "领克03", "BID": "av76609493", "Btitle": "领克03四缸版,教主愿称他为“A级最速买菜王”", "hp": "190", "hp_content": "190", "Powertrain": "2.0T/6AT", "speed": "63.20", "mods": "0", "tyre": "Eagle F1", "temperature": "6", "lv": "A", "time": "18", "accelerate": "7.3", "limit": "127", "powerType":"0", "producer":"0", "nationality":"CN", "price":"15.48" }, { "year":"2014", "car": "捷豹XF", "BID": "BV1Ya4y1i7mL", "Btitle": "3.0T标轴C级运动王 | 宝马540 vs 捷豹XF对比测评", "hp": "340", "hp_content": "340", "Powertrain": "3.0SC/8AT", "speed": "63.20", "mods": "0", "tyre": "P0", "temperature": "7", "lv": "C", "time": "", "accelerate": "5.6", "limit": "133", "powerType":"0", "producer":"2", "nationality":"UK", "price":"63.80" }, { "year":"2021", "car": "BMW 325Li", "BID": "BV1P64y1v7f1", "Btitle": "30万级最强底盘中型轿车 可能就是它!", "hp": "184", "hp_content": "184", "Powertrain": "2.0T/8AT", "speed": "63.28", "mods": "0", "tyre": "P7", "temperature": "29", "lv": "B", "time": "", "accelerate": "7.90", "limit": "125.26", "powerType":"0", "producer":"1", "nationality":"DE", "price":"34.69" }, { "year":"2020", "car": "A220L", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "190", "hp_content": "190", "Powertrain": "2.0T/7DCT", "speed": "63.30", "mods": "0", "tyre": "泰然者", "temperature": "13", "lv": "A", "time": "", "accelerate": "7.1", "limit": "128", "powerType":"0", "producer":"1", "nationality":"DE", "price":"29.98" }, { "year":"2022", "car": "MG6", "BID": "BV1Ra411a7vQ", "Btitle": "花里胡哨之王,MG6...", "hp": "181", "hp_content": "181", "Powertrain": "1.5T/7DCT", "speed": "63.34", "mods": "0", "tyre": "泰然者", "temperature": "9", "lv": "A", "time": "", "accelerate": "7.93", "limit": "124.711", "powerType":"0", "producer":"0", "nationality":"CN", "price":"13.98" }, { "year":"2021", "car": "思域HB", "BID": "BV1vR4y1T799", "Btitle": "退步?思域11比10代还慢了...", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/CVT", "speed": "63.37", "mods": "0", "tyre": "Advan DB", "temperature": "13", "lv": "A", "time": "", "accelerate": "7.98", "limit": "127.82", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.39" }, { "year":"2015", "car": "E320L", "BID": "", "Btitle": "", "hp": "272", "hp_content": "272", "Powertrain": "3.0T/7AT", "speed": "63.40", "mods": "0", "tyre": "PS4", "temperature": "30", "lv": "C", "time": "", "accelerate": "7.0", "limit": "--", "powerType":"0", "producer":"1", "nationality":"DE", "price":"59.80" }, { "year":"2019", "car": "天籁", "BID": "av58322205", "Btitle": "“天籁 | 凯美瑞 | 雅阁”赛道大横评,谁是“虚假的运动车型”?", "hp": "252", "hp_content": "252", "Powertrain": "2.0T/CVT", "speed": "63.50", "mods": "0", "tyre": "BluEearth-GT", "temperature": "28", "lv": "B", "time": "139", "accelerate": "6.9", "limit": "131", "powerType":"0", "producer":"1", "nationality":"JP", "price":"21.58" }, { "year":"2016", "car": "思域", "BID": "BV1rp4y1H7Ce", "Btitle": "思域比领克03强在哪?改装+原厂全面解析!", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/6MT", "speed": "63.50", "mods": "0", "tyre": "MC5/DB", "temperature": "6", "lv": "A", "time": "", "accelerate": "7.0", "limit": "130", "powerType":"0", "producer":"1", "nationality":"JP", "price":"12.99" }, { "year":"2013", "car": "翼神", "BID": "BV1ii4y1S7LB", "Btitle": "大排量自吸前驱车,谁最强?", "hp": "170", "hp_content": "170", "Powertrain": "2.4/5MT", "speed": "63.53", "mods": "2", "tyre": "P7", "temperature": "0", "lv": "A0", "time": "", "accelerate": "7.5", "limit": "--", "powerType":"0", "producer":"0", "nationality":"JP", "price":"13.08" }, { "year":"2010", "car": "嘉年华", "BID": "", "Btitle": "", "hp": "103", "hp_content": "103", "Powertrain": "1.5/5MT", "speed": "63.55", "mods": "1", "tyre": "AD08R", "temperature": "0", "lv": "A0", "time": "", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"US", "price":"9.29" }, { "year":"2018", "car": "高尔夫GTI", "BID": "BV1ui4y137jA", "Btitle": "奥迪S3/大众GTI,被领克03+打爆了?", "hp": "220", "hp_content": "220", "Powertrain": "2.0T/7DCT", "speed": "63.60", "mods": "0", "tyre": "S001", "temperature": "34", "lv": "A", "time": "", "accelerate": "7.0", "limit": "127", "powerType":"0", "producer":"1", "nationality":"DE", "price":"23.99" }, { "year":"2019", "car": "菲斯塔", "BID": "av60306282", "Btitle": "“现代菲斯塔”打爆“名爵MG6”,教主再次冲出赛道~", "hp": "204", "hp_content": "204", "Powertrain": "1.6T/7DCT", "speed": "63.60", "mods": "0", "tyre": "耐克森", "temperature": "6", "lv": "A", "time": "313", "accelerate": "6.8", "limit": "129", "powerType":"0", "producer":"1", "nationality":"KR", "price":"14.08" }, { "year":"2007", "car": "C2 进化2", "BID": "BV1yt4y1z7Mo", "Btitle": "【206进化2.0】135马力,不怕飞度、速翼特!", "hp": "135", "hp_content": "135", "Powertrain": "1.6/5MT", "speed": "63.70", "mods": "1", "tyre": "AD08R", "temperature": "14", "lv": "A0", "time": "", "accelerate": "8.5", "limit": "118", "powerType":"0", "producer":"1", "nationality":"FR", "price":"8.88" }, { "year":"2014", "car": "飞度", "BID": "av45970606", "Btitle": "低配版“飞驰人生”!大众POLO vs 本田飞度", "hp": "131", "hp_content": "131", "Powertrain": "1.5/5MT", "speed": "63.70", "mods": "1", "tyre": "UC6", "temperature": "6", "lv": "A0", "time": "753", "accelerate": "8.7", "limit": "--", "powerType":"0", "producer":"1", "nationality":"JP", "price":"7.38" }, { "year":"2012", "car": "高尔夫GTI", "BID": "av76939481", "Btitle": "GTI vs GLI -- 大众“推头王”之间的对决?", "hp": "230", "hp_content": "230", "Powertrain": "2.0T/6DCT", "speed": "63.70", "mods": "1", "tyre": "P7", "temperature": "28", "lv": "A", "time": "374", "accelerate": "7.3", "limit": "126", "powerType":"0", "producer":"1", "nationality":"DE", "price":"23.58" }, { "year":"2022", "car": "思域", "BID": "BV1vR4y1T799", "Btitle": "退步?思域11比10代还慢了...", "hp": "182", "hp_content": "182", "Powertrain": "1.5T/CVT", "speed": "63.91", "mods": "0", "tyre": "玛吉斯510", "temperature": "13", "lv": "A", "time": "", "accelerate": "8.13", "limit": "129.61", "powerType":"0", "producer":"1", "nationality":"JP", "price":"14.29" }, { "year":"2021", "car": "奥迪A3", "BID": "BV1Fb4y1Q7Fu", "Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?", "hp": "150", "hp_content": "150", "Powertrain": "1.4T/7DCT", "speed": "64.07", "mods": "0", "tyre": "Eagle F1", "temperature": "7", "lv": "A", "time": "", "accelerate": "8.19", "limit": "126.41", "powerType":"0", "producer":"1", "nationality":"DE", "price":"20.31" }, { "year":"2015", "car": "福克斯", "BID": "av53756099", "Btitle": "改装福克斯有福克斯RS几分功力?", "hp": "236", "hp_content": "236", "Powertrain": "1.5T/6AT", "speed": "64.10", "mods": "1", "tyre": "AD08R", "temperature": "23", "lv": "A", "time": "1407", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"US", "price":"14.98" }, { "year":"2018", "car": "Golf 7", "BID": "BV1DK4y1C7vt", "Btitle": "【误】高尔夫R vs 福克斯ST?--赛道周末Vlog23", "hp": "150", "hp_content": "150", "Powertrain": "1.4T/7DCT", "speed": "64.10", "mods": "0", "tyre": "K117", "temperature": "9", "lv": "A", "time": "", "accelerate": "8.2", "limit": "124", "powerType":"0", "producer":"1", "nationality":"DE", "price":"17.19" }, { "year":"2021", "car": "Golf 8", "BID": "BV1F34y1Q7JC", "Btitle": "GTI换上领克03+的轮胎,赛道圈速竟然这么快", "hp": "150", "hp_content": "150", "Powertrain": "1.4T/7DCT", "speed": "64.12", "mods": "0", "tyre": "邓禄普sp", "temperature": "7", "lv": "A", "time": "", "accelerate": "8.08", "limit": "125.95", "powerType":"0", "producer":"1", "nationality":"DE", "price":"22.98" }, { "year":"2005", "car": "菱帅 进化2", "BID": "BV1tA411v7CG", "Btitle": "【菱帅进化2.0】买车7000块,改刹车7000块?", "hp": "100", "hp_content": "100", "Powertrain": "1.6/5MT", "speed": "64.20", "mods": "1", "tyre": "AD08R", "temperature": "30", "lv": "A", "time": "", "accelerate": "10.5", "limit": "116", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2019", "car": "Focus", "BID": "BV1DK4y1C7vt", "Btitle": "【误】高尔夫R vs 福克斯ST?--赛道周末Vlog23", "hp": "184", "hp_content": "184", "Powertrain": "1.5T/8AT", "speed": "64.30", "mods": "0", "tyre": "PS4", "temperature": "9", "lv": "A", "time": "", "accelerate": "8.9", "limit": "121", "powerType":"0", "producer":"1", "nationality":"US", "price":"13.48" }, { "year":"2018", "car": "蔚来ES8", "BID": "", "Btitle": "内容下架了", "hp": "652", "hp_content": "652", "Powertrain": "E", "speed": "64.60", "mods": "-1", "tyre": "MC6", "temperature": "9", "lv": "C", "time": "", "accelerate": "4.4", "limit": "130", "powerType":"1", "producer":"0", "nationality":"CN", "price":"44.80" }, { "year":"2019", "car": "508L", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "211", "hp_content": "211", "Powertrain": "1.8T/8AT", "speed": "64.60", "mods": "0", "tyre": "固特异", "temperature": "13", "lv": "B", "time": "", "accelerate": "8.11", "limit": "125", "powerType":"0", "producer":"1", "nationality":"FR", "price":"18.97" }, { "year":"2011", "car": "嘉年华", "BID": "BV1qh4y1k7Aa", "Btitle": "马自达2 vs 嘉年华,谁是2万钢炮王?", "hp": "103", "hp_content": "103", "Powertrain": "1.5/5MT", "speed": "64.68", "mods": "1", "tyre": "AD08R", "temperature": "19", "lv": "A0", "time": "", "accelerate": "10.12", "limit": "117.49", "powerType":"0", "producer":"1", "nationality":"US", "price":"10.19" }, { "year":"2005", "car": "菱帅 进化1", "BID": "av31676244", "Btitle": "6000多块钱改装一台车,你不撞车谁撞车?", "hp": "100", "hp_content": "100", "Powertrain": "1.6/5MT", "speed": "64.70", "mods": "1", "tyre": "AD08R", "temperature": "27", "lv": "A", "time": "347", "accelerate": "10.5", "limit": "113", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2017", "car": "Giulia 200", "BID": "av43028847", "Btitle": "百万级底盘居然赢不了教主二手菱帅?", "hp": "200", "hp_content": "200", "Powertrain": "2.0T/8AT", "speed": "64.70", "mods": "0", "tyre": "四季P7", "temperature": "6", "lv": "B", "time": "185", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"2", "nationality":"IT", "price":"31.98" }, { "year":"2016", "car": "马自达3", "BID": "BV1ii4y1S7LB", "Btitle": "大排量自吸前驱车,谁最强?", "hp": "192", "hp_content": "192", "Powertrain": "2.5/6AT", "speed": "64.73", "mods": "2", "tyre": "MXM4", "temperature": "33", "lv": "A", "time": "", "accelerate": "8.5", "limit": "119.7", "powerType":"0", "producer":"1", "nationality":"JP", "price":"11.49" }, { "year":"2011", "car": "马自达2", "BID": "BV1qh4y1k7Aa", "Btitle": "马自达2 vs 嘉年华,谁是2万钢炮王?", "hp": "102", "hp_content": "102", "Powertrain": "1.5/5MT", "speed": "64.75", "mods": "0", "tyre": "PS3", "temperature": "19", "lv": "A0", "time": "", "accelerate": "9.76", "limit": "118.24", "powerType":"0", "producer":"1", "nationality":"JP", "price":"8.88" }, { "year":"2013", "car": "BMW 118i", "BID": "av36925339", "Btitle": "【键盘对决第1期】马自达昂克赛拉VS宝马118(下集)", "hp": "170", "hp_content": "170", "Powertrain": "1.6T/8AT", "speed": "64.80", "mods": "0", "tyre": "防爆P7", "temperature": "31", "lv": "A", "time": "537", "accelerate": "7.2", "limit": "--", "powerType":"0", "producer":"2", "nationality":"DE", "price":"29.20" }, { "year":"2020", "car": "K5", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "240", "hp_content": "240", "Powertrain": "2.0T/8AT", "speed": "65.10", "mods": "0", "tyre": "NEXEN", "temperature": "13", "lv": "B", "time": "", "accelerate": "7.48", "limit": "127", "powerType":"0", "producer":"1", "nationality":"KR", "price":"18.98" }, { "year":"2020", "car": "UNI-T", "BID": "BV1ty4y1Y7Aw", "Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗", "hp": "180", "hp_content": "180", "Powertrain": "1.5T/7DCT", "speed": "65.10", "mods": "0", "tyre": "MC6", "temperature": "-3", "lv": "A", "time": "", "accelerate": "9.95", "limit": "118", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.39" }, { "year":"2021", "car": "奥迪A3L", "BID": "BV1Fb4y1Q7Fu", "Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?", "hp": "150", "hp_content": "150", "Powertrain": "1.4T/7DCT", "speed": "65.39", "mods": "0", "tyre": "K127", "temperature": "7", "lv": "A", "time": "", "accelerate": "8.03", "limit": "126.06", "powerType":"0", "producer":"1", "nationality":"DE", "price":"20.96" }, { "year":"2019", "car": "名爵MG6", "BID": "av60306282", "Btitle": "“现代菲斯塔”打爆“名爵MG6”,教主再次冲出赛道~", "hp": "169", "hp_content": "169", "Powertrain": "1.5T/7DCT", "speed": "65.40", "mods": "0", "tyre": "T005", "temperature": "23", "lv": "A", "time": "384", "accelerate": "--", "limit": "120", "powerType":"0", "producer":"0", "nationality":"CN", "price":"10.98" }, { "year":"2020", "car": "阿特兹", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "192", "hp_content": "192", "Powertrain": "2.5/6AT", "speed": "65.40", "mods": "0", "tyre": "advan DB", "temperature": "13", "lv": "B", "time": "", "accelerate": "8.51", "limit": "124", "powerType":"0", "producer":"1", "nationality":"JP", "price":"19.98" }, { "year":"2016", "car": "奥迪A3", "BID": "av57499131", "Btitle": "“键盘车神”批判性的买了一台奥迪A3,开起来香么?", "hp": "150", "hp_content": "150", "Powertrain": "1.4T/7DCT", "speed": "65.50", "mods": "0", "tyre": "K115", "temperature": "28", "lv": "A", "time": "1401", "accelerate": "8.4", "limit": "--", "powerType":"0", "producer":"1", "nationality":"DE", "price":"18.49" }, { "year":"2020", "car": "零跑S01", "BID": "BV1KX4y1K7jm", "Btitle": "年轻人的第一台电动超跑!我买下次一定!", "hp": "170", "hp_content": "170", "Powertrain": "E", "speed": "65.50", "mods": "0", "tyre": "PS4", "temperature": "0", "lv": "S", "time": "", "accelerate": "7.5", "limit": "119", "powerType":"1", "producer":"0", "nationality":"CN", "price":"12.99" }, { "year":"2020", "car": "领克06", "BID": "BV1ty4y1Y7Aw", "Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/7DCT", "speed": "65.50", "mods": "0", "tyre": "UC6", "temperature": "-3", "lv": "A", "time": "", "accelerate": "8.59", "limit": "122", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.86" }, { "year":"2020", "car": "索纳塔", "BID": "BV1Xt4y1e78H", "Btitle": "6台屌丝战车,谁能追上奔驰?", "hp": "240", "hp_content": "240", "Powertrain": "2.0T/8AT", "speed": "65.60", "mods": "0", "tyre": "米其林", "temperature": "13", "lv": "B", "time": "", "accelerate": "7.28", "limit": "129", "powerType":"0", "producer":"1", "nationality":"KR", "price":"18.38" }, { "year":"2021", "car": "凡尔赛", "BID": "BV18b4y1B7jV", "Btitle": "底盘操控到底怎样 凡尔赛性能测试", "hp": "175", "hp_content": "175", "Powertrain": "1.6T/8AT", "speed": "65.62", "mods": "0", "tyre": "固特异 御乘", "temperature": "10", "lv": "B", "time": "", "accelerate": "9.21", "limit": "122.82", "powerType":"0", "producer":"1", "nationality":"FR", "price":"18.67" }, { "year":"2019", "car": "领克02", "BID": "BV1wh411d7X4", "Btitle": "【B站】发了台“领克02”给我,SUV我就不去赛道了么?", "hp": "180", "hp_content": "180", "Powertrain": "1.5T/7DCT", "speed": "65.70", "mods": "0", "tyre": "御乘", "temperature": "26", "lv": "A", "time": "", "accelerate": "8.8", "limit": "121", "powerType":"0", "producer":"0", "nationality":"CN", "price":"18.88" }, { "year":"2016", "car": "昂克塞拉", "BID": "av36925339", "Btitle": "【键盘对决第1期】马自达昂克赛拉VS宝马118(下集)", "hp": "158", "hp_content": "158", "Powertrain": "2.0/6AT", "speed": "65.80", "mods": "0", "tyre": "DB", "temperature": "31", "lv": "A", "time": "537", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"JP", "price":"15.29" }, { "year":"2020", "car": "吉利ICON", "BID": "BV1ty4y1Y7Aw", "Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗", "hp": "177", "hp_content": "177", "Powertrain": "1.5T/7DCT", "speed": "65.80", "mods": "0", "tyre": "UC6", "temperature": "-3", "lv": "A", "time": "", "accelerate": "9.38", "limit": "121", "powerType":"0", "producer":"0", "nationality":"CN", "price":"12.88" }, { "year":"2022", "car": "拿铁DHT-PHEV", "BID": "BV1yv4y1v7QU", "Btitle": "键盘车神教的女主持人?", "hp": "437", "hp_content": "437", "Powertrain": "1.5T+E", "speed": "65.80", "mods": "0", "tyre": "浩悦4", "temperature": "17", "lv": "B", "time": "", "accelerate": "5.11", "limit": "126.50", "powerType":"0", "producer":"0", "nationality":"CN", "price":"26.30" }, { "year":"2020", "car": "CX-4", "BID": "", "Btitle": "www.zhihu.com/zvideo/1279892141532749824", "hp": "196", "hp_content": "196", "Powertrain": "2.5/6AT", "speed": "66.00", "mods": "0", "tyre": "DB", "temperature": "36", "lv": "A", "time": "", "accelerate": "9.4", "limit": "121", "powerType":"0", "producer":"1", "nationality":"JP", "price":"17.98" }, { "year":"2022", "car": "凌云S", "BID": "BV1vr4y147p4", "Btitle": "凌云S特调造假,让我白花18万?", "hp": "261", "hp_content": "261", "Powertrain": "2.0T/7DCT", "speed": "66.00", "mods": "0", "tyre": "UC6", "temperature": "27", "lv": "B", "time": "", "accelerate": "7.36", "limit": "124.441", "powerType":"0", "producer":"0", "nationality":"CN", "price":"16.99" }, { "year":"2020", "car": "奔驰A200L", "BID": "BV1Fb4y1Q7Fu", "Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?", "hp": "163", "hp_content": "163", "Powertrain": "1.3T/7DCT", "speed": "66.05", "mods": "0", "tyre": "primacy 4", "temperature": "7", "lv": "A", "time": "", "accelerate": "7.60", "limit": "124", "powerType":"0", "producer":"1", "nationality":"DE", "price":"24.98" }, { "year":"2021", "car": "BMW 120", "BID": "BV1Fb4y1Q7Fu", "Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?", "hp": "140", "hp_content": "140", "Powertrain": "1.5T/7DCT", "speed": "66.08", "mods": "0", "tyre": "K117", "temperature": "7", "lv": "A", "time": "", "accelerate": "8.71", "limit": "116", "powerType":"0", "producer":"1", "nationality":"DE", "price":"20.38" }, { "year":"2022", "car": "创酷RS", "BID": "BV1Ga411Q755", "Btitle": "10W最强SUV?创酷RS赛道测试...", "hp": "184", "hp_content": "184", "Powertrain": "1.5T/CVT", "speed": "66.17", "mods": "0", "tyre": "泰然者", "temperature": "32", "lv": "A", "time": "", "accelerate": "7.76", "limit": "118.8", "powerType":"0", "producer":"1", "nationality":"US", "price":"12.89" }, { "year":"2019", "car": "凯美瑞", "BID": "av58322205", "Btitle": "“天籁 | 凯美瑞 | 雅阁”赛道大横评,谁是“虚假的运动车型”?", "hp": "218", "hp_content": "218", "Powertrain": "2.5+E/CVT", "speed": "66.20", "mods": "0", "tyre": "BluEearth-GT", "temperature": "28", "lv": "B", "time": "252", "accelerate": "8.8", "limit": "--", "powerType":"0", "producer":"1", "nationality":"JP", "price":"23.98" }, { "year":"2006", "car": "206 进化1", "BID": "BV17E411u7hn", "Btitle": "【206进化1.0】啥叫“新手改装4件套”?-- 8000块改一台标致206", "hp": "130", "hp_content": "106+14", "Powertrain": "1.6/5MT", "speed": "66.50", "mods": "1", "tyre": "AD08R", "temperature": "29", "lv": "A0", "time": "", "accelerate": "9.7", "limit": "--", "powerType":"0", "producer":"1", "nationality":"CN", "price":"10.28" }, { "year":"2018", "car": "飞度", "BID": "BV1aK4y1a7nN", "Btitle": "教主太膨胀,直接买超跑?", "hp": "131", "hp_content": "131", "Powertrain": "1.5/5MT", "speed": "66.80", "mods": "-1", "tyre": "固铂", "temperature": "29", "lv": "A0", "time": "", "accelerate": "8.8", "limit": "120", "powerType":"0", "producer":"1", "nationality":"JP", "price":"7.38" }, { "year":"2020", "car": "ES200", "BID": "BV13b4y1t7z1", "Btitle": "ES200,公路闪电?", "hp": "173", "hp_content": "173", "Powertrain": "2.0/CVT", "speed": "66.89", "mods": "0", "tyre": "AE51", "temperature": "9", "lv": "C", "time": "", "accelerate": "9.72", "limit": "122.03", "powerType":"0", "producer":"2", "nationality":"JP", "price":"29.49" }, { "year":"2014", "car": "POLO", "BID": "av45970606", "Btitle": "低配版“飞驰人生”!大众POLO vs 本田飞度", "hp": "110", "hp_content": "110", "Powertrain": "1.6/6AT", "speed": "66.90", "mods": "1", "tyre": "AD08R", "temperature": "6", "lv": "A0", "time": "753", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"DE", "price":"10.39" }, { "year":"2009", "car": "思铂睿", "BID": "av50120061", "Btitle": "2.4高转自然吸气“大号思域SI买菜车”", "hp": "181", "hp_content": "181", "Powertrain": "2.4/5AT", "speed": "66.90", "mods": "0", "tyre": "原厂", "temperature": "18", "lv": "B", "time": "313", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"JP", "price":"23.78" }, { "year":"2018", "car": "威朗", "BID": "av38448486", "Btitle": "要不是变速箱拦着,我能打十台思域", "hp": "169", "hp_content": "169", "Powertrain": "1.5T/7DCT", "speed": "67.20", "mods": "0", "tyre": "CC5", "temperature": "26", "lv": "A", "time": "985", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"US", "price":"15.59" }, { "year":"2005", "car": "菱帅", "BID": "av24427381", "Btitle": "7000块的二手菱帅,下赛道居然直追小钢炮?", "hp": "100", "hp_content": "100", "Powertrain": "1.6/5MT", "speed": "67.50", "mods": "0", "tyre": "原厂", "temperature": "7", "lv": "A", "time": "410", "accelerate": "10.2", "limit": "112", "powerType":"0", "producer":"0", "nationality":"CN", "price":"11.88" }, { "year":"2018", "car": "雅阁", "BID": "av58322205", "Btitle": "“天籁 | 凯美瑞 | 雅阁”赛道大横评,谁是“虚假的运动车型”?", "hp": "215", "hp_content": "215", "Powertrain": "2.0E/CVT", "speed": "67.60", "mods": "0", "tyre": "DB", "temperature": "28", "lv": "B", "time": "377", "accelerate": "8.1", "limit": "", "powerType":"0", "producer":"1", "nationality":"JP", "price":"19.98" }, { "year":"2019", "car": "捷达VS5", "BID": "BV1ty4y1Y7Aw", "Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗", "hp": "150", "hp_content": "150", "Powertrain": "1.4T/6AT", "speed": "67.70", "mods": "0", "tyre": "玲珑GREEN", "temperature": "-3", "lv": "A", "time": "", "accelerate": "9.02", "limit": "117", "powerType":"0", "producer":"0", "nationality":"CN", "price":"9.88" }, { "year":"2012", "car": "福克斯", "BID": "av49386270", "Btitle": "“平民操控王”经典福克斯,赛道圈速竟然倒数第一?", "hp": "124", "hp_content": "124", "Powertrain": "1.8/5MT", "speed": "67.90", "mods": "0", "tyre": "原厂", "temperature": "18", "lv": "A", "time": "357", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"US", "price":"9.98" }, { "year":"2006", "car": "206", "BID": "BV1oE411E7Q2", "Btitle": "【206进化赛道篇】万元驾驶之王?“标致206”vs“东南菱帅”", "hp": "120", "hp_content": "120", "Powertrain": "1.6/5MT", "speed": "67.90", "mods": "1", "tyre": "原厂", "temperature": "28", "lv": "A0", "time": "", "accelerate": "9.7", "limit": "-", "powerType":"0", "producer":"1", "nationality":"FR", "price":"10.28" }, { "year":"2022", "car": "北汽魔方", "BID": "BV1BP4y1m71E", "Btitle": "9.99万买这么大个SUV?", "hp": "188", "hp_content": "188", "Powertrain": "1.5T/7DCT", "speed": "67.91", "mods": "0", "tyre": "UC6", "temperature": "17", "lv": "A", "time": "", "accelerate": "118.60", "limit": "8.40", "powerType":"0", "producer":"0", "nationality":"CN", "price":"9.99" }, { "year":"2017", "car": "雷凌", "BID": "BV1Jp4y1972m", "Btitle": "AE86的真正继任者,10W块买回家 -- 赛道周末Vlog24", "hp": "116", "hp_content": "116", "Powertrain": "1.2T/CVT", "speed": "68.60", "mods": "0", "tyre": "K415", "temperature": "31", "lv": "A", "time": "", "accelerate": "10.5", "limit": "--", "powerType":"0", "producer":"1", "nationality":"JP", "price":"10.78" }, { "year":"--", "car": "富康", "BID": "BV1VN411o7fj", "Btitle": "韩寒座驾,5000块你要么?", "hp": "106", "hp_content": "106", "Powertrain": "1.6/5MT", "speed": "68.60", "mods": "0", "tyre": "原厂", "temperature": "30", "lv": "A", "time": "", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"0", "nationality":"FR", "price":"7.58" }, { "year":"2008", "car": "POLO", "BID": "av55145767", "Btitle": "打工1W多块买的老POLO,二挡5800转换挡变身买菜王!", "hp": "86", "hp_content": "86", "Powertrain": "1.4/5MT", "speed": "68.70", "mods": "0", "tyre": "原厂", "temperature": "18", "lv": "A0", "time": "622", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"DE", "price":"8.68" }, { "year":"2015", "car": "菱悦", "BID": "av77754389", "Btitle": "【干货】菱悦VS菱帅,谁才是键盘车神的最爱?", "hp": "120", "hp_content": "120", "Powertrain": "1.5/5MT", "speed": "68.80", "mods": "0", "tyre": "原厂", "temperature": "28", "lv": "A", "time": "35", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"0", "nationality":"CN", "price":"5.69" }, { "year":"2006", "car": "甲壳虫", "BID": "av55879307", "Btitle": "“逗斗车”的甲壳虫,教主借来豁赛道~", "hp": "115", "hp_content": "115", "Powertrain": "2.0/6AT", "speed": "69.80", "mods": "1", "tyre": "原厂", "temperature": "21", "lv": "A", "time": "531", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"2", "nationality":"DE", "price":"36.50" }, { "year":"2013", "car": "奥拓", "BID": "BV1R7411D72A", "Btitle": "【送命挑战】普通人开“宝马”能赢赛车手开“奥拓”?", "hp": "71", "hp_content": "71", "Powertrain": "1.0/5MT", "speed": "71.30", "mods": "0", "tyre": "原厂", "temperature": "30", "lv": "A00", "time": "", "accelerate": "--", "limit": "--", "powerType":"0", "producer":"1", "nationality":"JP", "price":"4.18" }, { "year":"2022", "car": "五菱EV", "BID": "BV1PL4y1c7qB", "Btitle": "41马力,是钢炮?", "hp": "41", "hp_content": "41", "Powertrain": "E", "speed": "76.03", "mods": "0", "tyre": "玲珑", "temperature": "27", "lv": "A00", "time": "", "accelerate": "17.12", "limit": "98.18", "powerType":"1", "producer":"0", "nationality":"CN", "price":"5.58" }, { "year":"2020", "car": "五菱EV", "BID": "BV1Rv411W7A7", "Btitle": "27马力的赛道猛男,会翻车?", "hp": "27", "hp_content": "27", "Powertrain": "E", "speed": "87.50", "mods": "0", "tyre": "玲珑", "temperature": "10", "lv": "A00", "time": "", "accelerate": "∞", "limit": "70", "powerType":"1", "producer":"0", "nationality":"CN", "price":"2.88" } ]