From 08a718e57a9b10ab013ab8aee597023cba9e58a9 Mon Sep 17 00:00:00 2001 From: vsdeveloper Date: Sat, 6 Jan 2018 00:48:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=8F=92?= =?UTF-8?q?=E5=85=A5base64=E6=A0=BC=E5=BC=8F=E5=9B=BE=E7=89=87=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/css/mditor.min.css | 2 +- dist/js/mditor.min.js | 12 ++++++------ dist/js/mditor.min.js.map | 2 +- src/toolbar/items.js | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 8 deletions(-) diff --git a/dist/css/mditor.min.css b/dist/css/mditor.min.css index 6d68df2..95ee765 100644 --- a/dist/css/mditor.min.css +++ b/dist/css/mditor.min.css @@ -5,5 +5,5 @@ .mditor .toolbar{margin:0;padding:4px;height:100%;position:relative}.mditor .toolbar .item{transition:.3s;height:27px;width:27px;text-align:center;line-height:25px;font-size:14px;border:1px solid transparent;border-radius:3px;margin:1px;color:#888;transition:.2s;-webkit-transition:.2s;position:relative;vertical-align:middle}.mditor .toolbar .item:hover{color:#444;border:1px solid #ddd}.mditor .toolbar .item.active,.mditor .toolbar .item:active{border:1px solid #ddd;background-color:#ebebeb;box-shadow:inset 0 0 3px rgba(0,0,0,.1)}.mditor .toolbar .item.control{float:right}.mditor .editor{position:relative;display:inline-block;width:100%;height:100%;-webkit-text-size-adjust:none;transform:translateZ(0)}.mditor .editor .backdrop,.mditor .editor .textarea{position:absolute;border:none;outline:none;display:block;left:0;top:0;width:100%;height:100%;resize:none;background-color:transparent;margin:0;overflow-x:hidden;overflow-y:auto;transition:transform 1s;letter-spacing:1px}.mditor .editor .backdrop .inner,.mditor .editor .textarea{padding:8px 12px;white-space:pre-wrap;word-wrap:break-word}.mditor .editor .textarea{z-index:1;color:#444}.mditor .editor .backdrop{z-index:0;pointer-events:none;overflow:hidden;padding:0}.mditor .editor .backdrop .inner{color:transparent}.mditor .editor .backdrop .inner mark{border-radius:3px;color:transparent;background-color:rgba(255,245,75,.8)}.mditor .editor .backdrop .inner mark.active{background-color:rgba(145,225,255,.8)}.mditor .viewer{overflow:auto;position:relative;display:inline-block;border:none;outline:none;width:100%;height:100%;resize:none;background-color:transparent;margin:0;padding:10px 12px 40px;color:#333;word-break:break-all;word-wrap:break-word}.mditor .viewer .markdown-body{max-width:900px;margin:auto}.mditor .viewer .alert{color:#ddd;text-align:center;position:absolute;left:0;width:100%;top:50%;font-size:20px;margin-top:-15px}.mditor .body .finder{position:absolute;top:0;right:0;padding:8px;background-color:hsla(0,0%,94%,.9);box-shadow:-1px 1px 2px 0 rgba(0,0,0,.18);z-index:2;display:none}.mditor .body .finder input{outline:0;font-size:13px;padding:5px;height:25px;vertical-align:middle;border:1px solid #ddd;margin:2px;min-width:200px;-webkit-font-smoothing:antialiased}.mditor .body .finder i.fa{vertical-align:middle;font-size:12px;padding:5px;outline:0;color:#888}.mditor .body .finder i.fa:hover{color:#555}.mditor .body .finder.active{display:block}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../font/674f50d287a8c48dc19ba404d20fe713.eot);src:url(../font/674f50d287a8c48dc19ba404d20fe713.eot?#iefix&v=4.7.0) format("embedded-opentype"),url(../font/af7ae505a9eed503f8b8e6982036873e.woff2) format("woff2"),url(../font/fee66e712a8a08eef5805a46892932ad.woff) format("woff"),url(../font/b06871f281fee6b241d60582ae9369b9.ttf) format("truetype"),url(../font/912ec66d7572ff821749319396470bde.svg#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\F000"}.fa-music:before{content:"\F001"}.fa-search:before{content:"\F002"}.fa-envelope-o:before{content:"\F003"}.fa-heart:before{content:"\F004"}.fa-star:before{content:"\F005"}.fa-star-o:before{content:"\F006"}.fa-user:before{content:"\F007"}.fa-film:before{content:"\F008"}.fa-th-large:before{content:"\F009"}.fa-th:before{content:"\F00A"}.fa-th-list:before{content:"\F00B"}.fa-check:before{content:"\F00C"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\F00D"}.fa-search-plus:before{content:"\F00E"}.fa-search-minus:before{content:"\F010"}.fa-power-off:before{content:"\F011"}.fa-signal:before{content:"\F012"}.fa-cog:before,.fa-gear:before{content:"\F013"}.fa-trash-o:before{content:"\F014"}.fa-home:before{content:"\F015"}.fa-file-o:before{content:"\F016"}.fa-clock-o:before{content:"\F017"}.fa-road:before{content:"\F018"}.fa-download:before{content:"\F019"}.fa-arrow-circle-o-down:before{content:"\F01A"}.fa-arrow-circle-o-up:before{content:"\F01B"}.fa-inbox:before{content:"\F01C"}.fa-play-circle-o:before{content:"\F01D"}.fa-repeat:before,.fa-rotate-right:before{content:"\F01E"}.fa-refresh:before{content:"\F021"}.fa-list-alt:before{content:"\F022"}.fa-lock:before{content:"\F023"}.fa-flag:before{content:"\F024"}.fa-headphones:before{content:"\F025"}.fa-volume-off:before{content:"\F026"}.fa-volume-down:before{content:"\F027"}.fa-volume-up:before{content:"\F028"}.fa-qrcode:before{content:"\F029"}.fa-barcode:before{content:"\F02A"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-book:before{content:"\F02D"}.fa-bookmark:before{content:"\F02E"}.fa-print:before{content:"\F02F"}.fa-camera:before{content:"\F030"}.fa-font:before{content:"\F031"}.fa-bold:before{content:"\F032"}.fa-italic:before{content:"\F033"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-align-left:before{content:"\F036"}.fa-align-center:before{content:"\F037"}.fa-align-right:before{content:"\F038"}.fa-align-justify:before{content:"\F039"}.fa-list:before{content:"\F03A"}.fa-dedent:before,.fa-outdent:before{content:"\F03B"}.fa-indent:before{content:"\F03C"}.fa-video-camera:before{content:"\F03D"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\F03E"}.fa-pencil:before{content:"\F040"}.fa-map-marker:before{content:"\F041"}.fa-adjust:before{content:"\F042"}.fa-tint:before{content:"\F043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\F044"}.fa-share-square-o:before{content:"\F045"}.fa-check-square-o:before{content:"\F046"}.fa-arrows:before{content:"\F047"}.fa-step-backward:before{content:"\F048"}.fa-fast-backward:before{content:"\F049"}.fa-backward:before{content:"\F04A"}.fa-play:before{content:"\F04B"}.fa-pause:before{content:"\F04C"}.fa-stop:before{content:"\F04D"}.fa-forward:before{content:"\F04E"}.fa-fast-forward:before{content:"\F050"}.fa-step-forward:before{content:"\F051"}.fa-eject:before{content:"\F052"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-plus-circle:before{content:"\F055"}.fa-minus-circle:before{content:"\F056"}.fa-times-circle:before{content:"\F057"}.fa-check-circle:before{content:"\F058"}.fa-question-circle:before{content:"\F059"}.fa-info-circle:before{content:"\F05A"}.fa-crosshairs:before{content:"\F05B"}.fa-times-circle-o:before{content:"\F05C"}.fa-check-circle-o:before{content:"\F05D"}.fa-ban:before{content:"\F05E"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrow-down:before{content:"\F063"}.fa-mail-forward:before,.fa-share:before{content:"\F064"}.fa-expand:before{content:"\F065"}.fa-compress:before{content:"\F066"}.fa-plus:before{content:"\F067"}.fa-minus:before{content:"\F068"}.fa-asterisk:before{content:"\F069"}.fa-exclamation-circle:before{content:"\F06A"}.fa-gift:before{content:"\F06B"}.fa-leaf:before{content:"\F06C"}.fa-fire:before{content:"\F06D"}.fa-eye:before{content:"\F06E"}.fa-eye-slash:before{content:"\F070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\F071"}.fa-plane:before{content:"\F072"}.fa-calendar:before{content:"\F073"}.fa-random:before{content:"\F074"}.fa-comment:before{content:"\F075"}.fa-magnet:before{content:"\F076"}.fa-chevron-up:before{content:"\F077"}.fa-chevron-down:before{content:"\F078"}.fa-retweet:before{content:"\F079"}.fa-shopping-cart:before{content:"\F07A"}.fa-folder:before{content:"\F07B"}.fa-folder-open:before{content:"\F07C"}.fa-arrows-v:before{content:"\F07D"}.fa-arrows-h:before{content:"\F07E"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\F080"}.fa-twitter-square:before{content:"\F081"}.fa-facebook-square:before{content:"\F082"}.fa-camera-retro:before{content:"\F083"}.fa-key:before{content:"\F084"}.fa-cogs:before,.fa-gears:before{content:"\F085"}.fa-comments:before{content:"\F086"}.fa-thumbs-o-up:before{content:"\F087"}.fa-thumbs-o-down:before{content:"\F088"}.fa-star-half:before{content:"\F089"}.fa-heart-o:before{content:"\F08A"}.fa-sign-out:before{content:"\F08B"}.fa-linkedin-square:before{content:"\F08C"}.fa-thumb-tack:before{content:"\F08D"}.fa-external-link:before{content:"\F08E"}.fa-sign-in:before{content:"\F090"}.fa-trophy:before{content:"\F091"}.fa-github-square:before{content:"\F092"}.fa-upload:before{content:"\F093"}.fa-lemon-o:before{content:"\F094"}.fa-phone:before{content:"\F095"}.fa-square-o:before{content:"\F096"}.fa-bookmark-o:before{content:"\F097"}.fa-phone-square:before{content:"\F098"}.fa-twitter:before{content:"\F099"}.fa-facebook-f:before,.fa-facebook:before{content:"\F09A"}.fa-github:before{content:"\F09B"}.fa-unlock:before{content:"\F09C"}.fa-credit-card:before{content:"\F09D"}.fa-feed:before,.fa-rss:before{content:"\F09E"}.fa-hdd-o:before{content:"\F0A0"}.fa-bullhorn:before{content:"\F0A1"}.fa-bell:before{content:"\F0F3"}.fa-certificate:before{content:"\F0A3"}.fa-hand-o-right:before{content:"\F0A4"}.fa-hand-o-left:before{content:"\F0A5"}.fa-hand-o-up:before{content:"\F0A6"}.fa-hand-o-down:before{content:"\F0A7"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-globe:before{content:"\F0AC"}.fa-wrench:before{content:"\F0AD"}.fa-tasks:before{content:"\F0AE"}.fa-filter:before{content:"\F0B0"}.fa-briefcase:before{content:"\F0B1"}.fa-arrows-alt:before{content:"\F0B2"}.fa-group:before,.fa-users:before{content:"\F0C0"}.fa-chain:before,.fa-link:before{content:"\F0C1"}.fa-cloud:before{content:"\F0C2"}.fa-flask:before{content:"\F0C3"}.fa-cut:before,.fa-scissors:before{content:"\F0C4"}.fa-copy:before,.fa-files-o:before{content:"\F0C5"}.fa-paperclip:before{content:"\F0C6"}.fa-floppy-o:before,.fa-save:before{content:"\F0C7"}.fa-square:before{content:"\F0C8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\F0C9"}.fa-list-ul:before{content:"\F0CA"}.fa-list-ol:before{content:"\F0CB"}.fa-strikethrough:before{content:"\F0CC"}.fa-underline:before{content:"\F0CD"}.fa-table:before{content:"\F0CE"}.fa-magic:before{content:"\F0D0"}.fa-truck:before{content:"\F0D1"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-square:before{content:"\F0D3"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-plus:before{content:"\F0D5"}.fa-money:before{content:"\F0D6"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-up:before{content:"\F0D8"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-columns:before{content:"\F0DB"}.fa-sort:before,.fa-unsorted:before{content:"\F0DC"}.fa-sort-desc:before,.fa-sort-down:before{content:"\F0DD"}.fa-sort-asc:before,.fa-sort-up:before{content:"\F0DE"}.fa-envelope:before{content:"\F0E0"}.fa-linkedin:before{content:"\F0E1"}.fa-rotate-left:before,.fa-undo:before{content:"\F0E2"}.fa-gavel:before,.fa-legal:before{content:"\F0E3"}.fa-dashboard:before,.fa-tachometer:before{content:"\F0E4"}.fa-comment-o:before{content:"\F0E5"}.fa-comments-o:before{content:"\F0E6"}.fa-bolt:before,.fa-flash:before{content:"\F0E7"}.fa-sitemap:before{content:"\F0E8"}.fa-umbrella:before{content:"\F0E9"}.fa-clipboard:before,.fa-paste:before{content:"\F0EA"}.fa-lightbulb-o:before{content:"\F0EB"}.fa-exchange:before{content:"\F0EC"}.fa-cloud-download:before{content:"\F0ED"}.fa-cloud-upload:before{content:"\F0EE"}.fa-user-md:before{content:"\F0F0"}.fa-stethoscope:before{content:"\F0F1"}.fa-suitcase:before{content:"\F0F2"}.fa-bell-o:before{content:"\F0A2"}.fa-coffee:before{content:"\F0F4"}.fa-cutlery:before{content:"\F0F5"}.fa-file-text-o:before{content:"\F0F6"}.fa-building-o:before{content:"\F0F7"}.fa-hospital-o:before{content:"\F0F8"}.fa-ambulance:before{content:"\F0F9"}.fa-medkit:before{content:"\F0FA"}.fa-fighter-jet:before{content:"\F0FB"}.fa-beer:before{content:"\F0FC"}.fa-h-square:before{content:"\F0FD"}.fa-plus-square:before{content:"\F0FE"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angle-down:before{content:"\F107"}.fa-desktop:before{content:"\F108"}.fa-laptop:before{content:"\F109"}.fa-tablet:before{content:"\F10A"}.fa-mobile-phone:before,.fa-mobile:before{content:"\F10B"}.fa-circle-o:before{content:"\F10C"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-spinner:before{content:"\F110"}.fa-circle:before{content:"\F111"}.fa-mail-reply:before,.fa-reply:before{content:"\F112"}.fa-github-alt:before{content:"\F113"}.fa-folder-o:before{content:"\F114"}.fa-folder-open-o:before{content:"\F115"}.fa-smile-o:before{content:"\F118"}.fa-frown-o:before{content:"\F119"}.fa-meh-o:before{content:"\F11A"}.fa-gamepad:before{content:"\F11B"}.fa-keyboard-o:before{content:"\F11C"}.fa-flag-o:before{content:"\F11D"}.fa-flag-checkered:before{content:"\F11E"}.fa-terminal:before{content:"\F120"}.fa-code:before{content:"\F121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\F122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\F123"}.fa-location-arrow:before{content:"\F124"}.fa-crop:before{content:"\F125"}.fa-code-fork:before{content:"\F126"}.fa-chain-broken:before,.fa-unlink:before{content:"\F127"}.fa-question:before{content:"\F128"}.fa-info:before{content:"\F129"}.fa-exclamation:before{content:"\F12A"}.fa-superscript:before{content:"\F12B"}.fa-subscript:before{content:"\F12C"}.fa-eraser:before{content:"\F12D"}.fa-puzzle-piece:before{content:"\F12E"}.fa-microphone:before{content:"\F130"}.fa-microphone-slash:before{content:"\F131"}.fa-shield:before{content:"\F132"}.fa-calendar-o:before{content:"\F133"}.fa-fire-extinguisher:before{content:"\F134"}.fa-rocket:before{content:"\F135"}.fa-maxcdn:before{content:"\F136"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-html5:before{content:"\F13B"}.fa-css3:before{content:"\F13C"}.fa-anchor:before{content:"\F13D"}.fa-unlock-alt:before{content:"\F13E"}.fa-bullseye:before{content:"\F140"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-rss-square:before{content:"\F143"}.fa-play-circle:before{content:"\F144"}.fa-ticket:before{content:"\F145"}.fa-minus-square:before{content:"\F146"}.fa-minus-square-o:before{content:"\F147"}.fa-level-up:before{content:"\F148"}.fa-level-down:before{content:"\F149"}.fa-check-square:before{content:"\F14A"}.fa-pencil-square:before{content:"\F14B"}.fa-external-link-square:before{content:"\F14C"}.fa-share-square:before{content:"\F14D"}.fa-compass:before{content:"\F14E"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\F150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\F151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\F152"}.fa-eur:before,.fa-euro:before{content:"\F153"}.fa-gbp:before{content:"\F154"}.fa-dollar:before,.fa-usd:before{content:"\F155"}.fa-inr:before,.fa-rupee:before{content:"\F156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\F157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\F158"}.fa-krw:before,.fa-won:before{content:"\F159"}.fa-bitcoin:before,.fa-btc:before{content:"\F15A"}.fa-file:before{content:"\F15B"}.fa-file-text:before{content:"\F15C"}.fa-sort-alpha-asc:before{content:"\F15D"}.fa-sort-alpha-desc:before{content:"\F15E"}.fa-sort-amount-asc:before{content:"\F160"}.fa-sort-amount-desc:before{content:"\F161"}.fa-sort-numeric-asc:before{content:"\F162"}.fa-sort-numeric-desc:before{content:"\F163"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbs-down:before{content:"\F165"}.fa-youtube-square:before{content:"\F166"}.fa-youtube:before{content:"\F167"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-youtube-play:before{content:"\F16A"}.fa-dropbox:before{content:"\F16B"}.fa-stack-overflow:before{content:"\F16C"}.fa-instagram:before{content:"\F16D"}.fa-flickr:before{content:"\F16E"}.fa-adn:before{content:"\F170"}.fa-bitbucket:before{content:"\F171"}.fa-bitbucket-square:before{content:"\F172"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-long-arrow-down:before{content:"\F175"}.fa-long-arrow-up:before{content:"\F176"}.fa-long-arrow-left:before{content:"\F177"}.fa-long-arrow-right:before{content:"\F178"}.fa-apple:before{content:"\F179"}.fa-windows:before{content:"\F17A"}.fa-android:before{content:"\F17B"}.fa-linux:before{content:"\F17C"}.fa-dribbble:before{content:"\F17D"}.fa-skype:before{content:"\F17E"}.fa-foursquare:before{content:"\F180"}.fa-trello:before{content:"\F181"}.fa-female:before{content:"\F182"}.fa-male:before{content:"\F183"}.fa-gittip:before,.fa-gratipay:before{content:"\F184"}.fa-sun-o:before{content:"\F185"}.fa-moon-o:before{content:"\F186"}.fa-archive:before{content:"\F187"}.fa-bug:before{content:"\F188"}.fa-vk:before{content:"\F189"}.fa-weibo:before{content:"\F18A"}.fa-renren:before{content:"\F18B"}.fa-pagelines:before{content:"\F18C"}.fa-stack-exchange:before{content:"\F18D"}.fa-arrow-circle-o-right:before{content:"\F18E"}.fa-arrow-circle-o-left:before{content:"\F190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\F191"}.fa-dot-circle-o:before{content:"\F192"}.fa-wheelchair:before{content:"\F193"}.fa-vimeo-square:before{content:"\F194"}.fa-try:before,.fa-turkish-lira:before{content:"\F195"}.fa-plus-square-o:before{content:"\F196"}.fa-space-shuttle:before{content:"\F197"}.fa-slack:before{content:"\F198"}.fa-envelope-square:before{content:"\F199"}.fa-wordpress:before{content:"\F19A"}.fa-openid:before{content:"\F19B"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\F19C"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\F19D"}.fa-yahoo:before{content:"\F19E"}.fa-google:before{content:"\F1A0"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-square:before{content:"\F1A2"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-stumbleupon:before{content:"\F1A4"}.fa-delicious:before{content:"\F1A5"}.fa-digg:before{content:"\F1A6"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-drupal:before{content:"\F1A9"}.fa-joomla:before{content:"\F1AA"}.fa-language:before{content:"\F1AB"}.fa-fax:before{content:"\F1AC"}.fa-building:before{content:"\F1AD"}.fa-child:before{content:"\F1AE"}.fa-paw:before{content:"\F1B0"}.fa-spoon:before{content:"\F1B1"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-recycle:before{content:"\F1B8"}.fa-automobile:before,.fa-car:before{content:"\F1B9"}.fa-cab:before,.fa-taxi:before{content:"\F1BA"}.fa-tree:before{content:"\F1BB"}.fa-spotify:before{content:"\F1BC"}.fa-deviantart:before{content:"\F1BD"}.fa-soundcloud:before{content:"\F1BE"}.fa-database:before{content:"\F1C0"}.fa-file-pdf-o:before{content:"\F1C1"}.fa-file-word-o:before{content:"\F1C2"}.fa-file-excel-o:before{content:"\F1C3"}.fa-file-powerpoint-o:before{content:"\F1C4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\F1C5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\F1C6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\F1C7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\F1C8"}.fa-file-code-o:before{content:"\F1C9"}.fa-vine:before{content:"\F1CA"}.fa-codepen:before{content:"\F1CB"}.fa-jsfiddle:before{content:"\F1CC"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\F1CD"}.fa-circle-o-notch:before{content:"\F1CE"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\F1D0"}.fa-empire:before,.fa-ge:before{content:"\F1D1"}.fa-git-square:before{content:"\F1D2"}.fa-git:before{content:"\F1D3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\F1D4"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-qq:before{content:"\F1D6"}.fa-wechat:before,.fa-weixin:before{content:"\F1D7"}.fa-paper-plane:before,.fa-send:before{content:"\F1D8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\F1D9"}.fa-history:before{content:"\F1DA"}.fa-circle-thin:before{content:"\F1DB"}.fa-header:before{content:"\F1DC"}.fa-paragraph:before{content:"\F1DD"}.fa-sliders:before{content:"\F1DE"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-bomb:before{content:"\F1E2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\F1E3"}.fa-tty:before{content:"\F1E4"}.fa-binoculars:before{content:"\F1E5"}.fa-plug:before{content:"\F1E6"}.fa-slideshare:before{content:"\F1E7"}.fa-twitch:before{content:"\F1E8"}.fa-yelp:before{content:"\F1E9"}.fa-newspaper-o:before{content:"\F1EA"}.fa-wifi:before{content:"\F1EB"}.fa-calculator:before{content:"\F1EC"}.fa-paypal:before{content:"\F1ED"}.fa-google-wallet:before{content:"\F1EE"}.fa-cc-visa:before{content:"\F1F0"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-bell-slash:before{content:"\F1F6"}.fa-bell-slash-o:before{content:"\F1F7"}.fa-trash:before{content:"\F1F8"}.fa-copyright:before{content:"\F1F9"}.fa-at:before{content:"\F1FA"}.fa-eyedropper:before{content:"\F1FB"}.fa-paint-brush:before{content:"\F1FC"}.fa-birthday-cake:before{content:"\F1FD"}.fa-area-chart:before{content:"\F1FE"}.fa-pie-chart:before{content:"\F200"}.fa-line-chart:before{content:"\F201"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-bicycle:before{content:"\F206"}.fa-bus:before{content:"\F207"}.fa-ioxhost:before{content:"\F208"}.fa-angellist:before{content:"\F209"}.fa-cc:before{content:"\F20A"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\F20B"}.fa-meanpath:before{content:"\F20C"}.fa-buysellads:before{content:"\F20D"}.fa-connectdevelop:before{content:"\F20E"}.fa-dashcube:before{content:"\F210"}.fa-forumbee:before{content:"\F211"}.fa-leanpub:before{content:"\F212"}.fa-sellsy:before{content:"\F213"}.fa-shirtsinbulk:before{content:"\F214"}.fa-simplybuilt:before{content:"\F215"}.fa-skyatlas:before{content:"\F216"}.fa-cart-plus:before{content:"\F217"}.fa-cart-arrow-down:before{content:"\F218"}.fa-diamond:before{content:"\F219"}.fa-ship:before{content:"\F21A"}.fa-user-secret:before{content:"\F21B"}.fa-motorcycle:before{content:"\F21C"}.fa-street-view:before{content:"\F21D"}.fa-heartbeat:before{content:"\F21E"}.fa-venus:before{content:"\F221"}.fa-mars:before{content:"\F222"}.fa-mercury:before{content:"\F223"}.fa-intersex:before,.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-venus-double:before{content:"\F226"}.fa-mars-double:before{content:"\F227"}.fa-venus-mars:before{content:"\F228"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-neuter:before{content:"\F22C"}.fa-genderless:before{content:"\F22D"}.fa-facebook-official:before{content:"\F230"}.fa-pinterest-p:before{content:"\F231"}.fa-whatsapp:before{content:"\F232"}.fa-server:before{content:"\F233"}.fa-user-plus:before{content:"\F234"}.fa-user-times:before{content:"\F235"}.fa-bed:before,.fa-hotel:before{content:"\F236"}.fa-viacoin:before{content:"\F237"}.fa-train:before{content:"\F238"}.fa-subway:before{content:"\F239"}.fa-medium:before{content:"\F23A"}.fa-y-combinator:before,.fa-yc:before{content:"\F23B"}.fa-optin-monster:before{content:"\F23C"}.fa-opencart:before{content:"\F23D"}.fa-expeditedssl:before{content:"\F23E"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\F240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\F241"}.fa-battery-2:before,.fa-battery-half:before{content:"\F242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\F243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\F244"}.fa-mouse-pointer:before{content:"\F245"}.fa-i-cursor:before{content:"\F246"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-sticky-note:before{content:"\F249"}.fa-sticky-note-o:before{content:"\F24A"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-diners-club:before{content:"\F24C"}.fa-clone:before{content:"\F24D"}.fa-balance-scale:before{content:"\F24E"}.fa-hourglass-o:before{content:"\F250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\F251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\F253"}.fa-hourglass:before{content:"\F254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\F255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\F256"}.fa-hand-scissors-o:before{content:"\F257"}.fa-hand-lizard-o:before{content:"\F258"}.fa-hand-spock-o:before{content:"\F259"}.fa-hand-pointer-o:before{content:"\F25A"}.fa-hand-peace-o:before{content:"\F25B"}.fa-trademark:before{content:"\F25C"}.fa-registered:before{content:"\F25D"}.fa-creative-commons:before{content:"\F25E"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-tripadvisor:before{content:"\F262"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-get-pocket:before{content:"\F265"}.fa-wikipedia-w:before{content:"\F266"}.fa-safari:before{content:"\F267"}.fa-chrome:before{content:"\F268"}.fa-firefox:before{content:"\F269"}.fa-opera:before{content:"\F26A"}.fa-internet-explorer:before{content:"\F26B"}.fa-television:before,.fa-tv:before{content:"\F26C"}.fa-contao:before{content:"\F26D"}.fa-500px:before{content:"\F26E"}.fa-amazon:before{content:"\F270"}.fa-calendar-plus-o:before{content:"\F271"}.fa-calendar-minus-o:before{content:"\F272"}.fa-calendar-times-o:before{content:"\F273"}.fa-calendar-check-o:before{content:"\F274"}.fa-industry:before{content:"\F275"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-map-o:before{content:"\F278"}.fa-map:before{content:"\F279"}.fa-commenting:before{content:"\F27A"}.fa-commenting-o:before{content:"\F27B"}.fa-houzz:before{content:"\F27C"}.fa-vimeo:before{content:"\F27D"}.fa-black-tie:before{content:"\F27E"}.fa-fonticons:before{content:"\F280"}.fa-reddit-alien:before{content:"\F281"}.fa-edge:before{content:"\F282"}.fa-credit-card-alt:before{content:"\F283"}.fa-codiepie:before{content:"\F284"}.fa-modx:before{content:"\F285"}.fa-fort-awesome:before{content:"\F286"}.fa-usb:before{content:"\F287"}.fa-product-hunt:before{content:"\F288"}.fa-mixcloud:before{content:"\F289"}.fa-scribd:before{content:"\F28A"}.fa-pause-circle:before{content:"\F28B"}.fa-pause-circle-o:before{content:"\F28C"}.fa-stop-circle:before{content:"\F28D"}.fa-stop-circle-o:before{content:"\F28E"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-hashtag:before{content:"\F292"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-percent:before{content:"\F295"}.fa-gitlab:before{content:"\F296"}.fa-wpbeginner:before{content:"\F297"}.fa-wpforms:before{content:"\F298"}.fa-envira:before{content:"\F299"}.fa-universal-access:before{content:"\F29A"}.fa-wheelchair-alt:before{content:"\F29B"}.fa-question-circle-o:before{content:"\F29C"}.fa-blind:before{content:"\F29D"}.fa-audio-description:before{content:"\F29E"}.fa-volume-control-phone:before{content:"\F2A0"}.fa-braille:before{content:"\F2A1"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\F2A3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\F2A4"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-sign-language:before,.fa-signing:before{content:"\F2A7"}.fa-low-vision:before{content:"\F2A8"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-pied-piper:before{content:"\F2AE"}.fa-first-order:before{content:"\F2B0"}.fa-yoast:before{content:"\F2B1"}.fa-themeisle:before{content:"\F2B2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\F2B3"}.fa-fa:before,.fa-font-awesome:before{content:"\F2B4"}.fa-handshake-o:before{content:"\F2B5"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-o:before{content:"\F2B7"}.fa-linode:before{content:"\F2B8"}.fa-address-book:before{content:"\F2B9"}.fa-address-book-o:before{content:"\F2BA"}.fa-address-card:before,.fa-vcard:before{content:"\F2BB"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\F2BC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-circle-o:before{content:"\F2BE"}.fa-user-o:before{content:"\F2C0"}.fa-id-badge:before{content:"\F2C1"}.fa-drivers-license:before,.fa-id-card:before{content:"\F2C2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\F2C3"}.fa-quora:before{content:"\F2C4"}.fa-free-code-camp:before{content:"\F2C5"}.fa-telegram:before{content:"\F2C6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\F2C7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\F2CB"}.fa-shower:before{content:"\F2CC"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\F2CD"}.fa-podcast:before{content:"\F2CE"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\F2D3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\F2D4"}.fa-bandcamp:before{content:"\F2D5"}.fa-grav:before{content:"\F2D6"}.fa-etsy:before{content:"\F2D7"}.fa-imdb:before{content:"\F2D8"}.fa-ravelry:before{content:"\F2D9"}.fa-eercast:before{content:"\F2DA"}.fa-microchip:before{content:"\F2DB"}.fa-snowflake-o:before{content:"\F2DC"}.fa-superpowers:before{content:"\F2DD"}.fa-wpexplorer:before{content:"\F2DE"}.fa-meetup:before{content:"\F2E0"}.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}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #dfe2e5}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{font-size:11px;border:1px solid #c6cbd1;border-bottom-color:#959da5;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\A0"}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@font-face{font-family:RobotoMono;font-style:normal;font-weight:400;src:url(../font/a48ac41620cd818c5020d0f4302489ff.ttf) format("truetype")}.mditor{transition:.05s;border-radius:3px;padding:38px 0 0;overflow:hidden;background-color:#fff;border:1px solid #ccc;position:relative;outline:0}.mditor,.mditor *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mditor .head{-webkit-touch-callout:none;user-select:none;cursor:default;outline:0;position:absolute;height:38px;left:0;top:0;width:100%;zoom:1;margin:0;padding:0;border-bottom:1px solid #ccc;border-radius:3px 3px 0 0;background:#f1f1f1;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.4);background-color:#f3f3f3;background-image:-moz-linear-gradient(top,#f5f5f5,#efefef);background-image:-ms-linear-gradient(top,#f5f5f5,#efefef);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#efefef));background-image:-webkit-linear-gradient(top,#f5f5f5,#efefef);background-image:-o-linear-gradient(top,#f5f5f5,#efefef);background-image:linear-gradient(top,#f5f5f5,#efefef);background-repeat:repeat-x}.mditor .body{margin:0;padding:0;position:relative;line-height:0;font-size:0;border-radius:0 0 3px 3px;box-shadow:inset 0 0 4px 0 rgba(0,0,0,.1);height:100%}.mditor .body.active{border:1px solid #aaa}.mditor.split .editor,.mditor.split .viewer{width:50%;float:left}.mditor.split .editor{border-right:1px solid #ddd}.mditor.preview .viewer{width:100%}.mditor.preview .editor,.mditor.preview .toolbar .item{display:none}.mditor.preview .toolbar .item.control{display:inline-block}.mditor.fullscreen{position:fixed;margin:0!important;left:0!important;top:0!important;width:100%!important;height:100%!important;min-width:100%!important;min-height:100%!important;max-width:100%!important;max-height:100%!important;z-index:999999;border-radius:0;border:none}.mditor.toolbar-hidden .head{display:none}.mditor.toolbar-hidden .body{border-radius:3px}.mditor .backdrop,.mditor .textarea,.mditor .viewer{-webkit-font-smoothing:antialiased;font:16px/1.6 RobotoMono,PingFang SC,Lantinghei SC,Helvetica Neue,Helvetica,Arial,Microsoft YaHei,\\\5FAE\8F6F\96C5\9ED1,STHeitiSC-Light,simsun,\\\5B8B\4F53,WenQuanYi Zen Hei,WenQuanYi Micro Hei,sans-serif}.mditor-hidden{display:none}.markdown-body>ul{list-style-type:disc}.markdown-body>ol{list-style-type:decimal}.markdown-body table{display:table}.markdown-body hr{height:2px;padding:0;margin:24px 0;background-color:#eaecef;border:0}.markdown-body img{background-color:hsla(0,0%,100%,.1)} + */@font-face{font-family:FontAwesome;src:url(../font/674f50d287a8c48dc19ba404d20fe713.eot);src:url(../font/674f50d287a8c48dc19ba404d20fe713.eot?#iefix&v=4.7.0) format("embedded-opentype"),url(../font/af7ae505a9eed503f8b8e6982036873e.woff2) format("woff2"),url(../font/fee66e712a8a08eef5805a46892932ad.woff) format("woff"),url(../font/b06871f281fee6b241d60582ae9369b9.ttf) format("truetype"),url(../font/912ec66d7572ff821749319396470bde.svg#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\F000"}.fa-music:before{content:"\F001"}.fa-search:before{content:"\F002"}.fa-envelope-o:before{content:"\F003"}.fa-heart:before{content:"\F004"}.fa-star:before{content:"\F005"}.fa-star-o:before{content:"\F006"}.fa-user:before{content:"\F007"}.fa-film:before{content:"\F008"}.fa-th-large:before{content:"\F009"}.fa-th:before{content:"\F00A"}.fa-th-list:before{content:"\F00B"}.fa-check:before{content:"\F00C"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\F00D"}.fa-search-plus:before{content:"\F00E"}.fa-search-minus:before{content:"\F010"}.fa-power-off:before{content:"\F011"}.fa-signal:before{content:"\F012"}.fa-cog:before,.fa-gear:before{content:"\F013"}.fa-trash-o:before{content:"\F014"}.fa-home:before{content:"\F015"}.fa-file-o:before{content:"\F016"}.fa-clock-o:before{content:"\F017"}.fa-road:before{content:"\F018"}.fa-download:before{content:"\F019"}.fa-arrow-circle-o-down:before{content:"\F01A"}.fa-arrow-circle-o-up:before{content:"\F01B"}.fa-inbox:before{content:"\F01C"}.fa-play-circle-o:before{content:"\F01D"}.fa-repeat:before,.fa-rotate-right:before{content:"\F01E"}.fa-refresh:before{content:"\F021"}.fa-list-alt:before{content:"\F022"}.fa-lock:before{content:"\F023"}.fa-flag:before{content:"\F024"}.fa-headphones:before{content:"\F025"}.fa-volume-off:before{content:"\F026"}.fa-volume-down:before{content:"\F027"}.fa-volume-up:before{content:"\F028"}.fa-qrcode:before{content:"\F029"}.fa-barcode:before{content:"\F02A"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-book:before{content:"\F02D"}.fa-bookmark:before{content:"\F02E"}.fa-print:before{content:"\F02F"}.fa-camera:before{content:"\F030"}.fa-font:before{content:"\F031"}.fa-bold:before{content:"\F032"}.fa-italic:before{content:"\F033"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-align-left:before{content:"\F036"}.fa-align-center:before{content:"\F037"}.fa-align-right:before{content:"\F038"}.fa-align-justify:before{content:"\F039"}.fa-list:before{content:"\F03A"}.fa-dedent:before,.fa-outdent:before{content:"\F03B"}.fa-indent:before{content:"\F03C"}.fa-video-camera:before{content:"\F03D"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\F03E"}.fa-pencil:before{content:"\F040"}.fa-map-marker:before{content:"\F041"}.fa-adjust:before{content:"\F042"}.fa-tint:before{content:"\F043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\F044"}.fa-share-square-o:before{content:"\F045"}.fa-check-square-o:before{content:"\F046"}.fa-arrows:before{content:"\F047"}.fa-step-backward:before{content:"\F048"}.fa-fast-backward:before{content:"\F049"}.fa-backward:before{content:"\F04A"}.fa-play:before{content:"\F04B"}.fa-pause:before{content:"\F04C"}.fa-stop:before{content:"\F04D"}.fa-forward:before{content:"\F04E"}.fa-fast-forward:before{content:"\F050"}.fa-step-forward:before{content:"\F051"}.fa-eject:before{content:"\F052"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-plus-circle:before{content:"\F055"}.fa-minus-circle:before{content:"\F056"}.fa-times-circle:before{content:"\F057"}.fa-check-circle:before{content:"\F058"}.fa-question-circle:before{content:"\F059"}.fa-info-circle:before{content:"\F05A"}.fa-crosshairs:before{content:"\F05B"}.fa-times-circle-o:before{content:"\F05C"}.fa-check-circle-o:before{content:"\F05D"}.fa-ban:before{content:"\F05E"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrow-down:before{content:"\F063"}.fa-mail-forward:before,.fa-share:before{content:"\F064"}.fa-expand:before{content:"\F065"}.fa-compress:before{content:"\F066"}.fa-plus:before{content:"\F067"}.fa-minus:before{content:"\F068"}.fa-asterisk:before{content:"\F069"}.fa-exclamation-circle:before{content:"\F06A"}.fa-gift:before{content:"\F06B"}.fa-leaf:before{content:"\F06C"}.fa-fire:before{content:"\F06D"}.fa-eye:before{content:"\F06E"}.fa-eye-slash:before{content:"\F070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\F071"}.fa-plane:before{content:"\F072"}.fa-calendar:before{content:"\F073"}.fa-random:before{content:"\F074"}.fa-comment:before{content:"\F075"}.fa-magnet:before{content:"\F076"}.fa-chevron-up:before{content:"\F077"}.fa-chevron-down:before{content:"\F078"}.fa-retweet:before{content:"\F079"}.fa-shopping-cart:before{content:"\F07A"}.fa-folder:before{content:"\F07B"}.fa-folder-open:before{content:"\F07C"}.fa-arrows-v:before{content:"\F07D"}.fa-arrows-h:before{content:"\F07E"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\F080"}.fa-twitter-square:before{content:"\F081"}.fa-facebook-square:before{content:"\F082"}.fa-camera-retro:before{content:"\F083"}.fa-key:before{content:"\F084"}.fa-cogs:before,.fa-gears:before{content:"\F085"}.fa-comments:before{content:"\F086"}.fa-thumbs-o-up:before{content:"\F087"}.fa-thumbs-o-down:before{content:"\F088"}.fa-star-half:before{content:"\F089"}.fa-heart-o:before{content:"\F08A"}.fa-sign-out:before{content:"\F08B"}.fa-linkedin-square:before{content:"\F08C"}.fa-thumb-tack:before{content:"\F08D"}.fa-external-link:before{content:"\F08E"}.fa-sign-in:before{content:"\F090"}.fa-trophy:before{content:"\F091"}.fa-github-square:before{content:"\F092"}.fa-upload:before{content:"\F093"}.fa-lemon-o:before{content:"\F094"}.fa-phone:before{content:"\F095"}.fa-square-o:before{content:"\F096"}.fa-bookmark-o:before{content:"\F097"}.fa-phone-square:before{content:"\F098"}.fa-twitter:before{content:"\F099"}.fa-facebook-f:before,.fa-facebook:before{content:"\F09A"}.fa-github:before{content:"\F09B"}.fa-unlock:before{content:"\F09C"}.fa-credit-card:before{content:"\F09D"}.fa-feed:before,.fa-rss:before{content:"\F09E"}.fa-hdd-o:before{content:"\F0A0"}.fa-bullhorn:before{content:"\F0A1"}.fa-bell:before{content:"\F0F3"}.fa-certificate:before{content:"\F0A3"}.fa-hand-o-right:before{content:"\F0A4"}.fa-hand-o-left:before{content:"\F0A5"}.fa-hand-o-up:before{content:"\F0A6"}.fa-hand-o-down:before{content:"\F0A7"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-globe:before{content:"\F0AC"}.fa-wrench:before{content:"\F0AD"}.fa-tasks:before{content:"\F0AE"}.fa-filter:before{content:"\F0B0"}.fa-briefcase:before{content:"\F0B1"}.fa-arrows-alt:before{content:"\F0B2"}.fa-group:before,.fa-users:before{content:"\F0C0"}.fa-chain:before,.fa-link:before{content:"\F0C1"}.fa-cloud:before{content:"\F0C2"}.fa-flask:before{content:"\F0C3"}.fa-cut:before,.fa-scissors:before{content:"\F0C4"}.fa-copy:before,.fa-files-o:before{content:"\F0C5"}.fa-paperclip:before{content:"\F0C6"}.fa-floppy-o:before,.fa-save:before{content:"\F0C7"}.fa-square:before{content:"\F0C8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\F0C9"}.fa-list-ul:before{content:"\F0CA"}.fa-list-ol:before{content:"\F0CB"}.fa-strikethrough:before{content:"\F0CC"}.fa-underline:before{content:"\F0CD"}.fa-table:before{content:"\F0CE"}.fa-magic:before{content:"\F0D0"}.fa-truck:before{content:"\F0D1"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-square:before{content:"\F0D3"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-plus:before{content:"\F0D5"}.fa-money:before{content:"\F0D6"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-up:before{content:"\F0D8"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-columns:before{content:"\F0DB"}.fa-sort:before,.fa-unsorted:before{content:"\F0DC"}.fa-sort-desc:before,.fa-sort-down:before{content:"\F0DD"}.fa-sort-asc:before,.fa-sort-up:before{content:"\F0DE"}.fa-envelope:before{content:"\F0E0"}.fa-linkedin:before{content:"\F0E1"}.fa-rotate-left:before,.fa-undo:before{content:"\F0E2"}.fa-gavel:before,.fa-legal:before{content:"\F0E3"}.fa-dashboard:before,.fa-tachometer:before{content:"\F0E4"}.fa-comment-o:before{content:"\F0E5"}.fa-comments-o:before{content:"\F0E6"}.fa-bolt:before,.fa-flash:before{content:"\F0E7"}.fa-sitemap:before{content:"\F0E8"}.fa-umbrella:before{content:"\F0E9"}.fa-clipboard:before,.fa-paste:before{content:"\F0EA"}.fa-lightbulb-o:before{content:"\F0EB"}.fa-exchange:before{content:"\F0EC"}.fa-cloud-download:before{content:"\F0ED"}.fa-cloud-upload:before{content:"\F0EE"}.fa-user-md:before{content:"\F0F0"}.fa-stethoscope:before{content:"\F0F1"}.fa-suitcase:before{content:"\F0F2"}.fa-bell-o:before{content:"\F0A2"}.fa-coffee:before{content:"\F0F4"}.fa-cutlery:before{content:"\F0F5"}.fa-file-text-o:before{content:"\F0F6"}.fa-building-o:before{content:"\F0F7"}.fa-hospital-o:before{content:"\F0F8"}.fa-ambulance:before{content:"\F0F9"}.fa-medkit:before{content:"\F0FA"}.fa-fighter-jet:before{content:"\F0FB"}.fa-beer:before{content:"\F0FC"}.fa-h-square:before{content:"\F0FD"}.fa-plus-square:before{content:"\F0FE"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angle-down:before{content:"\F107"}.fa-desktop:before{content:"\F108"}.fa-laptop:before{content:"\F109"}.fa-tablet:before{content:"\F10A"}.fa-mobile-phone:before,.fa-mobile:before{content:"\F10B"}.fa-circle-o:before{content:"\F10C"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-spinner:before{content:"\F110"}.fa-circle:before{content:"\F111"}.fa-mail-reply:before,.fa-reply:before{content:"\F112"}.fa-github-alt:before{content:"\F113"}.fa-folder-o:before{content:"\F114"}.fa-folder-open-o:before{content:"\F115"}.fa-smile-o:before{content:"\F118"}.fa-frown-o:before{content:"\F119"}.fa-meh-o:before{content:"\F11A"}.fa-gamepad:before{content:"\F11B"}.fa-keyboard-o:before{content:"\F11C"}.fa-flag-o:before{content:"\F11D"}.fa-flag-checkered:before{content:"\F11E"}.fa-terminal:before{content:"\F120"}.fa-code:before{content:"\F121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\F122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\F123"}.fa-location-arrow:before{content:"\F124"}.fa-crop:before{content:"\F125"}.fa-code-fork:before{content:"\F126"}.fa-chain-broken:before,.fa-unlink:before{content:"\F127"}.fa-question:before{content:"\F128"}.fa-info:before{content:"\F129"}.fa-exclamation:before{content:"\F12A"}.fa-superscript:before{content:"\F12B"}.fa-subscript:before{content:"\F12C"}.fa-eraser:before{content:"\F12D"}.fa-puzzle-piece:before{content:"\F12E"}.fa-microphone:before{content:"\F130"}.fa-microphone-slash:before{content:"\F131"}.fa-shield:before{content:"\F132"}.fa-calendar-o:before{content:"\F133"}.fa-fire-extinguisher:before{content:"\F134"}.fa-rocket:before{content:"\F135"}.fa-maxcdn:before{content:"\F136"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-html5:before{content:"\F13B"}.fa-css3:before{content:"\F13C"}.fa-anchor:before{content:"\F13D"}.fa-unlock-alt:before{content:"\F13E"}.fa-bullseye:before{content:"\F140"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-rss-square:before{content:"\F143"}.fa-play-circle:before{content:"\F144"}.fa-ticket:before{content:"\F145"}.fa-minus-square:before{content:"\F146"}.fa-minus-square-o:before{content:"\F147"}.fa-level-up:before{content:"\F148"}.fa-level-down:before{content:"\F149"}.fa-check-square:before{content:"\F14A"}.fa-pencil-square:before{content:"\F14B"}.fa-external-link-square:before{content:"\F14C"}.fa-share-square:before{content:"\F14D"}.fa-compass:before{content:"\F14E"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\F150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\F151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\F152"}.fa-eur:before,.fa-euro:before{content:"\F153"}.fa-gbp:before{content:"\F154"}.fa-dollar:before,.fa-usd:before{content:"\F155"}.fa-inr:before,.fa-rupee:before{content:"\F156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\F157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\F158"}.fa-krw:before,.fa-won:before{content:"\F159"}.fa-bitcoin:before,.fa-btc:before{content:"\F15A"}.fa-file:before{content:"\F15B"}.fa-file-text:before{content:"\F15C"}.fa-sort-alpha-asc:before{content:"\F15D"}.fa-sort-alpha-desc:before{content:"\F15E"}.fa-sort-amount-asc:before{content:"\F160"}.fa-sort-amount-desc:before{content:"\F161"}.fa-sort-numeric-asc:before{content:"\F162"}.fa-sort-numeric-desc:before{content:"\F163"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbs-down:before{content:"\F165"}.fa-youtube-square:before{content:"\F166"}.fa-youtube:before{content:"\F167"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-youtube-play:before{content:"\F16A"}.fa-dropbox:before{content:"\F16B"}.fa-stack-overflow:before{content:"\F16C"}.fa-instagram:before{content:"\F16D"}.fa-flickr:before{content:"\F16E"}.fa-adn:before{content:"\F170"}.fa-bitbucket:before{content:"\F171"}.fa-bitbucket-square:before{content:"\F172"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-long-arrow-down:before{content:"\F175"}.fa-long-arrow-up:before{content:"\F176"}.fa-long-arrow-left:before{content:"\F177"}.fa-long-arrow-right:before{content:"\F178"}.fa-apple:before{content:"\F179"}.fa-windows:before{content:"\F17A"}.fa-android:before{content:"\F17B"}.fa-linux:before{content:"\F17C"}.fa-dribbble:before{content:"\F17D"}.fa-skype:before{content:"\F17E"}.fa-foursquare:before{content:"\F180"}.fa-trello:before{content:"\F181"}.fa-female:before{content:"\F182"}.fa-male:before{content:"\F183"}.fa-gittip:before,.fa-gratipay:before{content:"\F184"}.fa-sun-o:before{content:"\F185"}.fa-moon-o:before{content:"\F186"}.fa-archive:before{content:"\F187"}.fa-bug:before{content:"\F188"}.fa-vk:before{content:"\F189"}.fa-weibo:before{content:"\F18A"}.fa-renren:before{content:"\F18B"}.fa-pagelines:before{content:"\F18C"}.fa-stack-exchange:before{content:"\F18D"}.fa-arrow-circle-o-right:before{content:"\F18E"}.fa-arrow-circle-o-left:before{content:"\F190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\F191"}.fa-dot-circle-o:before{content:"\F192"}.fa-wheelchair:before{content:"\F193"}.fa-vimeo-square:before{content:"\F194"}.fa-try:before,.fa-turkish-lira:before{content:"\F195"}.fa-plus-square-o:before{content:"\F196"}.fa-space-shuttle:before{content:"\F197"}.fa-slack:before{content:"\F198"}.fa-envelope-square:before{content:"\F199"}.fa-wordpress:before{content:"\F19A"}.fa-openid:before{content:"\F19B"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\F19C"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\F19D"}.fa-yahoo:before{content:"\F19E"}.fa-google:before{content:"\F1A0"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-square:before{content:"\F1A2"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-stumbleupon:before{content:"\F1A4"}.fa-delicious:before{content:"\F1A5"}.fa-digg:before{content:"\F1A6"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-drupal:before{content:"\F1A9"}.fa-joomla:before{content:"\F1AA"}.fa-language:before{content:"\F1AB"}.fa-fax:before{content:"\F1AC"}.fa-building:before{content:"\F1AD"}.fa-child:before{content:"\F1AE"}.fa-paw:before{content:"\F1B0"}.fa-spoon:before{content:"\F1B1"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-recycle:before{content:"\F1B8"}.fa-automobile:before,.fa-car:before{content:"\F1B9"}.fa-cab:before,.fa-taxi:before{content:"\F1BA"}.fa-tree:before{content:"\F1BB"}.fa-spotify:before{content:"\F1BC"}.fa-deviantart:before{content:"\F1BD"}.fa-soundcloud:before{content:"\F1BE"}.fa-database:before{content:"\F1C0"}.fa-file-pdf-o:before{content:"\F1C1"}.fa-file-word-o:before{content:"\F1C2"}.fa-file-excel-o:before{content:"\F1C3"}.fa-file-powerpoint-o:before{content:"\F1C4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\F1C5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\F1C6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\F1C7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\F1C8"}.fa-file-code-o:before{content:"\F1C9"}.fa-vine:before{content:"\F1CA"}.fa-codepen:before{content:"\F1CB"}.fa-jsfiddle:before{content:"\F1CC"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\F1CD"}.fa-circle-o-notch:before{content:"\F1CE"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\F1D0"}.fa-empire:before,.fa-ge:before{content:"\F1D1"}.fa-git-square:before{content:"\F1D2"}.fa-git:before{content:"\F1D3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\F1D4"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-qq:before{content:"\F1D6"}.fa-wechat:before,.fa-weixin:before{content:"\F1D7"}.fa-paper-plane:before,.fa-send:before{content:"\F1D8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\F1D9"}.fa-history:before{content:"\F1DA"}.fa-circle-thin:before{content:"\F1DB"}.fa-header:before{content:"\F1DC"}.fa-paragraph:before{content:"\F1DD"}.fa-sliders:before{content:"\F1DE"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-bomb:before{content:"\F1E2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\F1E3"}.fa-tty:before{content:"\F1E4"}.fa-binoculars:before{content:"\F1E5"}.fa-plug:before{content:"\F1E6"}.fa-slideshare:before{content:"\F1E7"}.fa-twitch:before{content:"\F1E8"}.fa-yelp:before{content:"\F1E9"}.fa-newspaper-o:before{content:"\F1EA"}.fa-wifi:before{content:"\F1EB"}.fa-calculator:before{content:"\F1EC"}.fa-paypal:before{content:"\F1ED"}.fa-google-wallet:before{content:"\F1EE"}.fa-cc-visa:before{content:"\F1F0"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-bell-slash:before{content:"\F1F6"}.fa-bell-slash-o:before{content:"\F1F7"}.fa-trash:before{content:"\F1F8"}.fa-copyright:before{content:"\F1F9"}.fa-at:before{content:"\F1FA"}.fa-eyedropper:before{content:"\F1FB"}.fa-paint-brush:before{content:"\F1FC"}.fa-birthday-cake:before{content:"\F1FD"}.fa-area-chart:before{content:"\F1FE"}.fa-pie-chart:before{content:"\F200"}.fa-line-chart:before{content:"\F201"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-bicycle:before{content:"\F206"}.fa-bus:before{content:"\F207"}.fa-ioxhost:before{content:"\F208"}.fa-angellist:before{content:"\F209"}.fa-cc:before{content:"\F20A"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\F20B"}.fa-meanpath:before{content:"\F20C"}.fa-buysellads:before{content:"\F20D"}.fa-connectdevelop:before{content:"\F20E"}.fa-dashcube:before{content:"\F210"}.fa-forumbee:before{content:"\F211"}.fa-leanpub:before{content:"\F212"}.fa-sellsy:before{content:"\F213"}.fa-shirtsinbulk:before{content:"\F214"}.fa-simplybuilt:before{content:"\F215"}.fa-skyatlas:before{content:"\F216"}.fa-cart-plus:before{content:"\F217"}.fa-cart-arrow-down:before{content:"\F218"}.fa-diamond:before{content:"\F219"}.fa-ship:before{content:"\F21A"}.fa-user-secret:before{content:"\F21B"}.fa-motorcycle:before{content:"\F21C"}.fa-street-view:before{content:"\F21D"}.fa-heartbeat:before{content:"\F21E"}.fa-venus:before{content:"\F221"}.fa-mars:before{content:"\F222"}.fa-mercury:before{content:"\F223"}.fa-intersex:before,.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-venus-double:before{content:"\F226"}.fa-mars-double:before{content:"\F227"}.fa-venus-mars:before{content:"\F228"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-neuter:before{content:"\F22C"}.fa-genderless:before{content:"\F22D"}.fa-facebook-official:before{content:"\F230"}.fa-pinterest-p:before{content:"\F231"}.fa-whatsapp:before{content:"\F232"}.fa-server:before{content:"\F233"}.fa-user-plus:before{content:"\F234"}.fa-user-times:before{content:"\F235"}.fa-bed:before,.fa-hotel:before{content:"\F236"}.fa-viacoin:before{content:"\F237"}.fa-train:before{content:"\F238"}.fa-subway:before{content:"\F239"}.fa-medium:before{content:"\F23A"}.fa-y-combinator:before,.fa-yc:before{content:"\F23B"}.fa-optin-monster:before{content:"\F23C"}.fa-opencart:before{content:"\F23D"}.fa-expeditedssl:before{content:"\F23E"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\F240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\F241"}.fa-battery-2:before,.fa-battery-half:before{content:"\F242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\F243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\F244"}.fa-mouse-pointer:before{content:"\F245"}.fa-i-cursor:before{content:"\F246"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-sticky-note:before{content:"\F249"}.fa-sticky-note-o:before{content:"\F24A"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-diners-club:before{content:"\F24C"}.fa-clone:before{content:"\F24D"}.fa-balance-scale:before{content:"\F24E"}.fa-hourglass-o:before{content:"\F250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\F251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\F253"}.fa-hourglass:before{content:"\F254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\F255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\F256"}.fa-hand-scissors-o:before{content:"\F257"}.fa-hand-lizard-o:before{content:"\F258"}.fa-hand-spock-o:before{content:"\F259"}.fa-hand-pointer-o:before{content:"\F25A"}.fa-hand-peace-o:before{content:"\F25B"}.fa-trademark:before{content:"\F25C"}.fa-registered:before{content:"\F25D"}.fa-creative-commons:before{content:"\F25E"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-tripadvisor:before{content:"\F262"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-get-pocket:before{content:"\F265"}.fa-wikipedia-w:before{content:"\F266"}.fa-safari:before{content:"\F267"}.fa-chrome:before{content:"\F268"}.fa-firefox:before{content:"\F269"}.fa-opera:before{content:"\F26A"}.fa-internet-explorer:before{content:"\F26B"}.fa-television:before,.fa-tv:before{content:"\F26C"}.fa-contao:before{content:"\F26D"}.fa-500px:before{content:"\F26E"}.fa-amazon:before{content:"\F270"}.fa-calendar-plus-o:before{content:"\F271"}.fa-calendar-minus-o:before{content:"\F272"}.fa-calendar-times-o:before{content:"\F273"}.fa-calendar-check-o:before{content:"\F274"}.fa-industry:before{content:"\F275"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-map-o:before{content:"\F278"}.fa-map:before{content:"\F279"}.fa-commenting:before{content:"\F27A"}.fa-commenting-o:before{content:"\F27B"}.fa-houzz:before{content:"\F27C"}.fa-vimeo:before{content:"\F27D"}.fa-black-tie:before{content:"\F27E"}.fa-fonticons:before{content:"\F280"}.fa-reddit-alien:before{content:"\F281"}.fa-edge:before{content:"\F282"}.fa-credit-card-alt:before{content:"\F283"}.fa-codiepie:before{content:"\F284"}.fa-modx:before{content:"\F285"}.fa-fort-awesome:before{content:"\F286"}.fa-usb:before{content:"\F287"}.fa-product-hunt:before{content:"\F288"}.fa-mixcloud:before{content:"\F289"}.fa-scribd:before{content:"\F28A"}.fa-pause-circle:before{content:"\F28B"}.fa-pause-circle-o:before{content:"\F28C"}.fa-stop-circle:before{content:"\F28D"}.fa-stop-circle-o:before{content:"\F28E"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-hashtag:before{content:"\F292"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-percent:before{content:"\F295"}.fa-gitlab:before{content:"\F296"}.fa-wpbeginner:before{content:"\F297"}.fa-wpforms:before{content:"\F298"}.fa-envira:before{content:"\F299"}.fa-universal-access:before{content:"\F29A"}.fa-wheelchair-alt:before{content:"\F29B"}.fa-question-circle-o:before{content:"\F29C"}.fa-blind:before{content:"\F29D"}.fa-audio-description:before{content:"\F29E"}.fa-volume-control-phone:before{content:"\F2A0"}.fa-braille:before{content:"\F2A1"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\F2A3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\F2A4"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-sign-language:before,.fa-signing:before{content:"\F2A7"}.fa-low-vision:before{content:"\F2A8"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-pied-piper:before{content:"\F2AE"}.fa-first-order:before{content:"\F2B0"}.fa-yoast:before{content:"\F2B1"}.fa-themeisle:before{content:"\F2B2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\F2B3"}.fa-fa:before,.fa-font-awesome:before{content:"\F2B4"}.fa-handshake-o:before{content:"\F2B5"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-o:before{content:"\F2B7"}.fa-linode:before{content:"\F2B8"}.fa-address-book:before{content:"\F2B9"}.fa-address-book-o:before{content:"\F2BA"}.fa-address-card:before,.fa-vcard:before{content:"\F2BB"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\F2BC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-circle-o:before{content:"\F2BE"}.fa-user-o:before{content:"\F2C0"}.fa-id-badge:before{content:"\F2C1"}.fa-drivers-license:before,.fa-id-card:before{content:"\F2C2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\F2C3"}.fa-quora:before{content:"\F2C4"}.fa-free-code-camp:before{content:"\F2C5"}.fa-telegram:before{content:"\F2C6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\F2C7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\F2CB"}.fa-shower:before{content:"\F2CC"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\F2CD"}.fa-podcast:before{content:"\F2CE"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\F2D3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\F2D4"}.fa-bandcamp:before{content:"\F2D5"}.fa-grav:before{content:"\F2D6"}.fa-etsy:before{content:"\F2D7"}.fa-imdb:before{content:"\F2D8"}.fa-ravelry:before{content:"\F2D9"}.fa-eercast:before{content:"\F2DA"}.fa-microchip:before{content:"\F2DB"}.fa-snowflake-o:before{content:"\F2DC"}.fa-superpowers:before{content:"\F2DD"}.fa-wpexplorer:before{content:"\F2DE"}.fa-meetup:before{content:"\F2E0"}.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}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #dfe2e5}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{font-size:11px;border:1px solid #c6cbd1;border-bottom-color:#959da5;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:.2em .4em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@font-face{font-family:RobotoMono;font-style:normal;font-weight:400;src:url(../font/a48ac41620cd818c5020d0f4302489ff.ttf) format("truetype")}.mditor{transition:.05s;border-radius:3px;padding:38px 0 0;overflow:hidden;background-color:#fff;border:1px solid #ccc;position:relative;outline:0}.mditor,.mditor *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mditor .head{-webkit-touch-callout:none;user-select:none;cursor:default;outline:0;position:absolute;height:38px;left:0;top:0;width:100%;zoom:1;margin:0;padding:0;border-bottom:1px solid #ccc;border-radius:3px 3px 0 0;background:#f1f1f1;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.4);background-color:#f3f3f3;background-image:-moz-linear-gradient(top,#f5f5f5,#efefef);background-image:-ms-linear-gradient(top,#f5f5f5,#efefef);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#efefef));background-image:-webkit-linear-gradient(top,#f5f5f5,#efefef);background-image:-o-linear-gradient(top,#f5f5f5,#efefef);background-image:linear-gradient(top,#f5f5f5,#efefef);background-repeat:repeat-x}.mditor .body{margin:0;padding:0;position:relative;line-height:0;font-size:0;border-radius:0 0 3px 3px;box-shadow:inset 0 0 4px 0 rgba(0,0,0,.1);height:100%}.mditor .body.active{border:1px solid #aaa}.mditor.split .editor,.mditor.split .viewer{width:50%;float:left}.mditor.split .editor{border-right:1px solid #ddd}.mditor.preview .viewer{width:100%}.mditor.preview .editor,.mditor.preview .toolbar .item{display:none}.mditor.preview .toolbar .item.control{display:inline-block}.mditor.fullscreen{position:fixed;margin:0!important;left:0!important;top:0!important;width:100%!important;height:100%!important;min-width:100%!important;min-height:100%!important;max-width:100%!important;max-height:100%!important;z-index:999999;border-radius:0;border:none}.mditor.toolbar-hidden .head{display:none}.mditor.toolbar-hidden .body{border-radius:3px}.mditor .backdrop,.mditor .textarea,.mditor .viewer{-webkit-font-smoothing:antialiased;font:16px/1.6 RobotoMono,PingFang SC,Lantinghei SC,Helvetica Neue,Helvetica,Arial,Microsoft YaHei,\\\5FAE\8F6F\96C5\9ED1,STHeitiSC-Light,simsun,\\\5B8B\4F53,WenQuanYi Zen Hei,WenQuanYi Micro Hei,sans-serif}.mditor-hidden{display:none}.markdown-body>ul{list-style-type:disc}.markdown-body>ol{list-style-type:decimal}.markdown-body table{display:table}.markdown-body hr{height:2px;padding:0;margin:24px 0;background-color:#eaecef;border:0}.markdown-body img{background-color:hsla(0,0%,100%,.1)} /*# sourceMappingURL=mditor.min.css.map*/ \ No newline at end of file diff --git a/dist/js/mditor.min.js b/dist/js/mditor.min.js index 287ec32..ac203a0 100644 --- a/dist/js/mditor.min.js +++ b/dist/js/mditor.min.js @@ -2,10 +2,10 @@ * Mditor embed version 1.3.3 * Homepage: http://mditor.com */ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";var i=n(1),r=n(84),s=n(89),o=n(94),a=n(97),l=n(100),c=n(102);n(151),n(158),n(159),n(160);var u="mditor-hidden",p=new i.Component({template:n(162),onInit:function(){this.PLATFORM=navigator.platform.toLowerCase(),this.EOL="win32"==this.PLATFORM?"\r\n":"\n",this.CMD=this.PLATFORM.indexOf("mac")>-1?"command":"ctrl",this.INDENT=" ",this.shortcut=new l(this),this.Parser=c,this.parser=new c(this)},onReady:function(){var e=this;this.shortcut.bind("tab",this.editor.addIndent.bind(this.editor)),this.shortcut.bind("shift+tab",this.editor.removeIndent.bind(this.editor)),this.shortcut.bind("enter",function(t){e._ulAndQuoteAutoComplete(t),e._olAutoComplete(t),e._keepIndent(t)},!0),setTimeout(function(){e.$emit("ready")},0)},components:{Toolbar:r,Editor:s,Viewer:o,Finder:a},props:{height:"400px",width:"auto",preview:!1,split:!0,fullscreen:!1},data:function(){return{self:this,value:""}},find:function(e){this.finder.show(e)},syncScroll:function(){if(this.split&&!this.preview){var e=this.editor.textarea.offsetHeight,t=this.editor.textarea.scrollHeight,n=this.viewer.$element.scrollHeight,i=this.editor.textarea.scrollTop,r=i*(n-e)/(t-e);this.viewer.$element.scrollTop=r}},onChanged:function(e){this.$emit("changed",e),this.syncScroll()},onInput:function(e){this.$emit("input",e)},onPaste:function(e){this.$emit("paste",e),this.syncScroll()},onHeadDblClick:function(e){"I"!=e.target.tagName&&this.$emit("head-dblclick",e)},_keepIndent:function(e){var t=this.editor.getBeforeTextInLine(),n=t.split(this.INDENT);if(!(n.length<2)){for(var i=0,r=[this.EOL];""===n[i]&&i "!=n||(t.length>n.length?this.editor.insertBeforeText(this.EOL+n):(this.editor.selectBeforeText(n.length),this.editor.setSelectText("")),e.preventDefault())},_olAutoComplete:function(e){var t=/^\d+\./,n=this.editor.getBeforeTextInLine(),i=n.trim();if(t.test(i)){var r=i.split(".")[0];i.length>r.length+1?this.editor.insertBeforeText(this.EOL+(parseInt(r)+1)+". "):(this.editor.selectBeforeText(n.length),this.editor.setSelectText("")),e.preventDefault()}},focus:function(){this.preview?this.$element.focus():this.editor.focus()},blur:function(){this.editor.blur()},addCommand:function(e){e.name&&e.handler&&(this.commands=this.commands||{},this.commands[e.name]=e,e.key&&this.shortcut.bind(e.key,e.name,e.allowDefault,e.owner))},removeCommand:function(e){this.commands=this.commands||{};var t=this.commands[e];t&&(this.shortcut.unbind(t.key),this.commands[e]=null,delete this.commands[e])},execCommand:function(e,t){t=t||{},t.mditor=this,t.toolbar=this.toolbar,t.editor=this.editor,this.commands[e].handler.call(this,t)}});p.fromTextarea=function(e){e.classList.add(u);var t=new p;return t.value=e.value,t.$watch("value",function(){e.value=t.value}),t.$mount(e),t.switchTextarea=function(){e.classList.contains(u)?(e.value=t.value,t.$element.classList.add(u),e.classList.remove(u)):(t.value=e.value,e.classList.add(u),t.$element.classList.remove(u))},t},p.Parser=c,e.exports=window.Mditor=p},function(e,t,n){"use strict";var i=n(2),r=n(3),s=n(4),o=n(5),a=n(6),l=n(51),c=n(79),u=n(50);r.copy(l,c),c.version=i.version,c.Template=l,c.Watcher=o,c.Observer=a,c.EventEmitter=u,c.utils=r,c.Class=s,c.use=function(e){var t=e.install||e;if(!r.isFunction(t))throw new Error("Invalid Plugin");return t.call(e,this)},e.exports=c},function(e,t){e.exports={name:"mokit",version:"3.1.3"}},function(e,t,n){!function(e){e.noop=function(){},e.isNull=function(e){return null===e||"undefined"==typeof e},e.trim=function(e){return this.isNull(e)?e:e.trim?e.trim():e.replace(/(^[\\s]*)|([\\s]*$)/g,"")},e.replace=function(e,t,n){return this.isNull(e)?e:e.replace(new RegExp(t,"g"),n)},e.startWith=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&0===e.indexOf(t)},e.contains=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&e.indexOf(t)>-1},e.endWith=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&e.indexOf(t)===e.length-t.length},e.has=e.hasProperty=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&(t in e||e.hasOwnProperty(t))},e.isFunction=function(e){return!this.isNull(e)&&"function"==typeof e},e.isString=function(e){return!this.isNull(e)&&("string"==typeof e||e instanceof String)},e.isNumber=function(e){return!this.isNull(e)&&("number"==typeof e||e instanceof Number)},e.isBoolean=function(e){return!this.isNull(e)&&("boolean"==typeof e||e instanceof Boolean)},e.isElement=function(e){return!this.isNull(e)&&(window.Element?e instanceof Element:e.tagName&&e.nodeType&&e.nodeName&&e.attributes&&e.ownerDocument)},e.isText=function(e){return!this.isNull(e)&&e instanceof Text},e.isObject=function(e){return!this.isNull(e)&&"object"==typeof e},e.isArray=function(e){if(this.isNull(e))return!1;var t="[object Array]"===Object.prototype.toString.call(e),n=e instanceof Array,i=!this.isString(e)&&this.isNumber(e.length)&&this.isFunction(e.splice),r=!this.isString(e)&&this.isNumber(e.length)&&e[0];return t||n||i||r},e.isDate=function(e){return!this.isNull(e)&&e instanceof Date},e.isRegexp=function(e){return e instanceof RegExp},e.toArray=function(e){return this.isNull(e)?[]:Array.prototype.slice.call(e)},e.toDate=function(e){var t=this;return t.isNumber(e)?new Date(e):t.isString(e)?new Date(t.replace(t.replace(e,"-","/"),"T"," ")):t.isDate(e)?e:null},e.each=function(e,t,n){if(!this.isNull(e)&&!this.isNull(t))if(this.isArray(e))for(var i=e.length,r=0;r-1))if(delete t[i],Object.getOwnPropertyDescriptor)try{Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))}catch(n){t[i]=e[i]}else t[i]=e[i]}),t},e.clone=function(e,t){if(this.isNull(e)||this.isString(e)||this.isNumber(e)||this.isBoolean(e)||this.isDate(e))return e;var n=e;try{n=new e.constructor}catch(e){}return this.each(e,function(e,i){n[e]==i||this.contains(t,e)||(this.isObject(i)?n[e]=this.clone(i,t):n[e]=i)},this),["toString","valueOf"].forEach(function(i){this.contains(t,i)||this.defineFreezeProp(n,i,e[i])},this),n},e.mix=function(t,n,i,r,s){if(r)switch(r){case 1:return e.mix(t.prototype,n.prototype,i,0);case 2:e.mix(t.prototype,n.prototype,i,0);break;case 3:return e.mix(t,n.prototype,i,0);case 4:return e.mix(t.prototype,n,i,0)}return n=n||{},t=t||(this.isArray(n)?[]:{}),this.keys(n).forEach(function(r){this.contains(i,r)||s&&this.isNull(n[r])||(!this.isObject(n[r])||n[r].constructor!=Object&&n[r].constructor!=Array&&null!=n[r].constructor?t[r]=n[r]:t[r]=e.mix(t[r],n[r],i,0,s))},this),t},e.defineFreezeProp=function(e,t,n){try{Object.defineProperty(e,t,{value:n,enumerable:!1,configurable:!0,writable:!1})}catch(i){e[t]=n}},e.keys=function(e){if(Object.keys)return Object.keys(e);var t=[];return this.each(e,function(e){t.push(e)}),t},e.create=function(e,t){if(Object.create)return Object.create(e,t);var n=function(){};n.prototype=e;var i=new n;return t&&this.copy(t,i),i},e.setPrototypeOf=function(e,t){return Object.setPrototypeOf?Object.setPrototypeOf(e,t||this.create(null)):("__proto__"in Object||this.copy(t,e),void(e.__proto__=t))},e.getPrototypeOf=function(e){return e.__proto__?e.__proto__:Object.getPrototypeOf?Object.getPrototypeOf(e):e.constructor?e.constructor.prototype:void 0},e.deepEqual=function(e,t){if(e===t)return!0;if(!this.isObject(e)||!this.isObject(t))return!1;var n=this.keys(e),i=this.keys(t);if(n.length!==i.length)return!1;var r=n.concat(i),s=this.create(null),o=!0;return this.each(r,function(n,i){s[i]||(this.deepEqual(e[i],t[i])||(o=!1),s[i]=!0)},this),o},e.fromTo=function(e,t,n,i){if(i||(i=[n,n=i][0]),n=Math.abs(n||1),e=t;r-=n)i(r)},e.newGuid=function(){var e=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()},e.map=function(e,t){var n=this.isArray(e)?[]:{};return this.each(e,function(e,i){n[e]=t(e,i)}),n},e.setByPath=function(e,t,n){this.isNull(e)||this.isNull(t)||""===t||(this.isArray(t)||(t=t.replace(/\[/,".").replace(/\]/,".").split(".")),this.each(t,function(i,r){this.isNull(r)||r.length<1||(i===t.length-1?e[r]=n:(e[r]=e[r]||{},e=e[r]))},this))},e.getByPath=function(e,t){return this.isNull(e)||this.isNull(t)||""===t?e:(this.isArray(t)||(t=t.replace(/\[/,".").replace(/\]/,".").split(".")),this.each(t,function(t,n){this.isNull(n)||n.length<1||this.isNull(e)||(e=e[n])},this),e)},e.unique=function(e){if(this.isNull(e))return e;var t=[];return this.each(e,function(e,n){t.indexOf(n)>-1||t.push(n)}),t},e.getFunctionArgumentNames=function(e){if(!e)return[];var t=e.toString(),n=t.split(")")[0].split("=>")[0].split("(");return(n[1]||n[0]).split(",").map(function(e){return e.trim()}).filter(function(e){return"function"!=e})},e.short=function(e,t){if(!e)return e;t=t||40;var n=e.length,i=t/2;return n>t?e.substr(0,i)+"..."+e.substr(n-i):e},e.firstUpper=function(e){if(!this.isNull(e))return e.substring(0,1).toUpperCase()+e.substring(1)},e.escapeRegExp=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},e.parseDom=function(t){this._PDD_=this._PDD_||document.createElement("div"),this._PDD_.innerHTML=e.trim(t);var n=this._PDD_.childNodes[0];return n&&(n=n.cloneNode(!0)),this._PDD_.innerHTML="",n}}(t)},function(e,t,n){function i(e){e=e||r.create(null),e.$name=e.$name||"Class",e.$extends=e.$extends||i,e.$static=e.$static||r.create(null);var t=r.isFunction(e.$extends)?e.$extends.prototype:e.$extends,n=function(){if(!this.$super){r.defineFreezeProp(this,"$super",function(){if(this._super_called_)return this._super_ret_;if(this._super_called_=!0,r.isFunction(e.$extends)){if(this._super_ret_=e.$extends.apply(this,arguments),this._super_ret_){var t=r.getPrototypeOf(this);r.setPrototypeOf(t,this._super_ret_)}}else this._super_ret_=e.$extends;return this._super_ret_});for(var n in t){var i=t[n];r.isFunction(i)?this.$super[n]=i.bind(this):this.$super[n]=i}}return r.isFunction(e.constructor)&&e.constructor!==Object?e.constructor.apply(this,arguments):void this.$super.apply(this,arguments)};return n.prototype=r.create(t),r.copy(e,n.prototype),r.defineFreezeProp(n.prototype,"$class",n),r.copy(e.$static,n),r.isFunction(e.$extends)&&r.setPrototypeOf(n,e.$extends),e.$extends.$extend||r.copy(i,n),r.defineFreezeProp(n,"$super",e.$extends),n}const r=n(3);i.$extend=function(e){return e.$extends=this,new i(e)},i.Class=i,e.exports=i},function(e,t,n){"use strict";var i=n(4),r=n(3),s=new i({constructor:function(e,t,n){if(!r.isFunction(e)||!r.isFunction(t))throw new Error("Invalid parameters");this.calcor=e,this.handler=t,n&&this.calc(!0)},calc:function(e){var t=this.calcor();!e&&r.deepEqual(t,this.value)||this.handler(t,this.value),this.value=r.clone(t)}});e.exports=s},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(7),s=i(r),o=n(42),a=i(o),l=n(47),c=i(l),u=n(4),p=n(3),d=n(50),h="_observer_",f="change",m=10,g=[/^\_(.*)\_$/i,/^\_\_/i],b=new u({$extends:d,constructor:function(e,t){if(p.isNull(e))throw new Error("Invalid target");t=t||{};var n=e[h];return n?(p.copy(t,n.options),n.apply(),n):(d.call(this),p.defineFreezeProp(this,"options",t),p.defineFreezeProp(this,"shadow",{}),p.defineFreezeProp(this,"target",e),p.defineFreezeProp(this,"parents",[]),p.defineFreezeProp(e,h,this),void this.apply())},set:function(e,t){p.isFunction(t)||b.isIgnore(e)||((0,c.default)(this.target,e,{get:function(){return this[h].shadow[e]},set:function(t){var n=this[h],i=n.shadow[e];if(i!==t){if(p.isObject(t)){var r=new b(t);n.addChild(r,e)}i&&i[h]&&n.removeChild(i[h],e),n.shadow[e]=t,n.emitChange({path:e,value:t})}},configurable:!0,enumerable:!0}),this.target[e]=t)},apply:function(){p.isArray(this.target)&&this._wrapArray(this.target);var e=this._getPropertyNames(this.target);e.forEach(function(e){var t=(0,a.default)(this.target,e);"value"in t&&this.set(e,this.target[e])},this)},clearReference:function(){p.each(this.target,function(e,t){if(!p.isNull(t)){var n=t[h];n&&this.removeChild(n)}},this)},dispatch:function(e,t){t._src_!==this&&(t._src_=t._src_||this,t._layer_=t._layer_||0,t._layer_++>=m||(this.emit(e,t),!this.parents||this.parents.length<1||this.parents.forEach(function(n){if(!(n.name in n.parent.target))return n.parent.removeChild(this);var i=p.copy(t);i.path=n.name+"."+t.path,n.parent.dispatch(e,i)},this)))},addChild:function(e,t){if(p.isNull(e)||p.isNull(t))throw new Error("Invalid paramaters");e.options.root||e.parents.push({parent:this,name:t})},removeChild:function(e,t){if(p.isNull(e))throw new Error("Invalid paramaters");var n=-1;e.parents.forEach(function(e,i){e.parent===this&&e.name===t&&(n=i)},this),n>-1&&e.parents.splice(n,1)},emitChange:function(e){this.dispatch(f,e)},_getPropertyNames:function(){var e=p.isArray(this.target)?this.target.map(function(e,t){return t}):(0,s.default)(this.target);return e.filter(function(e){return e!==h})},_wrapArray:function(e){p.defineFreezeProp(e,"push",function(){var t=[].slice.call(arguments);t.forEach(function(t){this[h].set(e.length,t)},this),this[h].emitChange({path:"length",value:this.length})}),p.defineFreezeProp(e,"pop",function(){var e=[].pop.apply(this,arguments);return this[h].emitChange({path:this.length,value:e}),this[h].emitChange({path:"length",value:this.length}),e}),p.defineFreezeProp(e,"unshift",function(){var e=[].slice.call(arguments);e.forEach(function(e){this[h].set(0,e)},this),this[h].emitChange({path:"length",value:this.length})}),p.defineFreezeProp(e,"shift",function(){var e=[].shift.apply(this,arguments);return this[h].emitChange({path:0,value:e}),this[h].emitChange({path:"length",value:this.length}),e}),p.defineFreezeProp(e,"splice",function(){for(var e=arguments[0],t=p.isNull(arguments[1])?e+arguments[1]:this.length-1,n=[].splice.apply(this,arguments),i=e;i<=t;i++)this[h].emitChange({path:i,value:n[i-e]});return this[h].emitChange({path:"length",value:this.length}),n}),p.defineFreezeProp(e,"set",function(e,t){e>=this.length&&this[h].emitChange({path:"length",value:this.length}),this[h].set(e,t)})}});b.observe=function(e){return new b(e)},b.isIgnore=function(e){return g.some(function(t){return t.test(e)})},e.exports=b},function(e,t,n){e.exports={default:n(8),__esModule:!0}},function(e,t,n){n(9),e.exports=n(29).Object.keys},function(e,t,n){var i=n(10),r=n(12);n(27)("keys",function(){return function(e){return r(i(e))}})},function(e,t,n){var i=n(11);e.exports=function(e){return Object(i(e))}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(13),r=n(26);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t,n){var i=n(14),r=n(15),s=n(18)(!1),o=n(22)("IE_PROTO");e.exports=function(e,t){var n,a=r(e),l=0,c=[];for(n in a)n!=o&&i(a,n)&&c.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var i=n(16),r=n(11);e.exports=function(e){return i(r(e))}},function(e,t,n){var i=n(17);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(15),r=n(19),s=n(21);e.exports=function(e){return function(t,n,o){var a,l=i(t),c=r(l.length),u=s(o,c);if(e&&n!=n){for(;c>u;)if(a=l[u++],a!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var i=n(20),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(20),r=Math.max,s=Math.min;e.exports=function(e,t){return e=i(e),e<0?r(e+t,0):s(e,t)}},function(e,t,n){var i=n(23)("keys"),r=n(25);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(24),r="__core-js_shared__",s=i[r]||(i[r]={});e.exports=function(e){return s[e]||(s[e]={})}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+i).toString(36))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var i=n(28),r=n(29),s=n(38);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],o={};o[e]=t(n),i(i.S+i.F*s(function(){n(1)}),"Object",o)}},function(e,t,n){var i=n(24),r=n(29),s=n(30),o=n(32),a="prototype",l=function(e,t,n){var c,u,p,d=e&l.F,h=e&l.G,f=e&l.S,m=e&l.P,g=e&l.B,b=e&l.W,v=h?r:r[t]||(r[t]={}),_=v[a],y=h?i:f?i[t]:(i[t]||{})[a];h&&(n=t);for(c in n)u=!d&&y&&void 0!==y[c],u&&c in v||(p=u?y[c]:n[c],v[c]=h&&"function"!=typeof y[c]?n[c]:g&&u?s(p,i):b&&y[c]==p?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t[a]=e[a],t}(p):m&&"function"==typeof p?s(Function.call,p):p,m&&((v.virtual||(v.virtual={}))[c]=p,e&l.R&&_&&!_[c]&&o(_,c,p)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t){var n=e.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){var i=n(31);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var i=n(33),r=n(41);e.exports=n(37)?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var i=n(34),r=n(36),s=n(40),o=Object.defineProperty;t.f=n(37)?Object.defineProperty:function(e,t,n){if(i(e),t=s(t,!0),i(n),r)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(35);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(37)&&!n(38)(function(){return 7!=Object.defineProperty(n(39)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){e.exports=!n(38)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(35),r=n(24).document,s=i(r)&&i(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,n){var i=n(35);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(43),__esModule:!0}},function(e,t,n){n(44);var i=n(29).Object;e.exports=function(e,t){return i.getOwnPropertyDescriptor(e,t)}},function(e,t,n){var i=n(15),r=n(45).f;n(27)("getOwnPropertyDescriptor",function(){return function(e,t){return r(i(e),t)}})},function(e,t,n){var i=n(46),r=n(41),s=n(15),o=n(40),a=n(14),l=n(36),c=Object.getOwnPropertyDescriptor;t.f=n(37)?c:function(e,t){if(e=s(e),t=o(t,!0),l)try{return c(e,t)}catch(e){}if(a(e,t))return r(!i.f.call(e,t),e[t])}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){e.exports={default:n(48),__esModule:!0}},function(e,t,n){n(49);var i=n(29).Object;e.exports=function(e,t,n){return i.defineProperty(e,t,n)}},function(e,t,n){var i=n(28);i(i.S+i.F*!n(37),"Object",{defineProperty:n(33).f})},function(e,t,n){"use strict";var i=n(3),r=n(4),s=new r({$extends:Function,constructor:function(e){e=e||this;var t=e._emitter_;return t?t:(i.defineFreezeProp(this,"_target_",e),i.defineFreezeProp(e,"_emitter_",this),this._isNative_=this._isNativeObject(this._target_),this._listeners_=this._listeners_||{},this.on=this.$on=this.$addListener=this.addListener,this.off=this.$off=this.$removeListener=this.removeListener,void(this.$emit=this.emit))},_isNativeObject:function(e){return e.addEventListener&&e.removeEventListener&&e.dispatchEvent},addListener:function(e,t,n){if(this._isNative_&&this._addNativeEventListener(e,t,n),this._listeners_[e]=this._listeners_[e]||[],this._listeners_[e].push(t),this._listeners_[e].length>s._maxListeners)throw new Error("The `"+e+"` event listener is not more than 10")},removeListener:function(e,t,n){if(e&&t){if(this._isNative_&&this._removeNativeEventListener(e,t,n),!this._listeners_[e])return;var r=this._listeners_[e].indexOf(t);this._listeners_[e].splice(r,1)}else e?(this._isNative_&&this._listeners_[e]&&this._listeners_[e].forEach(function(t){this.removeListener(e,t,n)},this),delete this._listeners_[e]):(i.each(this._listeners_,function(e){this.removeListener(e,null,n)},this),this._listeners_={})},emit:function(e,t,n,i){if(this._isNative_)return this._emitNativeEvent(e,t,n,i);if(this._listeners_[e]){var r=!1;return this._listeners_[e].forEach(function(e){var n=e.call(this._target_,t);n===!1&&(r=!0)},this),r}},_addNativeEventListener:function(e,t,n){this._target_.addEventListener(e,t,n);var i=s._events[e];i&&(i.addListener=i.addListener||i.on,i.addListener(this,e,t,n))},_removeNativeEventListener:function(e,t,n){this._target_.removeEventListener(e,t,n);var i=s._events[e];i&&(i.removeListener=i.removeListener||i.off,i.removeListener(this,e,t,n))},_emitNativeEvent:function(e,t,n,r){var s=document.createEvent("HTMLEvents");return s.initEvent(e,n,r),i.copy(t,s,["data"]),s.data=t,this._target_.dispatchEvent(s)}});s._maxListeners=10,s._events=[],s.register=function(e){var t=e.name;t&&(i.isArray(t)||(t=t.split(",")),t.forEach(function(t){this._events[t]=e},this))},e.exports=s},function(e,t,n){"use strict";var i=n(52),r=n(53),s=n(54),o=n(78),a=n(55);o.Template=o,o.Compiler=i,o.Directive=r,o.directives=a,o.Expression=s,e.exports=o},function(e,t,n){"use strict";var i=n(4),r=n(53),s=n(3),o=n(54),a=n(55),l="m",c=new i({constructor:function(e){e=e||{},this.prefix=e.prefix||l,this.elementDirectives={},this.attributeDirectives={},this.registerDirectives(a),this.registerDirectives(e.directives)},toCamelCase:function(e,t){return e&&(e=e.replace(/\-[a-z0-9]/g,function(e){return e.slice(1).toUpperCase()}),e=e.replace(/^[a-z]/i,function(e){return t?e.toUpperCase():e.toLowerCase()})),e},toSplitCase:function(e){return e&&(e=e.replace(/([A-Z])/g,"-$1"),"-"==e[0]&&(e=e.slice(1))),e},registerDirectives:function(e){s.each(e,function(e,t){e=this.toSplitCase(e);var n=t.options.prefix===!1?e:this.prefix+":"+e;t.options.type==r.TE?this.elementDirectives[n.toUpperCase()]=t:this.attributeDirectives[n.toLowerCase()]=t},this)},_parseAttrInfo:function(e){var t=this,n=e.toLowerCase().split(":"),i={};return n.length>1?(i.name=n[0]+":"+n[1],i.decorates=n.slice(2).map(function(e){return t.toCamelCase(e)})):(i.name=n[0],i.decorates=[]),i},_createDirectiveInstance:function(e,t){return t.compiler=this,t.prefix=this.prefix,new e(t)},_bindHandler:function(e){e.directives=e.directives.sort(function(e,t){return t.level-e.level});var t=[];s.each(e.directives,function(n,i){if(i.index=n,i.bind(),t.push(i),i.remove!==!1&&i.attribute&&i.node.removeAttribute(i.attribute.name),i.final)return e.final=!0},this),e.directives=t},_compileElement:function(e,t){var n=this.elementDirectives[t.nodeName.toUpperCase()];n&&e.directives.push(this._createDirectiveInstance(n,{handler:e,node:t}))},_compileAttributes:function(e,t){s.toArray(t.attributes).forEach(function(n){var i=this._parseAttrInfo(n.name),r=this.attributeDirectives[i.name]||this.attributeDirectives["*"];if(r){var s=r.options;e.directives.push(this._createDirectiveInstance(r,{handler:e,node:t,attribute:n,expression:s.literal?n.value:new o(n.value,s.mixed),decorates:i.decorates}))}},this)},_compileChildren:function(e,t){e.final||s.toArray(t.childNodes).forEach(function(t){if(!t._compiled_){var n=this.compile(t);n.parent=this,e.children.push(n)}},this)},compile:function(e,t){if(!e)throw new Error("Invalid node for compile");e._compiled_=!0,t=t||{};var n=function e(t){s.isNull(t)&&(t={}),e.directives.forEach(function(e){e.scope=t,e.execute(t)},this),e.children.forEach(function(e){e(t)},this)};return n.dispose=function(){n.directives.forEach(function(e){e.unbind()},this),n.children.forEach(function(e){e.dispose()},this)},n.node=e,n.directives=[],n.children=[],t.element!==!1&&this._compileElement(n,e),t.attribute!==!1&&this._compileAttributes(n,e),this._bindHandler(n),t.children!==!1&&this._compileChildren(n,e),n}});e.exports=c},function(e,t,n){"use strict";function i(e){e=e||{},e.type=e.type||i.TA,e.level=e.level||i.LG;var t=new r({$extends:e,constructor:function(e){s.copy(e,this)},options:e,bind:e.bind||s.noop,execute:e.execute||function(e){if(this.scope=e,this.options.type===i.TE)return this.update();var t=this.options.literal?this.attribute.value:this.expression.execute(e);s.deepEqual(this._value_,t)||(this.update(t,this._value_),this._value_=t)},update:e.update||s.noop,unbind:e.unbind||s.noop,utils:s,Expression:o});return t.options=e,s.setPrototypeOf(t,e),t}var r=n(4),s=n(3),o=n(54);i.TA="A",i.TE="E",i.LP=3e3,i.LS=2e3,i.LE=1e3,i.LG=0,i.LA=-1e3,i.LC=-2e3,e.exports=i},function(e,t,n){"use strict";var i=n(4),r=n(3),s=new i({constructor:function(e,t){this.func=t?this._compileMixedCode(e):this._compileCode(e)},_compileCode:function(e){return e=this._escapeEOL(this._wrapCode(e)),this._createFunction(e)},_compileMixedCode:function(e){var t=this._parseMixedCode(e);return e=this._escapeEOL(t.join("+")),this._createFunction(e)},_createFunction:function(e){var t=new Function("utils","scope","with(scope){return "+e+"}");return t.bind(null,r)},_parseMixedCode:function(e){for(var t=0,n=e.length,i="",s=!1,o=[];t<=n;){var a=e[t++],l=e[t];r.isNull(a)?(i.length>0&&o.push('"'+this._escapeCode(i)+'"'),i="",s=!1):s||a+l!="{{"?s&&a+l=="}}"?(i.length>0&&o.push(this._wrapCode(i)),i="",s=!1,t++):i+=a:(i.length>0&&o.push('"'+this._escapeCode(i)+'"'),i="",s=!0,t++)}return o},_escapeCode:function(e){return e.replace(/"/,'\\"').replace("\r\n","\\r\\n").replace("\n","\\n")},_escapeEOL:function(e){return e.replace(/\n/gm,"\\\n")},_wrapCode:function(e){return"((function(){try{return ("+e+")}catch(err){console.error(err);return err;}})())"},execute:function(e){return r.isNull(e)&&(e={}),this.func.call(e,e)}});e.exports=s},function(e,t,n){"use strict";e.exports={"#text":n(56),each:n(57),if:n(59),prop:n(60),attr:n(61),on:n(62),html:n(63),text:n(64),prevent:n(65),id:n(66),cloak:n(67),show:n(68),model:n(69),focus:n(76),"*":n(77)}},function(e,t,n){"use strict";var i=n(53),r=n(54);e.exports=new i({type:i.TE,prefix:!1,bind:function(){this.expr=new r(this.node.nodeValue,!0),this.node.nodeValue=""},execute:function(e){this.scope=e;var t=this.expr.execute(e);this.node.nodeValue!==t&&(this.node.nodeValue=t)}})},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(47),s=i(r),o=n(53),a=n(3),l=n(58);e.exports=new o({level:o.LS+1,final:!0,literal:!0,bind:function(){this.mountNode=document.createTextNode(""),this.node.parentNode.insertBefore(this.mountNode,this.node),this.node.removeAttribute(this.attribute.name),this.node.parentNode.removeChild(this.node),this.parseExpr(),this.eachItems={}},parseExpr:function(){this.eachType=this.attribute.value.indexOf(" in ")>-1?"in":"of";var e=this.attribute.value.split(" "+this.eachType+" "),t="with(scope){utils.each("+e[1]+",fn.bind(this,"+e[1]+"))}";this.each=new Function("utils","scope","fn",t).bind(null,this.utils);var n=e[0].split(",").map(function(e){return e.trim()});"in"==this.eachType?(this.keyName=n[0],this.valueName=n[1]):(this.keyName=n[1],this.valueName=n[0])},execute:function(e){var t=this,n=[],i=document.createDocumentFragment(),r=this;this.each(e,function(e,t){var o=new l(this.scope);r.keyName&&(0,s.default)(o,r.keyName,{get:function(){return t}}),r.valueName&&(0,s.default)(o,r.valueName,{get:function(){return e[t]},set:function(n){e[t]=n}});var a=this.eachItems[t];if(a)a.handler(o);else{var c={};c.node=this.node.cloneNode(!0),i.appendChild(c.node),c.handler=this.compiler.compile(c.node),c.handler(o),this.eachItems[t]=c}n.push(t)}.bind(this)),a.each(this.eachItems,function(e,i){n.some(function(t){return t==e})||(i.node.parentNode&&i.node.parentNode.removeChild(i.node),delete t.eachItems[e])},this),i.childNodes.length>0&&this.mountNode.parentNode.insertBefore(i,this.mountNode)}})},function(e,t,n){"use strict";var i=n(3),r=function(e,t){var n=i.create(e);return i.copy(t,n),i.each(e,function(t,r){i.isFunction(r)&&(n[t]=r.bind(e))}),n};e.exports=r},function(e,t,n){"use strict";var i=n(53);e.exports=new i({level:i.LS,final:!0,bind:function(){this.mountNode=document.createTextNode(""),this.node.parentNode.insertBefore(this.mountNode,this.node),this.node.removeAttribute(this.attribute.name),this.node.parentNode.removeChild(this.node)},execute:function(e){var t=this.expression.execute(e);if(t){this._handler=this._handler||this.compiler.compile(this.node),this._handler(e);var n=this.node.$substitute||this.node;n.parentNode||this.mountNode.parentNode.insertBefore(n,this.mountNode)}else{var i=this.node.$substitute||this.node;i.parentNode&&i.parentNode.removeChild(i)}}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({update:function(e){var t=this.node.$target||this.node;t[this.decorates[0]]=e}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({update:function(e){var t=this.node.$target||this.node;t.setAttribute?t.setAttribute(this.decorates[0],e):t[this.decorates[0]]=e}})},function(e,t,n){"use strict";var i=n(53),r=n(50),s=n(58);e.exports=new i({literal:!0,bind:function(){var e=this.attribute.value||"";e.indexOf("(")<0&&e.indexOf(")")<0&&(e+="($event)"),this.expr=new this.Expression(e);var t=this.node.$target||this.node;this.emiter=new r(t),this.emiter.addListener(this.decorates[0],function(e){this.utils.isNull(this.scope)||this.expr.execute(new s(this.scope,{$event:e}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({update:function(e){this.node.innerHTML=e}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({update:function(e){this.node.innerText=e}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({level:i.LP,final:!0})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({literal:!0,update:function(e){if(e in this.scope)throw new Error("Conflicting component id `"+e+"`");this.scope[e]=this.node.$target||this.node; -}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({level:i.LC,literal:!0,prefix:!1,bind:function(){this.node.removeAttribute(this.attribute.name)}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({update:function(e){this.node.style.display=e?"":"none"}})},function(e,t,n){"use strict";var i=n(70),r=n(71),s=n(72),o=n(73),a=n(74),l=n(75),c=function(e){var t=e.node,n=t.tagName;if(e.decorates[0])return new l(e);if("INPUT"==n){var c=t.getAttribute("type");return"radio"==c?new o(e):"checkbox"==c?new a(e):new s(e)}if("TEXTAREA"==n)return new s(e);if("SELECT"==n)return new i(e);if(t.isContentEditable)return new r(e);throw new Error("Directive `model` cannot be used on `"+n+"`")};c.options={level:c.LA},e.exports=c},function(e,t,n){"use strict";var i=n(53),r=n(50),s=n(58);e.exports=new i({final:!0,bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.node.removeAttribute(this.attribute.name),this._handler=this.compiler.compile(this.node),this.emiter=new r(this.node),this.emiter.addListener("change",function(){if(!this.utils.isNull(this.scope)){var e=this.node.selectedOptions,t=this.node.multiple?[].slice.call(e).map(function(e){return e.value},this):e[0].value;this.backExpr.execute(new s(this.scope,{_value_:t}))}}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e,this._handler(e);var t=this.expression.execute(e);this.utils.isArray(t)||(t=[t]),[].slice.call(this.node.options).forEach(function(e){e.selected=t.indexOf(e.value)>-1},this)}})},function(e,t,n){"use strict";var i=n(53),r=n(50),s=n(58);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("input",function(){this.utils.isNull(this.scope)||this.backExpr.execute(new s(this.scope,{_value_:this.node.innerHTML}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){var t=this.expression.execute(e);this.node.innerHTML!==t&&(this.node.innerHTML=t)}})},function(e,t,n){"use strict";var i=n(53),r=n(50),s=n(58);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("input",function(){this.utils.isNull(this.scope)||this.backExpr.execute(new s(this.scope,{_value_:this.node.value}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){var t=this.expression.execute(e);this.node.value!==t&&(this.node.value=t)}})},function(e,t,n){"use strict";var i=n(53),r=n(50),s=n(58);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("change",function(){this.utils.isNull(this.scope)||this.backExpr.execute(new s(this.scope,{_value_:this.node.value}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e;var t=this.expression.execute(e);this.node.checked=t==this.node.value}})},function(e,t,n){"use strict";var i=n(53),r=n(50),s=n(58);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("change",function(){if(!this.utils.isNull(this.scope)){var e=this.expression.execute(this.scope);if(this.utils.isArray(e)&&this.node.checked)e.push(this.node.value);else if(this.utils.isArray(e)&&!this.node.checked){var t=e.indexOf(this.node.value);e.splice(t,1)}else this.backExpr.execute(new s(this.scope,{_value_:this.node.checked}))}}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e;var t=this.expression.execute(e);this.utils.isArray(t)?this.node.checked=t.indexOf(this.node.value)>-1:this.node.checked=t}})},function(e,t,n){"use strict";var i=n(53),r=n(58);e.exports=new i({bind:function(){var e=this;if(this.target=this.node.$target,this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.bindProp=this.decorates[0],!this.target)throw new Error("Directive `model:"+this.bindProp+"` cannot be used on `"+this.node.tagName+"`");this.watcher=this.target.$watch(this.bindProp,function(t){e.utils.isNull(e.scope)||e.backExpr.execute(new r(e.scope,{_value_:t}))})},unbind:function(){this.target.$unWatch(this.watcher)},update:function(e){this.target[this.bindProp]=e}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({execute:function(e){var t=this,n=this.expression.execute(e);setTimeout(function(){n?t.node.focus():t.node.blur()},0)}})},function(e,t,n){"use strict";var i=n(53);e.exports=new i({level:i.LA,prefix:!1,literal:!0,remove:!1,bind:function(){this.computedName=this.attribute.name,this.computedValue=this.attribute.value,this.nameExpr=new this.Expression(this.attribute.name,!0),this.valueExpr=new this.Expression(this.attribute.value,!0)},execute:function(e){var t=this.node.$target||this.node,n=this.nameExpr.execute(e);this.computedName!==n&&(t.removeAttribute&&t.removeAttribute(this.computedName),this.computedName=n,!this.utils.isNull(this.computedName)&&this.computedName.length>0&&t.setAttribute&&t.setAttribute(this.computedName,this.computedValue||""));var i=this.valueExpr.execute(e);this.computedValue!==i&&(this.computedValue=i,t.setAttribute?t.setAttribute(this.computedName,this.computedValue||""):t[this.computedName]=this.computedValue)}})},function(e,t,n){"use strict";var i=n(4),r=n(6),s=n(50),o=n(52),a=new i({$extends:s,constructor:function(e,t){t=t||{},s.call(this),this.options=t,this.element=e,this.compiler=t.compiler||new o(t),this.render=this.compiler.compile(this.element),this.update=this.update.bind(this),this._update=this._update.bind(this),this._updateTimer=0},update:function(){this._updateTimer&&(clearTimeout(this._updateTimer),this._updateTimer=null),this._updateTimer=setTimeout(this._update,0)},_update:function(){this._updateTimer&&this.observer&&(this.emit("update",this),this.render(this.observer.target),this._onBind())},_onBind:function(){this._bound||(this._bound=!0,this.emit("bind",this))},bind:function(e,t){e&&(this.unbind(),this.observer=new r(e,{root:this.options.root}),e.$self=e,this.observer.on("change",this.update),t?this._onBind():this.update())},unbind:function(){this.observer&&(this.observer.removeListener("change",this.update),this.observer.clearReference(),this.observer=null)},dispose:function(){this.unbind(),this.render.dispose()}});e.exports=a},function(e,t,n){"use strict";var i=n(80),r=n(82),s=n(51).directives;i.components=r,i.Component=i,i.component=function(e,t){return t?void(r[e]=t):r[e]},i.directive=function(e,t){return t?void(s[e]=t):s[e]},e.exports=i},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e){e=e||{};var t=e.mixes;delete e.mixes,t=t&&!u.isArray(t)?[t]:[];var i=e.extend||r;delete e.extend,t.push(i),t.push(e);var s={};t.forEach(function(e){(e instanceof r||e==r)&&(e=e.$options||{}),u.mix(s,e)}),e=s;var f=new a({$extends:i,constructor:function(t){var i=this;return this==window?new this.$class(t):(p.call(this),t=t||{},u.each(t,function(e,t){e in i||(i[e]=t)}),this._onTemplateUpdate_=this._onTemplateUpdate_.bind(this),this._createdData_(e.data),this._createProperties_(e.properties||e.props),this._createWatches_(e.watches||e.watch),this.$directives=this.$directives||{},this._importDirectives_(e.directives),this.$components=this.$components||{},this._importComponents_(n(82)),this._importComponents_({self:f}),this._importComponents_(e.components),u.defineFreezeProp(this,"$children",[]),t.parent&&this.$setParent(t.parent),this.$callHook("init",[t]),d.observe(this),void(e.element?this.$mount():this.$compile()))},$setParent:function(e){this.$parent!==e&&(this.$parent&&this.$parent.$removeChild(this),e&&e.$addChild(this))},$addChild:function(e){e instanceof r&&(this.$children.push(e),u.defineFreezeProp(e,"$parent",this),u.defineFreezeProp(e,"$root",this.$root||this))},$removeChild:function(e){var t=this.$children.indexOf(e);this.$children.splice(t,1),u.defineFreezeProp(e,"$parent",null)},get $root(){return this.$parent?this.$parent.$root:this},_importComponents_:function(e){u.each(e,function(e,t){t&&(this.$components[e]=t,this.$directives[e]=new h({name:e,component:t,parent:this}))},this)},_importDirectives_:function(e){u.each(e,function(e,t){t&&(this.$directives[e]=t)},this)},$callHook:function(e,t){var n=this["on"+u.firstUpper(e)];u.isFunction(n)&&(n.apply(this,t||[]),this.$emit("$"+e,t))},_createdData_:function(e){u.isFunction(e)?this.$data=e.call(this):this.$data=e||{},u.each(this.$data,function(e){(0,o.default)(this,e,{configurable:!0,enumerable:!0,get:function(){if(this.$data)return this.$data[e]},set:function(t){this.$data&&(this.$data[e]=t)}})},this)},_createProperties_:function(e){this.$properties={},u.each(e,function(e,t){t=u.isFunction(t)?{get:t}:u.isObject(t)?u.copy(t):{value:t};var n=!!t.get||!!t.set;n||(t.get=function(){return t.value},t.set=function(e){t.value=e}),(0,o.default)(this,e,{configurable:!0,enumerable:!0,get:function(){if(!t.get)throw new Error("Property `"+e+"` cannot be read");return t.get.call(this)},set:function(n){if(!t.set)throw new Error("Property `"+e+"` cannot be written");if(t.test&&!t.test(n))throw new Error("Invalid value `"+n+"` for property `"+e+"`");t.set.call(this,n),this._observer_&&this._observer_.emitChange({path:e,value:n})}}),this.$properties[e]=t},this)},_createWatches_:function(e){this._watchers_=this._watchers_||[],u.each(e,function(e,t){this.$watch(e,t)},this)},_onTemplateUpdate_:function(){this._watchers_.forEach(function(e){e.calc()},this)},$watch:function(e,t){if(u.isFunction(t)){var n=e;u.isFunction(e)||(n=function(){return u.getByPath(this,e)});var i=new c(n.bind(this),t.bind(this));return this._watchers_.push(i),i}},$unWatch:function(e){var t=this._watchers_.findIndex(function(t){return t===e});this._watchers_.splice(t,1)},_createElement_:function(){if(!this._created_){if(this._created_=!0,this.$callHook("create"),u.defineFreezeProp(this,"$element",this.element||f.$template.cloneNode(!0)),!this.$element||"#text"===this.$element.nodeName)throw new Error("Invalid component template");this.$callHook("created")}},$compile:function(){this._compiled_||(this._compiled_=!0,this._createElement_(),u.defineFreezeProp(this,"_template_",new l(this.$element,{directives:this.$directives,root:!0})),this._template_.bind(this),this._template_.on("update",this._onTemplateUpdate_),this._template_.on("bind",function(){this.deferReady||this.$callHook("ready")}.bind(this)))},$mount:function(e,t){this._mounted_||(this.$compile(),this.$callHook("mount"),e&&(e.$substitute=this.$element,this.$element._mountNode=e,t?e.appendChild(this.$element):e.parentNode&&e.parentNode.insertBefore(this.$element,e)),this._mounted_=!0,this._removed_=!1,this.$callHook("mounted"))},$appendTo:function(e){this.$mount(e,!0)},$remove:function(){!this._removed_&&this._mounted_&&(this.$callHook("remove"),this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element),this._removed_=!0,this._mounted_=!1,this.$callHook("removed"))},$dispatch:function(e,t){var n=this.$emit(e,t);!n&&this.$parent&&this.$parent.$dispatch(e,t)},$broadcast:function(e,t){var n=this.$emit(e,t);!n&&this.$children&&this.$children.length>0&&this.$children.forEach(function(n){n.$broadcast(e,t)},this)},$dispose:function(){if(this.$remove(),this._emitter_.off(),this.$children.forEach(function(e){e.$dispose()},this),this.$parent){var e=this.$parent.$children.indexOf(this);this.$parent.$children.splice(e,1)}this.$callHook("dispose"),this._compiled_&&this._template_.unbind(),this.$callHook("disposed");for(var t in this)delete this[t];["_observer_","$element","$children","$parent","_template_"].forEach(function(e){delete this[e]},this),u.setPrototypeOf(this,null)}});return f.$options=e,f.$template=u.parseDom(e.template),u.copy(e,f.prototype),u.copy(e.methods,f.prototype),u.setPrototypeOf(f,r.prototype),f}var s=n(47),o=i(s),a=n(4),l=n(51),c=n(5),u=n(3),p=n(50),d=n(6),h=n(81);r.prototype=u.create(p.prototype),r.extend=function(e){return new r(e)},r.prototype.extend=function(e){return e=e||{},e.extend=this,new r(e)},r.prototype.create=function(e){return new this(e)},r.prototype.start=function(e){if(!this.$options||!this.$options.element)throw new Error("Start method cannot be called");return this.create(e)},e.exports=r},function(e,t,n){"use strict";function i(e){return new s({type:s.TE,literal:!0,final:!0,level:s.LE,bind:function(){this.component=new e.component({deferReady:!0,parent:e.parent||this.scope}),this.handleAttrs(),this.node.$target=this.component,this.handler=this.compiler.compile(this.node,{element:!1,children:!1}),this.handleContents(),this.component.$mount(this.node),this.node.parentNode&&this.node.parentNode.removeChild(this.node)},handleAttrs:function(){this.attrs=[].slice.call(this.node.attributes);var e=new RegExp("^"+this.prefix+":","i");this.attrs.forEach(function(t){e.test(t.name)||t.name in this.component.$properties||(this.component.$element.setAttribute(t.name,t.value),this.node.removeAttribute(t.name))},this)},handleContents:function(){this.placeHandlers=[];var e=[].slice.call(this.component.$element.querySelectorAll("["+this.prefix+"\\:content]"));e.forEach(function(e){var t=null,n=e.getAttribute(this.prefix+":content");if(t=n?[].slice.call(this.node.querySelectorAll(n)):[].slice.call(this.node.childNodes),t&&!(t.length<1)){e.innerHTML="",t.forEach(function(t){e.appendChild(t.cloneNode(!0))},this);var i=this.compiler.compile(e);this.placeHandlers.push(i)}},this)},execute:function(e){this.handler(e),this._ready_||(this._ready_=!0,this.component.$callHook("ready")),this.placeHandlers.forEach(function(t){t(e)},this)}})}var r=n(51),s=r.Directive;e.exports=i},function(e,t,n){"use strict";e.exports={View:n(83)}},function(e,t,n){"use strict";var i=n(80),r=n(3),s=new i({template:"
",properties:{component:{test:function(e){return!!e&&(e instanceof i||r.isString(e))},set:function(e){if(!this._transitioning){if(this._transitioning=!0,r.isString(e))return void(this.$parent&&this.$parent.$components?this.component=this.$parent.$components[e]:this.component=null);var t=null,n=this.componentInstance;r.isFunction(e)?t=new e({parent:this}):(e.$setParent(this),t=e),this.transition.prep(t,n),t.$appendTo(this.$element),this.transition.go(t,n,function(){this.$emit("enter",t),this.$emit("leave",n),n&&n.$dispose(),this._transitioning=!1}.bind(this)),this.componentInstance=t}},get:function(){return this._Component}},transition:{get:function(){return this._transition||s.transition},set:function(e){if(!this._transitioning){if(!(!e||r.isFunction(e.prep)&&r.isFunction(e.go)))throw new Error("Invalid transition");this._transition&&r.isFunction(this._transition.clean)&&this._transition.clean(this),e&&r.isFunction(e.init)&&e.init(this),this._transition=e}}}},switchTo:function(e,t){t&&(this.transition=t),this.component=e}});s.transition={prep:function(e,t){t&&(t.$element.style.display="none")},go:function(e,t,n){n()}},e.exports=s},function(e,t,n){"use strict";var i=n(1),r=n(85);n(86);var s=new i.Component({template:n(88),props:{mditor:null},data:function(){return{items:r.slice(0)}},onReady:function(){this.bindCommands()},watch:{items:function(){this.bindCommands()}},bindCommands:function(){var e=this;this.mditor&&this.items.forEach(function(t){e.mditor.removeCommand(t.name),e.mditor.addCommand(t)})},isActive:function(e){return this.mditor&&e.state&&this.mditor[e.state]},exec:function(e,t){t.preventDefault(),this.mditor.execCommand(e,t)},getItem:function(e){return this.items.find(function(t){return t.name===e})},removeItem:function(e){var t=this.items.findIndex(function(t){return t.name===e});return this.items.splice(t,1)},addItem:function(e){this.items.push(e)},replaceItem:function(e,t){var n=this.items.findIndex(function(t){return t.name===e}),i=this.items.splice(n,1);return this.items.splice(n,0,t),i}});e.exports=s},function(e,t){"use strict";e.exports=[{name:"bold",title:"粗体",key:"shift+alt+b",handler:function(){this.editor.wrapSelectText("**","**")}},{name:"italic",title:"斜体",key:"shift+alt+i",handler:function(){this.editor.wrapSelectText("*","*")}},{name:"underline",title:"下划线",key:"shift+alt+e",handler:function(){this.editor.wrapSelectText("","")}},{name:"strikethrough",title:"删除线",key:"shift+alt+d",handler:function(){this.editor.wrapSelectText("~~","~~")}},{name:"header",title:"标题",key:"shift+alt+1",handler:function(){this.editor.wrapSelectText("# ")}},{name:"quote",icon:"quote-left",title:"引用",key:"shift+alt+q",handler:function(){var e=this.editor.getSelectText();if(e.length<1)return void this.editor.wrapSelectText("> ");var t=e.split(this.EOL),n=[];t.forEach(function(e){n.push("> "+e+" ")}),this.editor.setSelectText(n.join(this.EOL)+this.EOL)}},{name:"code",title:"代码",key:"shift+alt+c",handler:function(){var e="js"+this.EOL,t="```"+e,n="``` "+this.EOL,i=this.editor.getSelectText().trim();i.length>0&&(i+=this.EOL),this.editor.setSelectText(i),this.editor.wrapSelectText(t,n);var r=this.editor.getSelectRange(),s=r.start-e.length,o=r.start-this.EOL.length;this.editor.setSelectRange(s,o)}},{name:"list-ol",title:"有序列表",key:"shift+alt+o",handler:function(){var e=this.editor.getSelectText();if(e.length<1)return void this.editor.wrapSelectText("1. ");for(var t=e.split(this.EOL),n=[],i=0;i\n \n'},function(e,t,n){"use strict";var i=n(1),r=i.EventEmitter,s=n(3),o=n(90),a=n(91);n(92);var l=window.navigator.userAgent.toLowerCase(),c=!!l.match(/msie|trident\/7|edge/);e.exports=new i.Component({template:n(93),props:{mditor:null,value:null,markExp:null},onReady:function(){var e=this;this.stack=new o,setTimeout(function(){e.textareaEmitter=new r(e.textarea),e.stack.init({value:e.getValue()})},300),this._bindCommands()},_bindCommands:function(){var e=this;a.forEach(function(t){e.mditor.removeCommand(t.name),e.mditor.addCommand(t)})},onCompositionStart:function(){this._compositionLock=!0},onCompositionEnd:function(){var e=this;this._compositionLock=!1,setTimeout(function(){return e.onInput()},300)},onInput:function(){var e=this;this.$emit("input"),this._changedTimer&&(clearTimeout(this._changedTimer),this._changedTimer=null),this._compositionLock||(this._changedTimer=setTimeout(function(){e._changedTimer&&(e.stack.push({value:e.getValue(),range:e.getSelectRange()}),e.$emit("changed"))},300))},undo:function(){var e=this,t=this.stack.last(),n=this.stack.undo();if(!s.isNull(n)&&!s.isNull(n.value)){var i=t.value.length-n.value.length;this.value=n.value,t.range&&setTimeout(function(){var n=t.range.start-i,r=t.range.end-i;e.setSelectRange(n,r)})}},redo:function(){var e=this,t=this.stack.redo();s.isNull(t)||s.isNull(t.value)||(this.value=t.value,t.range&&setTimeout(function(){e.setSelectRange(t.range.start,t.range.end)}))},onPaste:function(e){this.$emit("paste",e)},onDragover:function(e){e.preventDefault(),this.$emit("dragover",e)},onDrop:function(e){e.preventDefault(),this.$emit("drop",e)},focus:function(){this.textarea.focus()},blur:function(){this.textarea.blur()},onScroll:function(e){this.syncScroll(),this.$emit("scroll",e)},syncScroll:function(e){var t=this;this.marks.scrollTop=this.textarea.scrollTop,this.marks.scrollLeft=this.textarea.scrollLeft,e||setTimeout(function(){t.syncScroll(!0)},0)},applyMarks:function(e){if(e&&this.markExp)return e=e.replace(/\n$/g,"\n\n").replace(this.markExp,"$&"),c&&(e=e.replace(/ /g," ")),e},activeMark:function e(t){var n=[].slice.call(this.marks.querySelectorAll("mark"));if(!(n.length<1)){this.activeMarkIndex=s.isNull(this.activeMarkIndex)?-1:this.activeMarkIndex,s.isNull(t)?this.activeMarkIndex++:this.activeMarkIndex=t,this.activeMarkIndex>=n.length&&(this.activeMarkIndex=0),n.forEach(function(e){e.classList.remove("active")});var e=n[this.activeMarkIndex];e.classList.add("active"),this.scrollToMark(e)}},scrollToMark:function(e){this.textarea.scrollTop=e.offsetTop-20},getValue:function(){return this.textarea.value},setValue:function(e){this.textarea.value=e},getActiveElement:function(){return this.textarea.focus(),document.activeElement},getSelectRange:function(){var e=this.getActiveElement();return{start:e.selectionStart,end:e.selectionEnd}},setSelectRange:function(e,t){var n=this.getActiveElement();n.setSelectionRange(e,t)},getSelectText:function(){var e=this.getActiveElement(),t=this.getSelectRange();return e.value.substring(t.start,t.end)},setSelectText:function(e){var t=this,n=this.getActiveElement(),i=this.getSelectRange();n.setRangeText(e),i.end==i.start&&this.setSelectRange(i.start,i.end+e.length),this.value=this.getValue(),this.onInput(),setTimeout(function(){t.blur(),t.focus()},0)},wrapSelectText:function(e,t){e=null!==e&&void 0!==e?e:"",t=null!==t&&void 0!==t?t:"";var n=this.getSelectRange(),i=this.getSelectText();this.setSelectText(e+i+t);var r=n.start+e.length,s=n.end+e.length;this.setSelectRange(r,s)},insertBeforeText:function(e){this.wrapSelectText(e)},insertAfterText:function(e){this.wrapSelectText("",e)},getBeforeText:function(e){var t=this.getSelectRange(),n=t.start,i=n-e,r=this.getValue();return r.substring(i,n)},getBeforeFirstCharIndex:function(e){var t=this.getSelectRange(),n=t.start,i=0,r=this.getValue();return r.substring(i,n).lastIndexOf(e)},getBeforeWord:function(){var e=this,t=[" ","\t",this.mditor.EOL],n=0;t.forEach(function(t){var i=e.getBeforeFirstCharIndex(t);i+t.length>n&&(n=i+t.length)});var i=this.getSelectRange(),r=this.getValue();return r.substring(n,i.end)},getBeforeTextInLine:function(){var e=this.getBeforeFirstCharIndex(this.mditor.EOL)+this.mditor.EOL.length,t=this.getSelectRange(),n=this.getValue();return n.substring(e,t.end)},selectBeforeText:function(e){var t=this.getSelectRange();this.setSelectRange(t.start-e,t.end)},selectAfterText:function(e){var t=this.getSelectRange();this.setSelectRange(t.start,t.end+e)},selectBeforeTextInLine:function(){var e=this.getBeforeFirstCharIndex(this.mditor.EOL)+this.mditor.EOL.length,t=this.getSelectRange();this.setSelectRange(e,t.end)},addIndent:function(){var e=this,t=this.getSelectText();if(t.length<1)return void this.insertBeforeText(this.mditor.INDENT);var n=t.split(this.mditor.EOL),i=[],r=n.length-1;n.forEach(function(t,n){t=""!==t.trim()?e.mditor.INDENT+t:t,(n0&&(event.clearSelected=!0,this.removeIndent()));var i=n.split(this.mditor.EOL),r=[];if(i.forEach(function(n){t.test(n)&&(n=n.replace(e.mditor.INDENT,"")),r.push(n)}),this.setSelectText(r.join(this.mditor.EOL)),event.clearSelected){var s=this.getSelectRange();this.setSelectRange(s.end,s.end)}}})},function(e,t,n){"use strict";var i=n(4).Class,r=n(3),s=new i({constructor:function(e){this.init(e)},init:function(e){this.undoList=[e||{value:null}],this.redoList=[]},push:function(e){this.last()!==e&&this.undoList.push(e)},last:function(){return this.undoList[this.undoList.length-1]},undo:function(){if(this.undoList.length>1){var e=this.undoList.pop();if(r.isNull(e)||r.isNull(e.value))return;this.redoList.push(e)}return this.last()},redo:function(){var e=this.redoList.pop();if(!r.isNull(e)&&!r.isNull(e.value))return this.undoList.push(e),e}});e.exports=s},function(e,t){"use strict";e.exports=[{name:"undo",key:"{cmd}+z",handler:function(){this.editor.undo()}},{name:"redo",key:"{cmd}+shift+z",handler:function(){this.editor.redo()}},{name:"h2",key:"shift+alt+2",handler:function(){this.editor.wrapSelectText("## ")}},{name:"h3",key:"shift+alt+3",handler:function(){this.editor.wrapSelectText("### ")}},{name:"h4",key:"shift+alt+4",handler:function(){this.editor.wrapSelectText("#### ")}},{name:"h5",key:"shift+alt+5",handler:function(){this.editor.wrapSelectText("##### ")}}]},function(e,t){},function(e,t){e.exports='
\n
\n
\n
\n \n
'},function(e,t,n){"use strict";var i=n(1);n(95);var r=new i.Component({template:n(96),data:function(){return{html:"",alert:"预览区域"}},props:{mditor:null,value:{get:function(){return this._value},set:function(e){var t=this;this._value=e;var n={value:this._value};this.$emit("beforeRender",n),this.mditor.parser.parse(n.value,function(e,n){var i={value:n||e};t.$emit("afterRender",i),t.html=i.value})}}},onClick:function(e){e.preventDefault();var t=e.target;if("A"==t.tagName){var n=t.getAttribute("href");n&&window.open(n,"_blank")}}});e.exports=r},function(e,t){},function(e,t){e.exports='
\n
\n
\n
'},function(e,t,n){"use strict";var i=n(1),r=n(3);n(98);var s=/^\/[\s\S]+\/(i|g|m)*$/,o=new i.Component({template:n(99),props:{mditor:null,active:!1,findWord:"",replaceWord:""},onReady:function(){this.mditor.removeCommand("find"),this.mditor.addCommand({name:"find",key:"{cmd}+f",owner:this.mditor.$element,handler:this.show.bind(this,null)}),this.mditor.removeCommand("cancel-find"),this.mditor.addCommand({name:"cancel-find",key:"esc",owner:this.mditor.$element,handler:this.hide.bind(this)})},hide:function(){this.findWord="",this.replaceWord="",this.mditor.editor.markExp=null,this.active=!1},show:function(e){var t=this;this.active=!0,this.findWord=e||this.mditor.editor.getSelectText(),this.active&&setTimeout(function(){t.findBox.focus()},200),this.mditor.editor.syncScroll()},watch:{findWord:function(){var e=this;this.mditor&&this.mditor.editor&&(this.findWord?this.mditor.editor.markExp=this.parseRegexp(this.findWord):this.mditor.editor.markExp=null,setTimeout(function(){e.mditor.editor.activeMark(0)},100))}},parseRegexp:function(e,t){if(t||!s.test(e))return new RegExp(r.escapeRegExp(e),"gm");try{return new Function("return "+e)()}catch(t){return this.parseRegexp(e,!0)}},find:function(){this.mditor.editor.activeMark()},replace:function(){this.mditor.value=this.mditor.value.replace(this.mditor.editor.markExp,this.replaceWord||"")},onFindEnter:function(e){13==e.keyCode&&(e.preventDefault(),this.find())},onReplaceEnter:function(e){13==e.keyCode&&(e.preventDefault(),this.replace())},onCompositionEnd:function(e){e.target.blur(),e.target.focus()}});e.exports=o},function(e,t){},function(e,t){e.exports='
\n
\n \n \n
\n
\n \n \n
\n
'},function(e,t,n){"use strict";var i=n(101),r=n(3);i.filter=function(e){return!!e.target};var s=e.exports=function(e){r.defineFreezeProp(this,"mditor",e)};s.prototype._inRegion=function(e,t){return!!e&&(t=t||this.mditor.editor.$element,r.isFunction(t)&&(t=t(this.mditor)),e===t||this._inRegion(e.parentNode,t))},s.prototype.bind=function(e,t,n,r){var s=this,o=this.mditor;e&&t&&(e=e.replace("{cmd}",o.CMD),i(e,function(e){s._inRegion(e.target,r)&&(n||e.preventDefault(),t instanceof Function?t.call(o,e):o.execCommand(t,e),setTimeout(function(){o.focus()},0))}))},s.prototype.unbind=function(e){i.unbind(e)}},function(e,t,n){!function(t){function n(e,t){for(var n=e.length;n--;)if(e[n]===t)return n;return-1}function i(e,t){if(e.length!=t.length)return!1;for(var n=0;n0;for(s in x)(!x[s]&&n(i.mods,+s)>-1||x[s]&&n(i.mods,+s)==-1)&&(a=!1);(0!=i.mods.length||x[16]||x[18]||x[17]||x[91])&&!a||i.method(e,i)===!1&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function o(e){var t,i=e.keyCode,r=n(N,i);if(r>=0&&N.splice(r,1),93!=i&&224!=i||(i=91),i in x){x[i]=!1;for(t in E)E[t]==i&&(l[t]=!1)}}function a(){for(y in x)x[y]=!1;for(y in E)l[y]=!1}function l(e,t,n){var i,r;i=g(e),void 0===n&&(n=t,t="all");for(var s=0;s1&&(r=b(e),e=[e[e.length-1]]),e=e[0],e=T(e),e in w||(w[e]=[]),w[e].push({shortcut:i[s],scope:t,method:n,key:i[s],mods:r})}function c(e,t){var n,r,s,o,a,l=[];for(n=g(e),o=0;o1&&(l=b(r),e=r[r.length-1]),e=T(e),void 0===t&&(t=f()),!w[e])return;for(s in w[e])a=w[e][s],a.scope===t&&i(a.mods,l)&&(w[e][s]={})}}function u(e){return"string"==typeof e&&(e=T(e)),n(N,e)!=-1}function p(){return N.slice(0)}function d(e){var t=(e.target||e.srcElement).tagName;return!("INPUT"==t||"SELECT"==t||"TEXTAREA"==t)}function h(e){k=e||"all"}function f(){return k||"all"}function m(e){var t,n,i; -for(t in w)for(n=w[t],i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function a(e,t){return e=e.source,t=t||"",function n(i,r){return i?(r=r.source||r,r=r.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(i,r),n):new RegExp(e,t)}}function l(){}function c(e){for(var t,n,i=1;iAn error occured:

"+s(e.message+"",!0)+"
";throw e}}var p={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:l,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:l,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:l,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};p.bullet=/(?:[*+-]|\d+\.)/,p.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,p.item=a(p.item,"gm")(/bull/g,p.bullet)(),p.list=a(p.list)(/bull/g,p.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+p.def.source+")")(),p.blockquote=a(p.blockquote)("def",p.def)(),p._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",p.html=a(p.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,p._tag)(),p.paragraph=a(p.paragraph)("hr",p.hr)("heading",p.heading)("lheading",p.lheading)("blockquote",p.blockquote)("tag","<"+p._tag)("def",p.def)(),p.normal=c({},p),p.gfm=c({},p.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),p.gfm.paragraph=a(p.paragraph)("(?!","(?!"+p.gfm.fences.source.replace("\\1","\\2")+"|"+p.list.source.replace("\\1","\\3")+"|")(),p.tables=c({},p.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),t.rules=p,t.lex=function(e,n){var i=new t(n);return i.lex(e)},t.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},t.prototype.token=function(e,t,n){for(var i,r,s,o,a,l,c,u,d,e=e.replace(/^ +$/gm,"");e;)if((s=this.rules.newline.exec(e))&&(e=e.substring(s[0].length),s[0].length>1&&this.tokens.push({type:"space"})),s=this.rules.code.exec(e))e=e.substring(s[0].length),s=s[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?s:s.replace(/\n+$/,"")});else if(s=this.rules.fences.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"code",lang:s[2],text:s[3]||""});else if(s=this.rules.heading.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"heading",depth:s[1].length,text:s[2]});else if(t&&(s=this.rules.nptable.exec(e))){for(e=e.substring(s[0].length),l={type:"table",header:s[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),this.token(s,t,!0),this.tokens.push({type:"blockquote_end"});else if(s=this.rules.list.exec(e)){for(e=e.substring(s[0].length),o=s[2],this.tokens.push({type:"list_start",ordered:o.length>1}),s=s[0].match(this.rules.item),i=!1,d=s.length,u=0;u1&&a.length>1||(e=s.slice(u+1).join("\n")+e,u=d-1)),r=i||/\n\n(?!\s*$)/.test(l),u!==d-1&&(i="\n"===l.charAt(l.length-1),r||(r=i)),this.tokens.push({type:r?"loose_item_start":"list_item_start"}),this.token(l,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(s=this.rules.html.exec(e))e=e.substring(s[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===s[1]||"script"===s[1]||"style"===s[1]),text:s[0]});else if(!n&&t&&(s=this.rules.def.exec(e)))e=e.substring(s[0].length),this.tokens.links[s[1].toLowerCase()]={href:s[2],title:s[3]};else if(t&&(s=this.rules.table.exec(e))){for(e=e.substring(s[0].length),l={type:"table",header:s[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:l,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:l,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,d.link=a(d.link)("inside",d._inside)("href",d._href)(),d.reflink=a(d.reflink)("inside",d._inside)(),d.normal=c({},d),d.pedantic=c({},d.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),d.gfm=c({},d.normal,{escape:a(d.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:a(d.text)("]|","~]|")("|","|https?://|")()}),d.breaks=c({},d.gfm,{br:a(d.br)("{2,}","*")(),text:a(d.gfm.text)("{2,}","*")()}),n.rules=d,n.output=function(e,t,i){var r=new n(t,i);return r.output(e)},n.prototype.output=function(e){for(var t,n,i,r,o="";e;)if(r=this.rules.escape.exec(e))e=e.substring(r[0].length),o+=r[1];else if(r=this.rules.autolink.exec(e))e=e.substring(r[0].length),"@"===r[2]?(n=":"===r[1].charAt(6)?this.mangle(r[1].substring(7)):this.mangle(r[1]),i=this.mangle("mailto:")+n):(n=s(r[1]),i=n),o+=this.renderer.link(i,null,n);else if(this.inLink||!(r=this.rules.url.exec(e))){if(r=this.rules.tag.exec(e))!this.inLink&&/^/i.test(r[0])&&(this.inLink=!1),e=e.substring(r[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):s(r[0]):r[0];else if(r=this.rules.link.exec(e))e=e.substring(r[0].length),this.inLink=!0,o+=this.outputLink(r,{href:r[2],title:r[3]}),this.inLink=!1;else if((r=this.rules.reflink.exec(e))||(r=this.rules.nolink.exec(e))){if(e=e.substring(r[0].length),t=(r[2]||r[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){o+=r[0].charAt(0),e=r[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(r,t),this.inLink=!1}else if(r=this.rules.strong.exec(e))e=e.substring(r[0].length),o+=this.renderer.strong(this.output(r[2]||r[1]));else if(r=this.rules.em.exec(e))e=e.substring(r[0].length),o+=this.renderer.em(this.output(r[2]||r[1]));else if(r=this.rules.code.exec(e))e=e.substring(r[0].length),o+=this.renderer.codespan(s(r[2],!0));else if(r=this.rules.br.exec(e))e=e.substring(r[0].length),o+=this.renderer.br();else if(r=this.rules.del.exec(e))e=e.substring(r[0].length),o+=this.renderer.del(this.output(r[1]));else if(r=this.rules.text.exec(e))e=e.substring(r[0].length),o+=this.renderer.text(s(this.smartypants(r[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(r[0].length),n=s(r[1]),i=n,o+=this.renderer.link(i,null,n);return o},n.prototype.outputLink=function(e,t){var n=s(t.href),i=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,i,this.output(e[1])):this.renderer.image(n,i,s(e[1]))},n.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},n.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",i=e.length,r=0;r.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},i.prototype.code=function(e,t,n){if(this.options.highlight){var i=this.options.highlight(e,t);null!=i&&i!==e&&(n=!0,e=i)}return t?'
'+(n?e:s(e,!0))+"\n
\n":"
"+(n?e:s(e,!0))+"\n
"},i.prototype.blockquote=function(e){return"
\n"+e+"
\n"},i.prototype.html=function(e){return e},i.prototype.heading=function(e,t,n){return"'+e+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},i.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"\n"},i.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},i.prototype.paragraph=function(e){return"

    "+e+"

    \n"},i.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
    \n"},i.prototype.tablerow=function(e){return"\n"+e+"\n"},i.prototype.tablecell=function(e,t){var n=t.header?"th":"td",i=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return i+e+"\n"},i.prototype.strong=function(e){return""+e+""},i.prototype.em=function(e){return""+e+""},i.prototype.codespan=function(e){return""+e+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(e){return""+e+""},i.prototype.link=function(e,t,n){if(this.options.sanitize){try{var i=decodeURIComponent(o(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:"))return""}var r='
    "},i.prototype.image=function(e,t,n){var i=''+n+'":">"},i.prototype.text=function(e){return e},r.parse=function(e,t,n){var i=new r(t,n);return i.parse(e)},r.prototype.parse=function(e){this.inline=new n(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},r.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,i,r,s="",o="";for(n="",e=0;ee.length)return;if(!(w instanceof l)){d.lastIndex=0;var x=d.exec(w),k=1;if(!x&&m&&_!=t.length-1){if(d.lastIndex=y,x=d.exec(e),!x)break;for(var E=x.index+(f?x[1].length:0),S=x.index+x[0].length,T=_,N=y,P=t.length;T=N&&(++_,y=N);if(t[_]instanceof l||t[T-1].greedy)continue;k=T-_,w=e.slice(y,N),x.index-=y}if(x){f&&(g=x[1].length);var E=x.index+g,x=x[0].slice(g),S=E+x.length,A=w.slice(0,E),C=w.slice(S),I=[_,k];A&&(++_,y+=A.length,I.push(A));var L=new l(c,h?i.tokenize(x,h):x,b,x,m);if(I.push(L),C&&I.push(C),Array.prototype.splice.apply(t,I),1!=k&&i.matchGrammar(e,t,n,_,y,!0,c),o)break}else if(o)break}}}}},tokenize:function(e,t,n){var r=[e],s=t.rest;if(s){for(var o in s)t[o]=s[o];delete t.rest}return i.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var n=i.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=i.hooks.all[e];if(n&&n.length)for(var r,s=0;r=n[s++];)r(t)}}},r=i.Token=function(e,t,n,i,r){this.type=e,this.content=t,this.alias=n,this.length=0|(i||"").length,this.greedy=!!r};if(r.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===i.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var s={type:e.type,content:r.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if("comment"==s.type&&(s.attributes.spellcheck="true"),e.alias){var o="Array"===i.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(s.classes,o)}i.hooks.run("wrap",s);var a=Object.keys(s.attributes).map(function(e){return e+'="'+(s.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+s.tag+' class="'+s.classes.join(" ")+'"'+(a?" "+a:"")+">"+s.content+""},!n.document)return n.addEventListener?(n.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,s=t.code,o=t.immediateClose;n.postMessage(i.highlight(s,i.languages[r],r)),o&&n.close()},!1),n.Prism):n.Prism;var s=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return s&&(i.filename=s.src,i.manual||s.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(i.highlightAll):window.setTimeout(i.highlightAll,16):document.addEventListener("DOMContentLoaded",i.highlightAll))),n.Prism}();"undefined"!=typeof e&&e.exports&&(e.exports=i),"undefined"!=typeof t&&(t.Prism=i),i.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\s\S])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\s\S]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},i.languages.markup.tag.inside["attr-value"].inside.entity=i.languages.markup.entity,i.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),i.languages.xml=i.languages.markup,i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},i.languages.css.atrule.inside.rest=i.util.clone(i.languages.css),i.languages.markup&&(i.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:i.languages.css,alias:"language-css"}}),i.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:i.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:i.languages.css}},alias:"language-css"}},i.languages.markup.tag)),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},i.languages.javascript=i.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),i.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),i.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:i.languages.javascript}},string:/[\s\S]+/}}}),i.languages.markup&&i.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:i.languages.javascript,alias:"language-javascript"}}),i.languages.js=i.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),s=t,o=/\blang(?:uage)?-(?!\*)(\w+)\b/i;s&&!o.test(s.className);)s=s.parentNode;if(s&&(n=(t.className.match(o)||[,""])[1]),!n){var a=(r.match(/\.(\w+)$/)||[,""])[1];n=e[a]||a}var l=document.createElement("code");l.className="language-"+n,t.textContent="",l.textContent="Loading…",t.appendChild(l);var c=new XMLHttpRequest;c.open("GET",r,!0),c.onreadystatechange=function(){4==c.readyState&&(c.status<400&&c.responseText?(l.textContent=c.responseText,i.highlightElement(l)):c.status>=400?l.textContent="✖ Error "+c.status+" while fetching file: "+c.statusText:l.textContent="✖ Error: File does not exist or is empty")},c.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}).call(t,function(){return this}())},function(e,t){Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}})},function(e,t){Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[{pattern:/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,greedy:!0},{pattern:/("|')(\\?.)*?\1/,greedy:!0}],number:/\b-?(0x[\da-f]+|\d*\.?\d+f?)\b/i}),Prism.languages.insertBefore("csharp","keyword",{"generic-method":{pattern:/[a-z0-9_]+\s*<[^>\r\n]+?>\s*(?=\()/i,alias:"function",inside:{keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}})},function(e,t){Prism.languages.php=Prism.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i, -constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),Prism.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),Prism.languages.insertBefore("php","keyword",{delimiter:{pattern:/\?>|<\?(?:php|=)?/i,alias:"important"},variable:/\$\w+\b/i,package:{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(e){"php"===e.language&&/(?:<\?php|<\?)/gi.test(e.code)&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi,function(t){for(var n=e.tokenStack.length;e.backupCode.indexOf("___PHP"+n+"___")!==-1;)++n;return e.tokenStack[n]=t,"___PHP"+n+"___"}),e.grammar=Prism.languages.markup)}),Prism.hooks.add("before-insert",function(e){"php"===e.language&&e.backupCode&&(e.code=e.backupCode,delete e.backupCode)}),Prism.hooks.add("after-highlight",function(e){if("php"===e.language&&e.tokenStack){e.grammar=Prism.languages.php;for(var t=0,n=Object.keys(e.tokenStack);t'+Prism.highlight(r,e.grammar,"php").replace(/\$/g,"$$$$")+"")}e.element.innerHTML=e.highlightedCode}}))},function(e,t){Prism.languages.python={"triple-quoted-string":{pattern:/"""[\s\S]+?"""|'''[\s\S]+?'''/,alias:"string"},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/("|')(?:\\\\|\\?[^\\\r\n])*?\1/,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,boolean:/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}},function(e,t){Prism.languages.json={property:/"(?:\\.|[^\\"])*"(?=\s*:)/gi,string:/"(?!:)(?:\\.|[^\\"])*"(?!:)/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?)\b/g,punctuation:/[{}[\]);,]/g,operator:/:/g,boolean:/\b(true|false)\b/gi,null:/\bnull\b/gi},Prism.languages.jsonp=Prism.languages.json},function(e,t){Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\3[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(\d{4}-\d\d?-\d\d?([tT]|[ \t]+)\d\d?:\d{2}:\d{2}(\.\d*)?[ \t]*(Z|[-+]\d\d?(:\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(:\d{2}(\.\d*)?)?)(?=[ \t]*($|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')(?=[ \t]*($|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)[+\-]?(0x[\da-f]+|0o[0-7]+|(\d+\.?\d*|\.?\d+)(e[\+\-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}},function(e,t){Prism.languages.perl={comment:[{pattern:/(^\s*)=\w+[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:[^\\]|\\[\s\S])*?\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:[^\\]|\\[\s\S])*?\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:[^\\]|\\.)*?\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\2(?:[^\\]|\\[\s\S])*?\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:[^\\]|\\[\s\S])*?\2(?:[^\\]|\\[\s\S])*?\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?((::)*'?(?!\d)[\w$]+)+(::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(\.\d+)*|\d+(\.\d+){2,}/,alias:"string"},function:{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b-?(0x[\dA-Fa-f](_?[\dA-Fa-f])*|0b[01](_?[01])*|(\d(_?\d)*)?\.?\d(_?\d)*([Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/}},function(e,t){Prism.languages.go=Prism.languages.extend("clike",{keyword:/\b(break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(bool|byte|complex(64|128)|error|float(32|64)|rune|string|u?int(8|16|32|64|)|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(ln)?|real|recover)\b/,boolean:/\b(_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/\b(-?(0x[a-f\d]+|(\d+\.?\d*|\.\d+)(e[-+]?\d+)?)i?)\b/i,string:{pattern:/("|'|`)(\\?.|\r|\n)*?\1/,greedy:!0}}),delete Prism.languages.go["class-name"]},function(e,t){!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee]-?\d+)?)\b/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[a-z0-9_#\?\*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)(?:"|')?(\w+?)(?:"|')?\s*\r?\n(?:[\s\S])*?\r?\n\2/g,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\\\|\\?[^\\])*?\1/g,greedy:!0,inside:t}],variable:t.variable,function:{pattern:/(^|\s|;|\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\s|;|\||&)/,lookbehind:!0},keyword:{pattern:/(^|\s|;|\||&)(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\s|;|\||&)/,lookbehind:!0},boolean:{pattern:/(^|\s|;|\||&)(?:true|false)(?=$|\s|;|\||&)/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var n=t.variable[1].inside;n.function=e.languages.bash.function,n.keyword=e.languages.bash.keyword,n.boolean=e.languages.bash.boolean,n.operator=e.languages.bash.operator,n.punctuation=e.languages.bash.punctuation}(Prism)},function(e,t){Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\\1|\\?(?!\1)[\s\S])*\1)B?/,greedy:!0},number:[/\b-?0x[\da-fA-F]+(un|lf|LF)?\b/,/\b-?0b[01]+(y|uy)?\b/,/\b-?(\d*\.?\d+|\d+\.)([fFmM]|[eE][+-]?\d+)?\b/,/\b-?\d+(y|uy|s|us|l|u|ul|L|UL|I)?\b/]}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}})},function(e,t){Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|enum|symbol|namespace|abstract|require|type)\b/}),Prism.languages.ts=Prism.languages.typescript},function(e,t){!function(e){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:[^\\\r\n]|\\(?:\r\n|[\s\S]))*?\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:e.util.clone(t)},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:e.util.clone(t)}},e.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(Prism)},function(e,t){Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,punctuation:/[{}();:,]/,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","punctuation",{function:Prism.languages.less.function}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}})},function(e,t){!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism)},function(e,t){!function(e){var t=/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g;e.languages.handlebars=e.languages.extend("markup",{handlebars:{pattern:t,inside:{delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(\\?.)*?\1/,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?)\b/,boolean:/\b(true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/}}}),e.languages.insertBefore("handlebars","tag",{"handlebars-comment":{pattern:/\{\{![\s\S]*?\}\}/,alias:["handlebars","comment"]}}),e.hooks.add("before-highlight",function(e){"handlebars"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(t,function(t){for(var n=e.tokenStack.length;e.backupCode.indexOf("___HANDLEBARS"+n+"___")!==-1;)++n;return e.tokenStack[n]=t,"___HANDLEBARS"+n+"___"}))}),e.hooks.add("before-insert",function(e){"handlebars"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(t){if("handlebars"===t.language){for(var n=0,i=Object.keys(t.tokenStack);n]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/}},function(e,t){Prism.languages.actionscript=Prism.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),Prism.languages.actionscript["class-name"].alias="function",Prism.languages.markup&&Prism.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\\1|\\?(?!\1)[\s\S])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:Prism.languages.markup}}})},function(e,t){Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\s\S])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.csharp||{}}})},function(e,t){Prism.languages.basic={string:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,comment:{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},number:/(?:\b|\B[.-])(?:\d+\.?\d*)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}},function(e,t){Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c.boolean},function(e,t){Prism.languages.pascal={comment:[/\(\*[\s\S]+?\*\)/,/\{[\s\S]+?\}/,/\/\/.*/],string:{pattern:/(?:'(?:''|[^'\r\n])*'|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/[+-]?(?:[&%]\d+|\$[a-f\d]+)/i,/([+-]|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/i,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/}},function(e,t){Prism.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/, -number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}},function(e,t){Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b([\d_]+(\.[\de_]+)?|0x[a-f0-9_]+(\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b([A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.util.clone(Prism.languages.swift)},function(e,t){Prism.languages.objectivec=Prism.languages.extend("c",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/})},function(e,t){Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},string:{pattern:/(^|[^@\\])("|')(?:\\?[\s\S])*?\2/,greedy:!0,lookbehind:!0},variable:/@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/,function:/\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b-?(?:0x)?\d*\.?[\da-f]+\b/,operator:/[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}},function(e,t){Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*?"|'[^('\s]*/,greedy:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,lookbehind:!0},number:{pattern:/(\s|\))[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)/,lookbehind:!0},function:{pattern:/(\()[^\s()]*(?=\s)/,lookbehind:!0},punctuation:/[()]/}},function(e,t){!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#(?!\{[^\r\n]*?\}).*/,/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m],keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:t}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,greedy:!0,inside:{interpolation:t}}]}(Prism)},function(e,t){!function(e){var t=/\{\*[\s\S]+?\*\}|\{[\s\S]+?\}/g,n="{literal}",i="{/literal}",r=!1;e.languages.smarty=e.languages.extend("markup",{smarty:{pattern:t,inside:{delimiter:{pattern:/^\{|\}$/i,alias:"punctuation"},string:/(["'])(?:\\?.)*?\1/,number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][-+]?\d+)?)\b/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->)(?!\d)\w+/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:[{pattern:/(\|\s*)@?(?!\d)\w+/,lookbehind:!0},/^\/?(?!\d)\w+/,/(?!\d)\w+(?=\()/],"attr-name":{pattern:/\w+\s*=\s*(?:(?!\d)\w+)?/,inside:{variable:{pattern:/(=\s*)(?!\d)\w+/,lookbehind:!0},operator:/=/}},punctuation:[/[\[\]().,:`]|\->/],operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/],keyword:/\b(?:false|off|on|no|true|yes)\b/}}}),e.languages.insertBefore("smarty","tag",{"smarty-comment":{pattern:/\{\*[\s\S]*?\*\}/,alias:["smarty","comment"]}}),e.hooks.add("before-highlight",function(e){"smarty"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(t,function(t){if(t===i&&(r=!1),!r){t===n&&(r=!0);for(var s=e.tokenStack.length;e.backupCode.indexOf("___SMARTY"+s+"___")!==-1;)++s;return e.tokenStack[s]=t,"___SMARTY"+s+"___"}return t}))}),e.hooks.add("before-insert",function(e){"smarty"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(t){if("smarty"===t.language){for(var n=0,i=Object.keys(t.tokenStack);n=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*?\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,character:{pattern:/\$./,alias:"string"},number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/(?:\B-|\b)\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}},function(e,t){Prism.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[{pattern:/b?r(#*)"(?:\\?.)*?"\1/,greedy:!0},{pattern:/b?("|')(?:\\?.)*?\1/,greedy:!0}],keyword:/\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,greedy:!0,alias:"attr-name"},function:[/[a-z0-9_]+(?=\s*\()/i,/[a-z0-9_]+!(?=\s*\(|\[)/i],"macro-rules":{pattern:/[a-z0-9_]+!/i,alias:"function"},number:/\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(_?\d)*)?\.?\d(_?\d)*([Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[\|:,]/,operator:/[&*]/}},punctuation:/[{}[\];(),:]|\.+|->/,operator:/[-+*\/%!^=]=?|@|&[&=]?|\|[|=]?|<>?=?/}},function(e,t){Prism.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\?.)*?\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/\b(?:0x[\dA-Fa-f]+(?:\.\d*)?|\d*\.?\d+)(?:[EePp][+-]?\d+)?[iL]?\b/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}},function(e,t){Prism.languages.d=Prism.languages.extend("clike",{string:[/\b[rx]"(\\.|[^\\"])*"[cwd]?/,/\bq"(?:\[[\s\S]*?\]|\([\s\S]*?\)|<[\s\S]*?>|\{[\s\S]*?\})"/,/\bq"([_a-zA-Z][_a-zA-Z\d]*)(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\1"/,/\bq"(.)[\s\S]*?\1"/,/'(?:\\'|\\?[^']+)'/,/(["`])(\\.|(?!\1)[^\\])*\1[cwd]?/],number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]*/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]*/i,lookbehind:!0}],keyword:/\$|\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\b/,operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),Prism.languages.d.comment=[/^\s*#!.+/,{pattern:/(^|[^\\])\/\+(?:\/\+[\s\S]*?\+\/|[\s\S])*?\+\//,lookbehind:!0}].concat(Prism.languages.d.comment),Prism.languages.insertBefore("d","comment",{"token-string":{pattern:/\bq\{(?:|\{[^}]*\}|[^}])*\}/,alias:"string"}}),Prism.languages.insertBefore("d","keyword",{property:/\B@\w*/}),Prism.languages.insertBefore("d","function",{register:{pattern:/\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:"variable"}})},function(e,t){Prism.languages.dart=Prism.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?("|')(\\?.)*?\1/,greedy:!0}],keyword:[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\b/],operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),Prism.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}})},function(e,t){!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\?[^\\])*?'/,greedy:!0},{pattern:/"(?:\\?[^\\])*?"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\?[\s\S])*?`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"]}(Prism)},function(e,t){!function(e){var t=/%%?[~:\w]+%?|!\S+!/,n={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},i=/"[^"]*"/,r=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/^for\b|\b(?:in|do)\b/i,string:i,parameter:n,variable:t,number:r,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im,lookbehind:!0,inside:{keyword:/^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i,string:i,parameter:n,variable:t,number:r,operator:/\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:i,parameter:n,variable:[t,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:r,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^\w+\b/i,string:i,parameter:n,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:t,number:r,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(Prism)},function(e,t){Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,boolean:/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}})},function(e,t){Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}},function(e,t){Prism.languages.livescript={"interpolated-string":{pattern:/("""|")(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|\d)*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:"variable"}}},string:/[\s\S]+/}},comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0}],string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(\[.+?]|\\.|(?!\/\/)[^\\])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:"operator"},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:"variable"},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|\d)*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},Prism.languages.livescript["interpolated-string"].inside.interpolation.inside.rest=Prism.languages.livescript},function(e,t){!function(e){var t=/\\([^a-z()[\]]|[a-z\*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})([\s\S]*?)(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$(?:\\?[\s\S])*?\$|\\\((?:\\?[\s\S])*?\\\)|\\\[(?:\\?[\s\S])*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})([\s\S]*?)(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/}}(Prism)},function(e,t){Prism.languages.groovy=Prism.languages.extend("clike",{keyword:/\b(as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,string:[{pattern:/("""|''')[\s\S]*?\1|(\$\/)(\$\/\$|[\s\S])*?\/\$/,greedy:!0},{pattern:/("|'|\/)(?:\\?.)*?\1/,greedy:!0}],number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?[\d]+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.{1,2}(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),Prism.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment"}}),Prism.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(setup|given|when|then|and|cleanup|expect|where):/}),Prism.languages.insertBefore("groovy","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),Prism.hooks.add("wrap",function(e){if("groovy"===e.language&&"string"===e.type){var t=e.content[0];if("'"!=t){var n=/([^\\])(\$(\{.*?\}|[\w\.]+))/;"$"===t&&(n=/([^\$])(\$(\{.*?\}|[\w\.]+))/),e.content=e.content.replace(/</g,"<").replace(/&/g,"&"),e.content=Prism.highlight(e.content,{expression:{pattern:n,lookbehind:!0,inside:Prism.languages.groovy}}),e.classes.push("/"===t?"regex":"gstring")}}})},function(e,t){Prism.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":/[a-z_]\w*(?=\s*:)/i,keyword:[{pattern:/(fragment\s+(?!on)[a-z_]\w*\s+|\.\.\.\s*)on\b/,lookbehind:!0},/\b(?:query|fragment|mutation)\b/],operator:/!|=|\.{3}/,punctuation:/[!(){}\[\]:=,]/}},function(e,t){Prism.languages.nginx=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},keyword:/\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|server|events|location|include|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\b/i}),Prism.languages.insertBefore("nginx","keyword",{variable:/\$[a-z_]+/i})},function(e,t){Prism.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\?.)*?"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^'\\])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^'\\])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\d+#[a-z0-9]+/i,/(?:\b|-)\d*\.?\d+([Ee][+-]?\d+)?\b/],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}},function(e,t){Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(`?[\s\S])*?"/,greedy:!0,inside:{function:{pattern:/[^`]\$\(.*?\)/,inside:{}}}},{pattern:/'([^']|'')*'/,greedy:!0}],namespace:/\[[a-z][\s\S]*?\]/i,boolean:/\$(true|false)\b/i,variable:/\$\w+\b/i,function:[/\b(Add-(Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(Csv|Json|StringData)|Convert-Path|ConvertTo-(Csv|Html|Json|Xml)|Copy-(Item|ItemProperty)|Debug-Process|Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(Custom|List|Table|Wide)|Get-(Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(Command|Object)|Move-(Item|ItemProperty)|New-(Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(Job|PSSession)|Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(Computer|Service)|Restore-Computer|Resume-(Job|Service)|Save-Help|Select-(Object|String|Xml)|Send-MailMessage|Set-(Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(Job|Process|Service|Sleep|Transaction)|Stop-(Computer|Job|Process|Service)|Suspend-(Job|Service)|Tee-Object|Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(Event|PSSessionConfiguration)|Update-(FormatData|Help|List|TypeData)|Use-Transaction|Wait-(Event|Job|Process)|Where-Object|Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i], -keyword:/\b(Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(and|x?or)|(Not)?(Like|Match|Contains|In)|Replace|Join|is(Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},Prism.languages.powershell.string[0].inside.boolean=Prism.languages.powershell.boolean,Prism.languages.powershell.string[0].inside.variable=Prism.languages.powershell.variable,Prism.languages.powershell.string[0].inside.function.inside=Prism.util.clone(Prism.languages.powershell)},function(e,t){Prism.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|.)*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}},function(e,t){Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])([\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold)},function(e,t){},,,,,,,function(e,t){},function(e,t){},function(e,t){},,function(e,t){e.exports='
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    '}]); +!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";var i=n(1),r=n(85),s=n(90),o=n(95),a=n(98),l=n(101),c=n(103);n(152),n(159),n(160),n(161);var u="mditor-hidden",p=new i.Component({template:n(163),onInit:function(){this.PLATFORM=navigator.platform.toLowerCase(),this.EOL="win32"==this.PLATFORM?"\r\n":"\n",this.CMD=this.PLATFORM.indexOf("mac")>-1?"command":"ctrl",this.INDENT=" ",this.shortcut=new l(this),this.Parser=c,this.parser=new c(this)},onReady:function(){var e=this;this.shortcut.bind("tab",this.editor.addIndent.bind(this.editor)),this.shortcut.bind("shift+tab",this.editor.removeIndent.bind(this.editor)),this.shortcut.bind("enter",function(t){e._ulAndQuoteAutoComplete(t),e._olAutoComplete(t),e._keepIndent(t)},!0),setTimeout(function(){e.$emit("ready")},0)},components:{Toolbar:r,Editor:s,Viewer:o,Finder:a},props:{height:"400px",width:"auto",preview:!1,split:!0,fullscreen:!1},data:function(){return{self:this,value:""}},find:function(e){this.finder.show(e)},syncScroll:function(){if(this.split&&!this.preview){var e=this.editor.textarea.offsetHeight,t=this.editor.textarea.scrollHeight,n=this.viewer.$element.scrollHeight,i=this.editor.textarea.scrollTop,r=i*(n-e)/(t-e);this.viewer.$element.scrollTop=r}},onChanged:function(e){this.$emit("changed",e),this.syncScroll()},onInput:function(e){this.$emit("input",e)},onPaste:function(e){this.$emit("paste",e),this.syncScroll()},onHeadDblClick:function(e){"I"!=e.target.tagName&&this.$emit("head-dblclick",e)},_keepIndent:function(e){var t=this.editor.getBeforeTextInLine(),n=t.split(this.INDENT);if(!(n.length<2)){for(var i=0,r=[this.EOL];""===n[i]&&i "!=n||(t.length>n.length?this.editor.insertBeforeText(this.EOL+n):(this.editor.selectBeforeText(n.length),this.editor.setSelectText("")),e.preventDefault())},_olAutoComplete:function(e){var t=/^\d+\./,n=this.editor.getBeforeTextInLine(),i=n.trim();if(t.test(i)){var r=i.split(".")[0];i.length>r.length+1?this.editor.insertBeforeText(this.EOL+(parseInt(r)+1)+". "):(this.editor.selectBeforeText(n.length),this.editor.setSelectText("")),e.preventDefault()}},focus:function(){this.preview?this.$element.focus():this.editor.focus()},blur:function(){this.editor.blur()},addCommand:function(e){e.name&&e.handler&&(this.commands=this.commands||{},this.commands[e.name]=e,e.key&&this.shortcut.bind(e.key,e.name,e.allowDefault,e.owner))},removeCommand:function(e){this.commands=this.commands||{};var t=this.commands[e];t&&(this.shortcut.unbind(t.key),this.commands[e]=null,delete this.commands[e])},execCommand:function(e,t){t=t||{},t.mditor=this,t.toolbar=this.toolbar,t.editor=this.editor,this.commands[e].handler.call(this,t)}});p.fromTextarea=function(e){e.classList.add(u);var t=new p;return t.value=e.value,t.$watch("value",function(){e.value=t.value}),t.$mount(e),t.switchTextarea=function(){e.classList.contains(u)?(e.value=t.value,t.$element.classList.add(u),e.classList.remove(u)):(t.value=e.value,e.classList.add(u),t.$element.classList.remove(u))},t},p.Parser=c,e.exports=window.Mditor=p},function(e,t,n){"use strict";var i=n(2),r=n(3),s=n(4),o=n(6),a=n(7),l=n(52),c=n(80),u=n(51);r.copy(l,c),c.version=i.version,c.Template=l,c.Watcher=o,c.Observer=a,c.EventEmitter=u,c.utils=r,c.Class=s,c.use=function(e){var t=e.install||e;if(!r.isFunction(t))throw new Error("Invalid Plugin");return t.call(e,this)},e.exports=c},function(e,t){e.exports={name:"mokit",version:"3.1.3"}},function(e,t,n){!function(e){e.noop=function(){},e.isNull=function(e){return null===e||"undefined"==typeof e},e.trim=function(e){return this.isNull(e)?e:e.trim?e.trim():e.replace(/(^[\\s]*)|([\\s]*$)/g,"")},e.replace=function(e,t,n){return this.isNull(e)?e:e.replace(new RegExp(t,"g"),n)},e.startWith=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&0===e.indexOf(t)},e.contains=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&e.indexOf(t)>-1},e.endWith=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&e.indexOf(t)===e.length-t.length},e.has=e.hasProperty=function(e,t){return!this.isNull(e)&&!this.isNull(t)&&(t in e||e.hasOwnProperty(t))},e.isFunction=function(e){return!this.isNull(e)&&"function"==typeof e},e.isString=function(e){return!this.isNull(e)&&("string"==typeof e||e instanceof String)},e.isNumber=function(e){return!this.isNull(e)&&("number"==typeof e||e instanceof Number)},e.isBoolean=function(e){return!this.isNull(e)&&("boolean"==typeof e||e instanceof Boolean)},e.isElement=function(e){return!this.isNull(e)&&(window.Element?e instanceof Element:e.tagName&&e.nodeType&&e.nodeName&&e.attributes&&e.ownerDocument)},e.isText=function(e){return!this.isNull(e)&&e instanceof Text},e.isObject=function(e){return!this.isNull(e)&&"object"==typeof e},e.isArray=function(e){if(this.isNull(e))return!1;var t="[object Array]"===Object.prototype.toString.call(e),n=e instanceof Array,i=!this.isString(e)&&this.isNumber(e.length)&&this.isFunction(e.splice),r=!this.isString(e)&&this.isNumber(e.length)&&e[0];return t||n||i||r},e.isDate=function(e){return!this.isNull(e)&&e instanceof Date},e.isRegexp=function(e){return e instanceof RegExp},e.toArray=function(e){return this.isNull(e)?[]:Array.prototype.slice.call(e)},e.toDate=function(e){var t=this;return t.isNumber(e)?new Date(e):t.isString(e)?new Date(t.replace(t.replace(e,"-","/"),"T"," ")):t.isDate(e)?e:null},e.each=function(e,t,n){if(!this.isNull(e)&&!this.isNull(t))if(this.isArray(e))for(var i=e.length,r=0;r-1))if(delete t[i],Object.getOwnPropertyDescriptor)try{Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))}catch(n){t[i]=e[i]}else t[i]=e[i]}),t},e.clone=function(e,t){if(this.isNull(e)||this.isString(e)||this.isNumber(e)||this.isBoolean(e)||this.isDate(e))return e;var n=e;try{n=new e.constructor}catch(e){}return this.each(e,function(e,i){n[e]==i||this.contains(t,e)||(this.isObject(i)?n[e]=this.clone(i,t):n[e]=i)},this),["toString","valueOf"].forEach(function(i){this.contains(t,i)||this.defineFreezeProp(n,i,e[i])},this),n},e.mix=function(t,n,i,r,s){if(r)switch(r){case 1:return e.mix(t.prototype,n.prototype,i,0);case 2:e.mix(t.prototype,n.prototype,i,0);break;case 3:return e.mix(t,n.prototype,i,0);case 4:return e.mix(t.prototype,n,i,0)}return n=n||{},t=t||(this.isArray(n)?[]:{}),this.keys(n).forEach(function(r){this.contains(i,r)||s&&this.isNull(n[r])||(!this.isObject(n[r])||n[r].constructor!=Object&&n[r].constructor!=Array&&null!=n[r].constructor?t[r]=n[r]:t[r]=e.mix(t[r],n[r],i,0,s))},this),t},e.defineFreezeProp=function(e,t,n){try{Object.defineProperty(e,t,{value:n,enumerable:!1,configurable:!0,writable:!1})}catch(i){e[t]=n}},e.keys=function(e){if(Object.keys)return Object.keys(e);var t=[];return this.each(e,function(e){t.push(e)}),t},e.create=function(e,t){if(Object.create)return Object.create(e,t);var n=function(){};n.prototype=e;var i=new n;return t&&this.copy(t,i),i},e.setPrototypeOf=function(e,t){return Object.setPrototypeOf?Object.setPrototypeOf(e,t||this.create(null)):("__proto__"in Object||this.copy(t,e),void(e.__proto__=t))},e.getPrototypeOf=function(e){return e.__proto__?e.__proto__:Object.getPrototypeOf?Object.getPrototypeOf(e):e.constructor?e.constructor.prototype:void 0},e.deepEqual=function(e,t){if(e===t)return!0;if(!this.isObject(e)||!this.isObject(t))return!1;var n=this.keys(e),i=this.keys(t);if(n.length!==i.length)return!1;var r=n.concat(i),s=this.create(null),o=!0;return this.each(r,function(n,i){s[i]||(this.deepEqual(e[i],t[i])||(o=!1),s[i]=!0)},this),o},e.fromTo=function(e,t,n,i){if(i||(i=[n,n=i][0]),n=Math.abs(n||1),e=t;r-=n)i(r)},e.newGuid=function(){var e=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()},e.map=function(e,t){var n=this.isArray(e)?[]:{};return this.each(e,function(e,i){n[e]=t(e,i)}),n},e.setByPath=function(e,t,n){this.isNull(e)||this.isNull(t)||""===t||(this.isArray(t)||(t=t.replace(/\[/,".").replace(/\]/,".").split(".")),this.each(t,function(i,r){this.isNull(r)||r.length<1||(i===t.length-1?e[r]=n:(e[r]=e[r]||{},e=e[r]))},this))},e.getByPath=function(e,t){return this.isNull(e)||this.isNull(t)||""===t?e:(this.isArray(t)||(t=t.replace(/\[/,".").replace(/\]/,".").split(".")),this.each(t,function(t,n){this.isNull(n)||n.length<1||this.isNull(e)||(e=e[n])},this),e)},e.unique=function(e){if(this.isNull(e))return e;var t=[];return this.each(e,function(e,n){t.indexOf(n)>-1||t.push(n)}),t},e.getFunctionArgumentNames=function(e){if(!e)return[];var t=e.toString(),n=t.split(")")[0].split("=>")[0].split("(");return(n[1]||n[0]).split(",").map(function(e){return e.trim()}).filter(function(e){return"function"!=e})},e.short=function(e,t){if(!e)return e;t=t||40;var n=e.length,i=t/2;return n>t?e.substr(0,i)+"..."+e.substr(n-i):e},e.firstUpper=function(e){if(!this.isNull(e))return e.substring(0,1).toUpperCase()+e.substring(1)},e.escapeRegExp=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},e.parseDom=function(t){this._PDD_=this._PDD_||document.createElement("div"),this._PDD_.innerHTML=e.trim(t);var n=this._PDD_.childNodes[0];return n&&(n=n.cloneNode(!0)),this._PDD_.innerHTML="",n}}(t)},function(e,t,n){function i(e){e=e||r.create(null),e.$name=e.$name||"Class",e.$extends=e.$extends||i,e.$static=e.$static||r.create(null);var t=r.isFunction(e.$extends)?e.$extends.prototype:e.$extends,n=function(){if(!this.$super){r.final(this,"$super",function(){if(this._super_called_)return this._super_ret_;if(this._super_called_=!0,r.isFunction(e.$extends)){if(this._super_ret_=e.$extends.apply(this,arguments),this._super_ret_){var t=r.getPrototypeOf(this);r.setPrototypeOf(t,this._super_ret_)}}else this._super_ret_=e.$extends;return this._super_ret_});for(var n in t){var i=t[n];r.isFunction(i)?this.$super[n]=i.bind(this):this.$super[n]=i}}return r.isFunction(e.constructor)&&e.constructor!==Object?e.constructor.apply(this,arguments):void this.$super.apply(this,arguments)};return n.prototype=r.create(t),r.copy(e,n.prototype),r.final(n.prototype,"$class",n),r.copy(e.$static,n),r.isFunction(e.$extends)&&r.setPrototypeOf(n,e.$extends),e.$extends.$extend||r.copy(i,n),r.final(n,"$super",e.$extends),n}const r=n(5);i.$extend=function(e){return e.$extends=this,new i(e)},i.Class=i,e.exports=i},function(e,t){"use strict";function n(){}function i(e){return Object.prototype.toString.call(e)}function r(e){var t=i(e);return/^\[object (.+)\]$/i.exec(t)[1]}function s(e){return void 0===e||null===e}function o(e){return s(e)?e:e.trim?e.trim():e.replace(/(^[\\s]*)|([\\s]*$)/g,"")}function a(e,t,n){return s(e)?e:e.replace(new RegExp(t,"g"),n)}function l(e,t){return!s(e)&&!s(t)&&0===e.indexOf(t)}function c(e,t){return!s(e)&&!s(t)&&e.indexOf(t)>-1}function u(e,t){return!s(e)&&!s(t)&&e.indexOf(t)===e.length-t.length}function p(e,t){return!s(e)&&!s(t)&&(t in e||e.hasOwnProperty(t))}function d(e){return!s(e)&&"function"==typeof e}function h(e){return!s(e)&&"AsyncFunction"===r(e)}function f(e){return!s(e)&&"GeneratorFunction"===r(e)}function m(e){return!s(e)&&"String"===r(e)}function g(e){return!s(e)&&"Number"===r(e)}function b(e){return!s(e)&&"Boolean"===r(e)}function v(e){return!s(e)&&(win.Element?e instanceof Element:e.tagName&&e.nodeType&&e.nodeName&&e.attributes&&e.ownerDocument)}function _(e){return!s(e)&&e instanceof Text}function y(e){if(s(e))return!1;var t=r(e);return"Object"===t||"Array"===t}function w(e){if(s(e))return!1;var t="Array"===r(e),n=e instanceof Array,i=!m(e)&&g(e.length)&&d(e.splice),o=!m(e)&&g(e.length)&&e[0];return t||n||i||o}function x(e){return!s(e)&&e instanceof Date}function k(e){return e instanceof RegExp}function E(e){return s(e)?[]:Array.prototype.slice.call(e)}function S(e){return g(e)?new Date(e):m(e)?new Date(a(a(e,"-","/"),"T"," ")):x(e)?e:null}function T(e,t,n){if(!s(e)&&!s(t))if(w(e))for(var i=e.length,r=0;r-1))if(delete t[i],Object.getOwnPropertyDescriptor)try{Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))}catch(n){t[i]=e[i]}else t[i]=e[i]}),t}function C(e,t){if(s(e)||m(e)||g(e)||b(e)||x(e))return e;var n=e;try{n=new e.constructor}catch(e){}return T(e,function(e,i){n[e]==i||c(t,e)||(y(i)?n[e]=C(i,t):n[e]=i)}),["toString","valueOf"].forEach(function(i){c(t,i)||O(n,i,e[i])}),n}function A(e,t,n,i,r){if(i)switch(i){case 1:return A(e.prototype,t.prototype,n,0);case 2:A(e.prototype,t.prototype,n,0);break;case 3:return A(e,t.prototype,n,0);case 4:return A(e.prototype,t,n,0)}return t=t||{},e=e||(w(t)?[]:{}),I(t).forEach(function(i){c(n,i)||r&&s(t[i])||(!y(t[i])||t[i].constructor!=Object&&t[i].constructor!=Array&&null!=t[i].constructor?e[i]=t[i]:e[i]=A(e[i],t[i],n,0,r))}),e}function O(e,t,n){if(arguments.length<1)throw new Error("Parameter missing");if(arguments.length<2)return T(e,function(t,n){O(e,t,n)});if(arguments.length<3)return O(e,t,e[t]);try{Object.defineProperty(e,t,{get:function(){return n},set:function(){throw new Error("Cannot assign to final property:"+t)},enumerable:!1,configurable:!1})}catch(i){e[t]=n}}function I(e){if(Object.keys)return Object.keys(e);var t=[];return T(e,function(e){t.push(e)}),t}function L(e,t){function n(){}if(Object.create)return Object.create(e,t);n.prototype=e;var i=new n;return t&&P(t,i),i}function R(e,t){return Object.setPrototypeOf?Object.setPrototypeOf(e,t||L(null)):("__proto__"in Object||P(t,e),void(e.__proto__=t))}function $(e){return e.__proto__?e.__proto__:Object.getPrototypeOf?Object.getPrototypeOf(e):e.constructor?e.constructor.prototype:void 0}function D(e,t){if(e===t)return!0;if(!y(e)||!y(t))return!1;var n=I(e),i=I(t);if(n.length!==i.length)return!1;var r=n.concat(i),s=L(null),o=!0;return T(r,function(n,i){s[i]||(D(e[i],t[i])||(o=!1),s[i]=!0)}),o}function F(e,t,n,i){if(i||(i=[n,n=i][0]),n=Math.abs(n||1),e=t;r-=n)i(r)}function M(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}function B(e,t){var n=w(e)?[]:{};return T(e,function(e,i){n[e]=t(e,i)}),n}function q(e,t,n){s(e)||s(t)||""===t||(w(t)||(t=t.replace(/\[/,".").replace(/\]/,".").split(".")),T(t,function(i,r){s(r)||r.length<1||(i===t.length-1?e[r]=n:(e[r]=e[r]||{},e=e[r]))}))}function z(e,t){return s(e)||s(t)||""===t?e:(w(t)||(t=t.replace(/\[/,".").replace(/\]/,".").split(".")),T(t,function(t,n){s(n)||n.length<1||s(e)||(e=e[n])}),e)}function j(e){if(s(e))return e;var t=[];return T(e,function(e,n){t.indexOf(n)>-1||t.push(n)}),t}function U(e){if(!e)return[];var t=e.toString(),n=t.split(")")[0].split("=>")[0].split("(");return(n[1]||n[0]).split(",").map(function(e){return o(e)}).filter(function(e){return"function"!=e})}function H(e,t){if(!e)return e;t=t||40;var n=e.length,i=t/2;return n>t?e.substr(0,i)+"..."+e.substr(n-i):e}function G(e){return m(e)?e.substring(0,1).toUpperCase()+e.substring(1):""}function W(e){return m(e)?e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"):""}function V(e,t){return m(e)?(e&&(e=e.replace(/\-[a-z0-9]/g,function(e){return e.slice(1).toUpperCase()}),e=e.replace(/^[a-z]/i,function(e){return t?e.toUpperCase():e.toLowerCase()})),e):""}function K(e){return m(e)?(e&&(e=e.replace(/([A-Z])/g,"-$1"),"-"==e[0]&&(e=e.slice(1))),e.toLowerCase()):""}function Y(e){var t=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;return e.replace(t,"<$1>")}function X(e){e=e||" ";var t=document.createElement("div");t.innerHTML=Y(o(e));var n=E(t.childNodes);return T(n,function(e,n){t.removeChild(n)}),n}Object.defineProperty(t,"__esModule",{value:!0});var Z=p;t.noop=n,t.toString=i,t.getType=r,t.isNull=s,t.trim=o,t.replace=a,t.startWith=l,t.contains=c,t.endWith=u,t.has=p,t.hasProperty=Z,t.isFunction=d,t.isAsyncFunction=h,t.isGeneratorFunction=f,t.isString=m,t.isNumber=g,t.isBoolean=b,t.isElement=v,t.isText=_,t.isObject=y,t.isArray=w,t.isDate=x,t.isRegexp=k,t.toArray=E,t.toDate=S,t.each=T,t.formatDate=N,t.copy=P,t.clone=C,t.mix=A,t.final=O,t.keys=I,t.create=L,t.setPrototypeOf=R,t.getPrototypeOf=$,t.deepEqual=D,t.fromTo=F,t.newGuid=M,t.map=B,t.setByPath=q,t.getByPath=z,t.unique=j,t.getFunctionArgumentNames=U,t.short=H,t.firstUpper=G,t.escapeRegExp=W,t.toCamelCase=V,t.toSplitCase=K,t.htmlPrefilter=Y,t.parseHTML=X},function(e,t,n){"use strict";var i=n(4),r=n(3),s=new i({constructor:function(e,t,n){if(!r.isFunction(e)||!r.isFunction(t))throw new Error("Invalid parameters");this.calcor=e,this.handler=t,n&&this.calc(!0)},calc:function(e){var t=this.calcor();!e&&r.deepEqual(t,this.value)||this.handler(t,this.value),this.value=r.clone(t)}});e.exports=s},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(8),s=i(r),o=n(43),a=i(o),l=n(48),c=i(l),u=n(4),p=n(3),d=n(51),h="_observer_",f="change",m=10,g=[/^\_(.*)\_$/i,/^\_\_/i],b=new u({$extends:d,constructor:function(e,t){if(p.isNull(e))throw new Error("Invalid target");t=t||{};var n=e[h];return n?(p.copy(t,n.options),n.apply(),n):(d.call(this),p.defineFreezeProp(this,"options",t),p.defineFreezeProp(this,"shadow",{}),p.defineFreezeProp(this,"target",e),p.defineFreezeProp(this,"parents",[]),p.defineFreezeProp(e,h,this),void this.apply())},set:function(e,t){p.isFunction(t)||b.isIgnore(e)||((0,c.default)(this.target,e,{get:function(){return this[h].shadow[e]},set:function(t){var n=this[h],i=n.shadow[e];if(i!==t){if(p.isObject(t)){var r=new b(t);n.addChild(r,e)}i&&i[h]&&n.removeChild(i[h],e),n.shadow[e]=t,n.emitChange({path:e,value:t})}},configurable:!0,enumerable:!0}),this.target[e]=t)},apply:function(){p.isArray(this.target)&&this._wrapArray(this.target);var e=this._getPropertyNames(this.target);e.forEach(function(e){var t=(0,a.default)(this.target,e);"value"in t&&this.set(e,this.target[e])},this)},clearReference:function(){p.each(this.target,function(e,t){if(!p.isNull(t)){var n=t[h];n&&this.removeChild(n)}},this)},dispatch:function(e,t){t._src_!==this&&(t._src_=t._src_||this,t._layer_=t._layer_||0,t._layer_++>=m||(this.emit(e,t),!this.parents||this.parents.length<1||this.parents.forEach(function(n){if(!(n.name in n.parent.target))return n.parent.removeChild(this);var i=p.copy(t);i.path=n.name+"."+t.path,n.parent.dispatch(e,i)},this)))},addChild:function(e,t){if(p.isNull(e)||p.isNull(t))throw new Error("Invalid paramaters");e.options.root||e.parents.push({parent:this,name:t})},removeChild:function(e,t){if(p.isNull(e))throw new Error("Invalid paramaters");var n=-1;e.parents.forEach(function(e,i){e.parent===this&&e.name===t&&(n=i)},this),n>-1&&e.parents.splice(n,1)},emitChange:function(e){this.dispatch(f,e)},_getPropertyNames:function(){var e=p.isArray(this.target)?this.target.map(function(e,t){return t}):(0,s.default)(this.target);return e.filter(function(e){return e!==h})},_wrapArray:function(e){p.defineFreezeProp(e,"push",function(){var t=[].slice.call(arguments);t.forEach(function(t){this[h].set(e.length,t)},this),this[h].emitChange({path:"length",value:this.length})}),p.defineFreezeProp(e,"pop",function(){var e=[].pop.apply(this,arguments);return this[h].emitChange({path:this.length,value:e}),this[h].emitChange({path:"length",value:this.length}),e}),p.defineFreezeProp(e,"unshift",function(){var e=[].slice.call(arguments);e.forEach(function(e){this[h].set(0,e)},this),this[h].emitChange({path:"length",value:this.length})}),p.defineFreezeProp(e,"shift",function(){var e=[].shift.apply(this,arguments);return this[h].emitChange({path:0,value:e}),this[h].emitChange({path:"length",value:this.length}),e}),p.defineFreezeProp(e,"splice",function(){for(var e=arguments[0],t=p.isNull(arguments[1])?e+arguments[1]:this.length-1,n=[].splice.apply(this,arguments),i=e;i<=t;i++)this[h].emitChange({path:i,value:n[i-e]});return this[h].emitChange({path:"length",value:this.length}),n}),p.defineFreezeProp(e,"set",function(e,t){e>=this.length&&this[h].emitChange({path:"length",value:this.length}),this[h].set(e,t)})}});b.observe=function(e){return new b(e)},b.isIgnore=function(e){return g.some(function(t){return t.test(e)})},e.exports=b},function(e,t,n){e.exports={default:n(9),__esModule:!0}},function(e,t,n){n(10),e.exports=n(30).Object.keys},function(e,t,n){var i=n(11),r=n(13);n(28)("keys",function(){return function(e){return r(i(e))}})},function(e,t,n){var i=n(12);e.exports=function(e){return Object(i(e))}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(14),r=n(27);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t,n){var i=n(15),r=n(16),s=n(19)(!1),o=n(23)("IE_PROTO");e.exports=function(e,t){var n,a=r(e),l=0,c=[];for(n in a)n!=o&&i(a,n)&&c.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var i=n(17),r=n(12);e.exports=function(e){return i(r(e))}},function(e,t,n){var i=n(18);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(16),r=n(20),s=n(22);e.exports=function(e){return function(t,n,o){var a,l=i(t),c=r(l.length),u=s(o,c);if(e&&n!=n){for(;c>u;)if(a=l[u++],a!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var i=n(21),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(21),r=Math.max,s=Math.min;e.exports=function(e,t){return e=i(e),e<0?r(e+t,0):s(e,t)}},function(e,t,n){var i=n(24)("keys"),r=n(26);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(25),r="__core-js_shared__",s=i[r]||(i[r]={});e.exports=function(e){return s[e]||(s[e]={})}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+i).toString(36))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var i=n(29),r=n(30),s=n(39);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],o={};o[e]=t(n),i(i.S+i.F*s(function(){n(1)}),"Object",o)}},function(e,t,n){var i=n(25),r=n(30),s=n(31),o=n(33),a="prototype",l=function(e,t,n){var c,u,p,d=e&l.F,h=e&l.G,f=e&l.S,m=e&l.P,g=e&l.B,b=e&l.W,v=h?r:r[t]||(r[t]={}),_=v[a],y=h?i:f?i[t]:(i[t]||{})[a];h&&(n=t);for(c in n)u=!d&&y&&void 0!==y[c],u&&c in v||(p=u?y[c]:n[c],v[c]=h&&"function"!=typeof y[c]?n[c]:g&&u?s(p,i):b&&y[c]==p?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t[a]=e[a],t}(p):m&&"function"==typeof p?s(Function.call,p):p,m&&((v.virtual||(v.virtual={}))[c]=p,e&l.R&&_&&!_[c]&&o(_,c,p)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t,n){var i=n(32);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var i=n(34),r=n(42);e.exports=n(38)?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var i=n(35),r=n(37),s=n(41),o=Object.defineProperty;t.f=n(38)?Object.defineProperty:function(e,t,n){if(i(e),t=s(t,!0),i(n),r)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(36);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(38)&&!n(39)(function(){return 7!=Object.defineProperty(n(40)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){e.exports=!n(39)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(36),r=n(25).document,s=i(r)&&i(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,n){var i=n(36);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(44),__esModule:!0}},function(e,t,n){n(45);var i=n(30).Object;e.exports=function(e,t){return i.getOwnPropertyDescriptor(e,t)}},function(e,t,n){var i=n(16),r=n(46).f;n(28)("getOwnPropertyDescriptor",function(){return function(e,t){return r(i(e),t)}})},function(e,t,n){var i=n(47),r=n(42),s=n(16),o=n(41),a=n(15),l=n(37),c=Object.getOwnPropertyDescriptor;t.f=n(38)?c:function(e,t){if(e=s(e),t=o(t,!0),l)try{return c(e,t)}catch(e){}if(a(e,t))return r(!i.f.call(e,t),e[t])}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){e.exports={default:n(49),__esModule:!0}},function(e,t,n){n(50);var i=n(30).Object;e.exports=function(e,t,n){return i.defineProperty(e,t,n)}},function(e,t,n){var i=n(29);i(i.S+i.F*!n(38),"Object",{defineProperty:n(34).f})},function(e,t,n){"use strict";var i=n(3),r=n(4),s=new r({$extends:Function,constructor:function(e){e=e||this;var t=e._emitter_;return t?t:(i.defineFreezeProp(this,"_target_",e),i.defineFreezeProp(e,"_emitter_",this),this._isNative_=this._isNativeObject(this._target_),this._listeners_=this._listeners_||{},this.on=this.$on=this.$addListener=this.addListener,this.off=this.$off=this.$removeListener=this.removeListener,void(this.$emit=this.emit))},_isNativeObject:function(e){return e.addEventListener&&e.removeEventListener&&e.dispatchEvent},addListener:function(e,t,n){if(this._isNative_&&this._addNativeEventListener(e,t,n),this._listeners_[e]=this._listeners_[e]||[],this._listeners_[e].push(t),this._listeners_[e].length>s._maxListeners)throw new Error("The `"+e+"` event listener is not more than 10")},removeListener:function(e,t,n){if(e&&t){if(this._isNative_&&this._removeNativeEventListener(e,t,n),!this._listeners_[e])return;var r=this._listeners_[e].indexOf(t);this._listeners_[e].splice(r,1)}else e?(this._isNative_&&this._listeners_[e]&&this._listeners_[e].forEach(function(t){this.removeListener(e,t,n)},this),delete this._listeners_[e]):(i.each(this._listeners_,function(e){this.removeListener(e,null,n)},this),this._listeners_={})},emit:function(e,t,n,i){if(this._isNative_)return this._emitNativeEvent(e,t,n,i);if(this._listeners_[e]){var r=!1;return this._listeners_[e].forEach(function(e){var n=e.call(this._target_,t);n===!1&&(r=!0)},this),r}},_addNativeEventListener:function(e,t,n){this._target_.addEventListener(e,t,n);var i=s._events[e];i&&(i.addListener=i.addListener||i.on,i.addListener(this,e,t,n))},_removeNativeEventListener:function(e,t,n){this._target_.removeEventListener(e,t,n);var i=s._events[e];i&&(i.removeListener=i.removeListener||i.off,i.removeListener(this,e,t,n))},_emitNativeEvent:function(e,t,n,r){var s=document.createEvent("HTMLEvents");return s.initEvent(e,n,r),i.copy(t,s,["data"]),s.data=t,this._target_.dispatchEvent(s)}});s._maxListeners=10,s._events=[],s.register=function(e){var t=e.name;t&&(i.isArray(t)||(t=t.split(",")),t.forEach(function(t){this._events[t]=e},this))},e.exports=s},function(e,t,n){"use strict";var i=n(53),r=n(54),s=n(55),o=n(79),a=n(56);o.Template=o,o.Compiler=i,o.Directive=r,o.directives=a,o.Expression=s,e.exports=o},function(e,t,n){"use strict";var i=n(4),r=n(54),s=n(3),o=n(55),a=n(56),l="m",c=new i({constructor:function(e){e=e||{},this.prefix=e.prefix||l,this.elementDirectives={},this.attributeDirectives={},this.registerDirectives(a),this.registerDirectives(e.directives)},toCamelCase:function(e,t){return e&&(e=e.replace(/\-[a-z0-9]/g,function(e){return e.slice(1).toUpperCase()}),e=e.replace(/^[a-z]/i,function(e){return t?e.toUpperCase():e.toLowerCase()})),e},toSplitCase:function(e){return e&&(e=e.replace(/([A-Z])/g,"-$1"),"-"==e[0]&&(e=e.slice(1))),e},registerDirectives:function(e){s.each(e,function(e,t){e=this.toSplitCase(e);var n=t.options.prefix===!1?e:this.prefix+":"+e;t.options.type==r.TE?this.elementDirectives[n.toUpperCase()]=t:this.attributeDirectives[n.toLowerCase()]=t},this)},_parseAttrInfo:function(e){var t=this,n=e.toLowerCase().split(":"),i={};return n.length>1?(i.name=n[0]+":"+n[1],i.decorates=n.slice(2).map(function(e){return t.toCamelCase(e)})):(i.name=n[0],i.decorates=[]),i},_createDirectiveInstance:function(e,t){return t.compiler=this,t.prefix=this.prefix,new e(t)},_bindHandler:function(e){e.directives=e.directives.sort(function(e,t){return t.level-e.level});var t=[];s.each(e.directives,function(n,i){if(i.index=n,i.bind(),t.push(i),i.remove!==!1&&i.attribute&&i.node.removeAttribute(i.attribute.name),i.final)return e.final=!0},this),e.directives=t},_compileElement:function(e,t){var n=this.elementDirectives[t.nodeName.toUpperCase()];n&&e.directives.push(this._createDirectiveInstance(n,{handler:e,node:t}))},_compileAttributes:function(e,t){s.toArray(t.attributes).forEach(function(n){var i=this._parseAttrInfo(n.name),r=this.attributeDirectives[i.name]||this.attributeDirectives["*"];if(r){var s=r.options;e.directives.push(this._createDirectiveInstance(r,{handler:e,node:t,attribute:n,expression:s.literal?n.value:new o(n.value,s.mixed),decorates:i.decorates}))}},this)},_compileChildren:function(e,t){e.final||s.toArray(t.childNodes).forEach(function(t){if(!t._compiled_){var n=this.compile(t);n.parent=this,e.children.push(n); +}},this)},compile:function(e,t){if(!e)throw new Error("Invalid node for compile");e._compiled_=!0,t=t||{};var n=function e(t){s.isNull(t)&&(t={}),e.directives.forEach(function(e){e.scope=t,e.execute(t)},this),e.children.forEach(function(e){e(t)},this)};return n.dispose=function(){n.directives.forEach(function(e){e.unbind()},this),n.children.forEach(function(e){e.dispose()},this)},n.node=e,n.directives=[],n.children=[],t.element!==!1&&this._compileElement(n,e),t.attribute!==!1&&this._compileAttributes(n,e),this._bindHandler(n),t.children!==!1&&this._compileChildren(n,e),n}});e.exports=c},function(e,t,n){"use strict";function i(e){e=e||{},e.type=e.type||i.TA,e.level=e.level||i.LG;var t=new r({$extends:e,constructor:function(e){s.copy(e,this)},options:e,bind:e.bind||s.noop,execute:e.execute||function(e){if(this.scope=e,this.options.type===i.TE)return this.update();var t=this.options.literal?this.attribute.value:this.expression.execute(e);s.deepEqual(this._value_,t)||(this.update(t,this._value_),this._value_=t)},update:e.update||s.noop,unbind:e.unbind||s.noop,utils:s,Expression:o});return t.options=e,s.setPrototypeOf(t,e),t}var r=n(4),s=n(3),o=n(55);i.TA="A",i.TE="E",i.LP=3e3,i.LS=2e3,i.LE=1e3,i.LG=0,i.LA=-1e3,i.LC=-2e3,e.exports=i},function(e,t,n){"use strict";var i=n(4),r=n(3),s=new i({constructor:function(e,t){this.func=t?this._compileMixedCode(e):this._compileCode(e)},_compileCode:function(e){return e=this._escapeEOL(this._wrapCode(e)),this._createFunction(e)},_compileMixedCode:function(e){var t=this._parseMixedCode(e);return e=this._escapeEOL(t.join("+")),this._createFunction(e)},_createFunction:function(e){var t=new Function("utils","scope","with(scope){return "+e+"}");return t.bind(null,r)},_parseMixedCode:function(e){for(var t=0,n=e.length,i="",s=!1,o=[];t<=n;){var a=e[t++],l=e[t];r.isNull(a)?(i.length>0&&o.push('"'+this._escapeCode(i)+'"'),i="",s=!1):s||a+l!="{{"?s&&a+l=="}}"?(i.length>0&&o.push(this._wrapCode(i)),i="",s=!1,t++):i+=a:(i.length>0&&o.push('"'+this._escapeCode(i)+'"'),i="",s=!0,t++)}return o},_escapeCode:function(e){return e.replace(/"/,'\\"').replace("\r\n","\\r\\n").replace("\n","\\n")},_escapeEOL:function(e){return e.replace(/\n/gm,"\\\n")},_wrapCode:function(e){return"((function(){try{return ("+e+")}catch(err){console.error(err);return err;}})())"},execute:function(e){return r.isNull(e)&&(e={}),this.func.call(e,e)}});e.exports=s},function(e,t,n){"use strict";e.exports={"#text":n(57),each:n(58),if:n(60),prop:n(61),attr:n(62),on:n(63),html:n(64),text:n(65),prevent:n(66),id:n(67),cloak:n(68),show:n(69),model:n(70),focus:n(77),"*":n(78)}},function(e,t,n){"use strict";var i=n(54),r=n(55);e.exports=new i({type:i.TE,prefix:!1,bind:function(){this.expr=new r(this.node.nodeValue,!0),this.node.nodeValue=""},execute:function(e){this.scope=e;var t=this.expr.execute(e);this.node.nodeValue!==t&&(this.node.nodeValue=t)}})},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(48),s=i(r),o=n(54),a=n(3),l=n(59);e.exports=new o({level:o.LS+1,final:!0,literal:!0,bind:function(){this.mountNode=document.createTextNode(""),this.node.parentNode.insertBefore(this.mountNode,this.node),this.node.removeAttribute(this.attribute.name),this.node.parentNode.removeChild(this.node),this.parseExpr(),this.eachItems={}},parseExpr:function(){this.eachType=this.attribute.value.indexOf(" in ")>-1?"in":"of";var e=this.attribute.value.split(" "+this.eachType+" "),t="with(scope){utils.each("+e[1]+",fn.bind(this,"+e[1]+"))}";this.each=new Function("utils","scope","fn",t).bind(null,this.utils);var n=e[0].split(",").map(function(e){return e.trim()});"in"==this.eachType?(this.keyName=n[0],this.valueName=n[1]):(this.keyName=n[1],this.valueName=n[0])},execute:function(e){var t=this,n=[],i=document.createDocumentFragment(),r=this;this.each(e,function(e,t){var o=new l(this.scope);r.keyName&&(0,s.default)(o,r.keyName,{get:function(){return t}}),r.valueName&&(0,s.default)(o,r.valueName,{get:function(){return e[t]},set:function(n){e[t]=n}});var a=this.eachItems[t];if(a)a.handler(o);else{var c={};c.node=this.node.cloneNode(!0),i.appendChild(c.node),c.handler=this.compiler.compile(c.node),c.handler(o),this.eachItems[t]=c}n.push(t)}.bind(this)),a.each(this.eachItems,function(e,i){n.some(function(t){return t==e})||(i.node.parentNode&&i.node.parentNode.removeChild(i.node),delete t.eachItems[e])},this),i.childNodes.length>0&&this.mountNode.parentNode.insertBefore(i,this.mountNode)}})},function(e,t,n){"use strict";var i=n(3),r=function(e,t){var n=i.create(e);return i.copy(t,n),i.each(e,function(t,r){i.isFunction(r)&&(n[t]=r.bind(e))}),n};e.exports=r},function(e,t,n){"use strict";var i=n(54);e.exports=new i({level:i.LS,final:!0,bind:function(){this.mountNode=document.createTextNode(""),this.node.parentNode.insertBefore(this.mountNode,this.node),this.node.removeAttribute(this.attribute.name),this.node.parentNode.removeChild(this.node)},execute:function(e){var t=this.expression.execute(e);if(t){this._handler=this._handler||this.compiler.compile(this.node),this._handler(e);var n=this.node.$substitute||this.node;n.parentNode||this.mountNode.parentNode.insertBefore(n,this.mountNode)}else{var i=this.node.$substitute||this.node;i.parentNode&&i.parentNode.removeChild(i)}}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({update:function(e){var t=this.node.$target||this.node;t[this.decorates[0]]=e}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({update:function(e){var t=this.node.$target||this.node;t.setAttribute?t.setAttribute(this.decorates[0],e):t[this.decorates[0]]=e}})},function(e,t,n){"use strict";var i=n(54),r=n(51),s=n(59);e.exports=new i({literal:!0,bind:function(){var e=this.attribute.value||"";e.indexOf("(")<0&&e.indexOf(")")<0&&(e+="($event)"),this.expr=new this.Expression(e);var t=this.node.$target||this.node;this.emiter=new r(t),this.emiter.addListener(this.decorates[0],function(e){this.utils.isNull(this.scope)||this.expr.execute(new s(this.scope,{$event:e}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({update:function(e){this.node.innerHTML=e}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({update:function(e){this.node.innerText=e}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({level:i.LP,final:!0})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({literal:!0,update:function(e){if(e in this.scope)throw new Error("Conflicting component id `"+e+"`");this.scope[e]=this.node.$target||this.node}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({level:i.LC,literal:!0,prefix:!1,bind:function(){this.node.removeAttribute(this.attribute.name)}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({update:function(e){this.node.style.display=e?"":"none"}})},function(e,t,n){"use strict";var i=n(71),r=n(72),s=n(73),o=n(74),a=n(75),l=n(76),c=function(e){var t=e.node,n=t.tagName;if(e.decorates[0])return new l(e);if("INPUT"==n){var c=t.getAttribute("type");return"radio"==c?new o(e):"checkbox"==c?new a(e):new s(e)}if("TEXTAREA"==n)return new s(e);if("SELECT"==n)return new i(e);if(t.isContentEditable)return new r(e);throw new Error("Directive `model` cannot be used on `"+n+"`")};c.options={level:c.LA},e.exports=c},function(e,t,n){"use strict";var i=n(54),r=n(51),s=n(59);e.exports=new i({final:!0,bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.node.removeAttribute(this.attribute.name),this._handler=this.compiler.compile(this.node),this.emiter=new r(this.node),this.emiter.addListener("change",function(){if(!this.utils.isNull(this.scope)){var e=this.node.selectedOptions,t=this.node.multiple?[].slice.call(e).map(function(e){return e.value},this):e[0].value;this.backExpr.execute(new s(this.scope,{_value_:t}))}}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e,this._handler(e);var t=this.expression.execute(e);this.utils.isArray(t)||(t=[t]),[].slice.call(this.node.options).forEach(function(e){e.selected=t.indexOf(e.value)>-1},this)}})},function(e,t,n){"use strict";var i=n(54),r=n(51),s=n(59);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("input",function(){this.utils.isNull(this.scope)||this.backExpr.execute(new s(this.scope,{_value_:this.node.innerHTML}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){var t=this.expression.execute(e);this.node.innerHTML!==t&&(this.node.innerHTML=t)}})},function(e,t,n){"use strict";var i=n(54),r=n(51),s=n(59);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("input",function(){this.utils.isNull(this.scope)||this.backExpr.execute(new s(this.scope,{_value_:this.node.value}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){var t=this.expression.execute(e);this.node.value!==t&&(this.node.value=t)}})},function(e,t,n){"use strict";var i=n(54),r=n(51),s=n(59);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("change",function(){this.utils.isNull(this.scope)||this.backExpr.execute(new s(this.scope,{_value_:this.node.value}))}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e;var t=this.expression.execute(e);this.node.checked=t==this.node.value}})},function(e,t,n){"use strict";var i=n(54),r=n(51),s=n(59);e.exports=new i({bind:function(){this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.emiter=new r(this.node),this.emiter.addListener("change",function(){if(!this.utils.isNull(this.scope)){var e=this.expression.execute(this.scope);if(this.utils.isArray(e)&&this.node.checked)e.push(this.node.value);else if(this.utils.isArray(e)&&!this.node.checked){var t=e.indexOf(this.node.value);e.splice(t,1)}else this.backExpr.execute(new s(this.scope,{_value_:this.node.checked}))}}.bind(this),!1)},unbind:function(){this.emiter.removeListener()},execute:function(e){this.scope=e;var t=this.expression.execute(e);this.utils.isArray(t)?this.node.checked=t.indexOf(this.node.value)>-1:this.node.checked=t}})},function(e,t,n){"use strict";var i=n(54),r=n(59);e.exports=new i({bind:function(){var e=this;if(this.target=this.node.$target,this.backExpr=new this.Expression(this.attribute.value+"=_value_"),this.bindProp=this.decorates[0],!this.target)throw new Error("Directive `model:"+this.bindProp+"` cannot be used on `"+this.node.tagName+"`");this.watcher=this.target.$watch(this.bindProp,function(t){e.utils.isNull(e.scope)||e.backExpr.execute(new r(e.scope,{_value_:t}))})},unbind:function(){this.target.$unWatch(this.watcher)},update:function(e){this.target[this.bindProp]=e}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({execute:function(e){var t=this,n=this.expression.execute(e);setTimeout(function(){n?t.node.focus():t.node.blur()},0)}})},function(e,t,n){"use strict";var i=n(54);e.exports=new i({level:i.LA,prefix:!1,literal:!0,remove:!1,bind:function(){this.computedName=this.attribute.name,this.computedValue=this.attribute.value,this.nameExpr=new this.Expression(this.attribute.name,!0),this.valueExpr=new this.Expression(this.attribute.value,!0)},execute:function(e){var t=this.node.$target||this.node,n=this.nameExpr.execute(e);this.computedName!==n&&(t.removeAttribute&&t.removeAttribute(this.computedName),this.computedName=n,!this.utils.isNull(this.computedName)&&this.computedName.length>0&&t.setAttribute&&t.setAttribute(this.computedName,this.computedValue||""));var i=this.valueExpr.execute(e);this.computedValue!==i&&(this.computedValue=i,t.setAttribute?t.setAttribute(this.computedName,this.computedValue||""):t[this.computedName]=this.computedValue)}})},function(e,t,n){"use strict";var i=n(4),r=n(7),s=n(51),o=n(53),a=new i({$extends:s,constructor:function(e,t){t=t||{},s.call(this),this.options=t,this.element=e,this.compiler=t.compiler||new o(t),this.render=this.compiler.compile(this.element),this.update=this.update.bind(this),this._update=this._update.bind(this),this._updateTimer=0},update:function(){this._updateTimer&&(clearTimeout(this._updateTimer),this._updateTimer=null),this._updateTimer=setTimeout(this._update,0)},_update:function(){this._updateTimer&&this.observer&&(this.emit("update",this),this.render(this.observer.target),this._onBind())},_onBind:function(){this._bound||(this._bound=!0,this.emit("bind",this))},bind:function(e,t){e&&(this.unbind(),this.observer=new r(e,{root:this.options.root}),e.$self=e,this.observer.on("change",this.update),t?this._onBind():this.update())},unbind:function(){this.observer&&(this.observer.removeListener("change",this.update),this.observer.clearReference(),this.observer=null)},dispose:function(){this.unbind(),this.render.dispose()}});e.exports=a},function(e,t,n){"use strict";var i=n(81),r=n(83),s=n(52).directives;i.components=r,i.Component=i,i.component=function(e,t){return t?void(r[e]=t):r[e]},i.directive=function(e,t){return t?void(s[e]=t):s[e]},e.exports=i},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e){e=e||{};var t=e.mixes;delete e.mixes,t=t&&!u.isArray(t)?[t]:[];var i=e.extend||r;delete e.extend,t.push(i),t.push(e);var s={};t.forEach(function(e){(e instanceof r||e==r)&&(e=e.$options||{}),u.mix(s,e)}),e=s;var f=new a({$extends:i,constructor:function(t){var i=this;return this==window?new this.$class(t):(p.call(this),t=t||{},u.each(t,function(e,t){e in i||(i[e]=t)}),this._onTemplateUpdate_=this._onTemplateUpdate_.bind(this),this._createdData_(e.data),this._createProperties_(e.properties||e.props),this._createWatches_(e.watches||e.watch),this.$directives=this.$directives||{},this._importDirectives_(e.directives),this.$components=this.$components||{},this._importComponents_(n(83)),this._importComponents_({self:f}),this._importComponents_(e.components),u.defineFreezeProp(this,"$children",[]),t.parent&&this.$setParent(t.parent),this.$callHook("init",[t]),d.observe(this),void(e.element?this.$mount():this.$compile()))},$setParent:function(e){this.$parent!==e&&(this.$parent&&this.$parent.$removeChild(this),e&&e.$addChild(this))},$addChild:function(e){e instanceof r&&(this.$children.push(e),u.defineFreezeProp(e,"$parent",this),u.defineFreezeProp(e,"$root",this.$root||this))},$removeChild:function(e){var t=this.$children.indexOf(e);this.$children.splice(t,1),u.defineFreezeProp(e,"$parent",null)},get $root(){return this.$parent?this.$parent.$root:this},_importComponents_:function(e){u.each(e,function(e,t){t&&(this.$components[e]=t,this.$directives[e]=new h({name:e,component:t,parent:this}))},this)},_importDirectives_:function(e){u.each(e,function(e,t){t&&(this.$directives[e]=t)},this)},$callHook:function(e,t){var n=this["on"+u.firstUpper(e)];u.isFunction(n)&&(n.apply(this,t||[]),this.$emit("$"+e,t))},_createdData_:function(e){u.isFunction(e)?this.$data=e.call(this):this.$data=e||{},u.each(this.$data,function(e){(0,o.default)(this,e,{configurable:!0,enumerable:!0,get:function(){if(this.$data)return this.$data[e]},set:function(t){this.$data&&(this.$data[e]=t)}})},this)},_createProperties_:function(e){this.$properties={},u.each(e,function(e,t){t=u.isFunction(t)?{get:t}:u.isObject(t)?u.copy(t):{value:t};var n=!!t.get||!!t.set;n||(t.get=function(){return t.value},t.set=function(e){t.value=e}),(0,o.default)(this,e,{configurable:!0,enumerable:!0,get:function(){if(!t.get)throw new Error("Property `"+e+"` cannot be read");return t.get.call(this)},set:function(n){if(!t.set)throw new Error("Property `"+e+"` cannot be written");if(t.test&&!t.test(n))throw new Error("Invalid value `"+n+"` for property `"+e+"`");t.set.call(this,n),this._observer_&&this._observer_.emitChange({path:e,value:n})}}),this.$properties[e]=t},this)},_createWatches_:function(e){this._watchers_=this._watchers_||[],u.each(e,function(e,t){this.$watch(e,t)},this)},_onTemplateUpdate_:function(){this._watchers_.forEach(function(e){e.calc()},this)},$watch:function(e,t){if(u.isFunction(t)){var n=e;u.isFunction(e)||(n=function(){return u.getByPath(this,e)});var i=new c(n.bind(this),t.bind(this));return this._watchers_.push(i),i}},$unWatch:function(e){var t=this._watchers_.findIndex(function(t){return t===e});this._watchers_.splice(t,1)},_createElement_:function(){if(!this._created_){if(this._created_=!0,this.$callHook("create"),u.defineFreezeProp(this,"$element",this.element||f.$template.cloneNode(!0)),!this.$element||"#text"===this.$element.nodeName)throw new Error("Invalid component template");this.$callHook("created")}},$compile:function(){this._compiled_||(this._compiled_=!0,this._createElement_(),u.defineFreezeProp(this,"_template_",new l(this.$element,{directives:this.$directives,root:!0})),this._template_.bind(this),this._template_.on("update",this._onTemplateUpdate_),this._template_.on("bind",function(){this.deferReady||this.$callHook("ready")}.bind(this)))},$mount:function(e,t){this._mounted_||(this.$compile(),this.$callHook("mount"),e&&(e.$substitute=this.$element,this.$element._mountNode=e,t?e.appendChild(this.$element):e.parentNode&&e.parentNode.insertBefore(this.$element,e)),this._mounted_=!0,this._removed_=!1,this.$callHook("mounted"))},$appendTo:function(e){this.$mount(e,!0)},$remove:function(){!this._removed_&&this._mounted_&&(this.$callHook("remove"),this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element),this._removed_=!0,this._mounted_=!1,this.$callHook("removed"))},$dispatch:function(e,t){var n=this.$emit(e,t);!n&&this.$parent&&this.$parent.$dispatch(e,t)},$broadcast:function(e,t){var n=this.$emit(e,t);!n&&this.$children&&this.$children.length>0&&this.$children.forEach(function(n){n.$broadcast(e,t)},this)},$dispose:function(){if(this.$remove(),this._emitter_.off(),this.$children.forEach(function(e){e.$dispose()},this),this.$parent){var e=this.$parent.$children.indexOf(this);this.$parent.$children.splice(e,1)}this.$callHook("dispose"),this._compiled_&&this._template_.unbind(),this.$callHook("disposed");for(var t in this)delete this[t];["_observer_","$element","$children","$parent","_template_"].forEach(function(e){delete this[e]},this),u.setPrototypeOf(this,null)}});return f.$options=e,f.$template=u.parseDom(e.template),u.copy(e,f.prototype),u.copy(e.methods,f.prototype),u.setPrototypeOf(f,r.prototype),f}var s=n(48),o=i(s),a=n(4),l=n(52),c=n(6),u=n(3),p=n(51),d=n(7),h=n(82);r.prototype=u.create(p.prototype),r.extend=function(e){return new r(e)},r.prototype.extend=function(e){return e=e||{},e.extend=this,new r(e)},r.prototype.create=function(e){return new this(e)},r.prototype.start=function(e){if(!this.$options||!this.$options.element)throw new Error("Start method cannot be called");return this.create(e)},e.exports=r},function(e,t,n){"use strict";function i(e){return new s({type:s.TE,literal:!0,final:!0,level:s.LE,bind:function(){this.component=new e.component({deferReady:!0,parent:e.parent||this.scope}),this.handleAttrs(),this.node.$target=this.component,this.handler=this.compiler.compile(this.node,{element:!1,children:!1}),this.handleContents(),this.component.$mount(this.node),this.node.parentNode&&this.node.parentNode.removeChild(this.node)},handleAttrs:function(){this.attrs=[].slice.call(this.node.attributes);var e=new RegExp("^"+this.prefix+":","i");this.attrs.forEach(function(t){e.test(t.name)||t.name in this.component.$properties||(this.component.$element.setAttribute(t.name,t.value),this.node.removeAttribute(t.name))},this)},handleContents:function(){this.placeHandlers=[];var e=[].slice.call(this.component.$element.querySelectorAll("["+this.prefix+"\\:content]"));e.forEach(function(e){var t=null,n=e.getAttribute(this.prefix+":content");if(t=n?[].slice.call(this.node.querySelectorAll(n)):[].slice.call(this.node.childNodes),t&&!(t.length<1)){e.innerHTML="",t.forEach(function(t){e.appendChild(t.cloneNode(!0))},this);var i=this.compiler.compile(e);this.placeHandlers.push(i)}},this)},execute:function(e){this.handler(e),this._ready_||(this._ready_=!0,this.component.$callHook("ready")),this.placeHandlers.forEach(function(t){t(e)},this)}})}var r=n(52),s=r.Directive;e.exports=i},function(e,t,n){"use strict";e.exports={View:n(84)}},function(e,t,n){"use strict";var i=n(81),r=n(3),s=new i({template:"
    ",properties:{component:{test:function(e){return!!e&&(e instanceof i||r.isString(e))},set:function(e){if(!this._transitioning){if(this._transitioning=!0,r.isString(e))return void(this.$parent&&this.$parent.$components?this.component=this.$parent.$components[e]:this.component=null);var t=null,n=this.componentInstance;r.isFunction(e)?t=new e({parent:this}):(e.$setParent(this),t=e),this.transition.prep(t,n),t.$appendTo(this.$element),this.transition.go(t,n,function(){this.$emit("enter",t),this.$emit("leave",n),n&&n.$dispose(),this._transitioning=!1}.bind(this)),this.componentInstance=t}},get:function(){return this._Component}},transition:{get:function(){return this._transition||s.transition},set:function(e){if(!this._transitioning){if(!(!e||r.isFunction(e.prep)&&r.isFunction(e.go)))throw new Error("Invalid transition");this._transition&&r.isFunction(this._transition.clean)&&this._transition.clean(this),e&&r.isFunction(e.init)&&e.init(this),this._transition=e}}}},switchTo:function(e,t){t&&(this.transition=t),this.component=e}});s.transition={prep:function(e,t){t&&(t.$element.style.display="none")},go:function(e,t,n){n()}},e.exports=s},function(e,t,n){"use strict";var i=n(1),r=n(86);n(87);var s=new i.Component({template:n(89),props:{mditor:null},data:function(){return{items:r.slice(0)}},onReady:function(){this.bindCommands()},watch:{items:function(){this.bindCommands()}},bindCommands:function(){var e=this;this.mditor&&this.items.forEach(function(t){e.mditor.removeCommand(t.name),e.mditor.addCommand(t)})},isActive:function(e){return this.mditor&&e.state&&this.mditor[e.state]},exec:function(e,t){t.preventDefault(),this.mditor.execCommand(e,t)},getItem:function(e){return this.items.find(function(t){return t.name===e})},removeItem:function(e){var t=this.items.findIndex(function(t){return t.name===e});return this.items.splice(t,1)},addItem:function(e){this.items.push(e)},replaceItem:function(e,t){var n=this.items.findIndex(function(t){return t.name===e}),i=this.items.splice(n,1);return this.items.splice(n,0,t),i}});e.exports=s},function(e,t){"use strict";e.exports=[{name:"bold",title:"粗体",key:"shift+alt+b",handler:function(){this.editor.wrapSelectText("**","**")}},{name:"italic",title:"斜体",key:"shift+alt+i",handler:function(){this.editor.wrapSelectText("*","*")}},{name:"underline",title:"下划线",key:"shift+alt+e",handler:function(){this.editor.wrapSelectText("","")}},{name:"strikethrough",title:"删除线",key:"shift+alt+d",handler:function(){this.editor.wrapSelectText("~~","~~")}},{name:"header",title:"标题",key:"shift+alt+1",handler:function(){this.editor.wrapSelectText("# ")}},{name:"quote",icon:"quote-left",title:"引用",key:"shift+alt+q",handler:function(){var e=this.editor.getSelectText();if(e.length<1)return void this.editor.wrapSelectText("> ");var t=e.split(this.EOL),n=[];t.forEach(function(e){n.push("> "+e+" ")}),this.editor.setSelectText(n.join(this.EOL)+this.EOL)}},{name:"code",title:"代码",key:"shift+alt+c",handler:function(){var e="js"+this.EOL,t="```"+e,n="``` "+this.EOL,i=this.editor.getSelectText().trim();i.length>0&&(i+=this.EOL),this.editor.setSelectText(i),this.editor.wrapSelectText(t,n);var r=this.editor.getSelectRange(),s=r.start-e.length,o=r.start-this.EOL.length;this.editor.setSelectRange(s,o)}},{name:"list-ol",title:"有序列表",key:"shift+alt+o",handler:function(){var e=this.editor.getSelectText();if(e.length<1)return void this.editor.wrapSelectText("1. ");for(var t=e.split(this.EOL),n=[],i=0;i',document.body.appendChild(t);var n=new FileReader,i=document.getElementById("iFile");i.onchange=function(i){var r=i.target.files[0];n.onload=function(){var n=this.result;e.editor.insertBeforeText("![]("+n+")"),document.body.removeChild(t)},r&&n.readAsDataURL(r)},i.click()}},{name:"help",title:"帮助",icon:"question",key:"shift+alt+/",handler:function(){window.open("http://mditor.com","_blank")}},{name:"toggleFullScreen",title:"全屏",icon:"arrows-alt",key:"shift+alt+f",control:!0,state:"fullscreen",owner:function(e){return e.$element},handler:function(){this.fullscreen=!this.fullscreen}},{name:"togglePreview",title:"预览",icon:"desktop",key:"shift+alt+v",control:!0,state:"preview",owner:function(e){return e.$element},handler:function(){this.preview=!this.preview,this.preview?(this._split=this.split,this.split=!1):this.split=this._split}},{name:"toggleSplit",title:"分屏",icon:"columns",key:"shift+alt+s",control:!0,state:"split",owner:function(e){return e.$element},handler:function(){this.split=!this.split,this.split&&(this.preview=!1)}}]},function(e,t){},,function(e,t){e.exports='
      \r\n \r\n
    '},function(e,t,n){"use strict";var i=n(1),r=i.EventEmitter,s=n(3),o=n(91),a=n(92);n(93);var l=window.navigator.userAgent.toLowerCase(),c=!!l.match(/msie|trident\/7|edge/);e.exports=new i.Component({template:n(94),props:{mditor:null,value:null,markExp:null},onReady:function(){var e=this;this.stack=new o,setTimeout(function(){e.textareaEmitter=new r(e.textarea),e.stack.init({value:e.getValue()})},300),this._bindCommands()},_bindCommands:function(){var e=this;a.forEach(function(t){e.mditor.removeCommand(t.name),e.mditor.addCommand(t)})},onCompositionStart:function(){this._compositionLock=!0},onCompositionEnd:function(){var e=this;this._compositionLock=!1,setTimeout(function(){return e.onInput()},300)},onInput:function(){var e=this;this.$emit("input"),this._changedTimer&&(clearTimeout(this._changedTimer),this._changedTimer=null),this._compositionLock||(this._changedTimer=setTimeout(function(){e._changedTimer&&(e.stack.push({value:e.getValue(),range:e.getSelectRange()}),e.$emit("changed"))},300))},undo:function(){var e=this,t=this.stack.last(),n=this.stack.undo();if(!s.isNull(n)&&!s.isNull(n.value)){var i=t.value.length-n.value.length;this.value=n.value,t.range&&setTimeout(function(){var n=t.range.start-i,r=t.range.end-i;e.setSelectRange(n,r)})}},redo:function(){var e=this,t=this.stack.redo();s.isNull(t)||s.isNull(t.value)||(this.value=t.value,t.range&&setTimeout(function(){e.setSelectRange(t.range.start,t.range.end)}))},onPaste:function(e){this.$emit("paste",e)},onDragover:function(e){e.preventDefault(),this.$emit("dragover",e)},onDrop:function(e){e.preventDefault(),this.$emit("drop",e)},focus:function(){this.textarea.focus()},blur:function(){this.textarea.blur()},onScroll:function(e){this.syncScroll(),this.$emit("scroll",e)},syncScroll:function(e){var t=this;this.marks.scrollTop=this.textarea.scrollTop,this.marks.scrollLeft=this.textarea.scrollLeft,e||setTimeout(function(){t.syncScroll(!0)},0)},applyMarks:function(e){if(e&&this.markExp)return e=e.replace(/\n$/g,"\n\n").replace(this.markExp,"$&"),c&&(e=e.replace(/ /g," ")),e},activeMark:function e(t){var n=[].slice.call(this.marks.querySelectorAll("mark"));if(!(n.length<1)){this.activeMarkIndex=s.isNull(this.activeMarkIndex)?-1:this.activeMarkIndex,s.isNull(t)?this.activeMarkIndex++:this.activeMarkIndex=t,this.activeMarkIndex>=n.length&&(this.activeMarkIndex=0),n.forEach(function(e){e.classList.remove("active")});var e=n[this.activeMarkIndex];e.classList.add("active"),this.scrollToMark(e)}},scrollToMark:function(e){this.textarea.scrollTop=e.offsetTop-20},getValue:function(){return this.textarea.value},setValue:function(e){this.textarea.value=e},getActiveElement:function(){return this.textarea.focus(),document.activeElement},getSelectRange:function(){var e=this.getActiveElement();return{start:e.selectionStart,end:e.selectionEnd}},setSelectRange:function(e,t){var n=this.getActiveElement();n.setSelectionRange(e,t)},getSelectText:function(){var e=this.getActiveElement(),t=this.getSelectRange();return e.value.substring(t.start,t.end)},setSelectText:function(e){var t=this,n=this.getActiveElement(),i=this.getSelectRange();n.setRangeText(e),i.end==i.start&&this.setSelectRange(i.start,i.end+e.length),this.value=this.getValue(),this.onInput(),setTimeout(function(){t.blur(),t.focus()},0)},wrapSelectText:function(e,t){e=null!==e&&void 0!==e?e:"",t=null!==t&&void 0!==t?t:"";var n=this.getSelectRange(),i=this.getSelectText();this.setSelectText(e+i+t);var r=n.start+e.length,s=n.end+e.length;this.setSelectRange(r,s)},insertBeforeText:function(e){this.wrapSelectText(e)},insertAfterText:function(e){this.wrapSelectText("",e)},getBeforeText:function(e){var t=this.getSelectRange(),n=t.start,i=n-e,r=this.getValue();return r.substring(i,n)},getBeforeFirstCharIndex:function(e){var t=this.getSelectRange(),n=t.start,i=0,r=this.getValue();return r.substring(i,n).lastIndexOf(e)},getBeforeWord:function(){var e=this,t=[" ","\t",this.mditor.EOL],n=0;t.forEach(function(t){var i=e.getBeforeFirstCharIndex(t);i+t.length>n&&(n=i+t.length)});var i=this.getSelectRange(),r=this.getValue();return r.substring(n,i.end)},getBeforeTextInLine:function(){var e=this.getBeforeFirstCharIndex(this.mditor.EOL)+this.mditor.EOL.length,t=this.getSelectRange(),n=this.getValue();return n.substring(e,t.end)},selectBeforeText:function(e){var t=this.getSelectRange();this.setSelectRange(t.start-e,t.end)},selectAfterText:function(e){var t=this.getSelectRange();this.setSelectRange(t.start,t.end+e)},selectBeforeTextInLine:function(){var e=this.getBeforeFirstCharIndex(this.mditor.EOL)+this.mditor.EOL.length,t=this.getSelectRange();this.setSelectRange(e,t.end)},addIndent:function(){var e=this,t=this.getSelectText();if(t.length<1)return void this.insertBeforeText(this.mditor.INDENT);var n=t.split(this.mditor.EOL),i=[],r=n.length-1;n.forEach(function(t,n){t=""!==t.trim()?e.mditor.INDENT+t:t,(n0&&(event.clearSelected=!0, +this.removeIndent()));var i=n.split(this.mditor.EOL),r=[];if(i.forEach(function(n){t.test(n)&&(n=n.replace(e.mditor.INDENT,"")),r.push(n)}),this.setSelectText(r.join(this.mditor.EOL)),event.clearSelected){var s=this.getSelectRange();this.setSelectRange(s.end,s.end)}}})},function(e,t,n){"use strict";var i=n(4).Class,r=n(3),s=new i({constructor:function(e){this.init(e)},init:function(e){this.undoList=[e||{value:null}],this.redoList=[]},push:function(e){this.last()!==e&&this.undoList.push(e)},last:function(){return this.undoList[this.undoList.length-1]},undo:function(){if(this.undoList.length>1){var e=this.undoList.pop();if(r.isNull(e)||r.isNull(e.value))return;this.redoList.push(e)}return this.last()},redo:function(){var e=this.redoList.pop();if(!r.isNull(e)&&!r.isNull(e.value))return this.undoList.push(e),e}});e.exports=s},function(e,t){"use strict";e.exports=[{name:"undo",key:"{cmd}+z",handler:function(){this.editor.undo()}},{name:"redo",key:"{cmd}+shift+z",handler:function(){this.editor.redo()}},{name:"h2",key:"shift+alt+2",handler:function(){this.editor.wrapSelectText("## ")}},{name:"h3",key:"shift+alt+3",handler:function(){this.editor.wrapSelectText("### ")}},{name:"h4",key:"shift+alt+4",handler:function(){this.editor.wrapSelectText("#### ")}},{name:"h5",key:"shift+alt+5",handler:function(){this.editor.wrapSelectText("##### ")}}]},function(e,t){},function(e,t){e.exports='
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    '},function(e,t,n){"use strict";var i=n(1);n(96);var r=new i.Component({template:n(97),data:function(){return{html:"",alert:"预览区域"}},props:{mditor:null,value:{get:function(){return this._value},set:function(e){var t=this;this._value=e;var n={value:this._value};this.$emit("beforeRender",n),this.mditor.parser.parse(n.value,function(e,n){var i={value:n||e};t.$emit("afterRender",i),t.html=i.value})}}},onClick:function(e){e.preventDefault();var t=e.target;if("A"==t.tagName){var n=t.getAttribute("href");n&&window.open(n,"_blank")}}});e.exports=r},function(e,t){},function(e,t){e.exports='
    \r\n
    \r\n
    \r\n
    '},function(e,t,n){"use strict";var i=n(1),r=n(3);n(99);var s=/^\/[\s\S]+\/(i|g|m)*$/,o=new i.Component({template:n(100),props:{mditor:null,active:!1,findWord:"",replaceWord:""},onReady:function(){this.mditor.removeCommand("find"),this.mditor.addCommand({name:"find",key:"{cmd}+f",owner:this.mditor.$element,handler:this.show.bind(this,null)}),this.mditor.removeCommand("cancel-find"),this.mditor.addCommand({name:"cancel-find",key:"esc",owner:this.mditor.$element,handler:this.hide.bind(this)})},hide:function(){this.findWord="",this.replaceWord="",this.mditor.editor.markExp=null,this.active=!1},show:function(e){var t=this;this.active=!0,this.findWord=e||this.mditor.editor.getSelectText(),this.active&&setTimeout(function(){t.findBox.focus()},200),this.mditor.editor.syncScroll()},watch:{findWord:function(){var e=this;this.mditor&&this.mditor.editor&&(this.findWord?this.mditor.editor.markExp=this.parseRegexp(this.findWord):this.mditor.editor.markExp=null,setTimeout(function(){e.mditor.editor.activeMark(0)},100))}},parseRegexp:function(e,t){if(t||!s.test(e))return new RegExp(r.escapeRegExp(e),"gm");try{return new Function("return "+e)()}catch(t){return this.parseRegexp(e,!0)}},find:function(){this.mditor.editor.activeMark()},replace:function(){this.mditor.value=this.mditor.value.replace(this.mditor.editor.markExp,this.replaceWord||"")},onFindEnter:function(e){13==e.keyCode&&(e.preventDefault(),this.find())},onReplaceEnter:function(e){13==e.keyCode&&(e.preventDefault(),this.replace())},onCompositionEnd:function(e){e.target.blur(),e.target.focus()}});e.exports=o},function(e,t){},function(e,t){e.exports='
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    '},function(e,t,n){"use strict";var i=n(102),r=n(3);i.filter=function(e){return!!e.target};var s=e.exports=function(e){r.defineFreezeProp(this,"mditor",e)};s.prototype._inRegion=function(e,t){return!!e&&(t=t||this.mditor.editor.$element,r.isFunction(t)&&(t=t(this.mditor)),e===t||this._inRegion(e.parentNode,t))},s.prototype.bind=function(e,t,n,r){var s=this,o=this.mditor;e&&t&&(e=e.replace("{cmd}",o.CMD),i(e,function(e){s._inRegion(e.target,r)&&(n||e.preventDefault(),t instanceof Function?t.call(o,e):o.execCommand(t,e),setTimeout(function(){o.focus()},0))}))},s.prototype.unbind=function(e){i.unbind(e)}},function(e,t,n){!function(t){function n(e,t){for(var n=e.length;n--;)if(e[n]===t)return n;return-1}function i(e,t){if(e.length!=t.length)return!1;for(var n=0;n0;for(s in x)(!x[s]&&n(i.mods,+s)>-1||x[s]&&n(i.mods,+s)==-1)&&(a=!1);(0!=i.mods.length||x[16]||x[18]||x[17]||x[91])&&!a||i.method(e,i)===!1&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function o(e){var t,i=e.keyCode,r=n(N,i);if(r>=0&&N.splice(r,1),93!=i&&224!=i||(i=91),i in x){x[i]=!1;for(t in E)E[t]==i&&(l[t]=!1)}}function a(){for(y in x)x[y]=!1;for(y in E)l[y]=!1}function l(e,t,n){var i,r;i=g(e),void 0===n&&(n=t,t="all");for(var s=0;s1&&(r=b(e),e=[e[e.length-1]]),e=e[0],e=T(e),e in w||(w[e]=[]),w[e].push({shortcut:i[s],scope:t,method:n,key:i[s],mods:r})}function c(e,t){var n,r,s,o,a,l=[];for(n=g(e),o=0;o1&&(l=b(r),e=r[r.length-1]),e=T(e),void 0===t&&(t=f()),!w[e])return;for(s in w[e])a=w[e][s],a.scope===t&&i(a.mods,l)&&(w[e][s]={})}}function u(e){return"string"==typeof e&&(e=T(e)),n(N,e)!=-1}function p(){return N.slice(0)}function d(e){var t=(e.target||e.srcElement).tagName;return!("INPUT"==t||"SELECT"==t||"TEXTAREA"==t)}function h(e){k=e||"all"}function f(){return k||"all"}function m(e){var t,n,i;for(t in w)for(n=w[t],i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function a(e,t){return e=e.source,t=t||"",function n(i,r){return i?(r=r.source||r,r=r.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(i,r),n):new RegExp(e,t)}}function l(e,t){return baseUrls[" "+e]||(/^[^:]+:\/*[^\/]*$/.test(e)?baseUrls[" "+e]=e+"/":baseUrls[" "+e]=e.replace(/[^\/]*$/,"")),e=baseUrls[" "+e],"//"===t.slice(0,2)?e.replace(/:[^]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^\/]*)[^]*/,"$1")+t:e+t}function c(){}function u(e){for(var t,n,i=1;iAn error occured:

    "+s(e.message+"",!0)+"
    ";throw e}}var d={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:c,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:c,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:c,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};d.bullet=/(?:[*+-]|\d+\.)/,d.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,d.item=a(d.item,"gm")(/bull/g,d.bullet)(),d.list=a(d.list)(/bull/g,d.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+d.def.source+")")(),d._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",d.html=a(d.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,d._tag)(),d.paragraph=a(d.paragraph)("hr",d.hr)("heading",d.heading)("lheading",d.lheading)("blockquote",d.blockquote)("tag","<"+d._tag)("def",d.def)(),d.normal=u({},d),d.gfm=u({},d.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),d.gfm.paragraph=a(d.paragraph)("(?!","(?!"+d.gfm.fences.source.replace("\\1","\\2")+"|"+d.list.source.replace("\\1","\\3")+"|")(),d.tables=u({},d.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),t.rules=d,t.lex=function(e,n){var i=new t(n);return i.lex(e)},t.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},t.prototype.token=function(e,t,n){for(var i,r,s,o,a,l,c,u,p,e=e.replace(/^ +$/gm,"");e;)if((s=this.rules.newline.exec(e))&&(e=e.substring(s[0].length),s[0].length>1&&this.tokens.push({type:"space"})),s=this.rules.code.exec(e))e=e.substring(s[0].length),s=s[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?s:s.replace(/\n+$/,"")});else if(s=this.rules.fences.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"code",lang:s[2],text:s[3]||""});else if(s=this.rules.heading.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"heading",depth:s[1].length,text:s[2]});else if(t&&(s=this.rules.nptable.exec(e))){for(e=e.substring(s[0].length),l={type:"table",header:s[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),this.token(s,t,!0),this.tokens.push({type:"blockquote_end"});else if(s=this.rules.list.exec(e)){for(e=e.substring(s[0].length),o=s[2],this.tokens.push({type:"list_start",ordered:o.length>1}),s=s[0].match(this.rules.item),i=!1,p=s.length,u=0;u1&&a.length>1||(e=s.slice(u+1).join("\n")+e,u=p-1)),r=i||/\n\n(?!\s*$)/.test(l),u!==p-1&&(i="\n"===l.charAt(l.length-1),r||(r=i)),this.tokens.push({type:r?"loose_item_start":"list_item_start"}),this.token(l,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(s=this.rules.html.exec(e))e=e.substring(s[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===s[1]||"script"===s[1]||"style"===s[1]),text:s[0]});else if(!n&&t&&(s=this.rules.def.exec(e)))e=e.substring(s[0].length),this.tokens.links[s[1].toLowerCase()]={href:s[2],title:s[3]};else if(t&&(s=this.rules.table.exec(e))){for(e=e.substring(s[0].length),l={type:"table",header:s[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:c,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)([\s\S]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:c,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,h.link=a(h.link)("inside",h._inside)("href",h._href)(),h.reflink=a(h.reflink)("inside",h._inside)(),h.normal=u({},h),h.pedantic=u({},h.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),h.gfm=u({},h.normal,{escape:a(h.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:a(h.text)("]|","~]|")("|","|https?://|")()}),h.breaks=u({},h.gfm,{br:a(h.br)("{2,}","*")(),text:a(h.gfm.text)("{2,}","*")()}),n.rules=h,n.output=function(e,t,i){var r=new n(t,i);return r.output(e)},n.prototype.output=function(e){for(var t,n,i,r,o="";e;)if(r=this.rules.escape.exec(e))e=e.substring(r[0].length),o+=r[1];else if(r=this.rules.autolink.exec(e))e=e.substring(r[0].length),"@"===r[2]?(n=s(":"===r[1].charAt(6)?this.mangle(r[1].substring(7)):this.mangle(r[1])),i=this.mangle("mailto:")+n):(n=s(r[1]),i=n),o+=this.renderer.link(i,null,n);else if(this.inLink||!(r=this.rules.url.exec(e))){if(r=this.rules.tag.exec(e))!this.inLink&&/^
    /i.test(r[0])&&(this.inLink=!1),e=e.substring(r[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):s(r[0]):r[0];else if(r=this.rules.link.exec(e))e=e.substring(r[0].length),this.inLink=!0,o+=this.outputLink(r,{href:r[2],title:r[3]}),this.inLink=!1;else if((r=this.rules.reflink.exec(e))||(r=this.rules.nolink.exec(e))){if(e=e.substring(r[0].length),t=(r[2]||r[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){o+=r[0].charAt(0),e=r[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(r,t),this.inLink=!1}else if(r=this.rules.strong.exec(e))e=e.substring(r[0].length),o+=this.renderer.strong(this.output(r[2]||r[1]));else if(r=this.rules.em.exec(e))e=e.substring(r[0].length),o+=this.renderer.em(this.output(r[2]||r[1]));else if(r=this.rules.code.exec(e))e=e.substring(r[0].length),o+=this.renderer.codespan(s(r[2].trim(),!0));else if(r=this.rules.br.exec(e))e=e.substring(r[0].length),o+=this.renderer.br();else if(r=this.rules.del.exec(e))e=e.substring(r[0].length),o+=this.renderer.del(this.output(r[1]));else if(r=this.rules.text.exec(e))e=e.substring(r[0].length),o+=this.renderer.text(s(this.smartypants(r[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(r[0].length),n=s(r[1]),i=n,o+=this.renderer.link(i,null,n);return o},n.prototype.outputLink=function(e,t){var n=s(t.href),i=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,i,this.output(e[1])):this.renderer.image(n,i,s(e[1]))},n.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},n.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",i=e.length,r=0;r.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},i.prototype.code=function(e,t,n){if(this.options.highlight){var i=this.options.highlight(e,t);null!=i&&i!==e&&(n=!0,e=i)}return t?'
    '+(n?e:s(e,!0))+"\n
    \n":"
    "+(n?e:s(e,!0))+"\n
    "},i.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},i.prototype.html=function(e){return e},i.prototype.heading=function(e,t,n){return"'+e+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},i.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"\n"},i.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},i.prototype.paragraph=function(e){return"

    "+e+"

    \n"},i.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
    \n"},i.prototype.tablerow=function(e){return"\n"+e+"\n"},i.prototype.tablecell=function(e,t){var n=t.header?"th":"td",i=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return i+e+"\n"},i.prototype.strong=function(e){return""+e+""},i.prototype.em=function(e){return""+e+""},i.prototype.codespan=function(e){return""+e+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(e){return""+e+""},i.prototype.link=function(e,t,n){if(this.options.sanitize){try{var i=decodeURIComponent(o(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:")||0===i.indexOf("data:"))return""}this.options.baseUrl&&!originIndependentUrl.test(e)&&(e=l(this.options.baseUrl,e));var r='
    "},i.prototype.image=function(e,t,n){this.options.baseUrl&&!originIndependentUrl.test(e)&&(e=l(this.options.baseUrl,e));var i=''+n+'":">"},i.prototype.text=function(e){return e},r.parse=function(e,t,n){var i=new r(t,n);return i.parse(e)},r.prototype.parse=function(e){this.inline=new n(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},r.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,i,r,s="",o="";for(n="",e=0;ee.length)return;if(!(w instanceof l)){d.lastIndex=0;var x=d.exec(w),k=1;if(!x&&m&&_!=t.length-1){if(d.lastIndex=y,x=d.exec(e),!x)break;for(var E=x.index+(f?x[1].length:0),S=x.index+x[0].length,T=_,N=y,P=t.length;T=N&&(++_,y=N);if(t[_]instanceof l||t[T-1].greedy)continue;k=T-_,w=e.slice(y,N),x.index-=y}if(x){f&&(g=x[1].length);var E=x.index+g,x=x[0].slice(g),S=E+x.length,C=w.slice(0,E),A=w.slice(S),O=[_,k];C&&(++_,y+=C.length,O.push(C));var I=new l(c,h?i.tokenize(x,h):x,b,x,m);if(O.push(I),A&&O.push(A),Array.prototype.splice.apply(t,O),1!=k&&i.matchGrammar(e,t,n,_,y,!0,c),o)break}else if(o)break}}}}},tokenize:function(e,t,n){var r=[e],s=t.rest;if(s){for(var o in s)t[o]=s[o];delete t.rest}return i.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var n=i.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=i.hooks.all[e];if(n&&n.length)for(var r,s=0;r=n[s++];)r(t)}}},r=i.Token=function(e,t,n,i,r){this.type=e,this.content=t,this.alias=n,this.length=0|(i||"").length,this.greedy=!!r};if(r.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===i.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var s={type:e.type,content:r.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var o="Array"===i.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(s.classes,o)}i.hooks.run("wrap",s);var a=Object.keys(s.attributes).map(function(e){return e+'="'+(s.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+s.tag+' class="'+s.classes.join(" ")+'"'+(a?" "+a:"")+">"+s.content+""},!n.document)return n.addEventListener?(i.disableWorkerMessageHandler||n.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,s=t.code,o=t.immediateClose;n.postMessage(i.highlight(s,i.languages[r],r)),o&&n.close()},!1),n.Prism):n.Prism;var s=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return s&&(i.filename=s.src,i.manual||s.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(i.highlightAll):window.setTimeout(i.highlightAll,16):document.addEventListener("DOMContentLoaded",i.highlightAll))), +n.Prism}();"undefined"!=typeof e&&e.exports&&(e.exports=i),"undefined"!=typeof t&&(t.Prism=i),i.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},i.languages.markup.tag.inside["attr-value"].inside.entity=i.languages.markup.entity,i.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),i.languages.xml=i.languages.markup,i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},i.languages.css.atrule.inside.rest=i.util.clone(i.languages.css),i.languages.markup&&(i.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:i.languages.css,alias:"language-css",greedy:!0}}),i.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:i.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:i.languages.css}},alias:"language-css"}},i.languages.markup.tag)),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},i.languages.javascript=i.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),i.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),i.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:i.languages.javascript}},string:/[\s\S]+/}}}),i.languages.markup&&i.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:i.languages.javascript,alias:"language-javascript",greedy:!0}}),i.languages.js=i.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),s=t,o=/\blang(?:uage)?-(?!\*)(\w+)\b/i;s&&!o.test(s.className);)s=s.parentNode;if(s&&(n=(t.className.match(o)||[,""])[1]),!n){var a=(r.match(/\.(\w+)$/)||[,""])[1];n=e[a]||a}var l=document.createElement("code");l.className="language-"+n,t.textContent="",l.textContent="Loading…",t.appendChild(l);var c=new XMLHttpRequest;c.open("GET",r,!0),c.onreadystatechange=function(){4==c.readyState&&(c.status<400&&c.responseText?(l.textContent=c.responseText,i.highlightElement(l)):c.status>=400?l.textContent="✖ Error "+c.status+" while fetching file: "+c.statusText:l.textContent="✖ Error: File does not exist or is empty")},c.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}).call(t,function(){return this}())},function(e,t){Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}})},function(e,t){Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],number:/\b-?(?:0x[\da-f]+|\d*\.?\d+f?)\b/i}),Prism.languages.insertBefore("csharp","keyword",{"generic-method":{pattern:/[a-z0-9_]+\s*<[^>\r\n]+?>\s*(?=\()/i,alias:"function",inside:{keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}})},function(e,t){Prism.languages.php=Prism.languages.extend("clike",{string:{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),Prism.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),Prism.languages.insertBefore("php","keyword",{delimiter:{pattern:/\?>|<\?(?:php|=)?/i,alias:"important"},variable:/\$\w+\b/i,package:{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(e){"php"===e.language&&/(?:<\?php|<\?)/gi.test(e.code)&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi,function(t){for(var n=e.tokenStack.length;e.backupCode.indexOf("___PHP"+n+"___")!==-1;)++n;return e.tokenStack[n]=t,"___PHP"+n+"___"}),e.grammar=Prism.languages.markup)}),Prism.hooks.add("before-insert",function(e){"php"===e.language&&e.backupCode&&(e.code=e.backupCode,delete e.backupCode)}),Prism.hooks.add("after-highlight",function(e){if("php"===e.language&&e.tokenStack){e.grammar=Prism.languages.php;for(var t=0,n=Object.keys(e.tokenStack);t'+Prism.highlight(r,e.grammar,"php").replace(/\$/g,"$$$$")+"")}e.element.innerHTML=e.highlightedCode}}))},function(e,t){Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}},function(e,t){Prism.languages.json={property:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][+-]?\d+)?)\b/,punctuation:/[{}[\]);,]/,operator:/:/g,boolean:/\b(?:true|false)\b/i,null:/\bnull\b/i},Prism.languages.jsonp=Prism.languages.json},function(e,t){Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+\-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}},function(e,t){Prism.languages.perl={comment:[{pattern:/(^\s*)=\w+[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+)+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/}},function(e,t){Prism.languages.go=Prism.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/\b(-?(0x[a-f\d]+|(\d+\.?\d*|\.\d+)(e[-+]?\d+)?)i?)\b/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete Prism.languages.go["class-name"]},function(e,t){!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee]-?\d+)?)\b/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,function:{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},boolean:{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var n=t.variable[1].inside;n.function=e.languages.bash.function,n.keyword=e.languages.bash.keyword,n.boolean=e.languages.bash.boolean,n.operator=e.languages.bash.operator,n.punctuation=e.languages.bash.punctuation}(Prism)},function(e,t){Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1)B?/,greedy:!0},number:[/\b-?0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b-?0b[01]+(?:y|uy)?\b/,/\b-?(?:\d*\.?\d+|\d+\.)(?:[fFmM]|[eE][+-]?\d+)?\b/,/\b-?\d+(?:y|uy|s|us|l|u|ul|L|UL|I)?\b/]}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}})},function(e,t){Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|symbol|namespace|abstract|require|type)\b/}),Prism.languages.ts=Prism.languages.typescript},function(e,t){!function(e){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:e.util.clone(t)},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:e.util.clone(t)}},e.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(Prism)},function(e,t){Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,punctuation:/[{}();:,]/,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","punctuation",{function:Prism.languages.less.function}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}})},function(e,t){!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism)},function(e,t){!function(e){var t=/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/;e.languages.handlebars=e.languages.extend("markup",{handlebars:{pattern:t,inside:{delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][+-]?\d+)?)\b/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/}}}),e.languages.insertBefore("handlebars","tag",{"handlebars-comment":{pattern:/\{\{![\s\S]*?\}\}/,alias:["handlebars","comment"]}}),e.hooks.add("before-highlight",function(e){"handlebars"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(t,function(t){for(var n=e.tokenStack.length;e.backupCode.indexOf("___HANDLEBARS"+n+"___")!==-1;)++n;return e.tokenStack[n]=t,"___HANDLEBARS"+n+"___"}))}),e.hooks.add("before-insert",function(e){"handlebars"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(t){if("handlebars"===t.language){for(var n=0,i=Object.keys(t.tokenStack);n]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/}},function(e,t){Prism.languages.actionscript=Prism.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),Prism.languages.actionscript["class-name"].alias="function",Prism.languages.markup&&Prism.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:Prism.languages.markup}}})},function(e,t){Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.csharp||{}}})},function(e,t){Prism.languages.basic={string:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,comment:{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},number:/(?:\b|\B[.-])(?:\d+\.?\d*)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}},function(e,t){Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/, +lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c.boolean},function(e,t){Prism.languages.pascal={comment:[/\(\*[\s\S]+?\*\)/,/\{[\s\S]+?\}/,/\/\/.*/],string:{pattern:/(?:'(?:''|[^'\r\n])*'|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/[+-]?(?:[&%]\d+|\$[a-f\d]+)/i,/([+-]|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/i,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/}},function(e,t){Prism.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}},function(e,t){Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.util.clone(Prism.languages.swift)},function(e,t){Prism.languages.objectivec=Prism.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/})},function(e,t){Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\])*\2/,greedy:!0,lookbehind:!0},variable:/@[\w.$]+|@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,function:/\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b-?(?:0x)?\d*\.?[\da-f]+\b/,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}},function(e,t){Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'[^('\s]*/,greedy:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,lookbehind:!0},number:{pattern:/(\s|\))[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)/,lookbehind:!0},function:{pattern:/(\()[^\s()]*(?=\s)/,lookbehind:!0},punctuation:/[()]/}},function(e,t){!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#(?!\{[^\r\n]*?\}).*/,/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m],keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:t}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:/:[a-zA-Z_]\w*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:t}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:t}}]}(Prism)},function(e,t){!function(e){var t=/\{\*[\s\S]+?\*\}|\{[\s\S]+?\}/g,n="{literal}",i="{/literal}",r=!1;e.languages.smarty=e.languages.extend("markup",{smarty:{pattern:t,inside:{delimiter:{pattern:/^\{|\}$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][-+]?\d+)?)\b/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->)(?!\d)\w+/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:[{pattern:/(\|\s*)@?(?!\d)\w+/,lookbehind:!0},/^\/?(?!\d)\w+/,/(?!\d)\w+(?=\()/],"attr-name":{pattern:/\w+\s*=\s*(?:(?!\d)\w+)?/,inside:{variable:{pattern:/(=\s*)(?!\d)\w+/,lookbehind:!0},operator:/=/}},punctuation:[/[\[\]().,:`]|->/],operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/],keyword:/\b(?:false|off|on|no|true|yes)\b/}}}),e.languages.insertBefore("smarty","tag",{"smarty-comment":{pattern:/\{\*[\s\S]*?\*\}/,alias:["smarty","comment"]}}),e.hooks.add("before-highlight",function(e){"smarty"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(t,function(t){if(t===i&&(r=!1),!r){t===n&&(r=!0);for(var s=e.tokenStack.length;e.backupCode.indexOf("___SMARTY"+s+"___")!==-1;)++s;return e.tokenStack[s]=t,"___SMARTY"+s+"___"}return t}))}),e.hooks.add("before-insert",function(e){"smarty"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(t){if("smarty"===t.language){for(var n=0,i=Object.keys(t.tokenStack);n=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,character:{pattern:/\$./,alias:"string"},number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/(?:\B-|\b)\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}},function(e,t){Prism.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[{pattern:/b?r(#*)"(?:\\.|(?!"\1)[^\\\r\n])*"\1/,greedy:!0},{pattern:/b?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:/\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,greedy:!0,alias:"attr-name"},function:[/\w+(?=\s*\()/,/\w+!(?=\s*\(|\[)/],"macro-rules":{pattern:/\w+!/,alias:"function"},number:/\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[|:,]/,operator:/[&*]/}},punctuation:/[{}[\];(),:]|\.+|->/,operator:/[-+*\/%!^=]=?|@|&[&=]?|\|[|=]?|<>?=?/}},function(e,t){Prism.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/\b(?:0x[\dA-Fa-f]+(?:\.\d*)?|\d*\.?\d+)(?:[EePp][+-]?\d+)?[iL]?\b/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}},function(e,t){Prism.languages.d=Prism.languages.extend("clike",{string:[/\b[rx]"(?:\\[\s\S]|[^\\"])*"[cwd]?/,/\bq"(?:\[[\s\S]*?\]|\([\s\S]*?\)|<[\s\S]*?>|\{[\s\S]*?\})"/,/\bq"([_a-zA-Z][_a-zA-Z\d]*)(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\1"/,/\bq"(.)[\s\S]*?\1"/,/'(?:\\'|\\?[^']+)'/,/(["`])(?:\\[\s\S]|(?!\1)[^\\])*\1[cwd]?/],number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]*/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]*/i,lookbehind:!0}],keyword:/\$|\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\b/,operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),Prism.languages.d.comment=[/^\s*#!.+/,{pattern:/(^|[^\\])\/\+(?:\/\+[\s\S]*?\+\/|[\s\S])*?\+\//,lookbehind:!0}].concat(Prism.languages.d.comment),Prism.languages.insertBefore("d","comment",{"token-string":{pattern:/\bq\{(?:\{[^}]*\}|[^}])*\}/,alias:"string"}}),Prism.languages.insertBefore("d","keyword",{property:/\B@\w*/}),Prism.languages.insertBefore("d","function",{register:{pattern:/\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:"variable"}})},function(e,t){Prism.languages.dart=Prism.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\b/],operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),Prism.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}})},function(e,t){!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/, +"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"]}(Prism)},function(e,t){!function(e){var t=/%%?[~:\w]+%?|!\S+!/,n={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},i=/"[^"]*"/,r=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/^for\b|\b(?:in|do)\b/i,string:i,parameter:n,variable:t,number:r,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im,lookbehind:!0,inside:{keyword:/^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i,string:i,parameter:n,variable:t,number:r,operator:/\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:i,parameter:n,variable:[t,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:r,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^\w+\b/i,string:i,parameter:n,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:t,number:r,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(Prism)},function(e,t){Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,boolean:/\b(?:true|false)\b/,operator:/--?|\+\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|\|?|\?|\*|\/|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)\w+/i,lookbehind:!0}})},function(e,t){Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}},function(e,t){Prism.languages.livescript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"interpolated-string":{pattern:/(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:"variable"}}},string:/[\s\S]+/}},string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(\[.+?]|\\.|(?!\/\/)[^\\])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:"operator"},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:"variable"},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|[\d_])*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},Prism.languages.livescript["interpolated-string"].inside.interpolation.inside.rest=Prism.languages.livescript},function(e,t){!function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$(?:\\[\s\S]|[^\\$])*\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/}}(Prism)},function(e,t){Prism.languages.groovy=Prism.languages.extend("clike",{keyword:/\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,string:[{pattern:/("""|''')[\s\S]*?\1|(?:\$\/)(?:\$\/\$|[\s\S])*?\/\$/,greedy:!0},{pattern:/(["'\/])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?[\d]+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.{1,2}(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),Prism.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment"}}),Prism.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(?:setup|given|when|then|and|cleanup|expect|where):/}),Prism.languages.insertBefore("groovy","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),Prism.hooks.add("wrap",function(e){if("groovy"===e.language&&"string"===e.type){var t=e.content[0];if("'"!=t){var n=/([^\\])(?:\$(?:\{.*?\}|[\w.]+))/;"$"===t&&(n=/([^\$])(?:\$(?:\{.*?\}|[\w.]+))/),e.content=e.content.replace(/</g,"<").replace(/&/g,"&"),e.content=Prism.highlight(e.content,{expression:{pattern:n,lookbehind:!0,inside:Prism.languages.groovy}}),e.classes.push("/"===t?"regex":"gstring")}}})},function(e,t){Prism.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":/[a-z_]\w*(?=\s*:)/i,keyword:[{pattern:/(fragment\s+(?!on)[a-z_]\w*\s+|\.{3}\s*)on\b/,lookbehind:!0},/\b(?:query|fragment|mutation)\b/],operator:/!|=|\.{3}/,punctuation:/[!(){}\[\]:=,]/}},function(e,t){Prism.languages.nginx=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},keyword:/\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\b/i}),Prism.languages.insertBefore("nginx","keyword",{variable:/\$[a-z_]+/i})},function(e,t){Prism.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\d+#[a-z0-9]+/i,/(?:\b|-)\d*\.?\d+([Ee][+-]?\d+)?\b/],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}},function(e,t){Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/[^`]\$\(.*?\)/,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z][\s\S]*?\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/i,function:[/\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},Prism.languages.powershell.string[0].inside.boolean=Prism.languages.powershell.boolean,Prism.languages.powershell.string[0].inside.variable=Prism.languages.powershell.variable,Prism.languages.powershell.string[0].inside.function.inside=Prism.util.clone(Prism.languages.powershell)},function(e,t){Prism.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}},function(e,t){Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold)},function(e,t){},,,,,,,function(e,t){},function(e,t){},function(e,t){},,function(e,t){e.exports='
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    '}]); //# sourceMappingURL=mditor.min.js.map \ No newline at end of file diff --git a/dist/js/mditor.min.js.map b/dist/js/mditor.min.js.map index 7c48252..fe28f28 100644 --- a/dist/js/mditor.min.js.map +++ b/dist/js/mditor.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///js/mditor.min.js","webpack:///webpack/bootstrap 31d50f12083361c3cd7d","webpack:///./src/client/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/index.js","webpack:///./~/_mokit@3.1.3@mokit/info.json","webpack:///./~/_ntils@2.1.2@ntils/index.js","webpack:///./~/_cify@2.1.11@cify/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/watcher/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/observer/index.js","webpack:///./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/keys.js","webpack:///./~/_core-js@2.5.1@core-js/library/fn/object/keys.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/es6.object.keys.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_to-object.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_defined.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_object-keys.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_object-keys-internal.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_has.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_to-iobject.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_iobject.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_cof.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_array-includes.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_to-length.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_to-integer.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_to-absolute-index.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_shared-key.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_shared.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_global.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_uid.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_enum-bug-keys.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_object-sap.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_export.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_core.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_ctx.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_a-function.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_hide.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_object-dp.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_an-object.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_is-object.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_ie8-dom-define.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_descriptors.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_fails.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_dom-create.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_to-primitive.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_property-desc.js","webpack:///./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/get-own-property-descriptor.js","webpack:///./~/_core-js@2.5.1@core-js/library/fn/object/get-own-property-descriptor.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_object-gopd.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/_object-pie.js","webpack:///./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/define-property.js","webpack:///./~/_core-js@2.5.1@core-js/library/fn/object/define-property.js","webpack:///./~/_core-js@2.5.1@core-js/library/modules/es6.object.define-property.js","webpack:///./~/_mokit@3.1.3@mokit/lib/events/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/compiler.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directive.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/expression.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/text.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/each.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/scope.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/if.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/prop.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/attr.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/on.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/inner-html.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/inner-text.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/prevent.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/id.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/cloak.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/show.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/select.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/editable.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/input.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/radio.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/checkbox.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/prop.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/focus.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/attribute.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/template.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/component.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/component-directive.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/components/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/components/view.js","webpack:///./src/toolbar/index.js","webpack:///./src/toolbar/items.js","webpack:///./src/toolbar/index.html","webpack:///./src/editor/index.js","webpack:///./src/editor/stack.js","webpack:///./src/editor/commands.js","webpack:///./src/editor/index.html","webpack:///./src/viewer/index.js","webpack:///./src/viewer/index.html","webpack:///./src/finder/index.js","webpack:///./src/finder/index.html","webpack:///./src/client/shortcut.js","webpack:///./~/_shortcut-key@1.0.0@shortcut-key/index.js","webpack:///./src/common/parser.js","webpack:///./~/_marked@0.3.6@marked/lib/marked.js","webpack:///./~/_prismjs@1.8.3@prismjs/prism.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-java.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-csharp.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-php.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-python.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-json.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-yaml.min.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-perl.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-go.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-bash.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-fsharp.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-typescript.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-stylus.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-less.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-sass.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-handlebars.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-applescript.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-actionscript.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-aspnet.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-basic.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-c.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-pascal.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-vim.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-swift.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-objectivec.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-sql.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-scheme.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-ruby.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-smarty.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-smalltalk.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-rust.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-r.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-d.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-dart.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-coffeescript.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-batch.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-cpp.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-lua.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-livescript.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-latex.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-groovy.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-graphql.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-nginx.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-erlang.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-powershell.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-makefile.js","webpack:///./~/_prismjs@1.8.3@prismjs/components/prism-markdown.js","webpack:///./src/client/index.html"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","mokit","Toolbar","Editor","Viewer","Finder","Shortcut","Parser","HIDDEN_CLASS_NAME","Mditor","Component","template","onInit","this","PLATFORM","navigator","platform","toLowerCase","EOL","CMD","indexOf","INDENT","shortcut","parser","onReady","_this","bind","editor","addIndent","removeIndent","event","_ulAndQuoteAutoComplete","_olAutoComplete","_keepIndent","setTimeout","$emit","components","props","height","width","preview","split","fullscreen","data","self","value","find","text","finder","show","syncScroll","offsetHeight","textarea","editorScrollHeight","scrollHeight","viewerScrollHeight","viewer","$element","editorScrollTop","scrollTop","viewerScrollTop","onChanged","onInput","onPaste","onHeadDblClick","target","tagName","getBeforeTextInLine","parts","length","count","buffer","push","insertBeforeText","join","preventDefault","prefix","substr","selectBeforeText","setSelectText","exp","trimedText","trim","test","num","parseInt","focus","blur","addCommand","item","name","handler","commands","key","allowDefault","owner","removeCommand","unbind","execCommand","mditor","toolbar","fromTextarea","classList","add","$watch","$mount","switchTextarea","contains","remove","window","info","utils","Class","Watcher","Observer","Template","EventEmitter","copy","version","use","plugin","install","isFunction","Error","ntils","noop","isNull","obj","str","replace","str1","str2","RegExp","startWith","endWith","has","hasProperty","hasOwnProperty","isString","String","isNumber","Number","isBoolean","Boolean","isElement","Element","nodeType","nodeName","attributes","ownerDocument","isText","Text","isObject","isArray","v1","Object","prototype","toString","v2","Array","v3","splice","v4","isDate","val","Date","isRegexp","toArray","array","slice","toDate","each","list","scope","listLength","i","rs","formatDate","date","format","dict","placeholder","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","w+","getDay","q+","Math","floor","S","getMilliseconds","$1","getFullYear","src","dst","igonres","getOwnPropertyDescriptor","defineProperty","ex","clone","objClone","constructor","forEach","defineFreezeProp","mix","mode","igonreNull","keys","enumerable","configurable","writable","err","create","proto","Cotr","setPrototypeOf","__proto__","getPrototypeOf","deepEqual","a","b","aKeys","bKeys","allKeys","concat","checkedMap","result","fromTo","fromNum","toNum","step","abs","newGuid","S4","random","substring","map","fn","setByPath","path","index","getByPath","unique","newArray","getFunctionArgumentNames","filter","short","maxLength","strLength","trimLength","firstUpper","toUpperCase","escapeRegExp","parseDom","_PDD_","document","createElement","innerHTML","firstNode","childNodes","cloneNode","ClassFactory","options","$name","$extends","$static","superPrototype","$super","_super_called_","_super_ret_","apply","arguments","$extend","calcor","first","calc","force","newValue","_interopRequireDefault","__esModule","default","_keys","_keys2","_getOwnPropertyDescriptor","_getOwnPropertyDescriptor2","_defineProperty","_defineProperty2","OBSERVER_PROP_NAME","CHANGE_EVENT_NAME","EVENT_MAX_DISPATCH_LAYER","IGNORE_REGEXPS","observer","set","isIgnore","get","shadow","oldValue","childObserver","addChild","removeChild","emitChange","_wrapArray","names","_getPropertyNames","desc","clearReference","child","dispatch","eventName","_src_","_layer_","emit","parents","parent","parentEvent","root","foundIndex","items","pop","shift","startIndex","endIndex","observe","word","some","re","toObject","$keys","it","defined","undefined","TypeError","enumBugKeys","O","toIObject","arrayIndexOf","IE_PROTO","object","IObject","cof","propertyIsEnumerable","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","toInteger","min","ceil","isNaN","max","shared","uid","global","SHARED","store","Function","__g","px","$export","core","fails","KEY","exec","F","ctx","hide","PROTOTYPE","type","source","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","C","virtual","R","U","__e","aFunction","that","dP","createDesc","f","anObject","IE8_DOM_DEFINE","toPrimitive","Attributes","e","is","valueOf","bitmap","$Object","$getOwnPropertyDescriptor","pIE","gOPD","emitter","_emitter_","_isNative_","_isNativeObject","_target_","_listeners_","on","$on","$addListener","addListener","off","$off","$removeListener","removeListener","addEventListener","removeEventListener","dispatchEvent","listener","capture","_addNativeEventListener","_maxListeners","_removeNativeEventListener","_listener","canBubble","cancelAble","_emitNativeEvent","stopPropagation","descriptor","_events","createEvent","initEvent","register","Compiler","Directive","Expression","directives","commonDirectives","DEFAULT_PREFIX","elementDirectives","attributeDirectives","registerDirectives","toCamelCase","toSplitCase","directive","fullName","TE","_parseAttrInfo","attrName","decorates","_createDirectiveInstance","compiler","_bindHandler","sort","level","boundDirectives","attribute","node","removeAttribute","final","_compileElement","ElementDirective","_compileAttributes","attrInfo","AttrDirective","directiveOptions","expression","literal","mixed","_compileChildren","childNode","_compiled_","childHandler","compile","children","execute","dispose","element","classOptions","TA","LG","DirectiveClass","instanceOptions","update","_value_","LP","LS","LE","LA","LC","code","func","_compileMixedCode","_compileCode","_escapeEOL","_wrapCode","_createFunction","statements","_parseMixedCode","token","isExpr","tokens","char","nextChar","_escapeCode","#text","if","prop","attr","html","prevent","cloak","model","*","expr","nodeValue","Scope","mountNode","createTextNode","parentNode","insertBefore","parseExpr","eachItems","eachType","fnText","keyName","valueName","currentEachKeys","itemsFragment","createDocumentFragment","eachTarget","newScope","oldItem","newItem","appendChild","k","_handler","$substitute","_node","$target","setAttribute","attrValue","eventTarget","emiter","$event","innerText","style","display","SelectDirective","EditableDirective","InputDirective","RadioDirective","CheckboxDirective","PropDirective","getAttribute","isContentEditable","backExpr","selectedOptions","multiple","option","selected","checked","bindProp","watcher","$unWatch","state","computedName","computedValue","nameExpr","valueExpr","newComputedName","newComputeValue","render","_update","_updateTimer","clearTimeout","_onBind","_bound","disableFirst","$self","component","classOpts","mixes","extendComponent","extend","mixedClassOpts","mixItem","$options","ComponentClass","instanceOpts","$class","_onTemplateUpdate_","_createdData_","_createProperties_","properties","_createWatches_","watches","watch","$directives","_importDirectives_","$components","_importComponents_","$setParent","$callHook","$compile","$parent","$removeChild","$addChild","$children","$root","ComponentDirective","args","hook","$data","$properties","hasGetterOrSetter","_observer_","_watchers_","calcer","findIndex","w","_createElement_","_created_","$template","_template_","deferReady","append","_mounted_","_mountNode","_removed_","$appendTo","$remove","$dispatch","$broadcast","$dispose","methods","start","handleAttrs","handleContents","attrs","directiveRegexp","placeHandlers","places","querySelectorAll","place","contents","selector","content","_ready_","View","_transitioning","newComponentInstance","oldComponentInstance","componentInstance","transition","prep","go","_Component","_transition","clean","init","switchTo","newComponent","oldComponent","done","bindCommands","isActive","getItem","removeItem","addItem","replaceItem","title","wrapSelectText","icon","selectText","getSelectText","textArray","line","lang","before","after","range","getSelectRange","end","setSelectRange","open","control","_split","Stack","ua","userAgent","isIE","match","markExp","stack","textareaEmitter","getValue","_bindCommands","_this2","onCompositionStart","_compositionLock","onCompositionEnd","_this3","_this4","_changedTimer","undo","_this5","last","valGap","redo","_this6","onDragover","onDrop","onScroll","disTwice","_this7","marks","scrollLeft","applyMarks","activeMark","activeMarkIndex","mark","scrollToMark","offsetTop","setValue","getActiveElement","activeElement","box","selectionStart","selectionEnd","setSelectionRange","_this8","setRangeText","newStart","newEnd","insertAfterText","getBeforeText","getBeforeFirstCharIndex","lastIndexOf","getBeforeWord","_this9","chars","selectAfterText","selectBeforeTextInLine","_this10","lineCount","_this11","indentRegExp","clearSelected","undoList","redoList","alert","_value","beforeEvent","parse","afterEvent","onClick","tag","href","CHECK_REGEXP","active","findWord","replaceWord","findBox","parseRegexp","forceStr","onFindEnter","keyCode","onReplaceEnter","shortcuts","_inRegion","cmd","compareArray","a1","a2","updateModifierKey","_mods","modifierMap","modifiersMatch","_downKeys","_MODIFIERS","assignKey","_handlers","getScope","mods","method","returnValue","cancelBubble","clearModifier","resetModifiers","getKeys","getMods","unbindKey","multipleKeys","j","isPressed","getPressedKeyCodes","srcElement","setScope","_scope","deleteScope","handlers","mi","addEvent","attachEvent","noConflict","previousKey","16","18","17","91","⇧","⌥","alt","⌃","ctrl","⌘","command","_MAP","backspace","tab","clear","enter","return","esc","escape","space","left","up","right","down","del","delete","home","pageup","pagedown",",",".","/","`","-","=",";","'","[","]","\\","x","charCodeAt","marked","Prism","languages","js","javascript","csharp","fsharp","sh","bash","md","markdown","py","python","yml","yaml","rb","ruby","highlights","Lexer","rules","gfm","heading","tables","renderer","Renderer","setOptions","breaks","pedantic","sanitize","smartLists","smartypants","mangle","highlight","callback","mdText","links","defaults","block","normal","InlineLexer","inline","encode","unescape","_","n","charAt","fromCharCode","regex","opt","merge","pending","lex","escaped","message","silent","newline","fences","hr","nptable","lheading","blockquote","def","table","paragraph","bullet","_tag","lexer","top","bq","next","loose","cap","bull","l","depth","header","align","cells","ordered","pre","sanitizer","autolink","url","link","reflink","nolink","strong","em","br","_inside","_href","output","inLink","outputLink","codespan","image","ch","langPrefix","quote","raw","headerPrefix","xhtml","body","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","reverse","tok","peek","parseText","row","cell","inlineLexer","_self","WorkerGlobalScope","uniqueId","manual","util","Token","alias","o","objId","v","redef","inside","insert","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","env","hooks","run","elements","highlightElement","language","className","textContent","Worker","worker","filename","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","matchGrammar","strarr","startPos","oneshot","patterns","pattern","lookbehind","greedy","lookbehindLength","pos","lastIndex","delNum","from","to","len","wrapped","rest","all","callbacks","matchedStr","classes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","markup","comment","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","string","property","important","function","style-attr","clike","class-name","keyword","boolean","number","operator","function-variable","template-string","interpolation","interpolation-punctuation","querySelector","fileHighlight","Extensions","ps1","psm1","bat","h","tex","extension","xhr","XMLHttpRequest","onreadystatechange","status","responseText","statusText","send","java","annotation","generic-method","preprocessor","php","constant","shell-comment","delimiter","variable","package","tokenStack","backupCode","t","triple-quoted-string","json","null","jsonp","scalar","datetime","perl","filehandle","vstring","builtin","insideString","shebang","typescript","ts","hexcode","stylus","atrule-declaration","variable-declaration","statement","property-declaration","less","mixin-usage","sass","atrule-line","variable-line","property-line","handlebars_pattern","handlebars","brackets","handlebars-comment","applescript","class","actionscript","aspnet","page-directive tag","directive tag","asp comment","asp script","basic","macro","pascal","vim","swift","objectivec","sql","scheme","symbol","smarty_pattern","smarty_litteral_start","smarty_litteral_end","smarty_litteral_mode","smarty","smarty-comment","smalltalk","block-arguments","temporary-variables","character","rust","macro-rules","closure-params","r","percent-operator","ellipsis","d","token-string","dart","metadata","coffeescript","class-member","multiline-comment","block-regex","inline-javascript","multiline-string","parameter","batch","label","cpp","lua","livescript","interpolated-string","keyword-operator","argument","identifier","funcPattern","insideEqu","equation-command","latex","equation","headline","groovy","spock-block","graphql","nginx","erlang","quoted-function","quoted-atom","atom","powershell","makefile","url-reference","bold","italic"],"mappings":"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","file":"js/mditor.min.js","sourcesContent":["/*!\n * Mditor embed version 1.3.3\n * Homepage: http://mditor.com\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar Toolbar = __webpack_require__(84);\n\tvar Editor = __webpack_require__(89);\n\tvar Viewer = __webpack_require__(94);\n\tvar Finder = __webpack_require__(97);\n\tvar Shortcut = __webpack_require__(100);\n\tvar Parser = __webpack_require__(102);\n\t\n\t__webpack_require__(151);\n\t__webpack_require__(158);\n\t__webpack_require__(159);\n\t__webpack_require__(160);\n\t\n\tvar HIDDEN_CLASS_NAME = 'mditor-hidden';\n\t\n\tvar Mditor = new mokit.Component({\n\t template: __webpack_require__(162),\n\t\n\t /*istanbul ignore next*/onInit: function onInit() {\n\t this.PLATFORM = navigator.platform.toLowerCase();\n\t this.EOL = this.PLATFORM == 'win32' ? '\\r\\n' : '\\n';\n\t this.CMD = this.PLATFORM.indexOf('mac') > -1 ? 'command' : 'ctrl';\n\t this.INDENT = ' ';\n\t this.shortcut = new Shortcut(this);\n\t this.Parser = Parser;\n\t this.parser = new Parser(this);\n\t },\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.shortcut.bind('tab', this.editor.addIndent.bind(this.editor));\n\t this.shortcut.bind('shift+tab', this.editor.removeIndent.bind(this.editor));\n\t this.shortcut.bind('enter', function (event) {\n\t /*istanbul ignore next*/_this._ulAndQuoteAutoComplete(event);\n\t /*istanbul ignore next*/_this._olAutoComplete(event);\n\t /*istanbul ignore next*/_this._keepIndent(event);\n\t }, true);\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this.$emit('ready');\n\t }, 0);\n\t },\n\t\n\t\n\t components: {\n\t Toolbar: Toolbar,\n\t Editor: Editor,\n\t Viewer: Viewer,\n\t Finder: Finder\n\t },\n\t\n\t props: {\n\t height: '400px',\n\t width: 'auto',\n\t preview: false,\n\t split: true,\n\t fullscreen: false\n\t },\n\t\n\t /*istanbul ignore next*/data: function data() {\n\t return {\n\t self: this,\n\t value: ''\n\t };\n\t },\n\t /*istanbul ignore next*/find: function find(text) {\n\t this.finder.show(text);\n\t },\n\t /*istanbul ignore next*/syncScroll: function syncScroll() {\n\t if (!this.split || this.preview) return;\n\t var offsetHeight = this.editor.textarea.offsetHeight;\n\t var editorScrollHeight = this.editor.textarea.scrollHeight;\n\t var viewerScrollHeight = this.viewer.$element.scrollHeight;\n\t var editorScrollTop = this.editor.textarea.scrollTop;\n\t var viewerScrollTop = editorScrollTop * (viewerScrollHeight - offsetHeight) / (editorScrollHeight - offsetHeight);\n\t this.viewer.$element.scrollTop = viewerScrollTop;\n\t },\n\t /*istanbul ignore next*/onChanged: function onChanged(event) {\n\t this.$emit('changed', event);\n\t this.syncScroll();\n\t },\n\t /*istanbul ignore next*/onInput: function onInput(event) {\n\t this.$emit('input', event);\n\t },\n\t /*istanbul ignore next*/onPaste: function onPaste(event) {\n\t this.$emit('paste', event);\n\t this.syncScroll();\n\t },\n\t /*istanbul ignore next*/onHeadDblClick: function onHeadDblClick(event) {\n\t if (event.target.tagName == 'I') return;\n\t this.$emit('head-dblclick', event);\n\t },\n\t /*istanbul ignore next*/_keepIndent: function _keepIndent(event) {\n\t var text = this.editor.getBeforeTextInLine();\n\t var parts = text.split(this.INDENT);\n\t if (parts.length < 2) return;\n\t var count = 0;\n\t var buffer = [this.EOL];\n\t while (parts[count] === '' && count < parts.length - 1) {\n\t count++;\n\t buffer.push(this.INDENT);\n\t }\n\t this.editor.insertBeforeText(buffer.join(''));\n\t event.preventDefault();\n\t },\n\t /*istanbul ignore next*/_ulAndQuoteAutoComplete: function _ulAndQuoteAutoComplete(event) {\n\t var text = this.editor.getBeforeTextInLine();\n\t var prefix = text.substr(0, 2);\n\t if (prefix != '- ' && prefix != '* ' && prefix != '> ') return;\n\t if (text.length > prefix.length) {\n\t this.editor.insertBeforeText(this.EOL + prefix);\n\t } else {\n\t this.editor.selectBeforeText(prefix.length);\n\t this.editor.setSelectText('');\n\t }\n\t event.preventDefault();\n\t },\n\t /*istanbul ignore next*/_olAutoComplete: function _olAutoComplete(event) {\n\t var exp = /^\\d+\\./;\n\t var text = this.editor.getBeforeTextInLine();\n\t var trimedText = text.trim();\n\t if (!exp.test(trimedText)) return;\n\t var num = trimedText.split('.')[0];\n\t if (trimedText.length > num.length + 1) {\n\t this.editor.insertBeforeText(this.EOL + (parseInt(num) + 1) + '. ');\n\t } else {\n\t this.editor.selectBeforeText(text.length);\n\t this.editor.setSelectText('');\n\t }\n\t event.preventDefault();\n\t },\n\t /*istanbul ignore next*/focus: function focus() {\n\t if (this.preview) {\n\t this.$element.focus();\n\t } else {\n\t this.editor.focus();\n\t }\n\t },\n\t /*istanbul ignore next*/blur: function blur() {\n\t this.editor.blur();\n\t },\n\t /*istanbul ignore next*/addCommand: function addCommand(item) {\n\t if (!item.name || !item.handler) return;\n\t this.commands = this.commands || {};\n\t this.commands[item.name] = item;\n\t if (item.key) {\n\t this.shortcut.bind(item.key, item.name, item.allowDefault, item.owner);\n\t }\n\t },\n\t /*istanbul ignore next*/removeCommand: function removeCommand(name) {\n\t this.commands = this.commands || {};\n\t var item = this.commands[name];\n\t if (!item) return;\n\t this.shortcut.unbind(item.key);\n\t this.commands[name] = null;\n\t delete this.commands[name];\n\t },\n\t /*istanbul ignore next*/execCommand: function execCommand(name, event) {\n\t event = event || {};\n\t event.mditor = this;\n\t event.toolbar = this.toolbar;\n\t event.editor = this.editor;\n\t this.commands[name].handler.call(this, event);\n\t }\n\t});\n\t\n\tMditor.fromTextarea = function (textarea) {\n\t textarea.classList.add(HIDDEN_CLASS_NAME);\n\t var mditor = new Mditor();\n\t mditor.value = textarea.value;\n\t mditor.$watch('value', function () {\n\t textarea.value = mditor.value;\n\t });\n\t mditor.$mount(textarea);\n\t mditor.switchTextarea = function () {\n\t if (textarea.classList.contains(HIDDEN_CLASS_NAME)) {\n\t textarea.value = mditor.value;\n\t mditor.$element.classList.add(HIDDEN_CLASS_NAME);\n\t textarea.classList.remove(HIDDEN_CLASS_NAME);\n\t } else {\n\t mditor.value = textarea.value;\n\t textarea.classList.add(HIDDEN_CLASS_NAME);\n\t mditor.$element.classList.remove(HIDDEN_CLASS_NAME);\n\t }\n\t };\n\t return mditor;\n\t};\n\t\n\tMditor.Parser = Parser;\n\t\n\tmodule.exports = window.Mditor = Mditor;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar info = __webpack_require__(2);\n\tvar utils = __webpack_require__(3);\n\tvar Class = __webpack_require__(4);\n\tvar Watcher = __webpack_require__(5);\n\tvar Observer = __webpack_require__(6);\n\tvar Template = __webpack_require__(51);\n\tvar Component = __webpack_require__(79);\n\tvar EventEmitter = __webpack_require__(50);\n\t\n\t//持载模板相关对象\n\tutils.copy(Template, Component);\n\t\n\tComponent.version = info.version;\n\tComponent.Template = Template;\n\tComponent.Watcher = Watcher;\n\tComponent.Observer = Observer;\n\tComponent.EventEmitter = EventEmitter;\n\tComponent.utils = utils;\n\tComponent.Class = Class;\n\t\n\t//定义安装插件的方法\n\tComponent.use = function (plugin) {\n\t var install = plugin.install || plugin;\n\t if (!utils.isFunction(install)) {\n\t throw new Error('Invalid Plugin');\n\t }\n\t return install.call(plugin, this);\n\t};\n\t\n\t//安装内置的路由插件\n\t//Component.use(Router);\n\t\n\tmodule.exports = Component;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = {\"name\":\"mokit\",\"version\":\"3.1.3\"}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t(function (ntils) {\n\t\n\t /**\n\t * 空函数\n\t */\n\t ntils.noop = function () { };\n\t\n\t /**\n\t * 验证一个对象是否为NULL\n\t * @method isNull\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isNull = function (obj) {\n\t return obj === null || typeof obj === \"undefined\";\n\t };\n\t\n\t /**\n\t * 除去字符串两端的空格\n\t * @method trim\n\t * @param {String} str 源字符串\n\t * @return {String} 结果字符串\n\t * @static\n\t */\n\t ntils.trim = function (str) {\n\t if (this.isNull(str)) return str;\n\t if (str.trim) {\n\t return str.trim();\n\t } else {\n\t return str.replace(/(^[\\\\s]*)|([\\\\s]*$)/g, \"\");\n\t }\n\t };\n\t\n\t /**\n\t * 替换所有\n\t * @method replace\n\t * @param {String} str 源字符串\n\t * @param {String} str1 要替换的字符串\n\t * @param {String} str2 替换为的字符串\n\t * @static\n\t */\n\t ntils.replace = function (str, str1, str2) {\n\t if (this.isNull(str)) return str;\n\t return str.replace(new RegExp(str1, 'g'), str2);\n\t };\n\t\n\t /**\n\t * 从字符串开头匹配\n\t * @method startWith\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 要匹配的字符串\n\t * @return {Boolean} 匹配结果\n\t * @static\n\t */\n\t ntils.startWith = function (str1, str2) {\n\t if (this.isNull(str1) || this.isNull(str2)) return false;\n\t return str1.indexOf(str2) === 0;\n\t };\n\t\n\t /**\n\t * 是否包含\n\t * @method contains\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 检查包括字符串\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.contains = function (str1, str2) {\n\t var self = this;\n\t if (this.isNull(str1) || this.isNull(str2)) return false;\n\t return str1.indexOf(str2) > -1;\n\t };\n\t\n\t /**\n\t * 从字符串结束匹配\n\t * @method endWidth\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 匹配字符串\n\t * @return {Boolean} 匹配结果\n\t * @static\n\t */\n\t ntils.endWith = function (str1, str2) {\n\t if (this.isNull(str1) || this.isNull(str2)) return false;\n\t return str1.indexOf(str2) === (str1.length - str2.length);\n\t };\n\t\n\t /**\n\t * 是否包含属性\n\t * @method hasProperty\n\t * @param {Object} obj 对象\n\t * @param {String} name 属性名\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.has = ntils.hasProperty = function (obj, name) {\n\t if (this.isNull(obj) || this.isNull(name)) return false;\n\t return (name in obj) || (obj.hasOwnProperty(name));\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Function\n\t * @method isFunction\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isFunction = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === \"function\";\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为String\n\t * @method isString\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isString = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === 'string' || obj instanceof String;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Number\n\t * @method isNumber\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isNumber = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === 'number' || obj instanceof Number;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Boolean\n\t * @method isBoolean\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isBoolean = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === 'boolean' || obj instanceof Boolean;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为HTML Element\n\t * @method isElement\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isElement = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t if (window.Element) {\n\t return obj instanceof Element;\n\t } else {\n\t return (obj.tagName && obj.nodeType && obj.nodeName && obj.attributes && obj.ownerDocument);\n\t }\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为HTML Text Element\n\t * @method isText\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isText = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return obj instanceof Text;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Object\n\t * @method isObject\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isObject = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === \"object\";\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Array或伪Array\n\t * @method isArray\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isArray = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t var v1 = Object.prototype.toString.call(obj) === '[object Array]';\n\t var v2 = obj instanceof Array;\n\t var v3 = !this.isString(obj) && this.isNumber(obj.length) && this.isFunction(obj.splice);\n\t var v4 = !this.isString(obj) && this.isNumber(obj.length) && obj[0];\n\t return v1 || v2 || v3 || v4;\n\t };\n\t\n\t /**\n\t * 验证是不是一个日期对象\n\t * @method isDate\n\t * @param {Object} val 要检查的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isDate = function (val) {\n\t if (this.isNull(val)) return false;\n\t return val instanceof Date;\n\t };\n\t\n\t /**\n\t * 验证是不是一个正则对象\n\t * @method isDate\n\t * @param {Object} val 要检查的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isRegexp = function (val) {\n\t return val instanceof RegExp;\n\t };\n\t\n\t /**\n\t * 转换为数组\n\t * @method toArray\n\t * @param {Array|Object} array 伪数组\n\t * @return {Array} 转换结果数组\n\t * @static\n\t */\n\t ntils.toArray = function (array) {\n\t if (this.isNull(array)) return [];\n\t return Array.prototype.slice.call(array);\n\t };\n\t\n\t /**\n\t * 转为日期格式\n\t * @method toDate\n\t * @param {Number|String} val 日期字符串或整型数值\n\t * @return {Date} 日期对象\n\t * @static\n\t */\n\t ntils.toDate = function (val) {\n\t var self = this;\n\t if (self.isNumber(val))\n\t return new Date(val);\n\t else if (self.isString(val))\n\t return new Date(self.replace(self.replace(val, '-', '/'), 'T', ' '));\n\t else if (self.isDate(val))\n\t return val;\n\t else\n\t return null;\n\t };\n\t\n\t /**\n\t * 遍历一个对像或数组\n\t * @method each\n\t * @param {Object or Array} obj 要遍历的数组或对象\n\t * @param {Function} fn 处理函数\n\t * @return {void} 无返回值\n\t * @static\n\t */\n\t ntils.each = function (list, handler, scope) {\n\t if (this.isNull(list) || this.isNull(handler)) return;\n\t if (this.isArray(list)) {\n\t var listLength = list.length;\n\t for (var i = 0; i < listLength; i++) {\n\t var rs = handler.call(scope || list[i], i, list[i]);\n\t if (!this.isNull(rs)) return rs;\n\t }\n\t } else {\n\t for (var key in list) {\n\t var rs = handler.call(scope || list[key], key, list[key]);\n\t if (!this.isNull(rs)) return rs;\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * 格式化日期\n\t * @method formatDate\n\t * @param {Date|String|Number} date 日期\n\t * @param {String} format 格式化字符串\n\t * @param {object} dict 反译字典\n\t * @return {String} 格式化结果\n\t * @static\n\t */\n\t ntils.formatDate = function (date, format, dict) {\n\t if (this.isNull(format) || this.isNull(date)) return date;\n\t date = this.toDate(date);\n\t dict = dict || {};\n\t var placeholder = {\n\t \"M+\": date.getMonth() + 1, //month\n\t \"d+\": date.getDate(), //day\n\t \"h+\": date.getHours(), //hour\n\t \"m+\": date.getMinutes(), //minute\n\t \"s+\": date.getSeconds(), //second\n\t \"w+\": date.getDay(), //week\n\t \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n\t \"S\": date.getMilliseconds() //millisecond\n\t }\n\t if (/(y+)/.test(format)) {\n\t format = format.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n\t }\n\t for (var key in placeholder) {\n\t if (new RegExp(\"(\" + key + \")\").test(format)) {\n\t var value = placeholder[key];\n\t value = dict[value] || value;\n\t format = format.replace(RegExp.$1, RegExp.$1.length == 1\n\t ? value : (\"00\" + value).substr((\"\" + value).length));\n\t }\n\t }\n\t return format;\n\t };\n\t\n\t /**\n\t * 拷贝对象\n\t * @method copy\n\t * @param {Object} src 源对象\n\t * @param {Object} dst 目标对象\n\t * @static\n\t */\n\t ntils.copy = function (src, dst, igonres) {\n\t dst = dst || (this.isArray(src) ? [] : {});\n\t this.each(src, function (key) {\n\t if (igonres && igonres.indexOf(key) > -1) return;\n\t delete dst[key];\n\t if (Object.getOwnPropertyDescriptor) {\n\t try {\n\t Object.defineProperty(dst, key, Object.getOwnPropertyDescriptor(src, key));\n\t } catch (ex) {\n\t dst[key] = src[key];\n\t }\n\t } else {\n\t dst[key] = src[key];\n\t }\n\t })\n\t return dst;\n\t };\n\t\n\t /**\n\t * 深度克隆对象\n\t * @method clone\n\t * @param {Object} src 源对象\n\t * @return {Object} 新对象\n\t * @static\n\t */\n\t ntils.clone = function (src, igonres) {\n\t if (this.isNull(src) ||\n\t this.isString(src) ||\n\t this.isNumber(src) ||\n\t this.isBoolean(src) ||\n\t this.isDate(src)) {\n\t return src;\n\t }\n\t var objClone = src;\n\t try {\n\t objClone = new src.constructor();\n\t } catch (ex) { }\n\t this.each(src, function (key, value) {\n\t if (objClone[key] != value && !this.contains(igonres, key)) {\n\t if (this.isObject(value)) {\n\t objClone[key] = this.clone(value, igonres);\n\t } else {\n\t objClone[key] = value;\n\t }\n\t }\n\t }, this);\n\t ['toString', 'valueOf'].forEach(function (key) {\n\t if (this.contains(igonres, key)) return;\n\t this.defineFreezeProp(objClone, key, src[key]);\n\t }, this);\n\t return objClone;\n\t };\n\t\n\t /**\n\t * 合并对象\n\t * @method mix\n\t * @return 合并后的对象\n\t * @param {Object} dst 目标对象\n\t * @param {Object} src 源对象\n\t * @param {Array} igonres 忽略的属性名,\n\t * @param {Number} mode 模式\n\t */\n\t ntils.mix = function (dst, src, igonres, mode, igonreNull) {\n\t //根据模式来判断,默认是Obj to Obj的 \n\t if (mode) {\n\t switch (mode) {\n\t case 1: // proto to proto \n\t return ntils.mix(dst.prototype, src.prototype, igonres, 0);\n\t case 2: // object to object and proto to proto \n\t ntils.mix(dst.prototype, src.prototype, igonres, 0);\n\t break; // pass through \n\t case 3: // proto to static \n\t return ntils.mix(dst, src.prototype, igonres, 0);\n\t case 4: // static to proto \n\t return ntils.mix(dst.prototype, src, igonres, 0);\n\t default: // object to object is what happens below \n\t }\n\t }\n\t //---\n\t src = src || {};\n\t dst = dst || (this.isArray(src) ? [] : {});\n\t this.keys(src).forEach(function (key) {\n\t if (this.contains(igonres, key)) return;\n\t if (igonreNull && this.isNull(src[key])) return;\n\t if (this.isObject(src[key]) &&\n\t (src[key].constructor == Object ||\n\t src[key].constructor == Array ||\n\t src[key].constructor == null)) {\n\t dst[key] = ntils.mix(dst[key], src[key], igonres, 0, igonreNull);\n\t } else {\n\t dst[key] = src[key];\n\t }\n\t }, this);\n\t return dst;\n\t };\n\t\n\t /**\n\t * 定义不可遍历的属性\n\t **/\n\t ntils.defineFreezeProp = function (obj, name, value) {\n\t try {\n\t Object.defineProperty(obj, name, {\n\t value: value,\n\t enumerable: false,\n\t configurable: true, //能不能重写定义\n\t writable: false //能不能用「赋值」运算更改\n\t });\n\t } catch (err) {\n\t obj[name] = value;\n\t }\n\t };\n\t\n\t /**\n\t * 获取所有 key \n\t */\n\t ntils.keys = function (obj) {\n\t if (Object.keys) return Object.keys(obj);\n\t var keys = [];\n\t this.each(obj, function (key) {\n\t keys.push(key);\n\t });\n\t return keys;\n\t };\n\t\n\t /**\n\t * 创建一个对象\n\t */\n\t ntils.create = function (proto, props) {\n\t if (Object.create) return Object.create(proto, props);\n\t var Cotr = function () { };\n\t Cotr.prototype = proto;\n\t var obj = new Cotr();\n\t if (props) this.copy(props, obj);\n\t return obj;\n\t };\n\t\n\t /**\n\t * 设置 proto\n\t * 在不支持 setPrototypeOf 也不支持 __proto__ 的浏览器\n\t * 中,会采用 copy 方式\n\t */\n\t ntils.setPrototypeOf = function (obj, proto) {\n\t if (Object.setPrototypeOf) {\n\t return Object.setPrototypeOf(obj, proto || this.create(null));\n\t } else {\n\t if (!('__proto__' in Object)) this.copy(proto, obj);\n\t obj.__proto__ = proto;\n\t }\n\t };\n\t\n\t /**\n\t * 获取 proto\n\t */\n\t ntils.getPrototypeOf = function (obj) {\n\t if (obj.__proto__) return obj.__proto__;\n\t if (Object.getPrototypeOf) return Object.getPrototypeOf(obj);\n\t if (obj.constructor) return obj.constructor.prototype;\n\t };\n\t\n\t /**\n\t * 是否深度相等\n\t */\n\t ntils.deepEqual = function (a, b) {\n\t if (a === b) return true;\n\t if (!this.isObject(a) || !this.isObject(b)) return false;\n\t var aKeys = this.keys(a);\n\t var bKeys = this.keys(b);\n\t if (aKeys.length !== bKeys.length) return false;\n\t var allKeys = aKeys.concat(bKeys);\n\t var checkedMap = this.create(null);\n\t var result = true;\n\t this.each(allKeys, function (i, key) {\n\t if (checkedMap[key]) return;\n\t if (!this.deepEqual(a[key], b[key])) result = false;\n\t checkedMap[key] = true;\n\t }, this);\n\t return result;\n\t };\n\t\n\t /**\n\t * 从一个数值循环到别一个数\n\t * @param {number} fromNum 开始数值\n\t * @param {Number} toNum 结束数值\n\t * @param {Number} step 步长值\n\t * @param {function} handler 执行函数\n\t * @returns {void} 无返回\n\t */\n\t ntils.fromTo = function (fromNum, toNum, step, handler) {\n\t if (!handler) handler = [step, step = handler][0];\n\t step = Math.abs(step || 1);\n\t if (fromNum < toNum) {\n\t for (var i = fromNum; i <= toNum; i += step) handler(i);\n\t } else {\n\t for (var i = fromNum; i >= toNum; i -= step) handler(i);\n\t }\n\t };\n\t\n\t /**\n\t * 生成一个Guid\n\t * @method newGuid\n\t * @return {String} GUID字符串\n\t * @static\n\t */\n\t ntils.newGuid = function () {\n\t var S4 = function () {\n\t return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n\t };\n\t return (S4() + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + S4() + S4());\n\t };\n\t\n\t /**\n\t * 对象变换\n\t **/\n\t ntils.map = function (list, fn) {\n\t var buffer = this.isArray(list) ? [] : {};\n\t this.each(list, function (name, value) {\n\t buffer[name] = fn(name, value);\n\t });\n\t return buffer;\n\t };\n\t\n\t /**\n\t * 通过路径设置属性值\n\t */\n\t ntils.setByPath = function (obj, path, value) {\n\t if (this.isNull(obj) || this.isNull(path) || path === '') {\n\t return;\n\t }\n\t if (!this.isArray(path)) {\n\t path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n\t }\n\t this.each(path, function (index, name) {\n\t if (this.isNull(name) || name.length < 1) return;\n\t if (index === path.length - 1) {\n\t obj[name] = value;\n\t } else {\n\t obj[name] = obj[name] || {};\n\t obj = obj[name];\n\t }\n\t }, this);\n\t };\n\t\n\t /**\n\t * 通过路径获取属性值\n\t */\n\t ntils.getByPath = function (obj, path) {\n\t if (this.isNull(obj) || this.isNull(path) || path === '') {\n\t return obj;\n\t }\n\t if (!this.isArray(path)) {\n\t path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n\t }\n\t this.each(path, function (index, name) {\n\t if (this.isNull(name) || name.length < 1) return;\n\t if (!this.isNull(obj)) obj = obj[name];\n\t }, this);\n\t return obj;\n\t };\n\t\n\t /**\n\t * 数组去重\n\t **/\n\t ntils.unique = function (array) {\n\t if (this.isNull(array)) return array;\n\t var newArray = [];\n\t this.each(array, function (i, value) {\n\t if (newArray.indexOf(value) > -1) return;\n\t newArray.push(value);\n\t });\n\t return newArray;\n\t };\n\t\n\t /**\n\t * 解析 function 的参数列表\n\t **/\n\t ntils.getFunctionArgumentNames = function (fn) {\n\t if (!fn) return [];\n\t var src = fn.toString();\n\t var parts = src.split(')')[0].split('=>')[0].split('(');\n\t return (parts[1] || parts[0]).split(',').map(function (name) {\n\t return name.trim();\n\t }).filter(function (name) {\n\t return name != 'function';\n\t });\n\t };\n\t\n\t /**\n\t * 缩短字符串\n\t */\n\t ntils.short = function (str, maxLength) {\n\t if (!str) return str;\n\t maxLength = maxLength || 40;\n\t var strLength = str.length;\n\t var trimLength = maxLength / 2;\n\t return strLength > maxLength ? str.substr(0, trimLength) + '...' + str.substr(strLength - trimLength) : str;\n\t };\n\t\n\t /**\n\t * 首字母大写\n\t */\n\t ntils.firstUpper = function (str) {\n\t if (this.isNull(str)) return;\n\t return str.substring(0, 1).toUpperCase() + str.substring(1);\n\t };\n\t\n\t /**\n\t * 编码正则字符串\n\t */\n\t ntils.escapeRegExp = function (str) {\n\t return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t };\n\t\n\t /**\n\t * 解析字符串为 dom \n\t * @param {string} str 字符串\n\t * @returns {HTMLNode} 解析后的 DOM \n\t */\n\t ntils.parseDom = function (str) {\n\t this._PDD_ = this._PDD_ || document.createElement('div');\n\t this._PDD_.innerHTML = ntils.trim(str);\n\t var firstNode = this._PDD_.childNodes[0];\n\t //先 clone 一份再通过 innerHTML 清空\n\t //否则 IE9 下,清空时会导出返回的 DOM 没有子结点\n\t if (firstNode) firstNode = firstNode.cloneNode(true);\n\t this._PDD_.innerHTML = '';\n\t return firstNode;\n\t };\n\t\n\t})(( false) ? (window.ntils = {}) : exports);\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tconst utils = __webpack_require__(3);\n\t\n\tfunction ClassFactory(options) {\n\t //处理 options\n\t options = options || utils.create(null);\n\t options.$name = options.$name || 'Class';\n\t options.$extends = options.$extends || ClassFactory;\n\t options.$static = options.$static || utils.create(null);\n\t //处理父类 prototype\n\t var superPrototype = utils.isFunction(options.$extends) ?\n\t options.$extends.prototype : options.$extends;\n\t //定义新类\n\t var Class = function () {\n\t //处理 super\n\t if (!this.$super) {\n\t utils.defineFreezeProp(this, '$super', function () {\n\t if (this._super_called_) return this._super_ret_;\n\t this._super_called_ = true;\n\t if (utils.isFunction(options.$extends)) {\n\t this._super_ret_ = options.$extends.apply(this, arguments);\n\t //这几行确保可继承于数组\n\t if (this._super_ret_) {\n\t var proto = utils.getPrototypeOf(this);\n\t utils.setPrototypeOf(proto, this._super_ret_);\n\t }\n\t } else {\n\t this._super_ret_ = options.$extends;\n\t }\n\t return this._super_ret_;\n\t });\n\t for (var name in superPrototype) {\n\t var value = superPrototype[name];\n\t if (utils.isFunction(value)) {\n\t this.$super[name] = value.bind(this);\n\t } else {\n\t this.$super[name] = value;\n\t }\n\t }\n\t }\n\t //调用构造\n\t if (utils.isFunction(options.constructor) &&\n\t options.constructor !== Object) {\n\t return options.constructor.apply(this, arguments);\n\t } else {\n\t //如果没有实现 constructor 则调用父类构造\n\t this.$super.apply(this, arguments);\n\t }\n\t };\n\t //处理 prototype\n\t Class.prototype = utils.create(superPrototype);\n\t utils.copy(options, Class.prototype);\n\t utils.defineFreezeProp(Class.prototype, '$class', Class);\n\t //处理静态成员\n\t utils.copy(options.$static, Class);\n\t if (utils.isFunction(options.$extends)) {\n\t utils.setPrototypeOf(Class, options.$extends);\n\t }\n\t if (!options.$extends.$extend) {\n\t utils.copy(ClassFactory, Class);\n\t }\n\t utils.defineFreezeProp(Class, '$super', options.$extends);\n\t //--\n\t return Class;\n\t}\n\t\n\t//定义扩展方法\n\tClassFactory.$extend = function (options) {\n\t options.$extends = this;\n\t return new ClassFactory(options);\n\t};\n\t\n\tClassFactory.Class = ClassFactory;\n\tmodule.exports = ClassFactory;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\t\n\t/**\n\t * Watcher 类\n\t * 通过「计算函数」、「执行函数」可以创建一个 Watcher 实例\n\t */\n\tvar Watcher = new Class({\n\t\n\t /**\n\t * 通过「计算函数」、「执行函数」构建一个 Watcher 实例\n\t * @param {function} calcor 计算函数\n\t * @param {function} handler 处理函数\n\t * @param {boolean} first 是否自动执行第一次\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(calcor, handler, first) {\n\t if (!utils.isFunction(calcor) || !utils.isFunction(handler)) {\n\t throw new Error('Invalid parameters');\n\t }\n\t this.calcor = calcor;\n\t this.handler = handler;\n\t if (first) this.calc(true);\n\t },\n\t\n\t /**\n\t * 执行计算\n\t * @param {boolean} force 是否强制触发「计算函数」\n\t * @returns {Object} 计算后的值\n\t */\n\t calc: function /*istanbul ignore next*/calc(force) {\n\t var newValue = this.calcor();\n\t if (force || !utils.deepEqual(newValue, this.value)) {\n\t this.handler(newValue, this.value);\n\t }\n\t this.value = utils.clone(newValue);\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Watcher;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\t/*istanbul ignore next*/var _keys = __webpack_require__(7);\n\t\n\tvar _keys2 = _interopRequireDefault(_keys);\n\t\n\tvar _getOwnPropertyDescriptor = __webpack_require__(42);\n\t\n\tvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\t\n\tvar _defineProperty = __webpack_require__(47);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\tvar EventEmitter = __webpack_require__(50);\n\t\n\tvar OBSERVER_PROP_NAME = '_observer_';\n\tvar CHANGE_EVENT_NAME = 'change';\n\tvar EVENT_MAX_DISPATCH_LAYER = 10;\n\tvar IGNORE_REGEXPS = [/^\\_(.*)\\_$/i, /^\\_\\_/i];\n\t\n\t/**\n\t * 对象观察类,可以监控对象变化\n\t * 目前方案问题:\n\t * 对于父子关系和事件冒泡,目前方案如果用 delete 删除一个属性,无关真实删除关系,\n\t * 即便调用 clearReference 也无法再清除关系,子对象的 parents 中会一直有一个引用,当前方案最高效\n\t * 其它方法一:\n\t * 将「关系」放入全局数组中,然后将 ob.parents 变成一个「属性」从全局数组件中 filter 出来,\n\t * 基本和目前方法类似,但是关系在外部存领教,所以 clearReference 可清除。\n\t * 其它方案二: \n\t * 构造时添加到全局数组,每一个 observer change 时都让放到全局的 observer 遍历自身的,\n\t * 检果事件源是不是自已的子对象,如果是则触发自身 change 事件,这样 ob 对象本身没有相关引用\n\t * clearReference 时只从全局清除掉就行了,并且 delete 操作也不会影响,但效率稍差。\n\t * 其它方案三: \n\t * 给构造函数添加一个 deep 属性,只有 deep 的 ob 对象,才放入到全局数组中,检查时逻辑同方案二\n\t * 但是因为要检查的对象会少很多,效率会更高一点。\n\t */\n\tvar Observer = new Class({\n\t $extends: EventEmitter,\n\t\n\t /**\n\t * 通过目标对象构造一个观察对象\n\t * @param {Object} target 目标对象\n\t * @param {Object} options 选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(target, options) {\n\t if (utils.isNull(target)) {\n\t throw new Error('Invalid target');\n\t }\n\t options = options || {};\n\t var observer = target[OBSERVER_PROP_NAME];\n\t if (observer) {\n\t utils.copy(options, observer.options);\n\t //当时一个组件 A 的为组件 B 的 prop 时,A 更新不会触发 B 更新\n\t //所在暂注释这里,另一种方法是更新 prop 指令,重写 excute 方法,而不是现在的 update 方法\n\t // if (observer.options.root) {\n\t // observer.parents.length = 0;\n\t // }\n\t observer.apply();\n\t return observer;\n\t }\n\t EventEmitter.call(this);\n\t utils.defineFreezeProp(this, 'options', options);\n\t utils.defineFreezeProp(this, 'shadow', {});\n\t utils.defineFreezeProp(this, 'target', target);\n\t utils.defineFreezeProp(this, 'parents', []);\n\t utils.defineFreezeProp(target, OBSERVER_PROP_NAME, this);\n\t this.apply();\n\t },\n\t\n\t /**\n\t * 添加一个属性,动态添中的属性,无法被观察,\n\t * 但是通过 set 方法添加的属性可能被观察。\n\t * @param {string} name 名称\n\t * @param {Object} value 值\n\t * @returns {void} 无返回\n\t */\n\t set: function /*istanbul ignore next*/set(name, value) {\n\t if (utils.isFunction(value) || Observer.isIgnore(name)) {\n\t return;\n\t }\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(this.target, name, {\n\t get: function /*istanbul ignore next*/get() {\n\t return this[OBSERVER_PROP_NAME].shadow[name];\n\t },\n\t set: function /*istanbul ignore next*/set(value) {\n\t var observer = this[OBSERVER_PROP_NAME];\n\t var oldValue = observer.shadow[name];\n\t if (oldValue === value) return;\n\t if (utils.isObject(value)) {\n\t var childObserver = new Observer(value);\n\t observer.addChild(childObserver, name);\n\t }\n\t //移除旧值的父引用\n\t //如果用 delete 删除属性将无法移除父子引用\n\t if (oldValue && oldValue[OBSERVER_PROP_NAME]) {\n\t observer.removeChild(oldValue[OBSERVER_PROP_NAME], name);\n\t }\n\t observer.shadow[name] = value;\n\t observer.emitChange({ path: name, value: value });\n\t },\n\t configurable: true,\n\t enumerable: true\n\t });\n\t this.target[name] = value;\n\t },\n\t\n\t /**\n\t * 自动应用所有动态添加的属性\n\t * @returns {void} 无返回\n\t */\n\t apply: function /*istanbul ignore next*/apply() {\n\t if (utils.isArray(this.target)) {\n\t this._wrapArray(this.target);\n\t }\n\t var names = this._getPropertyNames(this.target);\n\t names.forEach(function (name) {\n\t var desc = /*istanbul ignore next*/(0, _getOwnPropertyDescriptor2.default)(this.target, name);\n\t if (!('value' in desc)) return;\n\t this.set(name, this.target[name]);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 清除所有父子引用\n\t * @returns {void} 无返回\n\t */\n\t clearReference: function /*istanbul ignore next*/clearReference() {\n\t utils.each(this.target, function (name, value) {\n\t if (utils.isNull(value)) return;\n\t var child = value[OBSERVER_PROP_NAME];\n\t if (child) this.removeChild(child);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 派发一个事件,事件会向父级对象冒泡\n\t * @param {string} eventName 事件名称\n\t * @param {Object} event 事件对象\n\t * @returns {void} 无返回\n\t */\n\t dispatch: function /*istanbul ignore next*/dispatch(eventName, event) {\n\t if (event._src_ === this) return;\n\t event._src_ = event._src_ || this;\n\t event._layer_ = event._layer_ || 0;\n\t if (event._layer_++ >= EVENT_MAX_DISPATCH_LAYER) return;\n\t this.emit(eventName, event);\n\t if (!this.parents || this.parents.length < 1) return;\n\t this.parents.forEach(function (item) {\n\t if (!(item.name in item.parent.target)) {\n\t return item.parent.removeChild(this);\n\t }\n\t var parentEvent = utils.copy(event);\n\t parentEvent.path = item.name + '.' + event.path;\n\t item.parent.dispatch(eventName, parentEvent);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 添子观察者对象\n\t * @param {Object} child 父对象\n\t * @param {String} name 属性名\n\t * @returns {void} 无返回\n\t */\n\t addChild: function /*istanbul ignore next*/addChild(child, name) {\n\t if (utils.isNull(child) || utils.isNull(name)) {\n\t throw new Error('Invalid paramaters');\n\t }\n\t if (child.options.root) return;\n\t child.parents.push({ parent: this, name: name });\n\t },\n\t\n\t /**\n\t * 移除子对象\n\t * @param {Object} child 父对象\n\t * @param {String} name 属性名\n\t * @returns {void} 无返回\n\t */\n\t removeChild: function /*istanbul ignore next*/removeChild(child, name) {\n\t if (utils.isNull(child)) {\n\t throw new Error('Invalid paramaters');\n\t }\n\t var foundIndex = -1;\n\t child.parents.forEach(function (item, index) {\n\t if (item.parent === this && item.name === name) {\n\t foundIndex = index;\n\t }\n\t }, this);\n\t if (foundIndex > -1) {\n\t child.parents.splice(foundIndex, 1);\n\t }\n\t },\n\t\n\t /**\n\t * 触发 change 事件\n\t * @param {Object} event 事件对象\n\t * @returns {void} 无返回\n\t */\n\t emitChange: function /*istanbul ignore next*/emitChange(event) {\n\t this.dispatch(CHANGE_EVENT_NAME, event);\n\t },\n\t\n\t /**\n\t * 获取所有成员名称列表\n\t * @returns {Array} 所有成员名称列表\n\t */\n\t _getPropertyNames: function /*istanbul ignore next*/_getPropertyNames() {\n\t var names = utils.isArray(this.target) ? this.target.map(function (item, index) {\n\t return index;\n\t }) : /*istanbul ignore next*/(0, _keys2.default)(this.target);\n\t return names.filter(function (name) {\n\t return name !== OBSERVER_PROP_NAME;\n\t });\n\t },\n\t\n\t /**\n\t * 包裹数组\n\t * @param {array} array 源数组\n\t * @returns {array} 处理后的数组\n\t */\n\t _wrapArray: function /*istanbul ignore next*/_wrapArray(array) {\n\t utils.defineFreezeProp(array, 'push', function () {\n\t var items = [].slice.call(arguments);\n\t items.forEach(function (item) {\n\t //这里也会触发对应 index 的 change 事件\n\t this[OBSERVER_PROP_NAME].set(array.length, item);\n\t }, this);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t });\n\t utils.defineFreezeProp(array, 'pop', function () {\n\t var item = [].pop.apply(this, arguments);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: this.length, value: item });\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t return item;\n\t });\n\t utils.defineFreezeProp(array, 'unshift', function () {\n\t var items = [].slice.call(arguments);\n\t items.forEach(function (item) {\n\t //这里也会触发对应 index 的 change 事件\n\t this[OBSERVER_PROP_NAME].set(0, item);\n\t }, this);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t });\n\t utils.defineFreezeProp(array, 'shift', function () {\n\t var item = [].shift.apply(this, arguments);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 0, value: item });\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t return item;\n\t });\n\t utils.defineFreezeProp(array, 'splice', function () {\n\t var startIndex = arguments[0];\n\t var endIndex = utils.isNull(arguments[1]) ? startIndex + arguments[1] : this.length - 1;\n\t var items = [].splice.apply(this, arguments);\n\t for (var i = startIndex; i <= endIndex; i++) {\n\t this[OBSERVER_PROP_NAME].emitChange({ path: i, value: items[i - startIndex] });\n\t }\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t return items;\n\t });\n\t utils.defineFreezeProp(array, 'set', function (index, value) {\n\t if (index >= this.length) {\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t }\n\t this[OBSERVER_PROP_NAME].set(index, value);\n\t });\n\t }\n\t\n\t});\n\t\n\t/**\n\t * 观察一个对象\n\t * @param {Object} target 目标对象\n\t * @return {Observer} 观察者对象\n\t */\n\tObserver.observe = function (target) {\n\t return new Observer(target);\n\t};\n\t\n\t/**\n\t * 检查是不是忽略的属性名\n\t * @param {string} word 待检查的字符串\n\t * @returns {void} 无返回\n\t */\n\tObserver.isIgnore = function (word) {\n\t return IGNORE_REGEXPS.some(function (re) /*istanbul ignore next*/{\n\t return re.test(word);\n\t });\n\t};\n\t\n\tmodule.exports = Observer;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(8), __esModule: true };\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(9);\n\tmodule.exports = __webpack_require__(29).Object.keys;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 Object.keys(O)\n\tvar toObject = __webpack_require__(10);\n\tvar $keys = __webpack_require__(12);\n\t\n\t__webpack_require__(27)('keys', function () {\n\t return function keys(it) {\n\t return $keys(toObject(it));\n\t };\n\t});\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 7.1.13 ToObject(argument)\n\tvar defined = __webpack_require__(11);\n\tmodule.exports = function (it) {\n\t return Object(defined(it));\n\t};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tmodule.exports = function (it) {\n\t if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\tvar $keys = __webpack_require__(13);\n\tvar enumBugKeys = __webpack_require__(26);\n\t\n\tmodule.exports = Object.keys || function keys(O) {\n\t return $keys(O, enumBugKeys);\n\t};\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar has = __webpack_require__(14);\n\tvar toIObject = __webpack_require__(15);\n\tvar arrayIndexOf = __webpack_require__(18)(false);\n\tvar IE_PROTO = __webpack_require__(22)('IE_PROTO');\n\t\n\tmodule.exports = function (object, names) {\n\t var O = toIObject(object);\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while (names.length > i) if (has(O, key = names[i++])) {\n\t ~arrayIndexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tmodule.exports = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// to indexed object, toObject with fallback for non-array-like ES3 strings\n\tvar IObject = __webpack_require__(16);\n\tvar defined = __webpack_require__(11);\n\tmodule.exports = function (it) {\n\t return IObject(defined(it));\n\t};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar cof = __webpack_require__(17);\n\t// eslint-disable-next-line no-prototype-builtins\n\tmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n\t return cof(it) == 'String' ? it.split('') : Object(it);\n\t};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = function (it) {\n\t return toString.call(it).slice(8, -1);\n\t};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// false -> Array#indexOf\n\t// true -> Array#includes\n\tvar toIObject = __webpack_require__(15);\n\tvar toLength = __webpack_require__(19);\n\tvar toAbsoluteIndex = __webpack_require__(21);\n\tmodule.exports = function (IS_INCLUDES) {\n\t return function ($this, el, fromIndex) {\n\t var O = toIObject($this);\n\t var length = toLength(O.length);\n\t var index = toAbsoluteIndex(fromIndex, length);\n\t var value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t // eslint-disable-next-line no-self-compare\n\t if (IS_INCLUDES && el != el) while (length > index) {\n\t value = O[index++];\n\t // eslint-disable-next-line no-self-compare\n\t if (value != value) return true;\n\t // Array#indexOf ignores holes, Array#includes - not\n\t } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n\t if (O[index] === el) return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 7.1.15 ToLength\n\tvar toInteger = __webpack_require__(20);\n\tvar min = Math.min;\n\tmodule.exports = function (it) {\n\t return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n\t};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tmodule.exports = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(20);\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tmodule.exports = function (index, length) {\n\t index = toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar shared = __webpack_require__(23)('keys');\n\tvar uid = __webpack_require__(25);\n\tmodule.exports = function (key) {\n\t return shared[key] || (shared[key] = uid(key));\n\t};\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(24);\n\tvar SHARED = '__core-js_shared__';\n\tvar store = global[SHARED] || (global[SHARED] = {});\n\tmodule.exports = function (key) {\n\t return store[key] || (store[key] = {});\n\t};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tmodule.exports = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\n\t// IE 8- don't enum bug keys\n\tmodule.exports = (\n\t 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n\t).split(',');\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// most Object methods by ES6 should accept primitives\n\tvar $export = __webpack_require__(28);\n\tvar core = __webpack_require__(29);\n\tvar fails = __webpack_require__(38);\n\tmodule.exports = function (KEY, exec) {\n\t var fn = (core.Object || {})[KEY] || Object[KEY];\n\t var exp = {};\n\t exp[KEY] = exec(fn);\n\t $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n\t};\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(24);\n\tvar core = __webpack_require__(29);\n\tvar ctx = __webpack_require__(30);\n\tvar hide = __webpack_require__(32);\n\tvar PROTOTYPE = 'prototype';\n\t\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var IS_WRAP = type & $export.W;\n\t var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n\t var expProto = exports[PROTOTYPE];\n\t var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n\t var key, own, out;\n\t if (IS_GLOBAL) source = name;\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t if (own && key in exports) continue;\n\t // export native or passed\n\t out = own ? target[key] : source[key];\n\t // prevent global pollution for namespaces\n\t exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n\t // bind timers to global for call from export context\n\t : IS_BIND && own ? ctx(out, global)\n\t // wrap global constructors for prevent change them in library\n\t : IS_WRAP && target[key] == out ? (function (C) {\n\t var F = function (a, b, c) {\n\t if (this instanceof C) {\n\t switch (arguments.length) {\n\t case 0: return new C();\n\t case 1: return new C(a);\n\t case 2: return new C(a, b);\n\t } return new C(a, b, c);\n\t } return C.apply(this, arguments);\n\t };\n\t F[PROTOTYPE] = C[PROTOTYPE];\n\t return F;\n\t // make static versions for prototype methods\n\t })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n\t // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n\t if (IS_PROTO) {\n\t (exports.virtual || (exports.virtual = {}))[key] = out;\n\t // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n\t if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n\t }\n\t }\n\t};\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tmodule.exports = $export;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\n\tvar core = module.exports = { version: '2.5.1' };\n\tif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// optional / simple context binding\n\tvar aFunction = __webpack_require__(31);\n\tmodule.exports = function (fn, that, length) {\n\t aFunction(fn);\n\t if (that === undefined) return fn;\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (it) {\n\t if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n\t return it;\n\t};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar dP = __webpack_require__(33);\n\tvar createDesc = __webpack_require__(41);\n\tmodule.exports = __webpack_require__(37) ? function (object, key, value) {\n\t return dP.f(object, key, createDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar anObject = __webpack_require__(34);\n\tvar IE8_DOM_DEFINE = __webpack_require__(36);\n\tvar toPrimitive = __webpack_require__(40);\n\tvar dP = Object.defineProperty;\n\t\n\texports.f = __webpack_require__(37) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t anObject(O);\n\t P = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if (IE8_DOM_DEFINE) try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ }\n\t if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n\t if ('value' in Attributes) O[P] = Attributes.value;\n\t return O;\n\t};\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(35);\n\tmodule.exports = function (it) {\n\t if (!isObject(it)) throw TypeError(it + ' is not an object!');\n\t return it;\n\t};\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = !__webpack_require__(37) && !__webpack_require__(38)(function () {\n\t return Object.defineProperty(__webpack_require__(39)('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// Thank's IE8 for his funny defineProperty\n\tmodule.exports = !__webpack_require__(38)(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(35);\n\tvar document = __webpack_require__(24).document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = isObject(document) && isObject(document.createElement);\n\tmodule.exports = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\tvar isObject = __webpack_require__(35);\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tmodule.exports = function (it, S) {\n\t if (!isObject(it)) return it;\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n\t if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n\t if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(43), __esModule: true };\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(44);\n\tvar $Object = __webpack_require__(29).Object;\n\tmodule.exports = function getOwnPropertyDescriptor(it, key) {\n\t return $Object.getOwnPropertyDescriptor(it, key);\n\t};\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n\tvar toIObject = __webpack_require__(15);\n\tvar $getOwnPropertyDescriptor = __webpack_require__(45).f;\n\t\n\t__webpack_require__(27)('getOwnPropertyDescriptor', function () {\n\t return function getOwnPropertyDescriptor(it, key) {\n\t return $getOwnPropertyDescriptor(toIObject(it), key);\n\t };\n\t});\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar pIE = __webpack_require__(46);\n\tvar createDesc = __webpack_require__(41);\n\tvar toIObject = __webpack_require__(15);\n\tvar toPrimitive = __webpack_require__(40);\n\tvar has = __webpack_require__(14);\n\tvar IE8_DOM_DEFINE = __webpack_require__(36);\n\tvar gOPD = Object.getOwnPropertyDescriptor;\n\t\n\texports.f = __webpack_require__(37) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n\t O = toIObject(O);\n\t P = toPrimitive(P, true);\n\t if (IE8_DOM_DEFINE) try {\n\t return gOPD(O, P);\n\t } catch (e) { /* empty */ }\n\t if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n\t};\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n\texports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(48), __esModule: true };\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(49);\n\tvar $Object = __webpack_require__(29).Object;\n\tmodule.exports = function defineProperty(it, key, desc) {\n\t return $Object.defineProperty(it, key, desc);\n\t};\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(28);\n\t// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n\t$export($export.S + $export.F * !__webpack_require__(37), 'Object', { defineProperty: __webpack_require__(33).f });\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar utils = __webpack_require__(3);\n\tvar Class = __webpack_require__(4);\n\t\n\t/**\n\t * 事件触发器基类\n\t */\n\tvar EventEmitter = new Class({\n\t $extends: Function,\n\t\n\t /**\n\t * 构建一个一个事修的触发器对象\n\t * @param {object} target 将代理的目标对象可以省略\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(target) {\n\t target = target || this;\n\t var emitter = target._emitter_;\n\t if (emitter) return emitter;\n\t utils.defineFreezeProp(this, '_target_', target);\n\t utils.defineFreezeProp(target, '_emitter_', this);\n\t this._isNative_ = this._isNativeObject(this._target_);\n\t this._listeners_ = this._listeners_ || {};\n\t this.on = this.$on = this.$addListener = this.addListener;\n\t this.off = this.$off = this.$removeListener = this.removeListener;\n\t this.$emit = this.emit;\n\t },\n\t\n\t /**\n\t * 检查是否原生支持事件\n\t * @param {object} obj 对象\n\t * @returns {void} 检查结果\n\t */\n\t _isNativeObject: function /*istanbul ignore next*/_isNativeObject(obj) {\n\t return obj.addEventListener && obj.removeEventListener && obj.dispatchEvent;\n\t },\n\t\n\t /**\n\t * 添加一个事件监听函数\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n\t * @returns {void} 无返回\n\t */\n\t addListener: function /*istanbul ignore next*/addListener(name, listener, capture) {\n\t if (this._isNative_) {\n\t this._addNativeEventListener(name, listener, capture);\n\t }\n\t this._listeners_[name] = this._listeners_[name] || [];\n\t this._listeners_[name].push(listener);\n\t if (this._listeners_[name].length > EventEmitter._maxListeners) {\n\t throw new Error('The `' + name + '` event listener is not more than 10');\n\t }\n\t },\n\t\n\t /**\n\t * 移除「一个/一组/所有」事件监听函数\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n\t * @returns {void} 无返回\n\t */\n\t removeListener: function /*istanbul ignore next*/removeListener(name, listener, capture) {\n\t if (name && listener) {\n\t if (this._isNative_) {\n\t this._removeNativeEventListener(name, listener, capture);\n\t }\n\t if (!this._listeners_[name]) return;\n\t var index = this._listeners_[name].indexOf(listener);\n\t this._listeners_[name].splice(index, 1);\n\t } else if (name) {\n\t if (this._isNative_ && this._listeners_[name]) {\n\t this._listeners_[name].forEach(function (_listener) {\n\t this.removeListener(name, _listener, capture);\n\t }, this);\n\t }\n\t delete this._listeners_[name];\n\t } else {\n\t utils.each(this._listeners_, function (name) {\n\t this.removeListener(name, null, capture);\n\t }, this);\n\t this._listeners_ = {};\n\t }\n\t },\n\t\n\t /**\n\t * 触发自身的一个事件\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @param {string} canBubble 能否冒泡(只在代理 dom 对象时有效)\n\t * @param {object} cancelAble 能否取消(只在代理 dom 对象时有效)\n\t * @returns {void} 无返回\n\t */\n\t emit: function /*istanbul ignore next*/emit(name, data, canBubble, cancelAble) {\n\t if (this._isNative_) {\n\t return this._emitNativeEvent(name, data, canBubble, cancelAble);\n\t }\n\t if (!this._listeners_[name]) return;\n\t var stopPropagation = false;\n\t this._listeners_[name].forEach(function (handler) {\n\t var rs = handler.call(this._target_, data);\n\t if (rs === false) stopPropagation = true;\n\t }, this);\n\t return stopPropagation;\n\t },\n\t\n\t /**\n\t * 添加 DOM 元素事件\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件\n\t * @returns {void} 无返回\n\t */\n\t _addNativeEventListener: function /*istanbul ignore next*/_addNativeEventListener(name, listener, capture) {\n\t this._target_.addEventListener(name, listener, capture);\n\t //如果存在已注册的自定义 “组合事件”\n\t var descriptor = EventEmitter._events[name];\n\t if (descriptor) {\n\t descriptor.addListener = descriptor.addListener || descriptor.on;\n\t descriptor.addListener(this, name, listener, capture);\n\t }\n\t },\n\t\n\t /**\n\t * 移除 DOM 元素事件\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件\n\t * @returns {void} 无返回\n\t */\n\t _removeNativeEventListener: function /*istanbul ignore next*/_removeNativeEventListener(name, listener, capture) {\n\t this._target_.removeEventListener(name, listener, capture);\n\t //如果存在已注册的自定义 “组合事件”\n\t var descriptor = EventEmitter._events[name];\n\t if (descriptor) {\n\t descriptor.removeListener = descriptor.removeListener || descriptor.off;\n\t descriptor.removeListener(this, name, listener, capture);\n\t }\n\t },\n\t\n\t /**\n\t * 触发 DOM 元素事件\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @param {string} canBubble 能否冒泡\n\t * @param {object} cancelAble 能否取消\n\t * @returns {void} 无返回\n\t */\n\t _emitNativeEvent: function /*istanbul ignore next*/_emitNativeEvent(name, data, canBubble, cancelAble) {\n\t var event = document.createEvent('HTMLEvents');\n\t event.initEvent(name, canBubble, cancelAble);\n\t utils.copy(data, event, ['data']);\n\t event.data = data;\n\t return this._target_.dispatchEvent(event);\n\t }\n\t\n\t});\n\t\n\t//最多添加多少个 listener\n\tEventEmitter._maxListeners = 10;\n\t\n\t//所有自定义事件\n\tEventEmitter._events = [];\n\t\n\t/**\n\t * 注册自定义事件(只在代理 dom 对象时有效)\n\t * @param {object} descriptor 事件定义\n\t * @returns {void} 无返回\n\t */\n\tEventEmitter.register = function (descriptor) {\n\t var names = descriptor.name;\n\t if (!names) return;\n\t if (!utils.isArray(names)) names = names.split(',');\n\t names.forEach(function (name) {\n\t this._events[name] = descriptor;\n\t }, this);\n\t};\n\t\n\tmodule.exports = EventEmitter;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Compiler = __webpack_require__(52);\n\tvar Directive = __webpack_require__(53);\n\tvar Expression = __webpack_require__(54);\n\tvar Template = __webpack_require__(78);\n\tvar directives = __webpack_require__(55);\n\t\n\tTemplate.Template = Template;\n\tTemplate.Compiler = Compiler;\n\tTemplate.Directive = Directive;\n\tTemplate.directives = directives;\n\tTemplate.Expression = Expression;\n\t\n\tmodule.exports = Template;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar Directive = __webpack_require__(53);\n\tvar utils = __webpack_require__(3);\n\tvar Expression = __webpack_require__(54);\n\tvar commonDirectives = __webpack_require__(55);\n\t\n\tvar DEFAULT_PREFIX = 'm';\n\t\n\t/**\n\t * 模板编译器\n\t * 可以通过指定「前缀」或「指令集」构建实例\n\t */\n\tvar Compiler = new Class({\n\t\n\t /**\n\t * 构造一个编译器\n\t * @param {Object} options 选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(options) {\n\t options = options || {};\n\t this.prefix = options.prefix || DEFAULT_PREFIX;\n\t this.elementDirectives = {};\n\t this.attributeDirectives = {};\n\t this.registerDirectives(commonDirectives);\n\t this.registerDirectives(options.directives);\n\t },\n\t\n\t /**\n\t * 将字符串转成「驼峰」式\n\t * @param {string} str 原始字符串\n\t * @param {number} mode 1 大驼峰,0 小驼峰\n\t * @return {string} 转换后的字符串\n\t */\n\t toCamelCase: function /*istanbul ignore next*/toCamelCase(str, mode) {\n\t if (str) {\n\t str = str.replace(/\\-[a-z0-9]/g, function ($1) /*istanbul ignore next*/{\n\t return $1.slice(1).toUpperCase();\n\t });\n\t str = str.replace(/^[a-z]/i, function ($1) {\n\t return mode ? $1.toUpperCase() : $1.toLowerCase();\n\t });\n\t }\n\t return str;\n\t },\n\t\n\t /**\n\t * 将字符串转成分隔形式\n\t * @param {string} str 原始字符串\n\t * @return {string} 转换后的字符串\n\t */\n\t toSplitCase: function /*istanbul ignore next*/toSplitCase(str) {\n\t if (str) {\n\t str = str.replace(/([A-Z])/g, '-$1');\n\t if (str[0] == '-') str = str.slice(1);\n\t }\n\t return str;\n\t },\n\t\n\t /**\n\t * 添加指令\n\t * @param {Object} directives 指令集 \n\t * @returns {void} 无返回\n\t */\n\t registerDirectives: function /*istanbul ignore next*/registerDirectives(directives) {\n\t utils.each(directives, function (name, directive) {\n\t name = this.toSplitCase(name);\n\t var fullName = directive.options.prefix === false ? name : /*istanbul ignore next*/this.prefix + ':' + name;\n\t if (directive.options.type == Directive.TE) {\n\t this.elementDirectives[fullName.toUpperCase()] = directive;\n\t } else {\n\t this.attributeDirectives[fullName.toLowerCase()] = directive;\n\t }\n\t }, this);\n\t },\n\t\n\t /**\n\t * 解析要 attr 指令信息\n\t * @param {string} attrName 要解析的名称字符串\n\t * @returns {Object} 解析后的对象\n\t */\n\t _parseAttrInfo: function /*istanbul ignore next*/_parseAttrInfo(attrName) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var parts = attrName.toLowerCase().split(':');\n\t var info = {};\n\t if (parts.length > 1) {\n\t info.name = /*istanbul ignore next*/parts[0] + ':' + parts[1];\n\t info.decorates = parts.slice(2).map(function (item) /*istanbul ignore next*/{\n\t return (/*istanbul ignore next*/_this.toCamelCase(item)\n\t );\n\t });\n\t } else {\n\t info.name = parts[0];\n\t info.decorates = [];\n\t }\n\t return info;\n\t },\n\t\n\t /**\n\t * 创建一个指令实例\n\t * @param {Directive} Directive 指令类\n\t * @param {Object} options 指令构建选项\n\t * @returns {Directive} 指令实例\n\t */\n\t _createDirectiveInstance: function /*istanbul ignore next*/_createDirectiveInstance(Directive, options) {\n\t options.compiler = this;\n\t options.prefix = this.prefix;\n\t return new Directive(options);\n\t },\n\t\n\t /**\n\t * 初始化一个编译完成的 handler\n\t * @param {function} handler 编译后的的模板函数\n\t * @returns {void} 无返回\n\t */\n\t _bindHandler: function /*istanbul ignore next*/_bindHandler(handler) {\n\t //排序 directives\n\t handler.directives = handler.directives.sort(function (a, b) {\n\t return b.level - a.level;\n\t });\n\t //初始化 directives\n\t var boundDirectives = [];\n\t utils.each(handler.directives, function (index, directive) {\n\t directive.index = index;\n\t directive.bind();\n\t boundDirectives.push(directive);\n\t //移除完成绑定的指令对应的 attribute\n\t if (directive.remove !== false && directive.attribute) {\n\t directive.node.removeAttribute(directive.attribute.name);\n\t }\n\t //如果遇到一个「终态」指令,停止向下初始化\n\t if (directive.final) {\n\t return handler.final = true;\n\t }\n\t }, this);\n\t handler.directives = boundDirectives;\n\t },\n\t\n\t /**\n\t * 编译一个元素本身\n\t * @param {function} handler 当前模板函数\n\t * @param {HTMLNode} node 当前 HTML 结点\n\t * @returns {void} 无返回\n\t */\n\t _compileElement: function /*istanbul ignore next*/_compileElement(handler, node) {\n\t var ElementDirective = this.elementDirectives[node.nodeName.toUpperCase()];\n\t if (!ElementDirective) return;\n\t handler.directives.push(this._createDirectiveInstance(ElementDirective, {\n\t handler: handler,\n\t node: node\n\t }));\n\t },\n\t\n\t /**\n\t * 编译一个元素所有 attributes \n\t * @param {function} handler 当前模板函数\n\t * @param {HTMLNode} node 当前 HTML 结点\n\t * @returns {void} 无返回\n\t */\n\t _compileAttributes: function /*istanbul ignore next*/_compileAttributes(handler, node) {\n\t utils.toArray(node.attributes).forEach(function (attribute) {\n\t var attrInfo = this._parseAttrInfo(attribute.name);\n\t var AttrDirective = this.attributeDirectives[attrInfo.name] || this.attributeDirectives['*'];\n\t if (!AttrDirective) return;\n\t var directiveOptions = AttrDirective.options;\n\t handler.directives.push(this._createDirectiveInstance(AttrDirective, {\n\t handler: handler,\n\t node: node,\n\t attribute: attribute,\n\t expression: directiveOptions.literal ? attribute.value : new Expression(attribute.value, directiveOptions.mixed),\n\t decorates: attrInfo.decorates\n\t }));\n\t }, this);\n\t },\n\t\n\t /**\n\t * 编译所有子结点\n\t * @param {function} handler 当前模板函数\n\t * @param {HTMLNode} node 当前 HTML 结点\n\t * @returns {void} 无返回\n\t */\n\t _compileChildren: function /*istanbul ignore next*/_compileChildren(handler, node) {\n\t if (handler.final) return;\n\t utils.toArray(node.childNodes).forEach(function (childNode) {\n\t if (childNode._compiled_) return;\n\t var childHandler = this.compile(childNode);\n\t childHandler.parent = this;\n\t handler.children.push(childHandler);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 编译一个模板\n\t * @param {HTMLNode} node 模板根元素\n\t * @param {Object} options 选项\n\t * @returns {function} 模板函数\n\t */\n\t compile: function /*istanbul ignore next*/compile(node, options) {\n\t if (!node) {\n\t throw new Error('Invalid node for compile');\n\t }\n\t node._compiled_ = true;\n\t options = options || {};\n\t //定义编译结果函数\n\t var handler = function handler(scope) {\n\t if (utils.isNull(scope)) scope = {};\n\t handler.directives.forEach(function (directive) {\n\t directive.scope = scope;\n\t directive.execute(scope);\n\t }, this);\n\t handler.children.forEach(function (childHandler) {\n\t childHandler(scope);\n\t }, this);\n\t };\n\t //--\n\t handler.dispose = function () {\n\t handler.directives.forEach(function (directive) {\n\t directive.unbind();\n\t }, this);\n\t handler.children.forEach(function (childHandler) {\n\t childHandler.dispose();\n\t }, this);\n\t };\n\t handler.node = node;\n\t //定义 children & directives \n\t handler.directives = [];\n\t handler.children = [];\n\t //编译相关指令\n\t if (options.element !== false) this._compileElement(handler, node);\n\t if (options.attribute !== false) this._compileAttributes(handler, node);\n\t this._bindHandler(handler);\n\t if (options.children !== false) this._compileChildren(handler, node);\n\t //返回编译后函数\n\t return handler;\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Compiler;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\tvar Expression = __webpack_require__(54);\n\t\n\t/**\n\t * 指令定义工场函数\n\t * @param {Object} classOptions 选项\n\t * @returns {Directive} 指令类\n\t */\n\tfunction Directive(classOptions) {\n\t //处理指令选项\n\t classOptions = classOptions || {};\n\t classOptions.type = classOptions.type || Directive.TA;\n\t classOptions.level = classOptions.level || Directive.LG;\n\t\n\t //生成指令类\n\t var DirectiveClass = new Class({\n\t\n\t $extends: classOptions,\n\t //指令构建函数\n\t constructor: function /*istanbul ignore next*/constructor(instanceOptions) {\n\t utils.copy(instanceOptions, this);\n\t },\n\t //挂载实例上的 options\n\t options: classOptions,\n\t //挂载实例核心方法\n\t bind: classOptions.bind || utils.noop,\n\t execute: classOptions.execute || function (scope) {\n\t this.scope = scope;\n\t if (this.options.type === Directive.TE) {\n\t return this.update();\n\t }\n\t var newValue = this.options.literal ? this.attribute.value : this.expression.execute(scope);\n\t if (!utils.deepEqual(this._value_, newValue)) {\n\t this.update(newValue, this._value_);\n\t this._value_ = newValue;\n\t }\n\t },\n\t update: classOptions.update || utils.noop,\n\t unbind: classOptions.unbind || utils.noop,\n\t //挂载指令常用的类型\n\t utils: utils,\n\t Expression: Expression\n\t });\n\t //向指令类添加「指令定义信息」\n\t DirectiveClass.options = classOptions;\n\t utils.setPrototypeOf(DirectiveClass, classOptions);\n\t return DirectiveClass;\n\t}\n\t\n\t//指令类型\n\tDirective.TA = 'A';\n\tDirective.TE = 'E';\n\t\n\t//指令级别\n\tDirective.LP = 3000; //prevent\n\tDirective.LS = 2000; //statement\n\tDirective.LE = 1000; //eleemtn\n\tDirective.LG = 0; //general\n\tDirective.LA = -1000; //any attribute\n\tDirective.LC = -2000; //cloak\n\t\n\tmodule.exports = Directive;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\t\n\t/**\n\t * 表达式类型,将字符串构析为可执行表达式实例\n\t */\n\tvar Expression = new Class({\n\t\n\t /**\n\t * 通过字符串构造一个表达式实例\n\t * @param {string} code 代码字符串\n\t * @param {boolean} mix 是否是混合代码\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(code, mix) {\n\t this.func = mix ? this._compileMixedCode(code) : this._compileCode(code);\n\t },\n\t\n\t /**\n\t * 编译普通表达式代码\n\t * @param {string} code 代码字符串\n\t * @returns {function} 编辑后的函数\n\t */\n\t _compileCode: function /*istanbul ignore next*/_compileCode(code) {\n\t code = this._escapeEOL(this._wrapCode(code));\n\t return this._createFunction(code);\n\t },\n\t\n\t /**\n\t * 编辑混合的表达式代码\n\t * @param {string} code 代码字符串\n\t * @returns {function} 编辑后的函数\n\t */\n\t _compileMixedCode: function /*istanbul ignore next*/_compileMixedCode(code) {\n\t var statements = this._parseMixedCode(code);\n\t code = this._escapeEOL(statements.join('+'));\n\t return this._createFunction(code);\n\t },\n\t\n\t /**\n\t * 通过符串代码创建一个可执行函数\n\t * @param {string} code 代码字符串\n\t * @returns {function} 创建的函数\n\t */\n\t _createFunction: function /*istanbul ignore next*/_createFunction(code) {\n\t var func = new Function('utils', 'scope', 'with(scope){return ' + code + '}');\n\t return func.bind(null, utils);\n\t },\n\t\n\t /**\n\t * 解析混合代码字符串\n\t * @param {string} code 混合代码字符串\n\t * @returns {Array} 解析后的「token」列表\n\t */\n\t _parseMixedCode: function /*istanbul ignore next*/_parseMixedCode(code) {\n\t var index = 0,\n\t length = code.length;\n\t var token = '',\n\t isExpr = false,\n\t tokens = [];\n\t while (index <= length) {\n\t var char = code[index++];\n\t var nextChar = code[index];\n\t if (utils.isNull(char)) {\n\t if (token.length > 0) {\n\t tokens.push('\"' + this._escapeCode(token) + '\"');\n\t }\n\t token = '';\n\t isExpr = false;\n\t } else if (!isExpr && char + nextChar == '{{') {\n\t if (token.length > 0) {\n\t tokens.push('\"' + this._escapeCode(token) + '\"');\n\t }\n\t token = '';\n\t isExpr = true;\n\t index++;\n\t } else if (isExpr && char + nextChar == '}}') {\n\t if (token.length > 0) {\n\t tokens.push(this._wrapCode(token));\n\t }\n\t token = '';\n\t isExpr = false;\n\t index++;\n\t } else {\n\t token += char;\n\t }\n\t }\n\t return tokens;\n\t },\n\t\n\t /**\n\t * 转义处理代码字符串\n\t * @param {string} code 源字符串\n\t * @returns {string} 处理后的字符串\n\t */\n\t _escapeCode: function /*istanbul ignore next*/_escapeCode(code) {\n\t return code.replace(/\"/, '\\\\\"').replace('\\r\\n', '\\\\r\\\\n').replace('\\n', '\\\\n');\n\t },\n\t\n\t /**\n\t * 转义换行符\n\t * @param {string} code 源字符串\n\t * @returns {string} 处理后的字符串\n\t */\n\t _escapeEOL: function /*istanbul ignore next*/_escapeEOL(code) {\n\t return code.replace(/\\n/gm, '\\\\\\n');\n\t },\n\t\n\t /**\n\t * 通过闭包和 try/cache 包裹代码\n\t * 将模板中错误的代码直接显示在「模板中用到的位置」,更易于定位错误。\n\t * @param {string} code 源字符串\n\t * @returns {string} 处理后的字符串\n\t */\n\t _wrapCode: function /*istanbul ignore next*/_wrapCode(code) {\n\t return '((function(){try{return (' + code + ')}catch(err){console.error(err);return err;}})())';\n\t },\n\t\n\t /**\n\t * 通过 scope 对象执行表达式\n\t * @param {Object} scope 上下文对象\n\t * @returns {Object} 执行结果\n\t */\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t if (utils.isNull(scope)) {\n\t scope = {};\n\t }\n\t return this.func.call(scope, scope);\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Expression;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = {\n\t '#text': __webpack_require__(56),\n\t 'each': __webpack_require__(57),\n\t 'if': __webpack_require__(59),\n\t 'prop': __webpack_require__(60),\n\t 'attr': __webpack_require__(61),\n\t 'on': __webpack_require__(62),\n\t 'html': __webpack_require__(63),\n\t 'text': __webpack_require__(64),\n\t 'prevent': __webpack_require__(65),\n\t 'id': __webpack_require__(66),\n\t 'cloak': __webpack_require__(67),\n\t 'show': __webpack_require__(68),\n\t 'model': __webpack_require__(69),\n\t 'focus': __webpack_require__(76),\n\t '*': __webpack_require__(77) //处理所有未知 attr\n\t};\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar Expression = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t type: Directive.TE,\n\t prefix: false,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.expr = new Expression(this.node.nodeValue, true);\n\t this.node.nodeValue = '';\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t var newValue = this.expr.execute(scope);\n\t if (this.node.nodeValue !== newValue) {\n\t this.node.nodeValue = newValue;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\t/*istanbul ignore next*/var _defineProperty = __webpack_require__(47);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar utils = __webpack_require__(3);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LS + 1, //比 if 要高一个权重\n\t final: true,\n\t literal: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.mountNode = document.createTextNode('');\n\t this.node.parentNode.insertBefore(this.mountNode, this.node);\n\t //虽然,bind 完成后,也会进行 attribute 的移除,\n\t //但 each 指令必须先移除,否再进行 item 编译时 each 还会生效\n\t this.node.removeAttribute(this.attribute.name);\n\t this.node.parentNode.removeChild(this.node);\n\t this.parseExpr();\n\t this.eachItems = {};\n\t },\n\t\n\t parseExpr: function /*istanbul ignore next*/parseExpr() {\n\t this.eachType = this.attribute.value.indexOf(' in ') > -1 ? 'in' : 'of';\n\t var tokens = this.attribute.value.split(' ' + this.eachType + ' ');\n\t var fnText = /*istanbul ignore next*/'with(scope){utils.each(' + tokens[1] + ',fn.bind(this,' + tokens[1] + '))}';\n\t this.each = new Function('utils', 'scope', 'fn', fnText).bind(null, this.utils);\n\t var names = tokens[0].split(',').map(function (name) {\n\t return name.trim();\n\t });\n\t if (this.eachType == 'in') {\n\t this.keyName = names[0];\n\t this.valueName = names[1];\n\t } else {\n\t this.keyName = names[1];\n\t this.valueName = names[0];\n\t }\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var currentEachKeys = [];\n\t var itemsFragment = document.createDocumentFragment();\n\t var self = this;\n\t this.each(scope, function (eachTarget, key) {\n\t //创建新 scope,必须选创建再设置 prototype 或采用定义「属性」的方式\n\t //因为指令参数指定的名称有可能和 scope 原有变量冲突\n\t //将导致针对 watch 变量的赋值,从引用发循环\n\t var newScope = new Scope(this.scope);\n\t if (self.keyName) {\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(newScope, self.keyName, {\n\t /*istanbul ignore next*/get: function get() {\n\t return key;\n\t }\n\t });\n\t }\n\t //value 采用「属性」进行代理,否则将会使「双向」绑定无把回设值\n\t if (self.valueName) {\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(newScope, self.valueName, {\n\t /*istanbul ignore next*/get: function get() {\n\t return eachTarget[key];\n\t },\n\t /*istanbul ignore next*/set: function set(value) {\n\t eachTarget[key] = value;\n\t }\n\t });\n\t }\n\t var oldItem = this.eachItems[key];\n\t if (oldItem) {\n\t oldItem.handler(newScope);\n\t } else {\n\t var newItem = {};\n\t //创建新元素\n\t newItem.node = this.node.cloneNode(true);\n\t itemsFragment.appendChild(newItem.node);\n\t newItem.handler = this.compiler.compile(newItem.node);\n\t newItem.handler(newScope);\n\t this.eachItems[key] = newItem;\n\t }\n\t currentEachKeys.push(key);\n\t }.bind(this));\n\t utils.each(this.eachItems, function (key, item) {\n\t if (currentEachKeys.some(function (k) /*istanbul ignore next*/{\n\t return k == key;\n\t })) return;\n\t if (item.node.parentNode) {\n\t item.node.parentNode.removeChild(item.node);\n\t }\n\t delete /*istanbul ignore next*/_this.eachItems[key];\n\t }, this);\n\t if (itemsFragment.childNodes.length > 0) {\n\t this.mountNode.parentNode.insertBefore(itemsFragment, this.mountNode);\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar utils = __webpack_require__(3);\n\t\n\tvar Scope = function Scope(parent, props) {\n\t //新的 scope 因为「继承」了 _observer_ \n\t //所以在新 scope 上进行双向绑定时,将将值成功回写\n\t //如果有天不须用 utils.cteate 继承法,需要注意 _observer_ \n\t //或在新 scope 上 defineProperty 代理 parentScope\n\t var scope = utils.create(parent);\n\t utils.copy(props, scope);\n\t //将 func 绑定到原 scope 上;\n\t utils.each(parent, function (key, value) {\n\t if (!utils.isFunction(value)) return;\n\t scope[key] = value.bind(parent);\n\t });\n\t return scope;\n\t};\n\t\n\tmodule.exports = Scope;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LS,\n\t final: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.mountNode = document.createTextNode('');\n\t this.node.parentNode.insertBefore(this.mountNode, this.node);\n\t //虽然,bind 完成后,也会进行 attribute 的移除,\n\t //但 if 指令必须先移除,否再进行 item 编译时 if 还会生效\n\t this.node.removeAttribute(this.attribute.name);\n\t this.node.parentNode.removeChild(this.node);\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var newValue = this.expression.execute(scope);\n\t if (newValue) {\n\t //如果新计算的结果为 true 才执行 \n\t this._handler = this._handler || this.compiler.compile(this.node);\n\t this._handler(scope);\n\t var node = this.node.$substitute || this.node;\n\t if (!node.parentNode) {\n\t this.mountNode.parentNode.insertBefore(node, this.mountNode);\n\t }\n\t } else {\n\t var _node = this.node.$substitute || this.node;\n\t if (_node.parentNode) _node.parentNode.removeChild(_node);\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(value) {\n\t var target = this.node.$target || this.node;\n\t target[this.decorates[0]] = value;\n\t }\n\t // execute: function (scope) {\n\t // this.scope = scope;\n\t // let newValue = this.expression.execute(scope);\n\t // let target = this.node.$target || this.node;\n\t // target[this.decorates[0]] = newValue;\n\t // }\n\t});\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(value) {\n\t var target = this.node.$target || this.node;\n\t if (target.setAttribute) {\n\t target.setAttribute(this.decorates[0], value);\n\t } else {\n\t target[this.decorates[0]] = value;\n\t }\n\t }\n\t});\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t literal: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t var attrValue = this.attribute.value || '';\n\t if (attrValue.indexOf('(') < 0 && attrValue.indexOf(')') < 0) {\n\t attrValue += '($event)';\n\t }\n\t this.expr = new this.Expression(attrValue);\n\t var eventTarget = this.node.$target || this.node;\n\t this.emiter = new EventEmitter(eventTarget);\n\t this.emiter.addListener(this.decorates[0], function (event) {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.expr.execute(new Scope(this.scope, {\n\t $event: event\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(newValue) {\n\t this.node.innerHTML = newValue;\n\t }\n\t});\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(newValue) {\n\t this.node.innerText = newValue;\n\t }\n\t});\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LP,\n\t final: true\n\t});\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t literal: true,\n\t\n\t update: function /*istanbul ignore next*/update(id) {\n\t if (id in this.scope) {\n\t throw new Error('Conflicting component id `' + id + '`');\n\t }\n\t this.scope[id] = this.node.$target || this.node;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LC,\n\t literal: true,\n\t prefix: false,\n\t\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.node.removeAttribute(this.attribute.name);\n\t }\n\t\n\t});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(value) {\n\t this.node.style.display = value ? '' : 'none';\n\t }\n\t});\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar SelectDirective = __webpack_require__(70);\n\tvar EditableDirective = __webpack_require__(71);\n\tvar InputDirective = __webpack_require__(72);\n\tvar RadioDirective = __webpack_require__(73);\n\tvar CheckboxDirective = __webpack_require__(74);\n\tvar PropDirective = __webpack_require__(75);\n\t\n\tvar Directive = function Directive(options) {\n\t var node = options.node;\n\t var tagName = node.tagName;\n\t if (options.decorates[0]) {\n\t return new PropDirective(options);\n\t } else if (tagName == 'INPUT') {\n\t var type = node.getAttribute('type');\n\t if (type == 'radio') {\n\t return new RadioDirective(options);\n\t } else if (type == 'checkbox') {\n\t return new CheckboxDirective(options);\n\t } else {\n\t return new InputDirective(options);\n\t }\n\t } else if (tagName == 'TEXTAREA') {\n\t return new InputDirective(options);\n\t } else if (tagName == 'SELECT') {\n\t return new SelectDirective(options);\n\t } else if (node.isContentEditable) {\n\t return new EditableDirective(options);\n\t } else {\n\t throw new Error( /*istanbul ignore next*/'Directive `model` cannot be used on `' + tagName + '`');\n\t }\n\t};\n\t\n\t//手动添加 classOptions\n\tDirective.options = {\n\t level: Directive.LA\n\t};\n\t\n\tmodule.exports = Directive;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t final: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.node.removeAttribute(this.attribute.name);\n\t this._handler = this.compiler.compile(this.node);\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('change', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t var selectedOptions = this.node.selectedOptions;\n\t var value = this.node.multiple ? [].slice.call(selectedOptions).map(function (option) {\n\t return option.value;\n\t }, this) : selectedOptions[0].value;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: value\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t this._handler(scope);\n\t var value = this.expression.execute(scope);\n\t if (!this.utils.isArray(value)) value = [value];\n\t [].slice.call(this.node.options).forEach(function (option) {\n\t option.selected = value.indexOf(option.value) > -1;\n\t }, this);\n\t }\n\t\n\t});\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('input', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.innerHTML\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var value = this.expression.execute(scope);\n\t if (this.node.innerHTML !== value) {\n\t this.node.innerHTML = value;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('input', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.value\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var value = this.expression.execute(scope);\n\t if (this.node.value !== value) {\n\t this.node.value = value;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('change', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.value\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t var value = this.expression.execute(scope);\n\t this.node.checked = value == this.node.value;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('change', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t var value = this.expression.execute(this.scope);\n\t if (this.utils.isArray(value) && this.node.checked) {\n\t value.push(this.node.value);\n\t } else if (this.utils.isArray(value) && !this.node.checked) {\n\t var index = value.indexOf(this.node.value);\n\t value.splice(index, 1);\n\t } else {\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.checked\n\t }));\n\t }\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t var value = this.expression.execute(scope);\n\t if (this.utils.isArray(value)) {\n\t this.node.checked = value.indexOf(this.node.value) > -1;\n\t } else {\n\t this.node.checked = value;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\tvar Scope = __webpack_require__(58);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.target = this.node.$target;\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.bindProp = this.decorates[0];\n\t if (!this.target) {\n\t throw new Error( /*istanbul ignore next*/'Directive `model:' + this.bindProp + '` cannot be used on `' + this.node.tagName + '`');\n\t }\n\t this.watcher = this.target.$watch(this.bindProp, function (value) {\n\t if ( /*istanbul ignore next*/_this.utils.isNull( /*istanbul ignore next*/_this.scope)) return;\n\t /*istanbul ignore next*/_this.backExpr.execute(new Scope( /*istanbul ignore next*/_this.scope, {\n\t _value_: value\n\t }));\n\t });\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.target.$unWatch(this.watcher);\n\t },\n\t\n\t update: function /*istanbul ignore next*/update(value) {\n\t this.target[this.bindProp] = value;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\tmodule.exports = new Directive({\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var state = this.expression.execute(scope);\n\t setTimeout(function () {\n\t if (state) /*istanbul ignore next*/_this.node.focus();else /*istanbul ignore next*/_this.node.blur();\n\t }, 0);\n\t }\n\t});\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(53);\n\t\n\t/**\n\t * 通用的 attribute 指令\n\t * 用于所有 attribute 的处理\n\t * 例如:\n\t *
    \n\t *
    \n\t */\n\tmodule.exports = new Directive({\n\t level: Directive.LA,\n\t prefix: false,\n\t literal: true,\n\t remove: false,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.computedName = this.attribute.name;\n\t this.computedValue = this.attribute.value;\n\t this.nameExpr = new this.Expression(this.attribute.name, true);\n\t this.valueExpr = new this.Expression(this.attribute.value, true);\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var target = this.node.$target || this.node;\n\t var newComputedName = this.nameExpr.execute(scope);\n\t if (this.computedName !== newComputedName) {\n\t //移除旧名称\n\t if (target.removeAttribute) {\n\t target.removeAttribute(this.computedName);\n\t }\n\t //设置新名称\n\t this.computedName = newComputedName;\n\t if (!this.utils.isNull(this.computedName) && this.computedName.length > 0) {\n\t if (target.setAttribute) {\n\t target.setAttribute(this.computedName, this.computedValue || '');\n\t }\n\t }\n\t }\n\t var newComputeValue = this.valueExpr.execute(scope);\n\t if (this.computedValue !== newComputeValue) {\n\t this.computedValue = newComputeValue;\n\t if (target.setAttribute) {\n\t target.setAttribute(this.computedName, this.computedValue || '');\n\t } else {\n\t target[this.computedName] = this.computedValue;\n\t }\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar Observer = __webpack_require__(6);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Compiler = __webpack_require__(52);\n\t\n\t/**\n\t * 模板类\n\t * 可能通过 element 作为参数,创建一个模板实例\n\t */\n\tvar Template = new Class({\n\t\n\t $extends: EventEmitter,\n\t\n\t /**\n\t * 构建一个模板板实例\n\t * @param {HTMLNode} element HTML 元素\n\t * @param {Object} options 选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(element, options) {\n\t options = options || {};\n\t EventEmitter.call(this);\n\t this.options = options;\n\t this.element = element;\n\t this.compiler = options.compiler || new Compiler(options);\n\t this.render = this.compiler.compile(this.element);\n\t this.update = this.update.bind(this);\n\t this._update = this._update.bind(this);\n\t this._updateTimer = 0;\n\t },\n\t\n\t /**\n\t * 更新当前模板 (会过滤不必要的更新)\n\t * @returns {void} 无返回\n\t */\n\t update: function /*istanbul ignore next*/update() {\n\t if (this._updateTimer) {\n\t clearTimeout(this._updateTimer);\n\t this._updateTimer = null;\n\t }\n\t this._updateTimer = setTimeout(this._update, 0);\n\t },\n\t\n\t /**\n\t * 更新当前模板内部方法 \n\t * @returns {void} 无返回\n\t */\n\t _update: function /*istanbul ignore next*/_update() {\n\t if (!this._updateTimer || !this.observer) return;\n\t this.emit('update', this);\n\t this.render(this.observer.target);\n\t this._onBind();\n\t },\n\t\n\t /**\n\t * 在绑定成功时\n\t * @returns {void} 无返回\n\t */\n\t _onBind: function /*istanbul ignore next*/_onBind() {\n\t if (this._bound) return;\n\t this._bound = true;\n\t this.emit('bind', this);\n\t },\n\t\n\t /**\n\t * 将模板绑定到一个 scope\n\t * @param {Object} scope 绑定的上下文对象\n\t * @param {boolean} disableFirst 是否禁用第一次的自动渲染\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind(scope, disableFirst) {\n\t if (!scope) return;\n\t this.unbind();\n\t this.observer = new Observer(scope, {\n\t root: this.options.root\n\t });\n\t scope.$self = scope;\n\t this.observer.on('change', this.update);\n\t if (disableFirst) {\n\t this._onBind();\n\t } else {\n\t this.update();\n\t }\n\t },\n\t\n\t /**\n\t * 解绑定\n\t * @returns {void} 无返回\n\t */\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t if (!this.observer) return;\n\t this.observer.removeListener('change', this.update);\n\t this.observer.clearReference();\n\t this.observer = null;\n\t },\n\t\n\t /**\n\t * 释放\n\t * @returns {void} 无返回\n\t */\n\t dispose: function /*istanbul ignore next*/dispose() {\n\t this.unbind();\n\t this.render.dispose();\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Template;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Component = __webpack_require__(80);\n\tvar components = __webpack_require__(82);\n\tvar directives = __webpack_require__(51).directives;\n\t\n\tComponent.components = components;\n\tComponent.Component = Component;\n\t\n\tComponent.component = function (name, component) {\n\t if (!component) return components[name];\n\t components[name] = component;\n\t};\n\t\n\tComponent.directive = function (name, directive) {\n\t if (!directive) return directives[name];\n\t directives[name] = directive;\n\t};\n\t\n\tmodule.exports = Component;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\t/*istanbul ignore next*/var _defineProperty = __webpack_require__(47);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Class = __webpack_require__(4);\n\tvar Template = __webpack_require__(51);\n\tvar Watcher = __webpack_require__(5);\n\tvar utils = __webpack_require__(3);\n\tvar EventEmitter = __webpack_require__(50);\n\tvar Observer = __webpack_require__(6);\n\tvar ComponentDirective = __webpack_require__(81);\n\t\n\t/**\n\t * 组件类\n\t * 用于定义一个新的组件\n\t * @param {Object} classOpts 类选项\n\t * @returns {Component} 组件类\n\t */\n\tfunction Component(classOpts) {\n\t\n\t //处理组件选项\n\t classOpts = classOpts || {};\n\t\n\t //处理「继承」,目前的机制,只能用「合并类选项」\n\t var mixes = classOpts.mixes;\n\t delete classOpts.mixes;\n\t if (mixes && !utils.isArray(mixes)) {\n\t mixes = [mixes];\n\t } else {\n\t mixes = [];\n\t }\n\t var extendComponent = classOpts.extend || Component;\n\t delete classOpts.extend;\n\t //extend 会覆盖 mixes 中的同名成员\n\t mixes.push(extendComponent);\n\t //classOpts 会覆盖 extend 或 mixes 中的同名成员\n\t mixes.push(classOpts);\n\t var mixedClassOpts = {};\n\t mixes.forEach(function (mixItem) {\n\t if (mixItem instanceof Component || mixItem == Component) {\n\t mixItem = mixItem.$options || {};\n\t }\n\t utils.mix(mixedClassOpts, mixItem);\n\t });\n\t classOpts = mixedClassOpts;\n\t\n\t /**\n\t * 定义组件类\n\t * 可以通过 new ComponentClass() 创建组件实例\n\t */\n\t var ComponentClass = new Class({\n\t $extends: extendComponent,\n\t\n\t /**\n\t * 组件类构造函数\n\t * @param {object} instanceOpts 实例选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(instanceOpts) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t if (this == window) return new this.$class(instanceOpts);\n\t EventEmitter.call(this);\n\t instanceOpts = instanceOpts || {};\n\t //创建组件实例时可以给实例添加成员\n\t utils.each(instanceOpts, function (key, value) {\n\t if (key in /*istanbul ignore next*/_this) return;\n\t /*istanbul ignore next*/_this[key] = value;\n\t });\n\t this._onTemplateUpdate_ = this._onTemplateUpdate_.bind(this);\n\t this._createdData_(classOpts.data);\n\t this._createProperties_(classOpts.properties || classOpts.props);\n\t this._createWatches_(classOpts.watches || classOpts.watch);\n\t this.$directives = this.$directives || {};\n\t this._importDirectives_(classOpts.directives);\n\t this.$components = this.$components || {};\n\t this._importComponents_(__webpack_require__(82));\n\t this._importComponents_({\n\t 'self': ComponentClass\n\t });\n\t this._importComponents_(classOpts.components);\n\t utils.defineFreezeProp(this, '$children', []);\n\t if (instanceOpts.parent) this.$setParent(instanceOpts.parent);\n\t this.$callHook('init', [instanceOpts]);\n\t Observer.observe(this);\n\t if (classOpts.element) {\n\t this.$mount();\n\t } else {\n\t this.$compile();\n\t }\n\t },\n\t\n\t /**\n\t * 设定父组件\n\t * @param {Object} parent 父组件\n\t * @returns {void} 无返回\n\t */\n\t $setParent: function /*istanbul ignore next*/$setParent(parent) {\n\t if (this.$parent === parent) return;\n\t if (this.$parent) {\n\t this.$parent.$removeChild(this);\n\t }\n\t if (parent) {\n\t parent.$addChild(this);\n\t }\n\t },\n\t\n\t /**\n\t * 添加子组件\n\t * @param {Object} child 子组件\n\t * @returns {void} 无返回\n\t */\n\t $addChild: function /*istanbul ignore next*/$addChild(child) {\n\t if (!(child instanceof Component)) return;\n\t this.$children.push(child);\n\t utils.defineFreezeProp(child, '$parent', this);\n\t utils.defineFreezeProp(child, '$root', this.$root || this);\n\t },\n\t\n\t /**\n\t * 移除子组件\n\t * @param {Object} child 子组件\n\t * @returns {void} 无返回\n\t */\n\t $removeChild: function /*istanbul ignore next*/$removeChild(child) {\n\t var index = this.$children.indexOf(child);\n\t this.$children.splice(index, 1);\n\t utils.defineFreezeProp(child, '$parent', null);\n\t //utils.defineFreezeProp(child, '$root', null);\n\t },\n\t\n\t /**\n\t * 获取根组件, 为了能通过 polyfill 处理 IE8 暂不用这种方式\n\t */\n\t get $root() {\n\t if (this.$parent) {\n\t return this.$parent.$root;\n\t } else {\n\t return this;\n\t }\n\t },\n\t\n\t /**\n\t * 导入用到的子组件类\n\t * @param {Object} components 引入的组件\n\t * @returns {void} 无返回\n\t */\n\t _importComponents_: function /*istanbul ignore next*/_importComponents_(components) {\n\t utils.each(components, function (name, component) {\n\t if (!component) return;\n\t this.$components[name] = component;\n\t this.$directives[name] = new ComponentDirective({\n\t name: name,\n\t component: component,\n\t parent: this\n\t });\n\t }, this);\n\t },\n\t\n\t /**\n\t * 导入一个用到的指令\n\t * @param {Object} directives 引入的指令\n\t * @returns {void} 无返回\n\t */\n\t _importDirectives_: function /*istanbul ignore next*/_importDirectives_(directives) {\n\t utils.each(directives, function (name, directive) {\n\t if (!directive) return;\n\t this.$directives[name] = directive;\n\t }, this);\n\t },\n\t\n\t /**\n\t * 调用生命周期 hook\n\t * @param {string} name 调用的 hook 名称\n\t * @param {Array} args 调用 hook 的参数列表\n\t * @returns {void} 无反回\n\t */\n\t $callHook: function /*istanbul ignore next*/$callHook(name, args) {\n\t var hook = this[/*istanbul ignore next*/'on' + utils.firstUpper(name)];\n\t if (!utils.isFunction(hook)) return;\n\t hook.apply(this, args || []);\n\t this.$emit( /*istanbul ignore next*/'$' + name, args);\n\t },\n\t\n\t /**\n\t * 创建数据对象\n\t * @param {Object} data 组件数据对象\n\t * @returns {void} 无返回\n\t */\n\t _createdData_: function /*istanbul ignore next*/_createdData_(data) {\n\t if (utils.isFunction(data)) {\n\t this.$data = data.call(this);\n\t } else {\n\t this.$data = data || {};\n\t }\n\t utils.each(this.$data, function (name) {\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(this, name, {\n\t configurable: true,\n\t enumerable: true,\n\t get: function /*istanbul ignore next*/get() {\n\t if (!this.$data) return;\n\t return this.$data[name];\n\t },\n\t set: function /*istanbul ignore next*/set(value) {\n\t if (!this.$data) return;\n\t this.$data[name] = value;\n\t }\n\t });\n\t }, this);\n\t },\n\t\n\t /**\n\t * 创建组件属性\n\t * @param {Object} properties 属性定义对象\n\t * @returns {void} 无返回\n\t */\n\t _createProperties_: function /*istanbul ignore next*/_createProperties_(properties) {\n\t this.$properties = {};\n\t utils.each(properties, function (name, descriptor) {\n\t if (utils.isFunction(descriptor)) {\n\t //get 简化写法\n\t descriptor = {\n\t get: descriptor\n\t };\n\t } else if (!utils.isObject(descriptor)) {\n\t //基本类型\n\t descriptor = {\n\t value: descriptor\n\t };\n\t } else {\n\t //通过 descriptor 定义 get/set/value\n\t //不能直接用 descriptor,\n\t //因为为会导到多个组件实例间的影响\n\t descriptor = utils.copy(descriptor);\n\t }\n\t //如果 get/set 都没有,则自动生成\n\t var hasGetterOrSetter = !!descriptor.get || !!descriptor.set;\n\t if (!hasGetterOrSetter) {\n\t descriptor.get = function () {\n\t return descriptor.value;\n\t };\n\t descriptor.set = function (value) {\n\t descriptor.value = value;\n\t };\n\t }\n\t //定义为属性\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(this, name, {\n\t configurable: true,\n\t enumerable: true,\n\t get: function /*istanbul ignore next*/get() {\n\t if (!descriptor.get) {\n\t throw new Error('Property `' + name + '` cannot be read');\n\t }\n\t return descriptor.get.call(this);\n\t },\n\t set: function /*istanbul ignore next*/set(value) {\n\t if (!descriptor.set) {\n\t throw new Error('Property `' + name + '` cannot be written');\n\t }\n\t if (descriptor.test && !descriptor.test(value)) {\n\t throw new Error('Invalid value `' + value + '` for property `' + name + '`');\n\t }\n\t descriptor.set.call(this, value);\n\t if (this._observer_) {\n\t this._observer_.emitChange({\n\t path: name,\n\t value: value\n\t });\n\t }\n\t }\n\t });\n\t this.$properties[name] = descriptor;\n\t }, this);\n\t },\n\t\n\t /**\n\t * 创建监控\n\t * 为什么用 watches 而不是 watchers 或其它?\n\t * 因为,这里仅是「监控配置」并且是「复数」\n\t * @param {Object} watches 监控定义对象\n\t * @returns {void} 无返回\n\t */\n\t _createWatches_: function /*istanbul ignore next*/_createWatches_(watches) {\n\t this._watchers_ = this._watchers_ || [];\n\t utils.each(watches, function (name, handler) {\n\t this.$watch(name, handler);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 在模板发生更新时\n\t * @returns {void} 无返回\n\t */\n\t _onTemplateUpdate_: function /*istanbul ignore next*/_onTemplateUpdate_() {\n\t this._watchers_.forEach(function (watcher) {\n\t watcher.calc();\n\t }, this);\n\t },\n\t\n\t /**\n\t * 添加一个监控\n\t * @param {string|function} path 计算函数或路径\n\t * @param {function} handler 处理函数\n\t * @returns {void} 无返回\n\t */\n\t $watch: function /*istanbul ignore next*/$watch(path, handler) {\n\t if (!utils.isFunction(handler)) return;\n\t var calcer = path;\n\t if (!utils.isFunction(path)) {\n\t calcer = function /*istanbul ignore next*/calcer() {\n\t return utils.getByPath(this, path);\n\t };\n\t }\n\t var watcher = new Watcher(calcer.bind(this), handler.bind(this));\n\t this._watchers_.push(watcher);\n\t return watcher;\n\t },\n\t\n\t /**\n\t * 取消一个 watcher 对象\n\t * @param {object} watcher 监控对象实例\n\t * @returns {void} 无返回\n\t */\n\t $unWatch: function /*istanbul ignore next*/$unWatch(watcher) {\n\t var index = this._watchers_.findIndex(function (w) /*istanbul ignore next*/{\n\t return w === watcher;\n\t });\n\t this._watchers_.splice(index, 1);\n\t },\n\t\n\t /**\n\t * 创建元素\n\t * @returns {void} 无返回\n\t */\n\t _createElement_: function /*istanbul ignore next*/_createElement_() {\n\t if (this._created_) return;\n\t this._created_ = true;\n\t this.$callHook('create');\n\t utils.defineFreezeProp(this, '$element', this.element || ComponentClass.$template.cloneNode(true));\n\t if (!this.$element || this.$element.nodeName === '#text') {\n\t throw new Error('Invalid component template');\n\t }\n\t this.$callHook('created');\n\t },\n\t\n\t /**\n\t * 编译自身模板并完成绑定\n\t * @returns {void} 无返回\n\t */\n\t $compile: function /*istanbul ignore next*/$compile() {\n\t if (this._compiled_) return;\n\t this._compiled_ = true;\n\t this._createElement_();\n\t utils.defineFreezeProp(this, '_template_', new Template(this.$element, {\n\t directives: this.$directives,\n\t root: true\n\t }));\n\t this._template_.bind(this);\n\t this._template_.on('update', this._onTemplateUpdate_);\n\t this._template_.on('bind', function () {\n\t if (!this.deferReady) this.$callHook('ready');\n\t }.bind(this));\n\t },\n\t\n\t /**\n\t * 向 DOM tree 中挂截组件\n\t * @param {HTMLNode} mountNode 挂载点元素\n\t * @param {append} append 是否 append 到挂载元素内\n\t * @returns {void} 无返回 \n\t */\n\t $mount: function /*istanbul ignore next*/$mount(mountNode, append) {\n\t if (this._mounted_) return;\n\t this.$compile();\n\t this.$callHook('mount');\n\t if (mountNode) {\n\t mountNode.$substitute = this.$element;\n\t this.$element._mountNode = mountNode;\n\t if (append) {\n\t mountNode.appendChild(this.$element);\n\t } else if (mountNode.parentNode) {\n\t mountNode.parentNode.insertBefore(this.$element, mountNode);\n\t }\n\t }\n\t this._mounted_ = true;\n\t this._removed_ = false;\n\t this.$callHook('mounted');\n\t },\n\t\n\t /**\n\t * 将组件添加到指定容器元素内\n\t * @param {HTMLNode} node 容器元素\n\t * @returns {void} 无返回 \n\t */\n\t $appendTo: function /*istanbul ignore next*/$appendTo(node) {\n\t this.$mount(node, true);\n\t },\n\t\n\t /**\n\t * 移除组件\n\t * @returns {void} 无返回\n\t */\n\t $remove: function /*istanbul ignore next*/$remove() {\n\t if (this._removed_ || !this._mounted_) return;\n\t this.$callHook('remove');\n\t if (this.$element.parentNode) {\n\t this.$element.parentNode.removeChild(this.$element);\n\t }\n\t this._removed_ = true;\n\t this._mounted_ = false;\n\t this.$callHook('removed');\n\t },\n\t\n\t /**\n\t * 触发自身的一个事件并向上冒泡\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @returns {void} 无返回\n\t */\n\t $dispatch: function /*istanbul ignore next*/$dispatch(name, data) {\n\t var stopPropagation = this.$emit(name, data);\n\t if (!stopPropagation && this.$parent) {\n\t this.$parent.$dispatch(name, data);\n\t }\n\t },\n\t\n\t /**\n\t * 触发自身的一个事件并向下广播\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @returns {void} 无返回\n\t */\n\t $broadcast: function /*istanbul ignore next*/$broadcast(name, data) {\n\t var stopPropagation = this.$emit(name, data);\n\t if (!stopPropagation && this.$children && this.$children.length > 0) {\n\t this.$children.forEach(function (child) {\n\t child.$broadcast(name, data);\n\t }, this);\n\t }\n\t },\n\t\n\t /**\n\t * 释放组件\n\t * @returns {void} 无返回\n\t */\n\t $dispose: function /*istanbul ignore next*/$dispose() {\n\t this.$remove();\n\t this._emitter_.off();\n\t this.$children.forEach(function (child) {\n\t child.$dispose();\n\t }, this);\n\t if (this.$parent) {\n\t var index = this.$parent.$children.indexOf(this);\n\t this.$parent.$children.splice(index, 1);\n\t }\n\t this.$callHook('dispose');\n\t if (this._compiled_) {\n\t this._template_.unbind();\n\t }\n\t this.$callHook('disposed');\n\t for (var key in this) {\n\t delete this[key];\n\t }\n\t ['_observer_', '$element', '$children', '$parent', '_template_'].forEach(function (key) {\n\t delete this[key];\n\t }, this);\n\t utils.setPrototypeOf(this, null);\n\t }\n\t\n\t });\n\t\n\t //保存类选项\n\t ComponentClass.$options = classOpts;\n\t ComponentClass.$template = utils.parseDom(classOpts.template);\n\t\n\t //向 ComponentClass.prototype 上拷贝成员\n\t utils.copy(classOpts, ComponentClass.prototype);\n\t utils.copy(classOpts.methods, ComponentClass.prototype);\n\t\n\t //使 ComponentClass instanceof Component === true \n\t //IE9/10 下为 false,并且动态为 Component.prototype 添加的成员不会在 ComponentClass 上生效\n\t utils.setPrototypeOf(ComponentClass, Component.prototype);\n\t\n\t return ComponentClass;\n\t}\n\t\n\t//继承自 EventEmitter\n\tComponent.prototype = utils.create(EventEmitter.prototype);\n\t\n\t//组件扩展方法,简单封装 extends\n\tComponent.extend = function (classOpts) {\n\t return new Component(classOpts);\n\t};\n\t\n\t//定义扩展方法\n\tComponent.prototype.extend = function (classOpts) {\n\t classOpts = classOpts || {};\n\t classOpts.extend = this;\n\t return new Component(classOpts);\n\t};\n\t\n\t//创建实例的方法\n\tComponent.prototype.create = function (instanceOpts) {\n\t return new this(instanceOpts);\n\t};\n\t\n\t//针对包括 element 组件类的启动方法\n\tComponent.prototype.start = function (instanceOpts) {\n\t if (!this.$options || !this.$options.element) {\n\t throw new Error('Start method cannot be called');\n\t }\n\t return this.create(instanceOpts);\n\t};\n\t\n\tmodule.exports = Component;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Template = __webpack_require__(51);\n\tvar Directive = Template.Directive;\n\t\n\t/**\n\t * 创建一个组件指令\n\t * @param {object} options 选项\n\t * @returns {object} 组件指令\n\t */\n\tfunction ComponentDirective(options) {\n\t\n\t return new Directive({\n\t type: Directive.TE,\n\t literal: true,\n\t final: true,\n\t level: Directive.LE,\n\t\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.component = new options.component({\n\t deferReady: true,\n\t parent: options.parent || this.scope\n\t });\n\t this.handleAttrs();\n\t this.node.$target = this.component;\n\t this.handler = this.compiler.compile(this.node, {\n\t element: false,\n\t children: false\n\t });\n\t this.handleContents();\n\t this.component.$mount(this.node);\n\t if (this.node.parentNode) {\n\t this.node.parentNode.removeChild(this.node);\n\t }\n\t },\n\t\n\t handleAttrs: function /*istanbul ignore next*/handleAttrs() {\n\t this.attrs = [].slice.call(this.node.attributes);\n\t var directiveRegexp = new RegExp('^' + this.prefix + ':', 'i');\n\t this.attrs.forEach(function (attr) {\n\t if (directiveRegexp.test(attr.name)) return;\n\t if (attr.name in this.component.$properties) return;\n\t this.component.$element.setAttribute(attr.name, attr.value);\n\t this.node.removeAttribute(attr.name);\n\t }, this);\n\t },\n\t\n\t handleContents: function /*istanbul ignore next*/handleContents() {\n\t this.placeHandlers = [];\n\t var places = [].slice.call(this.component.$element.querySelectorAll('[' + this.prefix + '\\\\:content]'));\n\t places.forEach(function (place) {\n\t //将内容插入到指定的「位置」\n\t var contents = null;\n\t var selector = place.getAttribute(this.prefix + ':content');\n\t if (!selector) {\n\t contents = [].slice.call(this.node.childNodes);\n\t } else {\n\t contents = [].slice.call(this.node.querySelectorAll(selector));\n\t }\n\t if (!contents || contents.length < 1) return;\n\t place.innerHTML = '';\n\t contents.forEach(function (content) {\n\t place.appendChild(content.cloneNode(true));\n\t }, this);\n\t //编译插入后的子「内容模板」\n\t var handler = this.compiler.compile(place);\n\t this.placeHandlers.push(handler);\n\t }, this);\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.handler(scope);\n\t if (!this._ready_) {\n\t this._ready_ = true;\n\t this.component.$callHook('ready');\n\t }\n\t this.placeHandlers.forEach(function (handler) {\n\t handler(scope);\n\t }, this);\n\t }\n\t\n\t });\n\t}\n\t\n\tmodule.exports = ComponentDirective;\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = {\n\t View: __webpack_require__(83)\n\t};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Component = __webpack_require__(80);\n\tvar utils = __webpack_require__(3);\n\t\n\t/**\n\t * 内置视图组件\n\t * 可以加载并显示其它组件,并可以指定「转场效果」\n\t */\n\tvar View = new Component({\n\t\n\t template: '
    ',\n\t\n\t properties: {\n\t\n\t /**\n\t * 显示到视图中的组件\n\t */\n\t component: {\n\t test: function /*istanbul ignore next*/test(value) {\n\t if (!value) return false;\n\t return value instanceof Component || utils.isString(value);\n\t },\n\t set: function /*istanbul ignore next*/set(component) {\n\t if (this._transitioning) return;\n\t this._transitioning = true;\n\t //如果 value 是字符串则尝试从 $parent.components 中获取组件类 \n\t if (utils.isString(component)) {\n\t if (this.$parent && this.$parent.$components) {\n\t this.component = this.$parent.$components[component];\n\t } else {\n\t this.component = null;\n\t }\n\t return;\n\t }\n\t //声明新旧组件变量\n\t var newComponentInstance = null;\n\t var oldComponentInstance = this.componentInstance;\n\t //创建新组件实例\n\t if (utils.isFunction(component)) {\n\t newComponentInstance = new component({\n\t parent: this\n\t });\n\t } else {\n\t component.$setParent(this);\n\t newComponentInstance = component;\n\t }\n\t //通过转场控制器进行转场准备\n\t this.transition.prep(newComponentInstance, oldComponentInstance);\n\t //挂载新组件实例\n\t newComponentInstance.$appendTo(this.$element);\n\t //通过转场控制器进行转场\n\t this.transition.go(newComponentInstance, oldComponentInstance, function () {\n\t //触发相关事件\n\t this.$emit('enter', newComponentInstance);\n\t this.$emit('leave', oldComponentInstance);\n\t //销毁旧组件实例\n\t if (oldComponentInstance) {\n\t oldComponentInstance.$dispose();\n\t }\n\t this._transitioning = false;\n\t }.bind(this));\n\t //暂存当前组件实例\n\t this.componentInstance = newComponentInstance;\n\t },\n\t get: function /*istanbul ignore next*/get() {\n\t return this._Component;\n\t }\n\t },\n\t\n\t /**\n\t * 视图的转场控制对象\n\t */\n\t transition: {\n\t get: function /*istanbul ignore next*/get() {\n\t return this._transition || View.transition;\n\t },\n\t set: function /*istanbul ignore next*/set(transition) {\n\t if (this._transitioning) return;\n\t if (!transition || utils.isFunction(transition.prep) && utils.isFunction(transition.go)) {\n\t if (this._transition && utils.isFunction(this._transition.clean)) {\n\t this._transition.clean(this);\n\t }\n\t if (transition && utils.isFunction(transition.init)) {\n\t transition.init(this);\n\t }\n\t this._transition = transition;\n\t } else {\n\t throw new Error('Invalid transition');\n\t }\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * 切换到指定的组件\n\t * @param {Component} component 组件\n\t * @param {transition} transition 转场控制组件\n\t * @returns {void} 无返回\n\t */\n\t switchTo: function /*istanbul ignore next*/switchTo(component, transition) {\n\t if (transition) {\n\t this.transition = transition;\n\t }\n\t this.component = component;\n\t }\n\t\n\t});\n\t\n\t/**\n\t * 默认转场设置\n\t */\n\tView.transition = {\n\t //init: function () { },\n\t //clean: function () { },\n\t\n\t /**\n\t * 转场开始前的准备\n\t * @param {Component} newComponent 新组件\n\t * @param {Component} oldComponent 旧组件\n\t * @returns {void} 无返回\n\t */\n\t prep: function /*istanbul ignore next*/prep(newComponent, oldComponent) {\n\t if (oldComponent) oldComponent.$element.style.display = 'none';\n\t },\n\t\n\t /**\n\t * 执行转场动画\n\t * @param {Component} newComponent 新组件\n\t * @param {Component} oldComponent 旧组件\n\t * @param {Function} done 完成后的回调\n\t * @returns {void} 无返回\n\t */\n\t go: function /*istanbul ignore next*/go(newComponent, oldComponent, done) {\n\t done();\n\t }\n\t};\n\t\n\tmodule.exports = View;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar items = __webpack_require__(85);\n\t\n\t__webpack_require__(86);\n\t\n\tvar Toolbar = new mokit.Component({\n\t template: __webpack_require__(88),\n\t props: {\n\t mditor: null\n\t },\n\t\n\t /*istanbul ignore next*/data: function data() {\n\t return {\n\t items: items.slice(0)\n\t };\n\t },\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t this.bindCommands();\n\t },\n\t\n\t\n\t watch: {\n\t /*istanbul ignore next*/items: function items() {\n\t this.bindCommands();\n\t }\n\t },\n\t\n\t /*istanbul ignore next*/bindCommands: function bindCommands() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t if (!this.mditor) return;\n\t this.items.forEach(function (item) {\n\t /*istanbul ignore next*/_this.mditor.removeCommand(item.name);\n\t /*istanbul ignore next*/_this.mditor.addCommand(item);\n\t });\n\t },\n\t /*istanbul ignore next*/isActive: function isActive(item) {\n\t return this.mditor && item.state && this.mditor[item.state];\n\t },\n\t /*istanbul ignore next*/exec: function exec(name, event) {\n\t event.preventDefault();\n\t this.mditor.execCommand(name, event);\n\t },\n\t /*istanbul ignore next*/getItem: function getItem(name) {\n\t return this.items.find(function (item) /*istanbul ignore next*/{\n\t return item.name === name;\n\t });\n\t },\n\t /*istanbul ignore next*/removeItem: function removeItem(name) {\n\t var index = this.items.findIndex(function (item) /*istanbul ignore next*/{\n\t return item.name === name;\n\t });\n\t return this.items.splice(index, 1);\n\t },\n\t /*istanbul ignore next*/addItem: function addItem(item) {\n\t this.items.push(item);\n\t },\n\t /*istanbul ignore next*/replaceItem: function replaceItem(name, newItem) {\n\t var index = this.items.findIndex(function (item) /*istanbul ignore next*/{\n\t return item.name === name;\n\t });\n\t var oldItem = this.items.splice(index, 1);\n\t this.items.splice(index, 0, newItem);\n\t return oldItem;\n\t }\n\t});\n\t\n\tmodule.exports = Toolbar;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = [{\n\t name: 'bold',\n\t title: '粗体',\n\t key: 'shift+alt+b',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('**', '**');\n\t }\n\t}, {\n\t name: 'italic',\n\t title: '斜体',\n\t key: 'shift+alt+i',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('*', '*');\n\t }\n\t}, {\n\t name: 'underline',\n\t title: '下划线',\n\t key: 'shift+alt+e',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('', '');\n\t }\n\t}, {\n\t name: 'strikethrough',\n\t title: '删除线',\n\t key: 'shift+alt+d',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('~~', '~~');\n\t }\n\t}, {\n\t name: 'header',\n\t title: '标题',\n\t key: 'shift+alt+1',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('# ');\n\t }\n\t}, {\n\t name: 'quote',\n\t icon: 'quote-left',\n\t title: '引用',\n\t key: 'shift+alt+q',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var selectText = this.editor.getSelectText();\n\t if (selectText.length < 1) {\n\t this.editor.wrapSelectText('> ');\n\t return;\n\t }\n\t var textArray = selectText.split(this.EOL);\n\t var buffer = [];\n\t textArray.forEach(function (line) {\n\t buffer.push('> ' + line + ' ');\n\t });\n\t this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'code',\n\t title: '代码',\n\t key: 'shift+alt+c',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var lang = 'js' + this.EOL;\n\t var before = '```' + lang;\n\t var after = '``` ' + this.EOL;\n\t var text = this.editor.getSelectText().trim();\n\t if (text.length > 0) {\n\t text += this.EOL;\n\t }\n\t this.editor.setSelectText(text);\n\t this.editor.wrapSelectText(before, after);\n\t var range = this.editor.getSelectRange();\n\t var start = range.start - lang.length;\n\t var end = range.start - this.EOL.length;\n\t this.editor.setSelectRange(start, end);\n\t }\n\t}, {\n\t name: 'list-ol',\n\t title: '有序列表',\n\t key: 'shift+alt+o',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var selectText = this.editor.getSelectText();\n\t if (selectText.length < 1) {\n\t this.editor.wrapSelectText('1. ');\n\t return;\n\t }\n\t var textArray = selectText.split(this.EOL);\n\t var buffer = [];\n\t for (var i = 0; i < textArray.length; i++) {\n\t var line = textArray[i];\n\t buffer.push(i + 1 + '. ' + line);\n\t }\n\t this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'list-ul',\n\t title: '无序列表',\n\t key: 'shift+alt+u',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var selectText = this.editor.getSelectText();\n\t if (selectText.length < 1) {\n\t this.editor.wrapSelectText('- ');\n\t return;\n\t }\n\t var textArray = selectText.split(this.EOL);\n\t var buffer = [];\n\t textArray.forEach(function (line) {\n\t buffer.push('- ' + line);\n\t });\n\t this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'link',\n\t title: '链接',\n\t key: 'shift+alt+l',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var text = this.editor.getSelectText();\n\t if (!text || /^(https:|http:|ftp:|file:|mailto:|\\/|\\.)/i.test(text)) {\n\t this.editor.wrapSelectText('[link](', ')');\n\t if (!text) return;\n\t var range = this.editor.getSelectRange();\n\t var start = range.start - 6;\n\t this.editor.setSelectRange(start, start + 4);\n\t } else {\n\t this.editor.wrapSelectText('[', ']()');\n\t var _range = this.editor.getSelectRange();\n\t var index = _range.end + 2;\n\t this.editor.setSelectRange(index, index);\n\t }\n\t }\n\t}, {\n\t name: 'table',\n\t title: '表格',\n\t key: 'shift+alt+t',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var buffer = ['column1 | column2 | column3 ', '------- | ------- | ------- ', 'column1 | column2 | column3 ', 'column1 | column2 | column3 ', 'column1 | column2 | column3 '];\n\t this.editor.wrapSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'line',\n\t title: '分隔线',\n\t icon: 'minus',\n\t key: 'shift+alt+h',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('----' + this.EOL);\n\t }\n\t}, {\n\t name: 'image',\n\t title: '图片',\n\t key: 'shift+alt+p',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('![alt](', ')');\n\t }\n\t}, {\n\t name: 'help',\n\t title: '帮助',\n\t icon: 'question',\n\t key: 'shift+alt+/',\n\t /*istanbul ignore next*/handler: function handler() {\n\t window.open('http://mditor.com', '_blank');\n\t }\n\t}, {\n\t name: 'toggleFullScreen',\n\t title: '全屏',\n\t icon: 'arrows-alt',\n\t key: 'shift+alt+f',\n\t control: true,\n\t state: 'fullscreen',\n\t owner: function /*istanbul ignore next*/owner(mditor) {\n\t return mditor.$element;\n\t },\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.fullscreen = !this.fullscreen;\n\t }\n\t}, {\n\t name: 'togglePreview',\n\t title: '预览',\n\t icon: 'desktop',\n\t key: 'shift+alt+v',\n\t control: true,\n\t state: 'preview',\n\t owner: function /*istanbul ignore next*/owner(mditor) {\n\t return mditor.$element;\n\t },\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.preview = !this.preview;\n\t if (this.preview) {\n\t this._split = this.split;\n\t this.split = false;\n\t } else {\n\t this.split = this._split;\n\t }\n\t }\n\t}, {\n\t name: 'toggleSplit',\n\t title: '分屏',\n\t icon: 'columns',\n\t key: 'shift+alt+s',\n\t control: true,\n\t state: 'split',\n\t owner: function /*istanbul ignore next*/owner(mditor) {\n\t return mditor.$element;\n\t },\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.split = !this.split;\n\t if (this.split) {\n\t this.preview = false;\n\t }\n\t }\n\t}];\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 87 */,\n/* 88 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
      \\n \\n
    \"\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar EventEmitter = mokit.EventEmitter;\n\tvar utils = __webpack_require__(3);\n\tvar Stack = __webpack_require__(90);\n\tvar commands = __webpack_require__(91);\n\t\n\t__webpack_require__(92);\n\t\n\tvar ua = window.navigator.userAgent.toLowerCase();\n\tvar isIE = !!ua.match(/msie|trident\\/7|edge/);\n\t//const isWinPhone = ua.indexOf('windows phone') !== -1;\n\t//const isIOS = !isWinPhone && !!ua.match(/ipad|iphone|ipod/);\n\t\n\tmodule.exports = new mokit.Component({\n\t template: __webpack_require__(93),\n\t\n\t props: {\n\t mditor: null,\n\t value: null,\n\t markExp: null\n\t },\n\t\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.stack = new Stack();\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this.textareaEmitter = new EventEmitter( /*istanbul ignore next*/_this.textarea);\n\t /*istanbul ignore next*/_this.stack.init({\n\t value: /*istanbul ignore next*/_this.getValue()\n\t });\n\t }, 300);\n\t this._bindCommands();\n\t },\n\t /*istanbul ignore next*/_bindCommands: function _bindCommands() {\n\t /*istanbul ignore next*/var _this2 = this;\n\t\n\t commands.forEach(function (item) {\n\t /*istanbul ignore next*/_this2.mditor.removeCommand(item.name);\n\t /*istanbul ignore next*/_this2.mditor.addCommand(item);\n\t });\n\t },\n\t /*istanbul ignore next*/onCompositionStart: function onCompositionStart() {\n\t this._compositionLock = true;\n\t },\n\t /*istanbul ignore next*/onCompositionEnd: function onCompositionEnd() {\n\t /*istanbul ignore next*/var _this3 = this;\n\t\n\t this._compositionLock = false;\n\t setTimeout(function () /*istanbul ignore next*/{\n\t return (/*istanbul ignore next*/_this3.onInput()\n\t );\n\t }, 300);\n\t /**\n\t * 在输入中文时,输入法「候选词面板」位置会发生定位错误\n\t * 经过反复尝试发现了「规律」,第一次「侯选词」上屏后才会位置错误\n\t * 在「候选词」上屏后让输入框「失去焦点再获取焦点」可「规避」这个 Bug\n\t * 附上相关 issues\n\t * https://github.com/electron/electron/issues/8894\n\t * https://github.com/electron/electron/issues/4539\n\t */\n\t // this.textarea.blur();\n\t // this.textarea.focus();\n\t },\n\t /*istanbul ignore next*/onInput: function onInput() {\n\t /*istanbul ignore next*/var _this4 = this;\n\t\n\t this.$emit('input');\n\t if (this._changedTimer) {\n\t clearTimeout(this._changedTimer);\n\t this._changedTimer = null;\n\t }\n\t if (this._compositionLock) return;\n\t this._changedTimer = setTimeout(function () {\n\t if (! /*istanbul ignore next*/_this4._changedTimer) return;\n\t /*istanbul ignore next*/_this4.stack.push({\n\t value: /*istanbul ignore next*/_this4.getValue(),\n\t range: /*istanbul ignore next*/_this4.getSelectRange()\n\t });\n\t /*istanbul ignore next*/_this4.$emit('changed');\n\t }, 300);\n\t },\n\t /*istanbul ignore next*/undo: function undo() {\n\t /*istanbul ignore next*/var _this5 = this;\n\t\n\t var last = this.stack.last();\n\t var item = this.stack.undo();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t var valGap = last.value.length - item.value.length;\n\t this.value = item.value;\n\t if (last.range) {\n\t setTimeout(function () {\n\t var start = last.range.start - valGap;\n\t var end = last.range.end - valGap;\n\t /*istanbul ignore next*/_this5.setSelectRange(start, end);\n\t });\n\t }\n\t },\n\t /*istanbul ignore next*/redo: function redo() {\n\t /*istanbul ignore next*/var _this6 = this;\n\t\n\t var item = this.stack.redo();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t this.value = item.value;\n\t if (item.range) {\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this6.setSelectRange(item.range.start, item.range.end);\n\t });\n\t }\n\t },\n\t /*istanbul ignore next*/onPaste: function onPaste(event) {\n\t this.$emit('paste', event);\n\t },\n\t /*istanbul ignore next*/onDragover: function onDragover(event) {\n\t event.preventDefault();\n\t this.$emit('dragover', event);\n\t },\n\t /*istanbul ignore next*/onDrop: function onDrop(event) {\n\t event.preventDefault();\n\t this.$emit('drop', event);\n\t },\n\t /*istanbul ignore next*/focus: function focus() {\n\t this.textarea.focus();\n\t },\n\t /*istanbul ignore next*/blur: function blur() {\n\t this.textarea.blur();\n\t },\n\t /*istanbul ignore next*/onScroll: function onScroll(event) {\n\t this.syncScroll();\n\t this.$emit('scroll', event);\n\t },\n\t /*istanbul ignore next*/syncScroll: function syncScroll(disTwice) {\n\t /*istanbul ignore next*/var _this7 = this;\n\t\n\t this.marks.scrollTop = this.textarea.scrollTop;\n\t this.marks.scrollLeft = this.textarea.scrollLeft;\n\t if (disTwice) return;\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this7.syncScroll(true);\n\t }, 0);\n\t },\n\t /*istanbul ignore next*/applyMarks: function applyMarks(text) {\n\t if (!text || !this.markExp) return;\n\t text = text.replace(/\\n$/g, '\\n\\n').replace(this.markExp, '$&');\n\t if (isIE) {\n\t // IE wraps whitespace differently in a div vs textarea, this fixes it\n\t text = text.replace(/ /g, ' ');\n\t }\n\t return text;\n\t },\n\t /*istanbul ignore next*/activeMark: function activeMark(index) {\n\t var marks = [].slice.call(this.marks.querySelectorAll('mark'));\n\t if (marks.length < 1) return;\n\t this.activeMarkIndex = utils.isNull(this.activeMarkIndex) ? -1 : this.activeMarkIndex;\n\t if (utils.isNull(index)) {\n\t this.activeMarkIndex++;\n\t } else {\n\t this.activeMarkIndex = index;\n\t }\n\t if (this.activeMarkIndex >= marks.length) {\n\t this.activeMarkIndex = 0;\n\t }\n\t marks.forEach(function (mark) {\n\t mark.classList.remove('active');\n\t });\n\t var activeMark = marks[this.activeMarkIndex];\n\t activeMark.classList.add('active');\n\t this.scrollToMark(activeMark);\n\t },\n\t /*istanbul ignore next*/scrollToMark: function scrollToMark(mark) {\n\t // mark.scrollIntoView();\n\t // this.textarea.scrollTop = this.marks.scrollTop;\n\t // this.textarea.scrollTop -= 20;\n\t this.textarea.scrollTop = mark.offsetTop - 20;\n\t },\n\t /*istanbul ignore next*/getValue: function getValue() {\n\t return this.textarea.value;\n\t },\n\t /*istanbul ignore next*/setValue: function setValue(value) {\n\t this.textarea.value = value;\n\t },\n\t /*istanbul ignore next*/getActiveElement: function getActiveElement() {\n\t this.textarea.focus();\n\t return document.activeElement;\n\t },\n\t /*istanbul ignore next*/getSelectRange: function getSelectRange() {\n\t var box = this.getActiveElement();\n\t return {\n\t 'start': box.selectionStart,\n\t 'end': box.selectionEnd\n\t };\n\t },\n\t /*istanbul ignore next*/setSelectRange: function setSelectRange(start, end) {\n\t var box = this.getActiveElement();\n\t box.setSelectionRange(start, end);\n\t },\n\t /*istanbul ignore next*/getSelectText: function getSelectText() {\n\t var box = this.getActiveElement();\n\t var range = this.getSelectRange();\n\t return box.value.substring(range.start, range.end);\n\t },\n\t /*istanbul ignore next*/setSelectText: function setSelectText(text) {\n\t /*istanbul ignore next*/var _this8 = this;\n\t\n\t var box = this.getActiveElement();\n\t var range = this.getSelectRange();\n\t box.setRangeText(text);\n\t if (range.end == range.start) {\n\t this.setSelectRange(range.start, range.end + text.length);\n\t }\n\t this.value = this.getValue();\n\t this.onInput();\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this8.blur();\n\t /*istanbul ignore next*/_this8.focus();\n\t }, 0);\n\t },\n\t /*istanbul ignore next*/wrapSelectText: function wrapSelectText(before, after) {\n\t before = before !== null && before !== undefined ? before : '';\n\t after = after !== null && after !== undefined ? after : '';\n\t var range = this.getSelectRange();\n\t var text = this.getSelectText();\n\t this.setSelectText(before + text + after);\n\t var newStart = range.start + before.length;\n\t var newEnd = range.end + before.length;\n\t this.setSelectRange(newStart, newEnd);\n\t },\n\t /*istanbul ignore next*/insertBeforeText: function insertBeforeText(text) {\n\t this.wrapSelectText(text);\n\t },\n\t /*istanbul ignore next*/insertAfterText: function insertAfterText(text) {\n\t this.wrapSelectText('', text);\n\t },\n\t /*istanbul ignore next*/getBeforeText: function getBeforeText(length) {\n\t var range = this.getSelectRange();\n\t var end = range.start;\n\t var start = end - length;\n\t var value = this.getValue();\n\t return value.substring(start, end);\n\t },\n\t /*istanbul ignore next*/getBeforeFirstCharIndex: function getBeforeFirstCharIndex(char) {\n\t var range = this.getSelectRange();\n\t var end = range.start;\n\t var start = 0;\n\t var value = this.getValue();\n\t return value.substring(start, end).lastIndexOf(char);\n\t },\n\t /*istanbul ignore next*/getBeforeWord: function getBeforeWord() {\n\t /*istanbul ignore next*/var _this9 = this;\n\t\n\t var chars = [' ', '\\t', this.mditor.EOL];\n\t var start = 0;\n\t chars.forEach(function (char) {\n\t var index = /*istanbul ignore next*/_this9.getBeforeFirstCharIndex(char);\n\t if (index + char.length > start) {\n\t start = index + char.length;\n\t }\n\t });\n\t var range = this.getSelectRange();\n\t var value = this.getValue();\n\t return value.substring(start, range.end);\n\t },\n\t /*istanbul ignore next*/getBeforeTextInLine: function getBeforeTextInLine() {\n\t var start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\n\t var range = this.getSelectRange();\n\t var value = this.getValue();\n\t return value.substring(start, range.end);\n\t },\n\t /*istanbul ignore next*/selectBeforeText: function selectBeforeText(length) {\n\t var range = this.getSelectRange();\n\t this.setSelectRange(range.start - length, range.end);\n\t },\n\t /*istanbul ignore next*/selectAfterText: function selectAfterText(length) {\n\t var range = this.getSelectRange();\n\t this.setSelectRange(range.start, range.end + length);\n\t },\n\t /*istanbul ignore next*/selectBeforeTextInLine: function selectBeforeTextInLine() {\n\t var start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\n\t var range = this.getSelectRange();\n\t this.setSelectRange(start, range.end);\n\t },\n\t /*istanbul ignore next*/addIndent: function addIndent() {\n\t /*istanbul ignore next*/var _this10 = this;\n\t\n\t var selectText = this.getSelectText();\n\t if (selectText.length < 1) {\n\t this.insertBeforeText(this.mditor.INDENT);\n\t return;\n\t }\n\t var textArray = selectText.split(this.mditor.EOL);\n\t var buffer = [];\n\t var lineCount = textArray.length - 1;\n\t textArray.forEach(function (line, index) {\n\t line = line.trim() !== '' ? /*istanbul ignore next*/_this10.mditor.INDENT + line : line;\n\t if (index < lineCount || line.trim() !== '') {\n\t buffer.push(line);\n\t }\n\t });\n\t this.setSelectText(buffer.join(this.mditor.EOL));\n\t },\n\t /*istanbul ignore next*/removeIndent: function removeIndent() {\n\t /*istanbul ignore next*/var _this11 = this;\n\t\n\t var indentRegExp = new RegExp('^' + this.mditor.INDENT);\n\t var selectText = this.getSelectText();\n\t if (selectText.length < 1) {\n\t this.selectBeforeTextInLine();\n\t if (this.getSelectText().length > 0) {\n\t event.clearSelected = true;\n\t this.removeIndent();\n\t }\n\t return;\n\t }\n\t var textArray = selectText.split(this.mditor.EOL);\n\t var buffer = [];\n\t textArray.forEach(function (line) {\n\t if (indentRegExp.test(line)) {\n\t line = line.replace( /*istanbul ignore next*/_this11.mditor.INDENT, '');\n\t }\n\t buffer.push(line);\n\t });\n\t this.setSelectText(buffer.join(this.mditor.EOL));\n\t if (event.clearSelected) {\n\t var range = this.getSelectRange();\n\t this.setSelectRange(range.end, range.end);\n\t }\n\t }\n\t});\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4).Class;\n\tvar utils = __webpack_require__(3);\n\t\n\tvar Stack = new Class({\n\t /*istanbul ignore next*/constructor: function constructor(item) {\n\t this.init(item);\n\t },\n\t /*istanbul ignore next*/init: function init(item) {\n\t this.undoList = [item || {\n\t value: null\n\t }];\n\t this.redoList = [];\n\t },\n\t /*istanbul ignore next*/push: function push(item) {\n\t if (this.last() === item) return;\n\t this.undoList.push(item);\n\t },\n\t /*istanbul ignore next*/last: function last() {\n\t return this.undoList[this.undoList.length - 1];\n\t },\n\t /*istanbul ignore next*/undo: function undo() {\n\t if (this.undoList.length > 1) {\n\t var item = this.undoList.pop();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t this.redoList.push(item);\n\t }\n\t return this.last();\n\t },\n\t /*istanbul ignore next*/redo: function redo() {\n\t var item = this.redoList.pop();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t this.undoList.push(item);\n\t return item;\n\t }\n\t});\n\t\n\tmodule.exports = Stack;\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = [{\n\t name: 'undo',\n\t key: '{cmd}+z',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.undo();\n\t }\n\t}, {\n\t name: 'redo',\n\t key: '{cmd}+shift+z',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.redo();\n\t }\n\t}, {\n\t name: 'h2',\n\t key: 'shift+alt+2',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('## ');\n\t }\n\t}, {\n\t name: 'h3',\n\t key: 'shift+alt+3',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('### ');\n\t }\n\t}, {\n\t name: 'h4',\n\t key: 'shift+alt+4',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('#### ');\n\t }\n\t}, {\n\t name: 'h5',\n\t key: 'shift+alt+5',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('##### ');\n\t }\n\t}];\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\n
    \\n
    \\n
    \\n \\n
    \"\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\t\n\t__webpack_require__(95);\n\t\n\tvar Viewer = new mokit.Component({\n\t template: __webpack_require__(96),\n\t\n\t /*istanbul ignore next*/data: function data() {\n\t return {\n\t html: '',\n\t alert: '预览区域'\n\t };\n\t },\n\t\n\t\n\t props: {\n\t mditor: null,\n\t value: {\n\t /*istanbul ignore next*/get: function get() {\n\t return this._value;\n\t },\n\t /*istanbul ignore next*/set: function set(value) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this._value = value;\n\t var beforeEvent = { value: this._value };\n\t this.$emit('beforeRender', beforeEvent);\n\t this.mditor.parser.parse(beforeEvent.value, function (err, result) {\n\t var afterEvent = { value: result || err };\n\t /*istanbul ignore next*/_this.$emit('afterRender', afterEvent);\n\t /*istanbul ignore next*/_this.html = afterEvent.value;\n\t });\n\t }\n\t }\n\t },\n\t\n\t /*istanbul ignore next*/onClick: function onClick(event) {\n\t event.preventDefault();\n\t var tag = event.target;\n\t if (tag.tagName == 'A') {\n\t var href = tag.getAttribute('href');\n\t if (href) window.open(href, '_blank');\n\t }\n\t }\n\t});\n\t\n\tmodule.exports = Viewer;\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\n
    \\n
    \\n
    \"\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar utils = __webpack_require__(3);\n\t\n\t__webpack_require__(98);\n\t\n\tvar CHECK_REGEXP = /^\\/[\\s\\S]+\\/(i|g|m)*$/;\n\t\n\tvar Finder = new mokit.Component({\n\t template: __webpack_require__(99),\n\t props: {\n\t mditor: null,\n\t active: false,\n\t findWord: '',\n\t replaceWord: ''\n\t },\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t this.mditor.removeCommand('find');\n\t this.mditor.addCommand({\n\t name: 'find',\n\t key: '{cmd}+f',\n\t owner: this.mditor.$element,\n\t handler: this.show.bind(this, null)\n\t });\n\t this.mditor.removeCommand('cancel-find');\n\t this.mditor.addCommand({\n\t name: 'cancel-find',\n\t key: 'esc',\n\t owner: this.mditor.$element,\n\t handler: this.hide.bind(this)\n\t });\n\t },\n\t /*istanbul ignore next*/hide: function hide() {\n\t this.findWord = '';\n\t this.replaceWord = '';\n\t this.mditor.editor.markExp = null;\n\t this.active = false;\n\t },\n\t /*istanbul ignore next*/show: function show(text) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.active = true;\n\t this.findWord = text || this.mditor.editor.getSelectText();\n\t if (this.active) {\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this.findBox.focus();\n\t }, 200);\n\t }\n\t this.mditor.editor.syncScroll();\n\t },\n\t\n\t watch: {\n\t /*istanbul ignore next*/findWord: function findWord() {\n\t /*istanbul ignore next*/var _this2 = this;\n\t\n\t if (!this.mditor || !this.mditor.editor) return;\n\t if (!this.findWord) {\n\t this.mditor.editor.markExp = null;\n\t } else {\n\t this.mditor.editor.markExp = this.parseRegexp(this.findWord);\n\t }\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this2.mditor.editor.activeMark(0);\n\t }, 100);\n\t }\n\t },\n\t /*istanbul ignore next*/parseRegexp: function parseRegexp(text, forceStr) {\n\t if (!forceStr && CHECK_REGEXP.test(text)) {\n\t try {\n\t return new Function( /*istanbul ignore next*/'return ' + text)();\n\t } catch (err) {\n\t return this.parseRegexp(text, true);\n\t }\n\t } else {\n\t return new RegExp(utils.escapeRegExp(text), 'gm');\n\t }\n\t },\n\t /*istanbul ignore next*/find: function find() {\n\t this.mditor.editor.activeMark();\n\t },\n\t /*istanbul ignore next*/replace: function replace() {\n\t this.mditor.value = this.mditor.value.replace(this.mditor.editor.markExp, this.replaceWord || '');\n\t },\n\t /*istanbul ignore next*/onFindEnter: function onFindEnter(event) {\n\t if (event.keyCode != 13) return;\n\t event.preventDefault();\n\t this.find();\n\t },\n\t /*istanbul ignore next*/onReplaceEnter: function onReplaceEnter(event) {\n\t if (event.keyCode != 13) return;\n\t event.preventDefault();\n\t this.replace();\n\t },\n\t /*istanbul ignore next*/onCompositionEnd: function onCompositionEnd(event) {\n\t event.target.blur();\n\t event.target.focus();\n\t }\n\t});\n\t\n\tmodule.exports = Finder;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n
    \\n
    \"\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar shortcuts = __webpack_require__(101);\n\tvar utils = __webpack_require__(3);\n\t\n\tshortcuts.filter = function (event) {\n\t return !!event.target;\n\t};\n\t\n\tvar Shortcut = module.exports = function (mditor) {\n\t utils.defineFreezeProp(this, 'mditor', mditor);\n\t};\n\t\n\tShortcut.prototype._inRegion = function (target, owner) {\n\t if (!target) return false;\n\t owner = owner || this.mditor.editor.$element;\n\t if (utils.isFunction(owner)) owner = owner(this.mditor);\n\t return target === owner || this._inRegion(target.parentNode, owner);\n\t};\n\t\n\tShortcut.prototype.bind = function (key, cmd, allowDefault, owner) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var mditor = this.mditor;\n\t //检查参数\n\t if (!key || !cmd) return;\n\t key = key.replace('{cmd}', mditor.CMD);\n\t shortcuts(key, function (event) {\n\t if (! /*istanbul ignore next*/_this._inRegion(event.target, owner)) return;\n\t //禁用浏览器默认快捷键\n\t if (!allowDefault) {\n\t event.preventDefault();\n\t }\n\t if (cmd instanceof Function) {\n\t cmd.call(mditor, event);\n\t } else {\n\t mditor.execCommand(cmd, event);\n\t }\n\t setTimeout(function () {\n\t mditor.focus();\n\t }, 0);\n\t });\n\t};\n\t\n\tShortcut.prototype.unbind = function (key) {\n\t shortcuts.unbind(key);\n\t};\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t(function (global) {\n\t var k,\n\t _handlers = {},\n\t _mods = {\n\t 16: false,\n\t 18: false,\n\t 17: false,\n\t 91: false\n\t },\n\t _scope = 'all',\n\t // modifier keys\n\t _MODIFIERS = {\n\t '⇧': 16,\n\t shift: 16,\n\t '⌥': 18,\n\t alt: 18,\n\t option: 18,\n\t '⌃': 17,\n\t ctrl: 17,\n\t control: 17,\n\t '⌘': 91,\n\t command: 91\n\t },\n\t // special keys\n\t _MAP = {\n\t backspace: 8,\n\t tab: 9,\n\t clear: 12,\n\t enter: 13,\n\t 'return': 13,\n\t esc: 27,\n\t escape: 27,\n\t space: 32,\n\t left: 37,\n\t up: 38,\n\t right: 39,\n\t down: 40,\n\t del: 46,\n\t 'delete': 46,\n\t home: 36,\n\t end: 35,\n\t pageup: 33,\n\t pagedown: 34,\n\t ',': 188,\n\t '.': 190,\n\t '/': 191,\n\t '`': 192,\n\t '-': 189,\n\t '=': 187,\n\t ';': 186,\n\t '\\'': 222,\n\t '[': 219,\n\t ']': 221,\n\t '\\\\': 220\n\t },\n\t code = function (x) {\n\t return _MAP[x] || x.toUpperCase().charCodeAt(0);\n\t },\n\t _downKeys = [];\n\t\n\t for (k = 1; k < 20; k++) _MAP['f' + k] = 111 + k;\n\t\n\t // IE doesn't support Array#indexOf, so have a simple replacement\n\t function index(array, item) {\n\t var i = array.length;\n\t while (i--)\n\t if (array[i] === item) return i;\n\t return -1;\n\t }\n\t\n\t // for comparing mods before unassignment\n\t function compareArray(a1, a2) {\n\t if (a1.length != a2.length) return false;\n\t for (var i = 0; i < a1.length; i++) {\n\t if (a1[i] !== a2[i]) return false;\n\t }\n\t return true;\n\t }\n\t\n\t var modifierMap = {\n\t 16: 'shiftKey',\n\t 18: 'altKey',\n\t 17: 'ctrlKey',\n\t 91: 'metaKey'\n\t };\n\t\n\t function updateModifierKey(event) {\n\t for (k in _mods) _mods[k] = event[modifierMap[k]];\n\t };\n\t\n\t // handle keydown event\n\t function dispatch(event) {\n\t var key, handler, k, i, modifiersMatch, scope;\n\t key = event.keyCode;\n\t\n\t if (index(_downKeys, key) == -1) {\n\t _downKeys.push(key);\n\t }\n\t\n\t // if a modifier key, set the key. property to true and return\n\t if (key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n\t if (key in _mods) {\n\t _mods[key] = true;\n\t // 'assignKey' from inside this closure is exported to window.key\n\t for (k in _MODIFIERS)\n\t if (_MODIFIERS[k] == key) assignKey[k] = true;\n\t return;\n\t }\n\t updateModifierKey(event);\n\t\n\t // see if we need to ignore the keypress (filter() can can be overridden)\n\t // by default ignore key presses if a select, textarea, or input is focused\n\t if (!assignKey.filter.call(this, event)) return;\n\t\n\t // abort if no potentially matching shortcuts found\n\t if (!(key in _handlers)) return;\n\t\n\t scope = getScope();\n\t\n\t // for each potential shortcut\n\t for (i = 0; i < _handlers[key].length; i++) {\n\t handler = _handlers[key][i];\n\t\n\t // see if it's in the current scope\n\t if (handler.scope == scope || handler.scope == 'all') {\n\t // check if modifiers match if any\n\t modifiersMatch = handler.mods.length > 0;\n\t for (k in _mods)\n\t if ((!_mods[k] && index(handler.mods, +k) > -1) ||\n\t (_mods[k] && index(handler.mods, +k) == -1)) modifiersMatch = false;\n\t // call the handler and stop the event if neccessary\n\t if ((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch) {\n\t if (handler.method(event, handler) === false) {\n\t if (event.preventDefault) event.preventDefault();\n\t else event.returnValue = false;\n\t if (event.stopPropagation) event.stopPropagation();\n\t if (event.cancelBubble) event.cancelBubble = true;\n\t }\n\t }\n\t }\n\t }\n\t };\n\t\n\t // unset modifier keys on keyup\n\t function clearModifier(event) {\n\t var key = event.keyCode,\n\t k,\n\t i = index(_downKeys, key);\n\t\n\t // remove key from _downKeys\n\t if (i >= 0) {\n\t _downKeys.splice(i, 1);\n\t }\n\t\n\t if (key == 93 || key == 224) key = 91;\n\t if (key in _mods) {\n\t _mods[key] = false;\n\t for (k in _MODIFIERS)\n\t if (_MODIFIERS[k] == key) assignKey[k] = false;\n\t }\n\t };\n\t\n\t function resetModifiers() {\n\t for (k in _mods) _mods[k] = false;\n\t for (k in _MODIFIERS) assignKey[k] = false;\n\t };\n\t\n\t // parse and assign shortcut\n\t function assignKey(key, scope, method) {\n\t var keys, mods;\n\t keys = getKeys(key);\n\t if (method === undefined) {\n\t method = scope;\n\t scope = 'all';\n\t }\n\t\n\t // for each shortcut\n\t for (var i = 0; i < keys.length; i++) {\n\t // set modifier keys if any\n\t mods = [];\n\t key = keys[i].split('+');\n\t if (key.length > 1) {\n\t mods = getMods(key);\n\t key = [key[key.length - 1]];\n\t }\n\t // convert to keycode and...\n\t key = key[0]\n\t key = code(key);\n\t // ...store handler\n\t if (!(key in _handlers)) _handlers[key] = [];\n\t _handlers[key].push({\n\t shortcut: keys[i],\n\t scope: scope,\n\t method: method,\n\t key: keys[i],\n\t mods: mods\n\t });\n\t }\n\t };\n\t\n\t // unbind all handlers for given key in current scope\n\t function unbindKey(key, scope) {\n\t var multipleKeys, keys,\n\t mods = [],\n\t i, j, obj;\n\t\n\t multipleKeys = getKeys(key);\n\t\n\t for (j = 0; j < multipleKeys.length; j++) {\n\t keys = multipleKeys[j].split('+');\n\t\n\t if (keys.length > 1) {\n\t mods = getMods(keys);\n\t key = keys[keys.length - 1];\n\t }\n\t\n\t key = code(key);\n\t\n\t if (scope === undefined) {\n\t scope = getScope();\n\t }\n\t if (!_handlers[key]) {\n\t return;\n\t }\n\t for (i in _handlers[key]) {\n\t obj = _handlers[key][i];\n\t // only clear handlers if correct scope and mods match\n\t if (obj.scope === scope && compareArray(obj.mods, mods)) {\n\t _handlers[key][i] = {};\n\t }\n\t }\n\t }\n\t };\n\t\n\t // Returns true if the key with code 'keyCode' is currently down\n\t // Converts strings into key codes.\n\t function isPressed(keyCode) {\n\t if (typeof (keyCode) == 'string') {\n\t keyCode = code(keyCode);\n\t }\n\t return index(_downKeys, keyCode) != -1;\n\t }\n\t\n\t function getPressedKeyCodes() {\n\t return _downKeys.slice(0);\n\t }\n\t\n\t function filter(event) {\n\t var tagName = (event.target || event.srcElement).tagName;\n\t // ignore keypressed in any elements that support keyboard data input\n\t return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n\t }\n\t\n\t // initialize key. to false\n\t for (k in _MODIFIERS) assignKey[k] = false;\n\t\n\t // set current scope (default 'all')\n\t function setScope(scope) {\n\t _scope = scope || 'all'\n\t };\n\t\n\t function getScope() {\n\t return _scope || 'all'\n\t };\n\t\n\t // delete all handlers for a given scope\n\t function deleteScope(scope) {\n\t var key, handlers, i;\n\t\n\t for (key in _handlers) {\n\t handlers = _handlers[key];\n\t for (i = 0; i < handlers.length;) {\n\t if (handlers[i].scope === scope) handlers.splice(i, 1);\n\t else i++;\n\t }\n\t }\n\t };\n\t\n\t // abstract key logic for assign and unassign\n\t function getKeys(key) {\n\t var keys;\n\t key = key.replace(/\\s/g, '');\n\t keys = key.split(',');\n\t if ((keys[keys.length - 1]) == '') {\n\t keys[keys.length - 2] += ',';\n\t }\n\t return keys;\n\t }\n\t\n\t // abstract mods logic for assign and unassign\n\t function getMods(key) {\n\t var mods = key.slice(0, key.length - 1);\n\t for (var mi = 0; mi < mods.length; mi++)\n\t mods[mi] = _MODIFIERS[mods[mi]];\n\t return mods;\n\t }\n\t\n\t // cross-browser events\n\t function addEvent(object, event, method) {\n\t if (object.addEventListener)\n\t object.addEventListener(event, method, false);\n\t else if (object.attachEvent)\n\t object.attachEvent('on' + event, function () {\n\t method(window.event)\n\t });\n\t };\n\t\n\t // set the handlers globally on document\n\t addEvent(document, 'keydown', function (event) {\n\t dispatch(event)\n\t }); // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n\t addEvent(document, 'keyup', clearModifier);\n\t\n\t // reset modifiers to false whenever the window is (re)focused.\n\t addEvent(window, 'focus', resetModifiers);\n\t\n\t // store previously defined key\n\t var previousKey = global.key;\n\t\n\t // restore previously defined key and return reference to our key object\n\t function noConflict() {\n\t var k = global.key;\n\t global.key = previousKey;\n\t return k;\n\t }\n\t\n\t // set window.key and window.key.set/get/deleteScope, and the default filter\n\t global.key = assignKey;\n\t global.key.setScope = setScope;\n\t global.key.getScope = getScope;\n\t global.key.deleteScope = deleteScope;\n\t global.key.filter = filter;\n\t global.key.isPressed = isPressed;\n\t global.key.getPressedKeyCodes = getPressedKeyCodes;\n\t global.key.noConflict = noConflict;\n\t global.key.unbind = unbindKey;\n\t\n\t if (true) module.exports = key;\n\t\n\t})(window);\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar marked = __webpack_require__(103);\n\tvar Prism = __webpack_require__(104);\n\t\n\t//language\n\t__webpack_require__(105);\n\t__webpack_require__(106);\n\t__webpack_require__(107);\n\t__webpack_require__(108);\n\t__webpack_require__(109);\n\t__webpack_require__(110);\n\t__webpack_require__(111);\n\t__webpack_require__(112);\n\t__webpack_require__(113);\n\t__webpack_require__(114);\n\t__webpack_require__(115);\n\t__webpack_require__(116);\n\t__webpack_require__(117);\n\t__webpack_require__(118);\n\t__webpack_require__(119);\n\t__webpack_require__(120);\n\t__webpack_require__(121);\n\t__webpack_require__(122);\n\t__webpack_require__(123);\n\t__webpack_require__(124);\n\t__webpack_require__(125);\n\t__webpack_require__(126);\n\t__webpack_require__(127);\n\t__webpack_require__(128);\n\t__webpack_require__(129);\n\t__webpack_require__(130);\n\t__webpack_require__(131);\n\t__webpack_require__(132);\n\t__webpack_require__(133);\n\t__webpack_require__(134);\n\t__webpack_require__(135);\n\t__webpack_require__(136);\n\t__webpack_require__(137);\n\t__webpack_require__(138);\n\t__webpack_require__(139);\n\t__webpack_require__(140);\n\t__webpack_require__(141);\n\t__webpack_require__(142);\n\t__webpack_require__(143);\n\t__webpack_require__(144);\n\t__webpack_require__(145);\n\t__webpack_require__(146);\n\t__webpack_require__(147);\n\t__webpack_require__(148);\n\t__webpack_require__(149);\n\t__webpack_require__(150);\n\t\n\t//alias\n\tPrism.languages.js = Prism.languages.javascript;\n\tPrism.languages['c#'] = Prism.languages.csharp;\n\tPrism.languages['f#'] = Prism.languages.fsharp;\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.md = Prism.languages.markdown;\n\tPrism.languages.py = Prism.languages.python;\n\tPrism.languages.yml = Prism.languages.yaml;\n\tPrism.languages.rb = Prism.languages.ruby;\n\t\n\tvar Parser = function Parser(options) {\n\t options = options || {};\n\t this.options = options;\n\t};\n\t\n\tParser.highlights = {};\n\tParser.marked = marked;\n\tParser.Prism = Prism;\n\t\n\t//使标题解析 # 号可以无空格\n\tmarked.Lexer.rules.gfm.heading = marked.Lexer.rules.heading;\n\tmarked.Lexer.rules.tables.heading = marked.Lexer.rules.heading;\n\t\n\tvar renderer = new marked.Renderer();\n\tParser.renderer = renderer;\n\tmarked.setOptions({\n\t renderer: renderer, gfm: true, tables: true, breaks: true, //可行尾不加两空格直接换行\n\t pedantic: false,\n\t sanitize: false,\n\t smartLists: true,\n\t smartypants: false,\n\t mangle: false,\n\t highlight: function /*istanbul ignore next*/highlight(code, lang, callback) {\n\t if (Parser.highlights[lang]) {\n\t var result = Parser.highlights[lang].parse(code, lang, callback);\n\t if (!callback) return result;\n\t } else if (Prism.languages[lang]) {\n\t var _result = Prism.highlight(code, Prism.languages[lang]);\n\t if (callback) return callback(null, _result);else return _result;\n\t } else {\n\t if (callback) //eslint-disable-line\n\t return callback(null, code);else return code;\n\t }\n\t }\n\t});\n\t\n\tParser.prototype.parse = function (mdText, callback) {\n\t return marked(mdText, callback);\n\t};\n\t\n\tmodule.exports = Parser;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/**\n\t * marked - a markdown parser\n\t * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n\t * https://github.com/chjj/marked\n\t */\n\t\n\t;(function() {\n\t\n\t/**\n\t * Block-Level Grammar\n\t */\n\t\n\tvar block = {\n\t newline: /^\\n+/,\n\t code: /^( {4}[^\\n]+\\n*)+/,\n\t fences: noop,\n\t hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n\t heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n\t nptable: noop,\n\t lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n\t blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n\t list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n\t html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n\t def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n\t table: noop,\n\t paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n\t text: /^[^\\n]+/\n\t};\n\t\n\tblock.bullet = /(?:[*+-]|\\d+\\.)/;\n\tblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\n\tblock.item = replace(block.item, 'gm')\n\t (/bull/g, block.bullet)\n\t ();\n\t\n\tblock.list = replace(block.list)\n\t (/bull/g, block.bullet)\n\t ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n\t ('def', '\\\\n+(?=' + block.def.source + ')')\n\t ();\n\t\n\tblock.blockquote = replace(block.blockquote)\n\t ('def', block.def)\n\t ();\n\t\n\tblock._tag = '(?!(?:'\n\t + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n\t + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n\t + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\t\n\tblock.html = replace(block.html)\n\t ('comment', //)\n\t ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n\t ('closing', /])*?>/)\n\t (/tag/g, block._tag)\n\t ();\n\t\n\tblock.paragraph = replace(block.paragraph)\n\t ('hr', block.hr)\n\t ('heading', block.heading)\n\t ('lheading', block.lheading)\n\t ('blockquote', block.blockquote)\n\t ('tag', '<' + block._tag)\n\t ('def', block.def)\n\t ();\n\t\n\t/**\n\t * Normal Block Grammar\n\t */\n\t\n\tblock.normal = merge({}, block);\n\t\n\t/**\n\t * GFM Block Grammar\n\t */\n\t\n\tblock.gfm = merge({}, block.normal, {\n\t fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n\t paragraph: /^/,\n\t heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n\t});\n\t\n\tblock.gfm.paragraph = replace(block.paragraph)\n\t ('(?!', '(?!'\n\t + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n\t + block.list.source.replace('\\\\1', '\\\\3') + '|')\n\t ();\n\t\n\t/**\n\t * GFM + Tables Block Grammar\n\t */\n\t\n\tblock.tables = merge({}, block.gfm, {\n\t nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n\t table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n\t});\n\t\n\t/**\n\t * Block Lexer\n\t */\n\t\n\tfunction Lexer(options) {\n\t this.tokens = [];\n\t this.tokens.links = {};\n\t this.options = options || marked.defaults;\n\t this.rules = block.normal;\n\t\n\t if (this.options.gfm) {\n\t if (this.options.tables) {\n\t this.rules = block.tables;\n\t } else {\n\t this.rules = block.gfm;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Expose Block Rules\n\t */\n\t\n\tLexer.rules = block;\n\t\n\t/**\n\t * Static Lex Method\n\t */\n\t\n\tLexer.lex = function(src, options) {\n\t var lexer = new Lexer(options);\n\t return lexer.lex(src);\n\t};\n\t\n\t/**\n\t * Preprocessing\n\t */\n\t\n\tLexer.prototype.lex = function(src) {\n\t src = src\n\t .replace(/\\r\\n|\\r/g, '\\n')\n\t .replace(/\\t/g, ' ')\n\t .replace(/\\u00a0/g, ' ')\n\t .replace(/\\u2424/g, '\\n');\n\t\n\t return this.token(src, true);\n\t};\n\t\n\t/**\n\t * Lexing\n\t */\n\t\n\tLexer.prototype.token = function(src, top, bq) {\n\t var src = src.replace(/^ +$/gm, '')\n\t , next\n\t , loose\n\t , cap\n\t , bull\n\t , b\n\t , item\n\t , space\n\t , i\n\t , l;\n\t\n\t while (src) {\n\t // newline\n\t if (cap = this.rules.newline.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t if (cap[0].length > 1) {\n\t this.tokens.push({\n\t type: 'space'\n\t });\n\t }\n\t }\n\t\n\t // code\n\t if (cap = this.rules.code.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t cap = cap[0].replace(/^ {4}/gm, '');\n\t this.tokens.push({\n\t type: 'code',\n\t text: !this.options.pedantic\n\t ? cap.replace(/\\n+$/, '')\n\t : cap\n\t });\n\t continue;\n\t }\n\t\n\t // fences (gfm)\n\t if (cap = this.rules.fences.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'code',\n\t lang: cap[2],\n\t text: cap[3] || ''\n\t });\n\t continue;\n\t }\n\t\n\t // heading\n\t if (cap = this.rules.heading.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'heading',\n\t depth: cap[1].length,\n\t text: cap[2]\n\t });\n\t continue;\n\t }\n\t\n\t // table no leading pipe (gfm)\n\t if (top && (cap = this.rules.nptable.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t\n\t item = {\n\t type: 'table',\n\t header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n\t align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n\t cells: cap[3].replace(/\\n$/, '').split('\\n')\n\t };\n\t\n\t for (i = 0; i < item.align.length; i++) {\n\t if (/^ *-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'right';\n\t } else if (/^ *:-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'center';\n\t } else if (/^ *:-+ *$/.test(item.align[i])) {\n\t item.align[i] = 'left';\n\t } else {\n\t item.align[i] = null;\n\t }\n\t }\n\t\n\t for (i = 0; i < item.cells.length; i++) {\n\t item.cells[i] = item.cells[i].split(/ *\\| */);\n\t }\n\t\n\t this.tokens.push(item);\n\t\n\t continue;\n\t }\n\t\n\t // lheading\n\t if (cap = this.rules.lheading.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'heading',\n\t depth: cap[2] === '=' ? 1 : 2,\n\t text: cap[1]\n\t });\n\t continue;\n\t }\n\t\n\t // hr\n\t if (cap = this.rules.hr.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'hr'\n\t });\n\t continue;\n\t }\n\t\n\t // blockquote\n\t if (cap = this.rules.blockquote.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t\n\t this.tokens.push({\n\t type: 'blockquote_start'\n\t });\n\t\n\t cap = cap[0].replace(/^ *> ?/gm, '');\n\t\n\t // Pass `top` to keep the current\n\t // \"toplevel\" state. This is exactly\n\t // how markdown.pl works.\n\t this.token(cap, top, true);\n\t\n\t this.tokens.push({\n\t type: 'blockquote_end'\n\t });\n\t\n\t continue;\n\t }\n\t\n\t // list\n\t if (cap = this.rules.list.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t bull = cap[2];\n\t\n\t this.tokens.push({\n\t type: 'list_start',\n\t ordered: bull.length > 1\n\t });\n\t\n\t // Get each top-level item.\n\t cap = cap[0].match(this.rules.item);\n\t\n\t next = false;\n\t l = cap.length;\n\t i = 0;\n\t\n\t for (; i < l; i++) {\n\t item = cap[i];\n\t\n\t // Remove the list item's bullet\n\t // so it is seen as the next token.\n\t space = item.length;\n\t item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\t\n\t // Outdent whatever the\n\t // list item contains. Hacky.\n\t if (~item.indexOf('\\n ')) {\n\t space -= item.length;\n\t item = !this.options.pedantic\n\t ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n\t : item.replace(/^ {1,4}/gm, '');\n\t }\n\t\n\t // Determine whether the next list item belongs here.\n\t // Backpedal if it does not belong in this list.\n\t if (this.options.smartLists && i !== l - 1) {\n\t b = block.bullet.exec(cap[i + 1])[0];\n\t if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n\t src = cap.slice(i + 1).join('\\n') + src;\n\t i = l - 1;\n\t }\n\t }\n\t\n\t // Determine whether item is loose or not.\n\t // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n\t // for discount behavior.\n\t loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\t if (i !== l - 1) {\n\t next = item.charAt(item.length - 1) === '\\n';\n\t if (!loose) loose = next;\n\t }\n\t\n\t this.tokens.push({\n\t type: loose\n\t ? 'loose_item_start'\n\t : 'list_item_start'\n\t });\n\t\n\t // Recurse.\n\t this.token(item, false, bq);\n\t\n\t this.tokens.push({\n\t type: 'list_item_end'\n\t });\n\t }\n\t\n\t this.tokens.push({\n\t type: 'list_end'\n\t });\n\t\n\t continue;\n\t }\n\t\n\t // html\n\t if (cap = this.rules.html.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: this.options.sanitize\n\t ? 'paragraph'\n\t : 'html',\n\t pre: !this.options.sanitizer\n\t && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n\t text: cap[0]\n\t });\n\t continue;\n\t }\n\t\n\t // def\n\t if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.links[cap[1].toLowerCase()] = {\n\t href: cap[2],\n\t title: cap[3]\n\t };\n\t continue;\n\t }\n\t\n\t // table (gfm)\n\t if (top && (cap = this.rules.table.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t\n\t item = {\n\t type: 'table',\n\t header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n\t align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n\t cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n\t };\n\t\n\t for (i = 0; i < item.align.length; i++) {\n\t if (/^ *-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'right';\n\t } else if (/^ *:-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'center';\n\t } else if (/^ *:-+ *$/.test(item.align[i])) {\n\t item.align[i] = 'left';\n\t } else {\n\t item.align[i] = null;\n\t }\n\t }\n\t\n\t for (i = 0; i < item.cells.length; i++) {\n\t item.cells[i] = item.cells[i]\n\t .replace(/^ *\\| *| *\\| *$/g, '')\n\t .split(/ *\\| */);\n\t }\n\t\n\t this.tokens.push(item);\n\t\n\t continue;\n\t }\n\t\n\t // top-level paragraph\n\t if (top && (cap = this.rules.paragraph.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'paragraph',\n\t text: cap[1].charAt(cap[1].length - 1) === '\\n'\n\t ? cap[1].slice(0, -1)\n\t : cap[1]\n\t });\n\t continue;\n\t }\n\t\n\t // text\n\t if (cap = this.rules.text.exec(src)) {\n\t // Top-level should never reach here.\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'text',\n\t text: cap[0]\n\t });\n\t continue;\n\t }\n\t\n\t if (src) {\n\t throw new\n\t Error('Infinite loop on byte: ' + src.charCodeAt(0));\n\t }\n\t }\n\t\n\t return this.tokens;\n\t};\n\t\n\t/**\n\t * Inline-Level Grammar\n\t */\n\t\n\tvar inline = {\n\t escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n\t autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n\t url: noop,\n\t tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n\t link: /^!?\\[(inside)\\]\\(href\\)/,\n\t reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n\t nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n\t strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n\t em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n\t code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n\t br: /^ {2,}\\n(?!\\s*$)/,\n\t del: noop,\n\t text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\t\n\tinline.link = replace(inline.link)\n\t ('inside', inline._inside)\n\t ('href', inline._href)\n\t ();\n\t\n\tinline.reflink = replace(inline.reflink)\n\t ('inside', inline._inside)\n\t ();\n\t\n\t/**\n\t * Normal Inline Grammar\n\t */\n\t\n\tinline.normal = merge({}, inline);\n\t\n\t/**\n\t * Pedantic Inline Grammar\n\t */\n\t\n\tinline.pedantic = merge({}, inline.normal, {\n\t strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n\t em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n\t});\n\t\n\t/**\n\t * GFM Inline Grammar\n\t */\n\t\n\tinline.gfm = merge({}, inline.normal, {\n\t escape: replace(inline.escape)('])', '~|])')(),\n\t url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n\t del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n\t text: replace(inline.text)\n\t (']|', '~]|')\n\t ('|', '|https?://|')\n\t ()\n\t});\n\t\n\t/**\n\t * GFM + Line Breaks Inline Grammar\n\t */\n\t\n\tinline.breaks = merge({}, inline.gfm, {\n\t br: replace(inline.br)('{2,}', '*')(),\n\t text: replace(inline.gfm.text)('{2,}', '*')()\n\t});\n\t\n\t/**\n\t * Inline Lexer & Compiler\n\t */\n\t\n\tfunction InlineLexer(links, options) {\n\t this.options = options || marked.defaults;\n\t this.links = links;\n\t this.rules = inline.normal;\n\t this.renderer = this.options.renderer || new Renderer;\n\t this.renderer.options = this.options;\n\t\n\t if (!this.links) {\n\t throw new\n\t Error('Tokens array requires a `links` property.');\n\t }\n\t\n\t if (this.options.gfm) {\n\t if (this.options.breaks) {\n\t this.rules = inline.breaks;\n\t } else {\n\t this.rules = inline.gfm;\n\t }\n\t } else if (this.options.pedantic) {\n\t this.rules = inline.pedantic;\n\t }\n\t}\n\t\n\t/**\n\t * Expose Inline Rules\n\t */\n\t\n\tInlineLexer.rules = inline;\n\t\n\t/**\n\t * Static Lexing/Compiling Method\n\t */\n\t\n\tInlineLexer.output = function(src, links, options) {\n\t var inline = new InlineLexer(links, options);\n\t return inline.output(src);\n\t};\n\t\n\t/**\n\t * Lexing/Compiling\n\t */\n\t\n\tInlineLexer.prototype.output = function(src) {\n\t var out = ''\n\t , link\n\t , text\n\t , href\n\t , cap;\n\t\n\t while (src) {\n\t // escape\n\t if (cap = this.rules.escape.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += cap[1];\n\t continue;\n\t }\n\t\n\t // autolink\n\t if (cap = this.rules.autolink.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t if (cap[2] === '@') {\n\t text = cap[1].charAt(6) === ':'\n\t ? this.mangle(cap[1].substring(7))\n\t : this.mangle(cap[1]);\n\t href = this.mangle('mailto:') + text;\n\t } else {\n\t text = escape(cap[1]);\n\t href = text;\n\t }\n\t out += this.renderer.link(href, null, text);\n\t continue;\n\t }\n\t\n\t // url (gfm)\n\t if (!this.inLink && (cap = this.rules.url.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t text = escape(cap[1]);\n\t href = text;\n\t out += this.renderer.link(href, null, text);\n\t continue;\n\t }\n\t\n\t // tag\n\t if (cap = this.rules.tag.exec(src)) {\n\t if (!this.inLink && /^
    /i.test(cap[0])) {\n\t this.inLink = false;\n\t }\n\t src = src.substring(cap[0].length);\n\t out += this.options.sanitize\n\t ? this.options.sanitizer\n\t ? this.options.sanitizer(cap[0])\n\t : escape(cap[0])\n\t : cap[0]\n\t continue;\n\t }\n\t\n\t // link\n\t if (cap = this.rules.link.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.inLink = true;\n\t out += this.outputLink(cap, {\n\t href: cap[2],\n\t title: cap[3]\n\t });\n\t this.inLink = false;\n\t continue;\n\t }\n\t\n\t // reflink, nolink\n\t if ((cap = this.rules.reflink.exec(src))\n\t || (cap = this.rules.nolink.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n\t link = this.links[link.toLowerCase()];\n\t if (!link || !link.href) {\n\t out += cap[0].charAt(0);\n\t src = cap[0].substring(1) + src;\n\t continue;\n\t }\n\t this.inLink = true;\n\t out += this.outputLink(cap, link);\n\t this.inLink = false;\n\t continue;\n\t }\n\t\n\t // strong\n\t if (cap = this.rules.strong.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.strong(this.output(cap[2] || cap[1]));\n\t continue;\n\t }\n\t\n\t // em\n\t if (cap = this.rules.em.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.em(this.output(cap[2] || cap[1]));\n\t continue;\n\t }\n\t\n\t // code\n\t if (cap = this.rules.code.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.codespan(escape(cap[2], true));\n\t continue;\n\t }\n\t\n\t // br\n\t if (cap = this.rules.br.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.br();\n\t continue;\n\t }\n\t\n\t // del (gfm)\n\t if (cap = this.rules.del.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.del(this.output(cap[1]));\n\t continue;\n\t }\n\t\n\t // text\n\t if (cap = this.rules.text.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.text(escape(this.smartypants(cap[0])));\n\t continue;\n\t }\n\t\n\t if (src) {\n\t throw new\n\t Error('Infinite loop on byte: ' + src.charCodeAt(0));\n\t }\n\t }\n\t\n\t return out;\n\t};\n\t\n\t/**\n\t * Compile Link\n\t */\n\t\n\tInlineLexer.prototype.outputLink = function(cap, link) {\n\t var href = escape(link.href)\n\t , title = link.title ? escape(link.title) : null;\n\t\n\t return cap[0].charAt(0) !== '!'\n\t ? this.renderer.link(href, title, this.output(cap[1]))\n\t : this.renderer.image(href, title, escape(cap[1]));\n\t};\n\t\n\t/**\n\t * Smartypants Transformations\n\t */\n\t\n\tInlineLexer.prototype.smartypants = function(text) {\n\t if (!this.options.smartypants) return text;\n\t return text\n\t // em-dashes\n\t .replace(/---/g, '\\u2014')\n\t // en-dashes\n\t .replace(/--/g, '\\u2013')\n\t // opening singles\n\t .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n\t // closing singles & apostrophes\n\t .replace(/'/g, '\\u2019')\n\t // opening doubles\n\t .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n\t // closing doubles\n\t .replace(/\"/g, '\\u201d')\n\t // ellipses\n\t .replace(/\\.{3}/g, '\\u2026');\n\t};\n\t\n\t/**\n\t * Mangle Links\n\t */\n\t\n\tInlineLexer.prototype.mangle = function(text) {\n\t if (!this.options.mangle) return text;\n\t var out = ''\n\t , l = text.length\n\t , i = 0\n\t , ch;\n\t\n\t for (; i < l; i++) {\n\t ch = text.charCodeAt(i);\n\t if (Math.random() > 0.5) {\n\t ch = 'x' + ch.toString(16);\n\t }\n\t out += '&#' + ch + ';';\n\t }\n\t\n\t return out;\n\t};\n\t\n\t/**\n\t * Renderer\n\t */\n\t\n\tfunction Renderer(options) {\n\t this.options = options || {};\n\t}\n\t\n\tRenderer.prototype.code = function(code, lang, escaped) {\n\t if (this.options.highlight) {\n\t var out = this.options.highlight(code, lang);\n\t if (out != null && out !== code) {\n\t escaped = true;\n\t code = out;\n\t }\n\t }\n\t\n\t if (!lang) {\n\t return '
    '\n\t      + (escaped ? code : escape(code, true))\n\t      + '\\n
    ';\n\t }\n\t\n\t return '
    '\n\t    + (escaped ? code : escape(code, true))\n\t    + '\\n
    \\n';\n\t};\n\t\n\tRenderer.prototype.blockquote = function(quote) {\n\t return '
    \\n' + quote + '
    \\n';\n\t};\n\t\n\tRenderer.prototype.html = function(html) {\n\t return html;\n\t};\n\t\n\tRenderer.prototype.heading = function(text, level, raw) {\n\t return ''\n\t + text\n\t + '\\n';\n\t};\n\t\n\tRenderer.prototype.hr = function() {\n\t return this.options.xhtml ? '
    \\n' : '
    \\n';\n\t};\n\t\n\tRenderer.prototype.list = function(body, ordered) {\n\t var type = ordered ? 'ol' : 'ul';\n\t return '<' + type + '>\\n' + body + '\\n';\n\t};\n\t\n\tRenderer.prototype.listitem = function(text) {\n\t return '
  • ' + text + '
  • \\n';\n\t};\n\t\n\tRenderer.prototype.paragraph = function(text) {\n\t return '

    ' + text + '

    \\n';\n\t};\n\t\n\tRenderer.prototype.table = function(header, body) {\n\t return '\\n'\n\t + '\\n'\n\t + header\n\t + '\\n'\n\t + '\\n'\n\t + body\n\t + '\\n'\n\t + '
    \\n';\n\t};\n\t\n\tRenderer.prototype.tablerow = function(content) {\n\t return '\\n' + content + '\\n';\n\t};\n\t\n\tRenderer.prototype.tablecell = function(content, flags) {\n\t var type = flags.header ? 'th' : 'td';\n\t var tag = flags.align\n\t ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n\t : '<' + type + '>';\n\t return tag + content + '\\n';\n\t};\n\t\n\t// span level renderer\n\tRenderer.prototype.strong = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.em = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.codespan = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.br = function() {\n\t return this.options.xhtml ? '
    ' : '
    ';\n\t};\n\t\n\tRenderer.prototype.del = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.link = function(href, title, text) {\n\t if (this.options.sanitize) {\n\t try {\n\t var prot = decodeURIComponent(unescape(href))\n\t .replace(/[^\\w:]/g, '')\n\t .toLowerCase();\n\t } catch (e) {\n\t return '';\n\t }\n\t if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n\t return '';\n\t }\n\t }\n\t var out = '
    ';\n\t return out;\n\t};\n\t\n\tRenderer.prototype.image = function(href, title, text) {\n\t var out = '\"'' : '>';\n\t return out;\n\t};\n\t\n\tRenderer.prototype.text = function(text) {\n\t return text;\n\t};\n\t\n\t/**\n\t * Parsing & Compiling\n\t */\n\t\n\tfunction Parser(options) {\n\t this.tokens = [];\n\t this.token = null;\n\t this.options = options || marked.defaults;\n\t this.options.renderer = this.options.renderer || new Renderer;\n\t this.renderer = this.options.renderer;\n\t this.renderer.options = this.options;\n\t}\n\t\n\t/**\n\t * Static Parse Method\n\t */\n\t\n\tParser.parse = function(src, options, renderer) {\n\t var parser = new Parser(options, renderer);\n\t return parser.parse(src);\n\t};\n\t\n\t/**\n\t * Parse Loop\n\t */\n\t\n\tParser.prototype.parse = function(src) {\n\t this.inline = new InlineLexer(src.links, this.options, this.renderer);\n\t this.tokens = src.reverse();\n\t\n\t var out = '';\n\t while (this.next()) {\n\t out += this.tok();\n\t }\n\t\n\t return out;\n\t};\n\t\n\t/**\n\t * Next Token\n\t */\n\t\n\tParser.prototype.next = function() {\n\t return this.token = this.tokens.pop();\n\t};\n\t\n\t/**\n\t * Preview Next Token\n\t */\n\t\n\tParser.prototype.peek = function() {\n\t return this.tokens[this.tokens.length - 1] || 0;\n\t};\n\t\n\t/**\n\t * Parse Text Tokens\n\t */\n\t\n\tParser.prototype.parseText = function() {\n\t var body = this.token.text;\n\t\n\t while (this.peek().type === 'text') {\n\t body += '\\n' + this.next().text;\n\t }\n\t\n\t return this.inline.output(body);\n\t};\n\t\n\t/**\n\t * Parse Current Token\n\t */\n\t\n\tParser.prototype.tok = function() {\n\t switch (this.token.type) {\n\t case 'space': {\n\t return '';\n\t }\n\t case 'hr': {\n\t return this.renderer.hr();\n\t }\n\t case 'heading': {\n\t return this.renderer.heading(\n\t this.inline.output(this.token.text),\n\t this.token.depth,\n\t this.token.text);\n\t }\n\t case 'code': {\n\t return this.renderer.code(this.token.text,\n\t this.token.lang,\n\t this.token.escaped);\n\t }\n\t case 'table': {\n\t var header = ''\n\t , body = ''\n\t , i\n\t , row\n\t , cell\n\t , flags\n\t , j;\n\t\n\t // header\n\t cell = '';\n\t for (i = 0; i < this.token.header.length; i++) {\n\t flags = { header: true, align: this.token.align[i] };\n\t cell += this.renderer.tablecell(\n\t this.inline.output(this.token.header[i]),\n\t { header: true, align: this.token.align[i] }\n\t );\n\t }\n\t header += this.renderer.tablerow(cell);\n\t\n\t for (i = 0; i < this.token.cells.length; i++) {\n\t row = this.token.cells[i];\n\t\n\t cell = '';\n\t for (j = 0; j < row.length; j++) {\n\t cell += this.renderer.tablecell(\n\t this.inline.output(row[j]),\n\t { header: false, align: this.token.align[j] }\n\t );\n\t }\n\t\n\t body += this.renderer.tablerow(cell);\n\t }\n\t return this.renderer.table(header, body);\n\t }\n\t case 'blockquote_start': {\n\t var body = '';\n\t\n\t while (this.next().type !== 'blockquote_end') {\n\t body += this.tok();\n\t }\n\t\n\t return this.renderer.blockquote(body);\n\t }\n\t case 'list_start': {\n\t var body = ''\n\t , ordered = this.token.ordered;\n\t\n\t while (this.next().type !== 'list_end') {\n\t body += this.tok();\n\t }\n\t\n\t return this.renderer.list(body, ordered);\n\t }\n\t case 'list_item_start': {\n\t var body = '';\n\t\n\t while (this.next().type !== 'list_item_end') {\n\t body += this.token.type === 'text'\n\t ? this.parseText()\n\t : this.tok();\n\t }\n\t\n\t return this.renderer.listitem(body);\n\t }\n\t case 'loose_item_start': {\n\t var body = '';\n\t\n\t while (this.next().type !== 'list_item_end') {\n\t body += this.tok();\n\t }\n\t\n\t return this.renderer.listitem(body);\n\t }\n\t case 'html': {\n\t var html = !this.token.pre && !this.options.pedantic\n\t ? this.inline.output(this.token.text)\n\t : this.token.text;\n\t return this.renderer.html(html);\n\t }\n\t case 'paragraph': {\n\t return this.renderer.paragraph(this.inline.output(this.token.text));\n\t }\n\t case 'text': {\n\t return this.renderer.paragraph(this.parseText());\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Helpers\n\t */\n\t\n\tfunction escape(html, encode) {\n\t return html\n\t .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n\t .replace(//g, '>')\n\t .replace(/\"/g, '"')\n\t .replace(/'/g, ''');\n\t}\n\t\n\tfunction unescape(html) {\n\t\t// explicitly match decimal, hex, and named HTML entities \n\t return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n\t n = n.toLowerCase();\n\t if (n === 'colon') return ':';\n\t if (n.charAt(0) === '#') {\n\t return n.charAt(1) === 'x'\n\t ? String.fromCharCode(parseInt(n.substring(2), 16))\n\t : String.fromCharCode(+n.substring(1));\n\t }\n\t return '';\n\t });\n\t}\n\t\n\tfunction replace(regex, opt) {\n\t regex = regex.source;\n\t opt = opt || '';\n\t return function self(name, val) {\n\t if (!name) return new RegExp(regex, opt);\n\t val = val.source || val;\n\t val = val.replace(/(^|[^\\[])\\^/g, '$1');\n\t regex = regex.replace(name, val);\n\t return self;\n\t };\n\t}\n\t\n\tfunction noop() {}\n\tnoop.exec = noop;\n\t\n\tfunction merge(obj) {\n\t var i = 1\n\t , target\n\t , key;\n\t\n\t for (; i < arguments.length; i++) {\n\t target = arguments[i];\n\t for (key in target) {\n\t if (Object.prototype.hasOwnProperty.call(target, key)) {\n\t obj[key] = target[key];\n\t }\n\t }\n\t }\n\t\n\t return obj;\n\t}\n\t\n\t\n\t/**\n\t * Marked\n\t */\n\t\n\tfunction marked(src, opt, callback) {\n\t if (callback || typeof opt === 'function') {\n\t if (!callback) {\n\t callback = opt;\n\t opt = null;\n\t }\n\t\n\t opt = merge({}, marked.defaults, opt || {});\n\t\n\t var highlight = opt.highlight\n\t , tokens\n\t , pending\n\t , i = 0;\n\t\n\t try {\n\t tokens = Lexer.lex(src, opt)\n\t } catch (e) {\n\t return callback(e);\n\t }\n\t\n\t pending = tokens.length;\n\t\n\t var done = function(err) {\n\t if (err) {\n\t opt.highlight = highlight;\n\t return callback(err);\n\t }\n\t\n\t var out;\n\t\n\t try {\n\t out = Parser.parse(tokens, opt);\n\t } catch (e) {\n\t err = e;\n\t }\n\t\n\t opt.highlight = highlight;\n\t\n\t return err\n\t ? callback(err)\n\t : callback(null, out);\n\t };\n\t\n\t if (!highlight || highlight.length < 3) {\n\t return done();\n\t }\n\t\n\t delete opt.highlight;\n\t\n\t if (!pending) return done();\n\t\n\t for (; i < tokens.length; i++) {\n\t (function(token) {\n\t if (token.type !== 'code') {\n\t return --pending || done();\n\t }\n\t return highlight(token.text, token.lang, function(err, code) {\n\t if (err) return done(err);\n\t if (code == null || code === token.text) {\n\t return --pending || done();\n\t }\n\t token.text = code;\n\t token.escaped = true;\n\t --pending || done();\n\t });\n\t })(tokens[i]);\n\t }\n\t\n\t return;\n\t }\n\t try {\n\t if (opt) opt = merge({}, marked.defaults, opt);\n\t return Parser.parse(Lexer.lex(src, opt), opt);\n\t } catch (e) {\n\t e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n\t if ((opt || marked.defaults).silent) {\n\t return '

    An error occured:

    '\n\t        + escape(e.message + '', true)\n\t        + '
    ';\n\t }\n\t throw e;\n\t }\n\t}\n\t\n\t/**\n\t * Options\n\t */\n\t\n\tmarked.options =\n\tmarked.setOptions = function(opt) {\n\t merge(marked.defaults, opt);\n\t return marked;\n\t};\n\t\n\tmarked.defaults = {\n\t gfm: true,\n\t tables: true,\n\t breaks: false,\n\t pedantic: false,\n\t sanitize: false,\n\t sanitizer: null,\n\t mangle: true,\n\t smartLists: false,\n\t silent: false,\n\t highlight: null,\n\t langPrefix: 'lang-',\n\t smartypants: false,\n\t headerPrefix: '',\n\t renderer: new Renderer,\n\t xhtml: false\n\t};\n\t\n\t/**\n\t * Expose\n\t */\n\t\n\tmarked.Parser = Parser;\n\tmarked.parser = Parser.parse;\n\t\n\tmarked.Renderer = Renderer;\n\t\n\tmarked.Lexer = Lexer;\n\tmarked.lexer = Lexer.lex;\n\t\n\tmarked.InlineLexer = InlineLexer;\n\tmarked.inlineLexer = InlineLexer.output;\n\t\n\tmarked.parse = marked;\n\t\n\tif (true) {\n\t module.exports = marked;\n\t} else if (typeof define === 'function' && define.amd) {\n\t define(function() { return marked; });\n\t} else {\n\t this.marked = marked;\n\t}\n\t\n\t}).call(function() {\n\t return this || (typeof window !== 'undefined' ? window : global);\n\t}());\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\t/* **********************************************\n\t Begin prism-core.js\n\t********************************************** */\n\t\n\tvar _self = (typeof window !== 'undefined')\n\t\t? window // if in browser\n\t\t: (\n\t\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t\t);\n\t\n\t/**\n\t * Prism: Lightweight, robust, elegant syntax highlighting\n\t * MIT license http://www.opensource.org/licenses/mit-license.php/\n\t * @author Lea Verou http://lea.verou.me\n\t */\n\t\n\tvar Prism = (function(){\n\t\n\t// Private helper vars\n\tvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\n\tvar uniqueId = 0;\n\t\n\tvar _ = _self.Prism = {\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\tutil: {\n\t\t\tencode: function (tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tpattern.lastIndex = 0;\n\t\n\t\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t\t delNum = 1;\n\t\n\t\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t\t p = pos;\n\t\n\t\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t\t after = str.slice(to);\n\t\n\t\t\t\t\t\tvar args = [i, delNum];\n\t\n\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\t\n\t\t\t\t\t\targs.push(wrapped);\n\t\n\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\n\t\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\t\n\t\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\ttokenize: function(text, grammar, language) {\n\t\t\tvar strarr = [text];\n\t\n\t\t\tvar rest = grammar.rest;\n\t\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\t\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\t\n\t\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\t\n\t\t\treturn strarr;\n\t\t},\n\t\n\t\thooks: {\n\t\t\tall: {},\n\t\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\t\n\t\t\t\thooks[name] = hooks[name] || [];\n\t\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\t\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\t\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\t\n\tvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\t\tthis.type = type;\n\t\tthis.content = content;\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || \"\").length|0;\n\t\tthis.greedy = !!greedy;\n\t};\n\t\n\tToken.stringify = function(o, language, parent) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\n\t\tif (_.util.type(o) === 'Array') {\n\t\t\treturn o.map(function(element) {\n\t\t\t\treturn Token.stringify(element, language, o);\n\t\t\t}).join('');\n\t\t}\n\t\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: Token.stringify(o.content, language, parent),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language,\n\t\t\tparent: parent\n\t\t};\n\t\n\t\tif (env.type == 'comment') {\n\t\t\tenv.attributes['spellcheck'] = 'true';\n\t\t}\n\t\n\t\tif (o.alias) {\n\t\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t}\n\t\n\t\t_.hooks.run('wrap', env);\n\t\n\t\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}).join(' ');\n\t\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\t\n\t};\n\t\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _self.Prism;\n\t\t}\n\t \t// In worker\n\t\t_self.addEventListener('message', function(evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t lang = message.language,\n\t\t\t code = message.code,\n\t\t\t immediateClose = message.immediateClose;\n\t\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t\n\t\treturn _self.Prism;\n\t}\n\t\n\t//Get current script and highlight\n\tvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\t\n\tif (script) {\n\t\t_.filename = script.src;\n\t\n\t\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\t\tif(document.readyState !== \"loading\") {\n\t\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t\t} else {\n\t\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn _self.Prism;\n\t\n\t})();\n\t\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = Prism;\n\t}\n\t\n\t// hack for components to work correctly in node.js\n\tif (typeof global !== 'undefined') {\n\t\tglobal.Prism = Prism;\n\t}\n\t\n\t\n\t/* **********************************************\n\t Begin prism-markup.js\n\t********************************************** */\n\t\n\tPrism.languages.markup = {\n\t\t'comment': //,\n\t\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t\t'doctype': //i,\n\t\t'cdata': //i,\n\t\t'tag': {\n\t\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\t\tinside: {\n\t\t\t\t'tag': {\n\t\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=(?:('|\")[\\s\\S]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'punctuation': /\\/?>/,\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t}\n\t\t},\n\t\t'entity': /&#?[\\da-z]{1,8};/i\n\t};\n\t\n\tPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\t\tPrism.languages.markup['entity'];\n\t\n\t// Plugin to make entity title show the real entity, idea by Roman Komarov\n\tPrism.hooks.add('wrap', function(env) {\n\t\n\t\tif (env.type === 'entity') {\n\t\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t\t}\n\t});\n\t\n\tPrism.languages.xml = Prism.languages.markup;\n\tPrism.languages.html = Prism.languages.markup;\n\tPrism.languages.mathml = Prism.languages.markup;\n\tPrism.languages.svg = Prism.languages.markup;\n\t\n\t\n\t/* **********************************************\n\t Begin prism-css.js\n\t********************************************** */\n\t\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\t\tinside: {\n\t\t\t\t'rule': /@[\\w-]+/\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t\t'string': {\n\t\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t\t'important': /\\B!important\\b/i,\n\t\t'function': /[-a-z0-9]+(?=\\()/i,\n\t\t'punctuation': /[(){};:]/\n\t};\n\t\n\tPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\t\n\tif (Prism.languages.markup) {\n\t\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t\t'style': {\n\t\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: Prism.languages.css,\n\t\t\t\talias: 'language-css'\n\t\t\t}\n\t\t});\n\t\t\n\t\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t\t'style-attr': {\n\t\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'attr-name': {\n\t\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t\t'attr-value': {\n\t\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\talias: 'language-css'\n\t\t\t}\n\t\t}, Prism.languages.markup.tag);\n\t}\n\t\n\t/* **********************************************\n\t Begin prism-clike.js\n\t********************************************** */\n\t\n\tPrism.languages.clike = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': {\n\t\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'class-name': {\n\t\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t\t'boolean': /\\b(true|false)\\b/,\n\t\t'function': /[a-z0-9_]+(?=\\()/i,\n\t\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t\t'punctuation': /[{}[\\];(),.:]/\n\t};\n\t\n\t\n\t/* **********************************************\n\t Begin prism-javascript.js\n\t********************************************** */\n\t\n\tPrism.languages.javascript = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t\t'number': /\\b-?(0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n\t});\n\t\n\tPrism.languages.insertBefore('javascript', 'keyword', {\n\t\t'regex': {\n\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t\t'function-variable': {\n\t\t\tpattern: /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\t\talias: 'function'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('javascript', 'string', {\n\t\t'template-string': {\n\t\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t\t},\n\t\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t}\n\t\t}\n\t});\n\t\n\tif (Prism.languages.markup) {\n\t\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t\t'script': {\n\t\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: Prism.languages.javascript,\n\t\t\t\talias: 'language-javascript'\n\t\t\t}\n\t\t});\n\t}\n\t\n\tPrism.languages.js = Prism.languages.javascript;\n\t\n\t\n\t/* **********************************************\n\t Begin prism-file-highlight.js\n\t********************************************** */\n\t\n\t(function () {\n\t\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tself.Prism.fileHighlight = function() {\n\t\n\t\t\tvar Extensions = {\n\t\t\t\t'js': 'javascript',\n\t\t\t\t'py': 'python',\n\t\t\t\t'rb': 'ruby',\n\t\t\t\t'ps1': 'powershell',\n\t\t\t\t'psm1': 'powershell',\n\t\t\t\t'sh': 'bash',\n\t\t\t\t'bat': 'batch',\n\t\t\t\t'h': 'c',\n\t\t\t\t'tex': 'latex'\n\t\t\t};\n\t\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\t\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\t\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\t\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\t\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\t\n\t\t\t\tpre.textContent = '';\n\t\n\t\t\t\tcode.textContent = 'Loading…';\n\t\n\t\t\t\tpre.appendChild(code);\n\t\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\n\t\t\t\txhr.open('GET', src, true);\n\t\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\t\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\t\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\n\t\t};\n\t\n\t\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\t\n\t})();\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.java = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\\b/,\n\t\t'number': /\\b0b[01]+\\b|\\b0x[\\da-f]*\\.?[\\da-fp\\-]+\\b|\\b\\d*\\.?\\d+(?:e[+-]?\\d+)?[df]?\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(?:\\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\\|[|=]?|\\*=?|\\/=?|%=?|\\^=?|[?:~])/m,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('java','function', {\n\t\t'annotation': {\n\t\t\talias: 'punctuation',\n\t\t\tpattern: /(^|[^.])@\\w+/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.csharp = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\\b/,\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /@(\"|')(\\1\\1|\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(\\\\?.)*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b-?(0x[\\da-f]+|\\d*\\.?\\d+f?)\\b/i\n\t});\n\t\n\tPrism.languages.insertBefore('csharp', 'keyword', {\n\t\t'generic-method': {\n\t\t\tpattern: /[a-z0-9_]+\\s*<[^>\\r\\n]+?>\\s*(?=\\()/i,\n\t\t\talias: 'function',\n\t\t\tinside: {\n\t\t\t\tkeyword: Prism.languages.csharp.keyword,\n\t\t\t\tpunctuation: /[<>(),.:]/\n\t\t\t}\n\t\t},\n\t\t'preprocessor': {\n\t\t\tpattern: /(^\\s*)#.*/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'property',\n\t\t\tinside: {\n\t\t\t\t// highlight preprocessor directives as keywords\n\t\t\t\t'directive': {\n\t\t\t\t\tpattern: /(\\s*#)\\b(define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\\b/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n\t * Modified by Miles Johnson: http://milesj.me\n\t *\n\t * Supports the following:\n\t * \t\t- Extends clike syntax\n\t * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n\t * \t\t- Smarter constant and function matching\n\t *\n\t * Adds the following new token classes:\n\t * \t\tconstant, delimiter, variable, function, package\n\t */\n\t\n\tPrism.languages.php = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\\b/i,\n\t\t'constant': /\\b[A-Z0-9_]{2,}\\b/,\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\t// Shell-like comments are matched after strings, because they are less\n\t// common than strings containing hashes...\n\tPrism.languages.insertBefore('php', 'class-name', {\n\t\t'shell-comment': {\n\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'comment'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('php', 'keyword', {\n\t\t'delimiter': {\n\t\t\tpattern: /\\?>|<\\?(?:php|=)?/i,\n\t\t\talias: 'important'\n\t\t},\n\t\t'variable': /\\$\\w+\\b/i,\n\t\t'package': {\n\t\t\tpattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\tpunctuation: /\\\\/\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// Must be defined after the function pattern\n\tPrism.languages.insertBefore('php', 'operator', {\n\t\t'property': {\n\t\t\tpattern: /(->)[\\w]+/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\t// Add HTML support if the markup language exists\n\tif (Prism.languages.markup) {\n\t\n\t\t// Tokenize all inline PHP blocks that are wrapped in \n\t\t// This allows for easy PHP + markup highlighting\n\t\tPrism.hooks.add('before-highlight', function(env) {\n\t\t\tif (env.language !== 'php' || !/(?:<\\?php|<\\?)/ig.test(env.code)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tenv.tokenStack = [];\n\t\n\t\t\tenv.backupCode = env.code;\n\t\t\tenv.code = env.code.replace(/(?:<\\?php|<\\?)[\\s\\S]*?(?:\\?>|$)/ig, function(match) {\n\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t// Check for existing strings\n\t\t\t\twhile (env.backupCode.indexOf('___PHP' + i + '___') !== -1)\n\t\t\t\t\t++i;\n\t\n\t\t\t\t// Create a sparse array\n\t\t\t\tenv.tokenStack[i] = match;\n\t\n\t\t\t\treturn '___PHP' + i + '___';\n\t\t\t});\n\t\n\t\t\t// Switch the grammar to markup\n\t\t\tenv.grammar = Prism.languages.markup;\n\t\t});\n\t\n\t\t// Restore env.code for other plugins (e.g. line-numbers)\n\t\tPrism.hooks.add('before-insert', function(env) {\n\t\t\tif (env.language === 'php' && env.backupCode) {\n\t\t\t\tenv.code = env.backupCode;\n\t\t\t\tdelete env.backupCode;\n\t\t\t}\n\t\t});\n\t\n\t\t// Re-insert the tokens after highlighting\n\t\tPrism.hooks.add('after-highlight', function(env) {\n\t\t\tif (env.language !== 'php' || !env.tokenStack) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Switch the grammar back\n\t\t\tenv.grammar = Prism.languages.php;\n\t\n\t\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\t\tvar k = keys[i];\n\t\t\t\tvar t = env.tokenStack[k];\n\t\n\t\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\t\tenv.highlightedCode = env.highlightedCode.replace('___PHP' + k + '___',\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\tPrism.highlight(t, env.grammar, 'php').replace(/\\$/g, '$$$$') +\n\t\t\t\t\t\t\"\");\n\t\t\t}\n\t\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\t\t});\n\t}\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.python= {\n\t\t'triple-quoted-string': {\n\t\t\tpattern: /\"\"\"[\\s\\S]+?\"\"\"|'''[\\s\\S]+?'''/,\n\t\t\talias: 'string'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: /(\"|')(?:\\\\\\\\|\\\\?[^\\\\\\r\\n])*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'function' : {\n\t\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\\()/g,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'class-name': {\n\t\t\tpattern: /(\\bclass\\s+)[a-z0-9_]+/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword' : /\\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\\b/,\n\t\t'boolean' : /\\b(?:True|False)\\b/,\n\t\t'number' : /\\b-?(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n\t\t'operator' : /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:or|and|not)\\b/,\n\t\t'punctuation' : /[{}[\\];(),.:]/\n\t};\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.json = {\n\t\t'property': /\"(?:\\\\.|[^\\\\\"])*\"(?=\\s*:)/ig,\n\t\t'string': /\"(?!:)(?:\\\\.|[^\\\\\"])*\"(?!:)/g,\n\t\t'number': /\\b-?(0x[\\dA-Fa-f]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?)\\b/g,\n\t\t'punctuation': /[{}[\\]);,]/g,\n\t\t'operator': /:/g,\n\t\t'boolean': /\\b(true|false)\\b/gi,\n\t\t'null': /\\bnull\\b/gi\n\t};\n\t\n\tPrism.languages.jsonp = Prism.languages.json;\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.yaml={scalar:{pattern:/([\\-:]\\s*(![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\3[^\\r\\n]+)*)/,lookbehind:!0,alias:\"string\"},comment:/#.*/,key:{pattern:/(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,lookbehind:!0,alias:\"atrule\"},directive:{pattern:/(^[ \\t]*)%.+/m,lookbehind:!0,alias:\"important\"},datetime:{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(\\d{4}-\\d\\d?-\\d\\d?([tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(\\.\\d*)?[ \\t]*(Z|[-+]\\d\\d?(:\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(:\\d{2}(\\.\\d*)?)?)(?=[ \\t]*($|,|]|}))/m,lookbehind:!0,alias:\"number\"},\"boolean\":{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(true|false)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},\"null\":{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(null|~)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},string:{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')(?=[ \\t]*($|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)[+\\-]?(0x[\\da-f]+|0o[0-7]+|(\\d+\\.?\\d*|\\.?\\d+)(e[\\+\\-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\\s]+/,important:/[&*][\\w]+/,punctuation:/---|[:[\\]{}\\-,|>?]|\\.\\.\\./};\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.perl = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\t// POD\n\t\t\t\tpattern: /(^\\s*)=\\w+[\\s\\S]*?=cut.*/m,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\$])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t// TODO Could be nice to handle Heredoc too.\n\t\t'string': [\n\t\t\t// q/.../\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q a...a\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q(...)\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q{...}\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q[...]\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q<...>\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t// \"...\", `...`\n\t\t\t{\n\t\t\t\tpattern: /(\"|`)(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t// '...'\n\t\t\t// FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n\t\t\t{\n\t\t\t\tpattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'regex': [\n\t\t\t// m/.../\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m a...a\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\.)*?\\1[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m(...)\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m{...}\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m[...]\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m<...>\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t// The lookbehinds prevent -s from breaking\n\t\t\t// FIXME We don't handle change of separator like s(...)[...]\n\t\t\t// s/.../.../\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s a...a...a\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s(...)(...)\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s{...}{...}\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s[...][...]\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s<...><...>\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// /.../\n\t\t\t// The look-ahead tries to prevent two divisions on\n\t\t\t// the same line from being highlighted as regex.\n\t\t\t// This does not support multi-line regex.\n\t\t\t{\n\t\t\t\tpattern: /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\n\t\t// FIXME Not sure about the handling of ::, ', and #\n\t\t'variable': [\n\t\t\t// ${^POSTMATCH}\n\t\t\t/[&*$@%]\\{\\^[A-Z]+\\}/,\n\t\t\t// $^V\n\t\t\t/[&*$@%]\\^[A-Z_]/,\n\t\t\t// ${...}\n\t\t\t/[&*$@%]#?(?=\\{)/,\n\t\t\t// $foo\n\t\t\t/[&*$@%]#?((::)*'?(?!\\d)[\\w$]+)+(::)*/i,\n\t\t\t// $1\n\t\t\t/[&*$@%]\\d+/,\n\t\t\t// $_, @_, %!\n\t\t\t// The negative lookahead prevents from breaking the %= operator\n\t\t\t/(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n\t\t],\n\t\t'filehandle': {\n\t\t\t// <>, , _\n\t\t\tpattern: /<(?![<=])\\S*>|\\b_\\b/,\n\t\t\talias: 'symbol'\n\t\t},\n\t\t'vstring': {\n\t\t\t// v1.2, 1.2.3\n\t\t\tpattern: /v\\d+(\\.\\d+)*|\\d+(\\.\\d+){2,}/,\n\t\t\talias: 'string'\n\t\t},\n\t\t'function': {\n\t\t\tpattern: /sub [a-z0-9_]+/i,\n\t\t\tinside: {\n\t\t\t\tkeyword: /sub/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n\t\t'number': /\\b-?(0x[\\dA-Fa-f](_?[\\dA-Fa-f])*|0b[01](_?[01])*|(\\d(_?\\d)*)?\\.?\\d(_?\\d)*([Ee][+-]?\\d+)?)\\b/,\n\t\t'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n\t\t'punctuation': /[{}[\\];(),:]/\n\t};\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.go = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t\t'builtin': /\\b(bool|byte|complex(64|128)|error|float(32|64)|rune|string|u?int(8|16|32|64|)|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(ln)?|real|recover)\\b/,\n\t\t'boolean': /\\b(_|iota|nil|true|false)\\b/,\n\t\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t\t'number': /\\b(-?(0x[a-f\\d]+|(\\d+\\.?\\d*|\\.\\d+)(e[-+]?\\d+)?)i?)\\b/i,\n\t\t'string': {\n\t\t\tpattern: /(\"|'|`)(\\\\?.|\\r|\\n)*?\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t});\n\tdelete Prism.languages.go['class-name'];\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\tvar insideString = {\n\t\t\tvariable: [\n\t\t\t\t// Arithmetic Environment\n\t\t\t\t{\n\t\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t\tvariable: [{\n\t\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/^\\$\\(\\(/,\n\t\t\t\t\t\t],\n\t\t\t\t\t\tnumber: /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee]-?\\d+)?)\\b/,\n\t\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t\toperator: /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n\t\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t\tpunctuation: /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t// Command Substitution\n\t\t\t\t{\n\t\t\t\t\tpattern: /\\$\\([^)]+\\)|`[^`]+`/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\tvariable: /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/\\$(?:[a-z0-9_#\\?\\*!@]+|\\{[^}]+\\})/i\n\t\t\t],\n\t\t};\n\t\n\t\tPrism.languages.bash = {\n\t\t\t'shebang': {\n\t\t\t\tpattern: /^#!\\s*\\/bin\\/bash|^#!\\s*\\/bin\\/sh/,\n\t\t\t\talias: 'important'\n\t\t\t},\n\t\t\t'comment': {\n\t\t\t\tpattern: /(^|[^\"{\\\\])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'string': [\n\t\t\t\t//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t\t{\n\t\t\t\t\tpattern: /((?:^|[^<])<<\\s*)(?:\"|')?(\\w+?)(?:\"|')?\\s*\\r?\\n(?:[\\s\\S])*?\\r?\\n\\2/g,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: insideString\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /([\"'])(?:\\\\\\\\|\\\\?[^\\\\])*?\\1/g,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: insideString\n\t\t\t\t}\n\t\t\t],\n\t\t\t'variable': insideString.variable,\n\t\t\t// Originally based on http://ss64.com/bash/\n\t\t\t'function': {\n\t\t\t\tpattern: /(^|\\s|;|\\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\\s|;|\\||&)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'keyword': {\n\t\t\t\tpattern: /(^|\\s|;|\\||&)(?:let|:|\\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\\s|;|\\||&)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'boolean': {\n\t\t\t\tpattern: /(^|\\s|;|\\||&)(?:true|false)(?=$|\\s|;|\\||&)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'operator': /&&?|\\|\\|?|==?|!=?|<<>|<=?|>=?|=~/,\n\t\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];]/\n\t\t};\n\t\n\t\tvar inside = insideString.variable[1].inside;\n\t\tinside['function'] = Prism.languages.bash['function'];\n\t\tinside.keyword = Prism.languages.bash.keyword;\n\t\tinside.boolean = Prism.languages.bash.boolean;\n\t\tinside.operator = Prism.languages.bash.operator;\n\t\tinside.punctuation = Prism.languages.bash.punctuation;\n\t})(Prism);\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.fsharp = Prism.languages.extend('clike', {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\(\\*[\\s\\S]*?\\*\\)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'keyword': /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\\b/,\n\t\t'string': {\n\t\t\tpattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1)B?/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': [\n\t\t\t/\\b-?0x[\\da-fA-F]+(un|lf|LF)?\\b/,\n\t\t\t/\\b-?0b[01]+(y|uy)?\\b/,\n\t\t\t/\\b-?(\\d*\\.?\\d+|\\d+\\.)([fFmM]|[eE][+-]?\\d+)?\\b/,\n\t\t\t/\\b-?\\d+(y|uy|s|us|l|u|ul|L|UL|I)?\\b/\n\t\t]\n\t});\n\tPrism.languages.insertBefore('fsharp', 'keyword', {\n\t\t'preprocessor': {\n\t\t\tpattern: /^[^\\r\\n\\S]*#.*/m,\n\t\t\talias: 'property',\n\t\t\tinside: {\n\t\t\t\t'directive': {\n\t\t\t\t\tpattern: /(\\s*#)\\b(else|endif|if|light|line|nowarn)\\b/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.typescript = Prism.languages.extend('javascript', {\n\t\t// From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n\t\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|enum|symbol|namespace|abstract|require|type)\\b/\n\t});\n\t\n\tPrism.languages.ts = Prism.languages.typescript;\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports) {\n\n\t(function (Prism) {\n\t\tvar inside = {\n\t\t\t'url': /url\\(([\"']?).*?\\1\\)/i,\n\t\t\t'string': {\n\t\t\t\tpattern: /(\"|')(?:[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'interpolation': null, // See below\n\t\t\t'func': null, // See below\n\t\t\t'important': /\\B!(?:important|optional)\\b/i,\n\t\t\t'keyword': {\n\t\t\t\tpattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'hexcode': /#[\\da-f]{3,6}/i,\n\t\t\t'number': /\\b\\d+(?:\\.\\d+)?%?/,\n\t\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t\t'operator': [\n\t\t\t\t// We want non-word chars around \"-\" because it is\n\t\t\t\t// accepted in property names.\n\t\t\t\t/~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.+|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n\t\t\t],\n\t\t\t'punctuation': /[{}()\\[\\];:,]/\n\t\t};\n\t\n\t\tinside['interpolation'] = {\n\t\t\tpattern: /\\{[^\\r\\n}:]+\\}/,\n\t\t\talias: 'variable',\n\t\t\tinside: Prism.util.clone(inside)\n\t\t};\n\t\tinside['func'] = {\n\t\t\tpattern: /[\\w-]+\\([^)]*\\).*/,\n\t\t\tinside: {\n\t\t\t\t'function': /^[^(]+/,\n\t\t\t\trest: Prism.util.clone(inside)\n\t\t\t}\n\t\t};\n\t\n\t\tPrism.languages.stylus = {\n\t\t\t'comment': {\n\t\t\t\tpattern: /(^|[^\\\\])(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'atrule-declaration': {\n\t\t\t\tpattern: /(^\\s*)@.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'atrule': /^@[\\w-]+/,\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\t\t'variable-declaration': {\n\t\t\t\tpattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:(?:\\{[^}]*\\}|.+)|$)/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\S+/,\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t'statement': {\n\t\t\t\tpattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t]+.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\tkeyword: /^\\S+/,\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// A property/value pair cannot end with a comma or a brace\n\t\t\t// It cannot have indented content unless it ended with a semicolon\n\t\t\t'property-declaration': {\n\t\t\t\tpattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'property': {\n\t\t\t\t\t\tpattern: /^[^\\s:]+/,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t'interpolation': inside.interpolation\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\n\t\n\t\n\t\t\t// A selector can contain parentheses only as part of a pseudo-element\n\t\t\t// It can span multiple lines.\n\t\t\t// It must end with a comma or an accolade or have indented content.\n\t\t\t'selector': {\n\t\t\t\tpattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': inside.interpolation,\n\t\t\t\t\t'punctuation': /[{},]/\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t'func': inside.func,\n\t\t\t'string': inside.string,\n\t\t\t'interpolation': inside.interpolation,\n\t\t\t'punctuation': /[{}()\\[\\];:.]/\n\t\t};\n\t}(Prism));\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\n\t/* FIXME :\n\t :extend() is not handled specifically : its highlighting is buggy.\n\t Mixin usage must be inside a ruleset to be highlighted.\n\t At-rules (e.g. import) containing interpolations are buggy.\n\t Detached rulesets are highlighted as at-rules.\n\t A comment before a mixin usage prevents the latter to be properly highlighted.\n\t */\n\t\n\tPrism.languages.less = Prism.languages.extend('css', {\n\t\t'comment': [\n\t\t\t/\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-]+?(?:\\([^{}]+\\)|[^(){};])*?(?=\\s*\\{)/i,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /[:()]/\n\t\t\t}\n\t\t},\n\t\t// selectors and mixins are considered the same\n\t\t'selector': {\n\t\t\tpattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\([^{}]*\\)|[^{};@])*?(?=\\s*\\{)/,\n\t\t\tinside: {\n\t\t\t\t// mixin parameters\n\t\t\t\t'variable': /@+[\\w-]+/\n\t\t\t}\n\t\t},\n\t\n\t\t'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n\t\t'punctuation': /[{}();:,]/,\n\t\t'operator': /[+\\-*\\/]/\n\t});\n\t\n\t// Invert function and punctuation positions\n\tPrism.languages.insertBefore('less', 'punctuation', {\n\t\t'function': Prism.languages.less.function\n\t});\n\t\n\tPrism.languages.insertBefore('less', 'property', {\n\t\t'variable': [\n\t\t\t// Variable declaration (the colon must be consumed!)\n\t\t\t{\n\t\t\t\tpattern: /@[\\w-]+\\s*:/,\n\t\t\t\tinside: {\n\t\t\t\t\t\"punctuation\": /:/\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// Variable usage\n\t\t\t/@@?[\\w-]+/\n\t\t],\n\t\t'mixin-usage': {\n\t\t\tpattern: /([{;]\\s*)[.#](?!\\d)[\\w-]+.*?(?=[(;])/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'function'\n\t\t}\n\t});\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\tPrism.languages.sass = Prism.languages.extend('css', {\n\t\t\t// Sass comments don't need to be closed, only indented\n\t\t\t'comment': {\n\t\t\t\tpattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t]+.+)*/m,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t});\n\t\n\t\tPrism.languages.insertBefore('sass', 'atrule', {\n\t\t\t// We want to consume the whole line\n\t\t\t'atrule-line': {\n\t\t\t\t// Includes support for = and + shortcuts\n\t\t\t\tpattern: /^(?:[ \\t]*)[@+=].+/m,\n\t\t\t\tinside: {\n\t\t\t\t\t'atrule': /(?:@[\\w-]+|[+=])/m\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tdelete Prism.languages.sass.atrule;\n\t\n\t\n\t\tvar variable = /((\\$[-_\\w]+)|(#\\{\\$[-_\\w]+\\}))/i;\n\t\tvar operator = [\n\t\t\t/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/,\n\t\t\t{\n\t\t\t\tpattern: /(\\s+)-(?=\\s)/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t];\n\t\n\t\tPrism.languages.insertBefore('sass', 'property', {\n\t\t\t// We want to consume the whole line\n\t\t\t'variable-line': {\n\t\t\t\tpattern: /^[ \\t]*\\$.+/m,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /:/,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'operator': operator\n\t\t\t\t}\n\t\t\t},\n\t\t\t// We want to consume the whole line\n\t\t\t'property-line': {\n\t\t\t\tpattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s]+.*)/m,\n\t\t\t\tinside: {\n\t\t\t\t\t'property': [\n\t\t\t\t\t\t/[^:\\s]+(?=\\s*:)/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(:)[^:\\s]+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t'punctuation': /:/,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'operator': operator,\n\t\t\t\t\t'important': Prism.languages.sass.important\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tdelete Prism.languages.sass.property;\n\t\tdelete Prism.languages.sass.important;\n\t\n\t\t// Now that whole lines for other patterns are consumed,\n\t\t// what's left should be selectors\n\t\tdelete Prism.languages.sass.selector;\n\t\tPrism.languages.insertBefore('sass', 'punctuation', {\n\t\t\t'selector': {\n\t\t\t\tpattern: /([ \\t]*)\\S(?:,?[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,?[^,\\r\\n]+)*)*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t});\n\t\n\t}(Prism));\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\n\t\tvar handlebars_pattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n\t\n\t\tPrism.languages.handlebars = Prism.languages.extend('markup', {\n\t\t\t'handlebars': {\n\t\t\t\tpattern: handlebars_pattern,\n\t\t\t\tinside: {\n\t\t\t\t\t'delimiter': {\n\t\t\t\t\t\tpattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\t'string': /([\"'])(\\\\?.)*?\\1/,\n\t\t\t\t\t'number': /\\b-?(0x[\\dA-Fa-f]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?)\\b/,\n\t\t\t\t\t'boolean': /\\b(true|false)\\b/,\n\t\t\t\t\t'block': {\n\t\t\t\t\t\tpattern: /^(\\s*~?\\s*)[#\\/]\\S+?(?=\\s*~?\\s*$|\\s)/i,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'keyword'\n\t\t\t\t\t},\n\t\t\t\t\t'brackets': {\n\t\t\t\t\t\tpattern: /\\[[^\\]]+\\]/,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\tpunctuation: /\\[|\\]/,\n\t\t\t\t\t\t\tvariable: /[\\s\\S]+/\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /[!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n\t\t\t\t\t'variable': /[^!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\t// Comments are inserted at top so that they can\n\t\t// surround markup\n\t\tPrism.languages.insertBefore('handlebars', 'tag', {\n\t\t\t'handlebars-comment': {\n\t\t\t\tpattern: /\\{\\{![\\s\\S]*?\\}\\}/,\n\t\t\t\talias: ['handlebars','comment']\n\t\t\t}\n\t\t});\n\t\n\t\t// Tokenize all inline Handlebars expressions that are wrapped in {{ }} or {{{ }}}\n\t\t// This allows for easy Handlebars + markup highlighting\n\t\tPrism.hooks.add('before-highlight', function(env) {\n\t\t\tif (env.language !== 'handlebars') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tenv.tokenStack = [];\n\t\n\t\t\tenv.backupCode = env.code;\n\t\t\tenv.code = env.code.replace(handlebars_pattern, function(match) {\n\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t// Check for existing strings\n\t\t\t\twhile (env.backupCode.indexOf('___HANDLEBARS' + i + '___') !== -1)\n\t\t\t\t\t++i;\n\t\n\t\t\t\t// Create a sparse array\n\t\t\t\tenv.tokenStack[i] = match;\n\t\n\t\t\t\treturn '___HANDLEBARS' + i + '___';\n\t\t\t});\n\t\t});\n\t\n\t\t// Restore env.code for other plugins (e.g. line-numbers)\n\t\tPrism.hooks.add('before-insert', function(env) {\n\t\t\tif (env.language === 'handlebars') {\n\t\t\t\tenv.code = env.backupCode;\n\t\t\t\tdelete env.backupCode;\n\t\t\t}\n\t\t});\n\t\n\t\t// Re-insert the tokens after highlighting\n\t\t// and highlight them with defined grammar\n\t\tPrism.hooks.add('after-highlight', function(env) {\n\t\t\tif (env.language !== 'handlebars') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\t\tvar k = keys[i];\n\t\t\t\tvar t = env.tokenStack[k];\n\t\n\t\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\t\tenv.highlightedCode = env.highlightedCode.replace('___HANDLEBARS' + k + '___', Prism.highlight(t, env.grammar, 'handlebars').replace(/\\$/g, '$$$$'));\n\t\t\t}\n\t\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\t\t});\n\t\n\t}(Prism));\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.applescript = {\n\t\t'comment': [\n\t\t\t// Allow one level of nesting\n\t\t\t/\\(\\*(?:\\(\\*[\\s\\S]*?\\*\\)|[\\s\\S])*?\\*\\)/,\n\t\t\t/--.+/,\n\t\t\t/#.+/\n\t\t],\n\t\t'string': /\"(?:\\\\?.)*?\"/,\n\t\t'number': /\\b-?\\d*\\.?\\d+([Ee]-?\\d+)?\\b/,\n\t\t'operator': [\n\t\t\t/[&=≠≤≥*+\\-\\/÷^]|[<>]=?/,\n\t\t\t/\\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\\b/\n\t\t],\n\t\t'keyword': /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n\t\t'class': {\n\t\t\tpattern: /\\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\\b/,\n\t\t\talias: 'builtin'\n\t\t},\n\t\t'punctuation': /[{}():,¬«»《》]/\n\t};\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.actionscript = Prism.languages.extend('javascript', {\n\t\t'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n\t\t'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<>?>?|[!=]=?)=?|[~?@]/\n\t});\n\tPrism.languages.actionscript['class-name'].alias = 'function';\n\t\n\tif (Prism.languages.markup) {\n\t\tPrism.languages.insertBefore('actionscript', 'string', {\n\t\t\t'xml': {\n\t\t\t\tpattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\2)*\\s*\\/?>/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\trest: Prism.languages.markup\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.aspnet = Prism.languages.extend('markup', {\n\t\t'page-directive tag': {\n\t\t\tpattern: /<%\\s*@.*%>/i,\n\t\t\tinside: {\n\t\t\t\t'page-directive tag': /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n\t\t\t\trest: Prism.languages.markup.tag.inside\n\t\t\t}\n\t\t},\n\t\t'directive tag': {\n\t\t\tpattern: /<%.*%>/i,\n\t\t\tinside: {\n\t\t\t\t'directive tag': /<%\\s*?[$=%#:]{0,2}|%>/i,\n\t\t\t\trest: Prism.languages.csharp\n\t\t\t}\n\t\t}\n\t});\n\t// Regexp copied from prism-markup, with a negative look-ahead added\n\tPrism.languages.aspnet.tag.pattern = /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i;\n\t\n\t// match directives of attribute value foo=\"<% Bar %>\"\n\tPrism.languages.insertBefore('inside', 'punctuation', {\n\t\t'directive tag': Prism.languages.aspnet['directive tag']\n\t}, Prism.languages.aspnet.tag.inside[\"attr-value\"]);\n\t\n\tPrism.languages.insertBefore('aspnet', 'comment', {\n\t\t'asp comment': /<%--[\\s\\S]*?--%>/\n\t});\n\t\n\t// script runat=\"server\" contains csharp, not javascript\n\tPrism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {\n\t\t'asp script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.csharp || {}\n\t\t}\n\t});\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.basic = {\n\t\t'string': /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^_ +\\-.A-Z\\d])*\"/i,\n\t\t'comment': {\n\t\t\tpattern: /(?:!|REM\\b).+/i,\n\t\t\tinside: {\n\t\t\t\t'keyword': /^REM/i\n\t\t\t}\n\t\t},\n\t\t'number': /(?:\\b|\\B[.-])(?:\\d+\\.?\\d*)(?:E[+-]?\\d+)?/i,\n\t\t'keyword': /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n\t\t'function': /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n\t\t'operator': /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n\t\t'punctuation': /[,;:()]/\n\t};\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.c = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n\t\t'operator': /\\-[>-]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|?\\||[~^%?*\\/]/,\n\t\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)[ful]*\\b/i\n\t});\n\t\n\tPrism.languages.insertBefore('c', 'string', {\n\t\t'macro': {\n\t\t\t// allow for multiline macro definitions\n\t\t\t// spaces after the # character compile fine with gcc\n\t\t\tpattern: /(^\\s*)#\\s*[a-z]+([^\\r\\n\\\\]|\\\\.|\\\\(?:\\r\\n?|\\n))*/im,\n\t\t\tlookbehind: true,\n\t\t\talias: 'property',\n\t\t\tinside: {\n\t\t\t\t// highlight the path of the include statement as a string\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: /(#\\s*include\\s*)(<.+?>|(\"|')(\\\\?.)+?\\3)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t// highlight macro directives as keywords\n\t\t\t\t'directive': {\n\t\t\t\t\tpattern: /(#\\s*)\\b(define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// highlight predefined macros as constants\n\t\t'constant': /\\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n\t});\n\t\n\tdelete Prism.languages.c['class-name'];\n\tdelete Prism.languages.c['boolean'];\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports) {\n\n\t// Based on Free Pascal\n\t\n\t/* TODO\n\t\tSupport inline asm ?\n\t*/\n\t\n\tPrism.languages.pascal = {\n\t\t'comment': [\n\t\t\t/\\(\\*[\\s\\S]+?\\*\\)/,\n\t\t\t/\\{[\\s\\S]+?\\}/,\n\t\t\t/\\/\\/.*/\n\t\t],\n\t\t'string': {\n\t\t\tpattern: /(?:'(?:''|[^'\\r\\n])*'|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n\t\t\tgreedy: true\n\t\t},\n\t\t'keyword': [\n\t\t\t{\n\t\t\t\t// Turbo Pascal\n\t\t\t\tpattern: /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Free Pascal\n\t\t\t\tpattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Object Pascal\n\t\t\t\tpattern: /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Modifiers\n\t\t\t\tpattern: /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'number': [\n\t\t\t// Hexadecimal, octal and binary\n\t\t\t/[+-]?(?:[&%]\\d+|\\$[a-f\\d]+)/i,\n\t\t\t// Decimal\n\t\t\t/([+-]|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n\t\t],\n\t\t'operator': [\n\t\t\t/\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/i,\n\t\t\t{\n\t\t\t\tpattern: /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'punctuation': /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n\t};\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.vim = {\n\t\t'string': /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n\t\t'comment': /\".*/,\n\t\t'function': /\\w+(?=\\()/,\n\t\t'keyword': /\\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n\t\t'builtin': /\\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\\b/,\n\t\t'number': /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n\t\t'operator': /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n\t\t'punctuation': /[{}[\\](),;:]/\n\t};\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports) {\n\n\t// issues: nested multiline comments\n\tPrism.languages.swift = Prism.languages.extend('clike', {\n\t\t'string': {\n\t\t\tpattern: /(\"|')(\\\\(?:\\((?:[^()]|\\([^)]+\\))+\\)|\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /\\\\\\((?:[^()]|\\([^)]+\\))+\\)/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\tdelimiter: {\n\t\t\t\t\t\t\tpattern: /^\\\\\\(|\\)$/,\n\t\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// See rest below\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\\b/,\n\t\t'number': /\\b([\\d_]+(\\.[\\de_]+)?|0x[a-f0-9_]+(\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\t\t'constant': /\\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\t\t'atrule': /@\\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\\b/,\n\t\t'builtin': /\\b([A-Z]\\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\\b/\n\t});\n\tPrism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.util.clone(Prism.languages.swift);\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.objectivec = Prism.languages.extend('c', {\n\t\t'keyword': /\\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t\t'string': /(\"|')(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t\t'operator': /-[->]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n\t});\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.sql= {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string' : {\n\t\t\tpattern: /(^|[^@\\\\])(\"|')(?:\\\\?[\\s\\S])*?\\2/,\n\t\t\tgreedy: true,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'variable': /@[\\w.$]+|@(\"|'|`)(?:\\\\?[\\s\\S])+?\\1/,\n\t\t'function': /\\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n\t\t'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\\b/i,\n\t\t'boolean': /\\b(?:TRUE|FALSE|NULL)\\b/i,\n\t\t'number': /\\b-?(?:0x)?\\d*\\.?[\\da-f]+\\b/,\n\t\t'operator': /[-+*\\/=%^~]|&&?|\\|?\\||!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n\t\t'punctuation': /[;[\\]()`,.]/\n\t};\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.scheme = {\n\t\t'comment' : /;.*/,\n\t\t'string' : {\n\t\t\tpattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*?\"|'[^('\\s]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'keyword' : {\n\t\t\tpattern : /(\\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,\n\t\t\tlookbehind : true\n\t\t},\n\t\t'builtin' : {\n\t\t\tpattern : /(\\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\\/cc|append|abs|apply|eval)\\b|null\\?|pair\\?|boolean\\?|eof-object\\?|char\\?|procedure\\?|number\\?|port\\?|string\\?|vector\\?|symbol\\?|bytevector\\?)/,\n\t\t\tlookbehind : true\n\t\t},\n\t\t'number' : {\n\t\t\tpattern: /(\\s|\\))[-+]?\\d*\\.?\\d+(?:\\s*[-+]\\s*\\d*\\.?\\d+i)?\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'boolean' : /#[tf]/,\n\t\t'operator': {\n\t\t\tpattern: /(\\()(?:[-+*%\\/]|[<>]=?|=>?)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function' : {\n\t\t\tpattern : /(\\()[^\\s()]*(?=\\s)/,\n\t\t\tlookbehind : true\n\t\t},\n\t\t'punctuation' : /[()]/\n\t};\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Original by Samuel Flores\n\t *\n\t * Adds the following new token classes:\n\t * \t\tconstant, builtin, variable, symbol, regex\n\t */\n\t(function(Prism) {\n\t\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t\t'comment': [\n\t\t\t\t/#(?!\\{[^\\r\\n]*?\\}).*/,\n\t\t\t\t/^=begin(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r))*?=end/m\n\t\t\t],\n\t\t\t'keyword': /\\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\\b/\n\t\t});\n\t\n\t\tvar interpolation = {\n\t\t\tpattern: /#\\{[^}]+\\}/,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\t\talias: 'tag'\n\t\t\t\t},\n\t\t\t\trest: Prism.util.clone(Prism.languages.ruby)\n\t\t\t}\n\t\t};\n\t\n\t\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t\t'regex': [\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\t\tpattern: /%r\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\][gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r<(?:[^<>\\\\]|\\\\[\\s\\S])*>[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gim]{0,3}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tgreedy: true\n\t\t\t\t}\n\t\t\t],\n\t\t\t'variable': /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/,\n\t\t\t'symbol': /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t\t});\n\t\n\t\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t\t'builtin': /\\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n\t\t\t'constant': /\\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t\t});\n\t\n\t\tPrism.languages.ruby.string = [\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\tpattern: /%[qQiIwWxs]?\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(#\\{[^}]+\\}|\\\\(?:\\r?\\n|\\r)|\\\\?.)*?\\1/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}(Prism));\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports) {\n\n\t/* TODO\n\t\tAdd support for variables inside double quoted strings\n\t\tAdd support for {php}\n\t*/\n\t\n\t(function(Prism) {\n\t\n\t\tvar smarty_pattern = /\\{\\*[\\s\\S]+?\\*\\}|\\{[\\s\\S]+?\\}/g;\n\t\tvar smarty_litteral_start = '{literal}';\n\t\tvar smarty_litteral_end = '{/literal}';\n\t\tvar smarty_litteral_mode = false;\n\t\n\t\tPrism.languages.smarty = Prism.languages.extend('markup', {\n\t\t\t'smarty': {\n\t\t\t\tpattern: smarty_pattern,\n\t\t\t\tinside: {\n\t\t\t\t\t'delimiter': {\n\t\t\t\t\t\tpattern: /^\\{|\\}$/i,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\t'string': /([\"'])(?:\\\\?.)*?\\1/,\n\t\t\t\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][-+]?\\d+)?)\\b/,\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t/\\$(?!\\d)\\w+/,\n\t\t\t\t\t\t/#(?!\\d)\\w+#/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(\\.|->)(?!\\d)\\w+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t'function': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(\\|\\s*)@?(?!\\d)\\w+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\/?(?!\\d)\\w+/,\n\t\t\t\t\t\t/(?!\\d)\\w+(?=\\()/\n\t\t\t\t\t],\n\t\t\t\t\t'attr-name': {\n\t\t\t\t\t\t// Value is made optional because it may have already been tokenized\n\t\t\t\t\t\tpattern: /\\w+\\s*=\\s*(?:(?!\\d)\\w+)?/,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t\"variable\": {\n\t\t\t\t\t\t\t\tpattern: /(=\\s*)(?!\\d)\\w+/,\n\t\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"operator\": /=/\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/[\\[\\]().,:`]|\\->/\n\t\t\t\t\t],\n\t\t\t\t\t'operator': [\n\t\t\t\t\t\t/[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n\t\t\t\t\t\t/\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n\t\t\t\t\t\t/\\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\\b/\n\t\t\t\t\t],\n\t\t\t\t\t'keyword': /\\b(?:false|off|on|no|true|yes)\\b/\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\t// Comments are inserted at top so that they can\n\t\t// surround markup\n\t\tPrism.languages.insertBefore('smarty', 'tag', {\n\t\t\t'smarty-comment': {\n\t\t\t\tpattern: /\\{\\*[\\s\\S]*?\\*\\}/,\n\t\t\t\talias: ['smarty','comment']\n\t\t\t}\n\t\t});\n\t\n\t\t// Tokenize all inline Smarty expressions\n\t\tPrism.hooks.add('before-highlight', function(env) {\n\t\t\tif (env.language !== 'smarty') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tenv.tokenStack = [];\n\t\n\t\t\tenv.backupCode = env.code;\n\t\t\tenv.code = env.code.replace(smarty_pattern, function(match) {\n\t\n\t\t\t\t// Smarty tags inside {literal} block are ignored\n\t\t\t\tif(match === smarty_litteral_end) {\n\t\t\t\t\tsmarty_litteral_mode = false;\n\t\t\t\t}\n\t\n\t\t\t\tif(!smarty_litteral_mode) {\n\t\t\t\t\tif(match === smarty_litteral_start) {\n\t\t\t\t\t\tsmarty_litteral_mode = true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t\t// Check for existing strings\n\t\t\t\t\twhile (env.backupCode.indexOf('___SMARTY' + i + '___') !== -1)\n\t\t\t\t\t\t++i;\n\t\n\t\t\t\t\t// Create a sparse array\n\t\t\t\t\tenv.tokenStack[i] = match;\n\t\n\t\t\t\t\treturn '___SMARTY' + i + '___';\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\t\t});\n\t\n\t\t// Restore env.code for other plugins (e.g. line-numbers)\n\t\tPrism.hooks.add('before-insert', function(env) {\n\t\t\tif (env.language === 'smarty') {\n\t\t\t\tenv.code = env.backupCode;\n\t\t\t\tdelete env.backupCode;\n\t\t\t}\n\t\t});\n\t\n\t\t// Re-insert the tokens after highlighting\n\t\t// and highlight them with defined grammar\n\t\tPrism.hooks.add('after-highlight', function(env) {\n\t\t\tif (env.language !== 'smarty') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\t\tvar k = keys[i];\n\t\t\t\tvar t = env.tokenStack[k];\n\t\n\t\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\t\tenv.highlightedCode = env.highlightedCode.replace('___SMARTY' + k + '___', Prism.highlight(t, env.grammar, 'smarty').replace(/\\$/g, '$$$$'));\n\t\t\t}\n\t\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\t\t});\n\t\n\t}(Prism));\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.smalltalk = {\n\t\t'comment': /\"(?:\"\"|[^\"])+\"/,\n\t\t'string': /'(?:''|[^'])+'/,\n\t\t'symbol': /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n\t\t'block-arguments': {\n\t\t\tpattern: /(\\[\\s*):[^\\[|]*?\\|/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'variable': /:[\\da-z]+/i,\n\t\t\t\t'punctuation': /\\|/\n\t\t\t}\n\t\t},\n\t\t'temporary-variables': {\n\t\t\tpattern: /\\|[^|]+\\|/,\n\t\t\tinside: {\n\t\t\t\t'variable': /[\\da-z]+/i,\n\t\t\t\t'punctuation': /\\|/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(?:nil|true|false|self|super|new)\\b/,\n\t\t'character': {\n\t\t\tpattern: /\\$./,\n\t\t\talias: 'string'\n\t\t},\n\t\t'number': [\n\t\t\t/\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n\t\t\t/(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n\t\t],\n\t\t'operator': /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n\t\t'punctuation': /[.;:?\\[\\](){}]/\n\t};\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports) {\n\n\t/* TODO\n\t\tAdd support for Markdown notation inside doc comments\n\t\tAdd support for nested block comments...\n\t\tMatch closure params even when not followed by dash or brace\n\t\tAdd better support for macro definition\n\t*/\n\t\n\tPrism.languages.rust = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /b?r(#*)\"(?:\\\\?.)*?\"\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /b?(\"|')(?:\\\\?.)*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'keyword': /\\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n\t\n\t\t'attribute': {\n\t\t\tpattern: /#!?\\[.+?\\]/,\n\t\t\tgreedy: true,\n\t\t\talias: 'attr-name'\n\t\t},\n\t\n\t\t'function': [\n\t\t\t/[a-z0-9_]+(?=\\s*\\()/i,\n\t\t\t// Macros can use parens or brackets\n\t\t\t/[a-z0-9_]+!(?=\\s*\\(|\\[)/i\n\t\t],\n\t\t'macro-rules': {\n\t\t\tpattern: /[a-z0-9_]+!/i,\n\t\t\talias: 'function'\n\t\t},\n\t\n\t\t// Hex, oct, bin, dec numbers with visual separators and type suffix\n\t\t'number': /\\b-?(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\\d(_?\\d)*)?\\.?\\d(_?\\d)*([Ee][+-]?\\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\\b/,\n\t\n\t\t// Closure params should not be confused with bitwise OR |\n\t\t'closure-params': {\n\t\t\tpattern: /\\|[^|]*\\|(?=\\s*[{-])/,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /[\\|:,]/,\n\t\t\t\t'operator': /[&*]/\n\t\t\t}\n\t\t},\n\t\t'punctuation': /[{}[\\];(),:]|\\.+|->/,\n\t\t'operator': /[-+*\\/%!^=]=?|@|&[&=]?|\\|[|=]?|<>?=?/\n\t};\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.r = {\n\t\t'comment': /#.*/,\n\t\t'string': {\n\t\t\tpattern: /(['\"])(?:\\\\?.)*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'percent-operator': {\n\t\t\t// Includes user-defined operators\n\t\t\t// and %%, %*%, %/%, %in%, %o%, %x%\n\t\t\tpattern: /%[^%\\s]*%/,\n\t\t\talias: 'operator'\n\t\t},\n\t\t'boolean': /\\b(?:TRUE|FALSE)\\b/,\n\t\t'ellipsis': /\\.\\.(?:\\.|\\d+)/,\n\t\t'number': [\n\t\t\t/\\b(?:NaN|Inf)\\b/,\n\t\t\t/\\b(?:0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\d*\\.?\\d+)(?:[EePp][+-]?\\d+)?[iL]?\\b/\n\t\t],\n\t\t'keyword': /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n\t\t'operator': /->?>?|<(?:=|=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n\t\t'punctuation': /[(){}\\[\\],;]/\n\t};\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.d = Prism.languages.extend('clike', {\n\t\t'string': [\n\t\t\t// r\"\", x\"\"\n\t\t\t/\\b[rx]\"(\\\\.|[^\\\\\"])*\"[cwd]?/,\n\t\t\t// q\"[]\", q\"()\", q\"<>\", q\"{}\"\n\t\t\t/\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/,\n\t\t\t// q\"IDENT\n\t\t\t// ...\n\t\t\t// IDENT\"\n\t\t\t/\\bq\"([_a-zA-Z][_a-zA-Z\\d]*)(?:\\r?\\n|\\r)[\\s\\S]*?(?:\\r?\\n|\\r)\\1\"/,\n\t\t\t// q\"//\", q\"||\", etc.\n\t\t\t/\\bq\"(.)[\\s\\S]*?\\1\"/,\n\t\t\t// Characters\n\t\t\t/'(?:\\\\'|\\\\?[^']+)'/,\n\t\n\t\t\t/([\"`])(\\\\.|(?!\\1)[^\\\\])*\\1[cwd]?/\n\t\t],\n\t\n\t\t'number': [\n\t\t\t// The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n\t\t\t// Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n\t\t\t/\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]*/i,\n\t\t\t{\n\t\t\t\tpattern: /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]*/i,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\n\t\t// In order: $, keywords and special tokens, globally defined symbols\n\t\t'keyword': /\\$|\\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\\b/,\n\t\t'operator': /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n\t});\n\t\n\t\n\tPrism.languages.d.comment = [\n\t\t// Shebang\n\t\t/^\\s*#!.+/,\n\t\t// /+ +/\n\t\t{\n\t\t\t// Allow one level of nesting\n\t\t\tpattern: /(^|[^\\\\])\\/\\+(?:\\/\\+[\\s\\S]*?\\+\\/|[\\s\\S])*?\\+\\//,\n\t\t\tlookbehind: true\n\t\t}\n\t].concat(Prism.languages.d.comment);\n\t\n\tPrism.languages.insertBefore('d', 'comment', {\n\t\t'token-string': {\n\t\t\t// Allow one level of nesting\n\t\t\tpattern: /\\bq\\{(?:|\\{[^}]*\\}|[^}])*\\}/,\n\t\t\talias: 'string'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('d', 'keyword', {\n\t\t'property': /\\B@\\w*/\n\t});\n\t\n\tPrism.languages.insertBefore('d', 'function', {\n\t\t'register': {\n\t\t\t// Iasm registers\n\t\t\tpattern: /\\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n\t\t\talias: 'variable'\n\t\t}\n\t});\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.dart = Prism.languages.extend('clike', {\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /r?(\"\"\"|''')[\\s\\S]*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /r?(\"|')(\\\\?.)*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'keyword': [\n\t\t\t/\\b(?:async|sync|yield)\\*/,\n\t\t\t/\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\\b/\n\t\t],\n\t\t'operator': /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n\t});\n\t\n\tPrism.languages.insertBefore('dart','function',{\n\t\t'metadata': {\n\t\t\tpattern: /@\\w+/,\n\t\t\talias: 'symbol'\n\t\t}\n\t});\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\n\t// Ignore comments starting with { to privilege string interpolation highlighting\n\tvar comment = /#(?!\\{).+/,\n\t interpolation = {\n\t \tpattern: /#\\{[^}]+\\}/,\n\t \talias: 'variable'\n\t };\n\t\n\tPrism.languages.coffeescript = Prism.languages.extend('javascript', {\n\t\t'comment': comment,\n\t\t'string': [\n\t\n\t\t\t// Strings are multiline\n\t\t\t{\n\t\t\t\tpattern: /'(?:\\\\?[^\\\\])*?'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t{\n\t\t\t\t// Strings are multiline\n\t\t\t\tpattern: /\"(?:\\\\?[^\\\\])*?\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'keyword': /\\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n\t\t'class-member': {\n\t\t\tpattern: /@(?!\\d)\\w+/,\n\t\t\talias: 'variable'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('coffeescript', 'comment', {\n\t\t'multiline-comment': {\n\t\t\tpattern: /###[\\s\\S]+?###/,\n\t\t\talias: 'comment'\n\t\t},\n\t\n\t\t// Block regexp can contain comments and interpolation\n\t\t'block-regex': {\n\t\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\t\talias: 'regex',\n\t\t\tinside: {\n\t\t\t\t'comment': comment,\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('coffeescript', 'string', {\n\t\t'inline-javascript': {\n\t\t\tpattern: /`(?:\\\\?[\\s\\S])*?`/,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^`|`$/,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\trest: Prism.languages.javascript\n\t\t\t}\n\t\t},\n\t\n\t\t// Block strings\n\t\t'multiline-string': [\n\t\t\t{\n\t\t\t\tpattern: /'''[\\s\\S]*?'''/,\n\t\t\t\tgreedy: true,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\talias: 'string',\n\t\t\t\tinside: {\n\t\t\t\t\tinterpolation: interpolation\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t\n\t});\n\t\n\tPrism.languages.insertBefore('coffeescript', 'keyword', {\n\t\t// Object property\n\t\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n\t});\n\t\n\tdelete Prism.languages.coffeescript['template-string'];\n\t\n\t}(Prism));\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports) {\n\n\t(function (Prism) {\n\t\tvar variable = /%%?[~:\\w]+%?|!\\S+!/;\n\t\tvar parameter = {\n\t\t\tpattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n\t\t\talias: 'attr-name',\n\t\t\tinside: {\n\t\t\t\t'punctuation': /:/\n\t\t\t}\n\t\t};\n\t\tvar string = /\"[^\"]*\"/;\n\t\tvar number = /(?:\\b|-)\\d+\\b/;\n\t\n\t\tPrism.languages.batch = {\n\t\t\t'comment': [\n\t\t\t\t/^::.*/m,\n\t\t\t\t{\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t],\n\t\t\t'label': {\n\t\t\t\tpattern: /^:.*/m,\n\t\t\t\talias: 'property'\n\t\t\t},\n\t\t\t'command': [\n\t\t\t\t{\n\t\t\t\t\t// FOR command\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)for(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* \\S+ in \\([^)]+\\) do/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^for\\b|\\b(?:in|do)\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'variable': variable,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// IF command\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)if(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|\\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:\"[^\"]*\"|\\S+))/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^if\\b|\\b(?:not|cmdextversion|defined|errorlevel|exist)\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'variable': variable,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': /\\^|==|\\b(?:equ|neq|lss|leq|gtr|geq)\\b/i\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// ELSE command\n\t\t\t\t\tpattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^else\\b/i\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// SET command\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)set(?: ?\\/[a-z](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^set\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'variable': [\n\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t/\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n\t\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Other commands\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^\\w+\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'label': {\n\t\t\t\t\t\t\tpattern: /(^\\s*):\\S+/m,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: 'property'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'variable': variable,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': /\\^/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\t'operator': /[&@]/,\n\t\t\t'punctuation': /[()']/\n\t\t};\n\t}(Prism));\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.cpp = Prism.languages.extend('c', {\n\t\t'keyword': /\\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n\t\t'boolean': /\\b(true|false)\\b/,\n\t\t'operator': /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\\->|:{1,2}|={1,2}|\\^|~|%|&{1,2}|\\|?\\||\\?|\\*|\\/|\\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/\n\t});\n\t\n\tPrism.languages.insertBefore('cpp', 'keyword', {\n\t\t'class-name': {\n\t\t\tpattern: /(class\\s+)[a-z0-9_]+/i,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.lua = {\n\t\t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n\t\t// \\z may be used to skip the following space\n\t\t'string': {\n\t\t\tpattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n\t\t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n\t\t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n\t\t'operator': [\n\t\t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n\t\t\t{\n\t\t\t\t// Match \"..\" but don't break \"...\"\n\t\t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n\t};\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.livescript = {\n\t\t'interpolated-string': {\n\t\t\tpattern: /(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|\\d)*/m,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// See rest below\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /<\\[[\\s\\S]*?\\]>/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t/\\\\[^\\s,;\\])}]+/\n\t\t],\n\t\t'regex': [\n\t\t\t{\n\t\t\t\tpattern: /\\/\\/(\\[.+?]|\\\\.|(?!\\/\\/)[^\\\\])+\\/\\/[gimyu]{0,5}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'comment': {\n\t\t\t\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\/(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'keyword': {\n\t\t\tpattern: /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword-operator': {\n\t\t\tpattern: /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'operator'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'argument': {\n\t\t\t// Don't match .&. nor &&\n\t\t\tpattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'variable'\n\t\t},\n\t\t'number': /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n\t\t'identifier': /[a-z_](?:-?[a-z]|\\d)*/i,\n\t\t'operator': [\n\t\t\t// Spaced .\n\t\t\t{\n\t\t\t\tpattern: /( )\\.(?= )/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// Full list, in order:\n\t\t\t// .= .~ .. ...\n\t\t\t// .&. .^. .<<. .>>. .>>>.\n\t\t\t// := :: ::=\n\t\t\t// &&\n\t\t\t// || |>\n\t\t\t// < << <<< <<<<\n\t\t\t// <- <-- <-! <--!\n\t\t\t// <~ <~~ <~! <~~!\n\t\t\t// <| <= >> >= >?\n\t\t\t// - -- -> -->\n\t\t\t// + ++\n\t\t\t// @ @@\n\t\t\t// % %%\n\t\t\t// * **\n\t\t\t// ! != !~=\n\t\t\t// !~> !~~>\n\t\t\t// !-> !-->\n\t\t\t// ~ ~> ~~> ~=\n\t\t\t// = ==\n\t\t\t// ^ ^^\n\t\t\t// / ?\n\t\t\t/\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n\t\t],\n\t\t'punctuation': /[(){}\\[\\]|.,:;`]/\n\t};\n\t\n\tPrism.languages.livescript['interpolated-string'].inside['interpolation'].inside.rest = Prism.languages.livescript;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\tvar funcPattern = /\\\\([^a-z()[\\]]|[a-z\\*]+)/i,\n\t\t insideEqu = {\n\t\t\t 'equation-command': {\n\t\t\t\t pattern: funcPattern,\n\t\t\t\t alias: 'regex'\n\t\t\t }\n\t\t };\n\t\n\t\tPrism.languages.latex = {\n\t\t\t'comment': /%.*/m,\n\t\t\t// the verbatim environment prints whitespace to the document\n\t\t\t'cdata': {\n\t\t\t\tpattern: /(\\\\begin\\{((?:verbatim|lstlisting)\\*?)\\})([\\s\\S]*?)(?=\\\\end\\{\\2\\})/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t/*\n\t\t\t * equations can be between $ $ or \\( \\) or \\[ \\]\n\t\t\t * (all are multiline)\n\t\t\t */\n\t\t\t'equation': [\n\t\t\t\t{\n\t\t\t\t\tpattern: /\\$(?:\\\\?[\\s\\S])*?\\$|\\\\\\((?:\\\\?[\\s\\S])*?\\\\\\)|\\\\\\[(?:\\\\?[\\s\\S])*?\\\\\\]/,\n\t\t\t\t\tinside: insideEqu,\n\t\t\t\t\talias: 'string'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /(\\\\begin\\{((?:equation|math|eqnarray|align|multline|gather)\\*?)\\})([\\s\\S]*?)(?=\\\\end\\{\\2\\})/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: insideEqu,\n\t\t\t\t\talias: 'string'\n\t\t\t\t}\n\t\t\t],\n\t\t\t/*\n\t\t\t * arguments which are keywords or references are highlighted\n\t\t\t * as keywords\n\t\t\t */\n\t\t\t'keyword': {\n\t\t\t\tpattern: /(\\\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'url': {\n\t\t\t\tpattern: /(\\\\url\\{)[^}]+(?=\\})/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t/*\n\t\t\t * section or chapter headlines are highlighted as bold so that\n\t\t\t * they stand out more\n\t\t\t */\n\t\t\t'headline': {\n\t\t\t\tpattern: /(\\\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\}(?:\\[[^\\]]+\\])?)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'class-name'\n\t\t\t},\n\t\t\t'function': {\n\t\t\t\tpattern: funcPattern,\n\t\t\t\talias: 'selector'\n\t\t\t},\n\t\t\t'punctuation': /[[\\]{}&]/\n\t\t};\n\t})(Prism);\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.groovy = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /(\"\"\"|''')[\\s\\S]*?\\1|(\\$\\/)(\\$\\/\\$|[\\s\\S])*?\\/\\$/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|'|\\/)(?:\\\\?.)*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?[\\d]+)?)[glidf]?\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.{1,2}(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /\\.+|[{}[\\];(),:$]/\n\t});\n\t\n\tPrism.languages.insertBefore('groovy', 'string', {\n\t\t'shebang': {\n\t\t\tpattern: /#!.+/,\n\t\t\talias: 'comment'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('groovy', 'punctuation', {\n\t\t'spock-block': /\\b(setup|given|when|then|and|cleanup|expect|where):/\n\t});\n\t\n\tPrism.languages.insertBefore('groovy', 'function', {\n\t\t'annotation': {\n\t\t\talias: 'punctuation',\n\t\t\tpattern: /(^|[^.])@\\w+/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\t// Handle string interpolation\n\tPrism.hooks.add('wrap', function(env) {\n\t\tif (env.language === 'groovy' && env.type === 'string') {\n\t\t\tvar delimiter = env.content[0];\n\t\n\t\t\tif (delimiter != \"'\") {\n\t\t\t\tvar pattern = /([^\\\\])(\\$(\\{.*?\\}|[\\w\\.]+))/;\n\t\t\t\tif (delimiter === '$') {\n\t\t\t\t\tpattern = /([^\\$])(\\$(\\{.*?\\}|[\\w\\.]+))/;\n\t\t\t\t}\n\t\n\t\t\t\t// To prevent double HTML-encoding we have to decode env.content first\n\t\t\t\tenv.content = env.content.replace(/</g, '<').replace(/&/g, '&');\n\t\n\t\t\t\tenv.content = Prism.highlight(env.content, {\n\t\t\t\t\t'expression': {\n\t\t\t\t\t\tpattern: pattern,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\tinside: Prism.languages.groovy\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tenv.classes.push(delimiter === '/' ? 'regex' : 'gstring');\n\t\t\t}\n\t\t}\n\t});\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.graphql = {\n\t\t'comment': /#.*/,\n\t\t'string': {\n\t\t\tpattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b/,\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'variable': /\\$[a-z_]\\w*/i,\n\t\t'directive': {\n\t\t\tpattern: /@[a-z_]\\w*/i,\n\t\t\talias: 'function'\n\t\t},\n\t\t'attr-name': /[a-z_]\\w*(?=\\s*:)/i,\n\t\t'keyword': [\n\t\t\t{\n\t\t\t\tpattern: /(fragment\\s+(?!on)[a-z_]\\w*\\s+|\\.\\.\\.\\s*)on\\b/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t/\\b(?:query|fragment|mutation)\\b/\n\t\t],\n\t\t'operator': /!|=|\\.{3}/,\n\t\t'punctuation': /[!(){}\\[\\]:=,]/\n\t};\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.nginx = Prism.languages.extend('clike', {\n\t 'comment': {\n\t pattern: /(^|[^\"{\\\\])#.*/,\n\t lookbehind: true\n\t },\n\t 'keyword': /\\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|server|events|location|include|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\\b/i,\n\t});\n\t\n\tPrism.languages.insertBefore('nginx', 'keyword', {\n\t 'variable': /\\$[a-z_]+/i\n\t});\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.erlang = {\n\t\t'comment': /%.+/,\n\t\t'string': {\n\t\t\tpattern: /\"(?:\\\\?.)*?\"/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'quoted-function': {\n\t\t\tpattern: /'(?:\\\\.|[^'\\\\])+'(?=\\()/,\n\t\t\talias: 'function'\n\t\t},\n\t\t'quoted-atom': {\n\t\t\tpattern: /'(?:\\\\.|[^'\\\\])+'/,\n\t\t\talias: 'atom'\n\t\t},\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'keyword': /\\b(?:fun|when|case|of|end|if|receive|after|try|catch)\\b/,\n\t\t'number': [\n\t\t\t/\\$\\\\?./,\n\t\t\t/\\d+#[a-z0-9]+/i,\n\t\t\t/(?:\\b|-)\\d*\\.?\\d+([Ee][+-]?\\d+)?\\b/\n\t\t],\n\t\t'function': /\\b[a-z][\\w@]*(?=\\()/,\n\t\t'variable': {\n\t\t\t// Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n\t\t\tpattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'operator': [\n\t\t\t/[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\\b/,\n\t\t\t{\n\t\t\t\t// We don't want to match <<\n\t\t\t\tpattern: /(^|[^<])<(?!<)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// We don't want to match >>\n\t\t\t\tpattern: /(^|[^>])>(?!>)/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'atom': /\\b[a-z][\\w@]*/,\n\t\t'punctuation': /[()[\\]{}:;,.#|]|<<|>>/\n\t\n\t};\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.powershell = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^`])<#[\\s\\S]*?#>/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^`])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /\"(`?[\\s\\S])*?\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'function': {\n\t\t\t\t\t\tpattern: /[^`]\\$\\(.*?\\)/,\n\t\t\t\t\t\t// Populated at end of file\n\t\t\t\t\t\tinside: {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /'([^']|'')*'/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t// Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n\t\t'namespace': /\\[[a-z][\\s\\S]*?\\]/i,\n\t\t'boolean': /\\$(true|false)\\b/i,\n\t\t'variable': /\\$\\w+\\b/i,\n\t\t// Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n\t\t// Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t\t// Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t\t'function': [\n\t\t\t/\\b(Add-(Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(Csv|Json|StringData)|Convert-Path|ConvertTo-(Csv|Html|Json|Xml)|Copy-(Item|ItemProperty)|Debug-Process|Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(Custom|List|Table|Wide)|Get-(Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(Command|Object)|Move-(Item|ItemProperty)|New-(Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(Job|PSSession)|Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(Computer|Service)|Restore-Computer|Resume-(Job|Service)|Save-Help|Select-(Object|String|Xml)|Send-MailMessage|Set-(Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(Job|Process|Service|Sleep|Transaction)|Stop-(Computer|Job|Process|Service)|Suspend-(Job|Service)|Tee-Object|Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(Event|PSSessionConfiguration)|Update-(FormatData|Help|List|TypeData)|Use-Transaction|Wait-(Event|Job|Process)|Where-Object|Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\\b/i,\n\t\t\t/\\b(ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n\t\t],\n\t\t// per http://technet.microsoft.com/en-us/library/hh847744.aspx\n\t\t'keyword': /\\b(Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(\\W?)(!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(and|x?or)|(Not)?(Like|Match|Contains|In)|Replace|Join|is(Not)?|as)\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[|{}[\\];(),.]/\n\t};\n\t\n\t// Variable interpolation inside strings, and nested expressions\n\tPrism.languages.powershell.string[0].inside.boolean = Prism.languages.powershell.boolean;\n\tPrism.languages.powershell.string[0].inside.variable = Prism.languages.powershell.variable;\n\tPrism.languages.powershell.string[0].inside.function.inside = Prism.util.clone(Prism.languages.powershell);\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.makefile = {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|.)*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// Built-in target names\n\t\t'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n\t\n\t\t// Targets\n\t\t'symbol': {\n\t\t\tpattern: /^[^:=\\r\\n]+(?=\\s*:(?!=))/m,\n\t\t\tinside: {\n\t\t\t\t'variable': /\\$+(?:[^(){}:#=\\s]+|(?=[({]))/\n\t\t\t}\n\t\t},\n\t\t'variable': /\\$+(?:[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n\t\n\t\t'keyword': [\n\t\t\t// Directives\n\t\t\t/-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n\t\t\t// Functions\n\t\t\t{\n\t\t\t\tpattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'operator': /(?:::|[?:+!])?=|[|@]/,\n\t\t'punctuation': /[:;(){}]/\n\t};\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.markdown = Prism.languages.extend('markup', {});\n\tPrism.languages.insertBefore('markdown', 'prolog', {\n\t\t'blockquote': {\n\t\t\t// > ...\n\t\t\tpattern: /^>(?:[\\t ]*>)*/m,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'code': [\n\t\t\t{\n\t\t\t\t// Prefixed by 4 spaces or 1 tab\n\t\t\t\tpattern: /^(?: {4}|\\t).+/m,\n\t\t\t\talias: 'keyword'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// `code`\n\t\t\t\t// ``code``\n\t\t\t\tpattern: /``.+?``|`[^`\\n]+`/,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t],\n\t\t'title': [\n\t\t\t{\n\t\t\t\t// title 1\n\t\t\t\t// =======\n\t\n\t\t\t\t// title 2\n\t\t\t\t// -------\n\t\t\t\tpattern: /\\w+.*(?:\\r?\\n|\\r)(?:==+|--+)/,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /==+$|--+$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// # title 1\n\t\t\t\t// ###### title 6\n\t\t\t\tpattern: /(^\\s*)#+.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /^#+|#+$/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'hr': {\n\t\t\t// ***\n\t\t\t// ---\n\t\t\t// * * *\n\t\t\t// -----------\n\t\t\tpattern: /(^\\s*)([*-])([\\t ]*\\2){2,}(?=\\s*$)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'list': {\n\t\t\t// * item\n\t\t\t// + item\n\t\t\t// - item\n\t\t\t// 1. item\n\t\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'url-reference': {\n\t\t\t// [id]: http://example.com \"Optional title\"\n\t\t\t// [id]: http://example.com 'Optional title'\n\t\t\t// [id]: http://example.com (Optional title)\n\t\t\t// [id]: \"Optional title\"\n\t\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n\t\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n\t\t\t},\n\t\t\talias: 'url'\n\t\t},\n\t\t'bold': {\n\t\t\t// **strong**\n\t\t\t// __strong__\n\t\n\t\t\t// Allow only one line break\n\t\t\tpattern: /(^|[^\\\\])(\\*\\*|__)(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /^\\*\\*|^__|\\*\\*$|__$/\n\t\t\t}\n\t\t},\n\t\t'italic': {\n\t\t\t// *em*\n\t\t\t// _em_\n\t\n\t\t\t// Allow only one line break\n\t\t\tpattern: /(^|[^\\\\])([*_])(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /^[*_]|[*_]$/\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// [example](http://example.com \"Optional title\")\n\t\t\t// [example] [id]\n\t\t\tpattern: /!?\\[[^\\]]+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[[^\\]\\n]*\\])/,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /(!?\\[)[^\\]]+(?=\\]$)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t\n\tPrism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\n\tPrism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\n\tPrism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']);\n\tPrism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']);\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 152 */,\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */,\n/* 158 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 161 */,\n/* 162 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\n
    \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \"\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// js/mditor.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 31d50f12083361c3cd7d","const mokit = require('mokit');\nconst Toolbar = require('../toolbar');\nconst Editor = require('../editor');\nconst Viewer = require('../viewer');\nconst Finder = require('../finder');\nconst Shortcut = require('./shortcut');\nconst Parser = require('../common/parser');\n\nrequire('font-awesome/css/font-awesome.css');\nrequire('github-markdown-css/github-markdown.css');\nrequire('prismjs/themes/prism.css');\nrequire('./index.less');\n\nconst HIDDEN_CLASS_NAME = 'mditor-hidden';\n\nconst Mditor = new mokit.Component({\n template: require('./index.html'),\n\n onInit() {\n this.PLATFORM = navigator.platform.toLowerCase();\n this.EOL = this.PLATFORM == 'win32' ? '\\r\\n' : '\\n';\n this.CMD = this.PLATFORM.indexOf('mac') > -1 ? 'command' : 'ctrl';\n this.INDENT = ' ';\n this.shortcut = new Shortcut(this);\n this.Parser = Parser;\n this.parser = new Parser(this);\n },\n\n onReady() {\n this.shortcut.bind('tab', this.editor.addIndent.bind(this.editor));\n this.shortcut.bind('shift+tab', this.editor.removeIndent.bind(this.editor));\n this.shortcut.bind('enter', (event) => {\n this._ulAndQuoteAutoComplete(event);\n this._olAutoComplete(event);\n this._keepIndent(event);\n }, true);\n setTimeout(() => {\n this.$emit('ready');\n }, 0);\n },\n\n components: {\n Toolbar,\n Editor,\n Viewer,\n Finder\n },\n\n props: {\n height: '400px',\n width: 'auto',\n preview: false,\n split: true,\n fullscreen: false\n },\n\n data() {\n return {\n self: this,\n value: ''\n };\n },\n\n find(text) {\n this.finder.show(text);\n },\n\n syncScroll() {\n if (!this.split || this.preview) return;\n let offsetHeight = this.editor.textarea.offsetHeight;\n let editorScrollHeight = this.editor.textarea.scrollHeight;\n let viewerScrollHeight = this.viewer.$element.scrollHeight;\n let editorScrollTop = this.editor.textarea.scrollTop;\n let viewerScrollTop = editorScrollTop * (viewerScrollHeight - offsetHeight) / (editorScrollHeight - offsetHeight);\n this.viewer.$element.scrollTop = viewerScrollTop;\n },\n\n onChanged(event) {\n this.$emit('changed', event);\n this.syncScroll();\n },\n\n onInput(event) {\n this.$emit('input', event);\n },\n\n onPaste(event) {\n this.$emit('paste', event);\n this.syncScroll();\n },\n\n onHeadDblClick(event) {\n if (event.target.tagName == 'I') return;\n this.$emit('head-dblclick', event);\n },\n\n _keepIndent(event) {\n let text = this.editor.getBeforeTextInLine();\n let parts = text.split(this.INDENT);\n if (parts.length < 2) return;\n let count = 0;\n let buffer = [this.EOL];\n while (parts[count] === '' &&\n count < (parts.length - 1)) {\n count++;\n buffer.push(this.INDENT);\n }\n this.editor.insertBeforeText(buffer.join(''));\n event.preventDefault();\n },\n\n _ulAndQuoteAutoComplete(event) {\n let text = this.editor.getBeforeTextInLine();\n let prefix = text.substr(0, 2);\n if (prefix != '- ' && prefix != '* ' && prefix != '> ') return;\n if (text.length > prefix.length) {\n this.editor.insertBeforeText(this.EOL + prefix);\n } else {\n this.editor.selectBeforeText(prefix.length);\n this.editor.setSelectText('');\n }\n event.preventDefault();\n },\n\n _olAutoComplete(event) {\n let exp = /^\\d+\\./;\n let text = this.editor.getBeforeTextInLine();\n let trimedText = text.trim();\n if (!exp.test(trimedText)) return;\n let num = trimedText.split('.')[0];\n if (trimedText.length > num.length + 1) {\n this.editor.insertBeforeText(this.EOL + (parseInt(num) + 1) + '. ');\n } else {\n this.editor.selectBeforeText(text.length);\n this.editor.setSelectText('');\n }\n event.preventDefault();\n },\n\n focus() {\n if (this.preview) {\n this.$element.focus();\n } else {\n this.editor.focus();\n }\n },\n\n blur() {\n this.editor.blur();\n },\n\n addCommand(item) {\n if (!item.name || !item.handler) return;\n this.commands = this.commands || {};\n this.commands[item.name] = item;\n if (item.key) {\n this.shortcut.bind(item.key, item.name, item.allowDefault, item.owner);\n }\n },\n\n removeCommand(name) {\n this.commands = this.commands || {};\n let item = this.commands[name];\n if (!item) return;\n this.shortcut.unbind(item.key);\n this.commands[name] = null;\n delete this.commands[name];\n },\n\n execCommand(name, event) {\n event = event || {};\n event.mditor = this;\n event.toolbar = this.toolbar;\n event.editor = this.editor;\n this.commands[name].handler.call(this, event);\n }\n\n});\n\nMditor.fromTextarea = function (textarea) {\n textarea.classList.add(HIDDEN_CLASS_NAME);\n let mditor = new Mditor();\n mditor.value = textarea.value;\n mditor.$watch('value', () => {\n textarea.value = mditor.value;\n });\n mditor.$mount(textarea);\n mditor.switchTextarea = function () {\n if (textarea.classList.contains(HIDDEN_CLASS_NAME)) {\n textarea.value = mditor.value;\n mditor.$element.classList.add(HIDDEN_CLASS_NAME);\n textarea.classList.remove(HIDDEN_CLASS_NAME);\n } else {\n mditor.value = textarea.value;\n textarea.classList.add(HIDDEN_CLASS_NAME);\n mditor.$element.classList.remove(HIDDEN_CLASS_NAME);\n }\n };\n return mditor;\n};\n\nMditor.Parser = Parser;\n\nmodule.exports = window.Mditor = Mditor;\n\n\n// WEBPACK FOOTER //\n// ./src/client/index.js","/*istanbul ignore next*/'use strict';\n\nvar info = require('../info.json');\nvar utils = require('ntils');\nvar Class = require('cify');\nvar Watcher = require('./watcher');\nvar Observer = require('./observer');\nvar Template = require('./template');\nvar Component = require('./component');\nvar EventEmitter = require('./events');\n\n//持载模板相关对象\nutils.copy(Template, Component);\n\nComponent.version = info.version;\nComponent.Template = Template;\nComponent.Watcher = Watcher;\nComponent.Observer = Observer;\nComponent.EventEmitter = EventEmitter;\nComponent.utils = utils;\nComponent.Class = Class;\n\n//定义安装插件的方法\nComponent.use = function (plugin) {\n var install = plugin.install || plugin;\n if (!utils.isFunction(install)) {\n throw new Error('Invalid Plugin');\n }\n return install.call(plugin, this);\n};\n\n//安装内置的路由插件\n//Component.use(Router);\n\nmodule.exports = Component;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/index.js","module.exports = {\"name\":\"mokit\",\"version\":\"3.1.3\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_mokit@3.1.3@mokit/info.json\n// module id = 2\n// module chunks = 0","(function (ntils) {\n\n /**\n * 空函数\n */\n ntils.noop = function () { };\n\n /**\n * 验证一个对象是否为NULL\n * @method isNull\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isNull = function (obj) {\n return obj === null || typeof obj === \"undefined\";\n };\n\n /**\n * 除去字符串两端的空格\n * @method trim\n * @param {String} str 源字符串\n * @return {String} 结果字符串\n * @static\n */\n ntils.trim = function (str) {\n if (this.isNull(str)) return str;\n if (str.trim) {\n return str.trim();\n } else {\n return str.replace(/(^[\\\\s]*)|([\\\\s]*$)/g, \"\");\n }\n };\n\n /**\n * 替换所有\n * @method replace\n * @param {String} str 源字符串\n * @param {String} str1 要替换的字符串\n * @param {String} str2 替换为的字符串\n * @static\n */\n ntils.replace = function (str, str1, str2) {\n if (this.isNull(str)) return str;\n return str.replace(new RegExp(str1, 'g'), str2);\n };\n\n /**\n * 从字符串开头匹配\n * @method startWith\n * @param {String} str1 源字符串\n * @param {String} str2 要匹配的字符串\n * @return {Boolean} 匹配结果\n * @static\n */\n ntils.startWith = function (str1, str2) {\n if (this.isNull(str1) || this.isNull(str2)) return false;\n return str1.indexOf(str2) === 0;\n };\n\n /**\n * 是否包含\n * @method contains\n * @param {String} str1 源字符串\n * @param {String} str2 检查包括字符串\n * @return {Boolean} 结果\n * @static\n */\n ntils.contains = function (str1, str2) {\n var self = this;\n if (this.isNull(str1) || this.isNull(str2)) return false;\n return str1.indexOf(str2) > -1;\n };\n\n /**\n * 从字符串结束匹配\n * @method endWidth\n * @param {String} str1 源字符串\n * @param {String} str2 匹配字符串\n * @return {Boolean} 匹配结果\n * @static\n */\n ntils.endWith = function (str1, str2) {\n if (this.isNull(str1) || this.isNull(str2)) return false;\n return str1.indexOf(str2) === (str1.length - str2.length);\n };\n\n /**\n * 是否包含属性\n * @method hasProperty\n * @param {Object} obj 对象\n * @param {String} name 属性名\n * @return {Boolean} 结果\n * @static\n */\n ntils.has = ntils.hasProperty = function (obj, name) {\n if (this.isNull(obj) || this.isNull(name)) return false;\n return (name in obj) || (obj.hasOwnProperty(name));\n };\n\n /**\n * 验证一个对象是否为Function\n * @method isFunction\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isFunction = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === \"function\";\n };\n\n /**\n * 验证一个对象是否为String\n * @method isString\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isString = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === 'string' || obj instanceof String;\n };\n\n /**\n * 验证一个对象是否为Number\n * @method isNumber\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isNumber = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === 'number' || obj instanceof Number;\n };\n\n /**\n * 验证一个对象是否为Boolean\n * @method isBoolean\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isBoolean = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === 'boolean' || obj instanceof Boolean;\n };\n\n /**\n * 验证一个对象是否为HTML Element\n * @method isElement\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isElement = function (obj) {\n if (this.isNull(obj)) return false;\n if (window.Element) {\n return obj instanceof Element;\n } else {\n return (obj.tagName && obj.nodeType && obj.nodeName && obj.attributes && obj.ownerDocument);\n }\n };\n\n /**\n * 验证一个对象是否为HTML Text Element\n * @method isText\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isText = function (obj) {\n if (this.isNull(obj)) return false;\n return obj instanceof Text;\n };\n\n /**\n * 验证一个对象是否为Object\n * @method isObject\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isObject = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === \"object\";\n };\n\n /**\n * 验证一个对象是否为Array或伪Array\n * @method isArray\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isArray = function (obj) {\n if (this.isNull(obj)) return false;\n var v1 = Object.prototype.toString.call(obj) === '[object Array]';\n var v2 = obj instanceof Array;\n var v3 = !this.isString(obj) && this.isNumber(obj.length) && this.isFunction(obj.splice);\n var v4 = !this.isString(obj) && this.isNumber(obj.length) && obj[0];\n return v1 || v2 || v3 || v4;\n };\n\n /**\n * 验证是不是一个日期对象\n * @method isDate\n * @param {Object} val 要检查的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isDate = function (val) {\n if (this.isNull(val)) return false;\n return val instanceof Date;\n };\n\n /**\n * 验证是不是一个正则对象\n * @method isDate\n * @param {Object} val 要检查的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isRegexp = function (val) {\n return val instanceof RegExp;\n };\n\n /**\n * 转换为数组\n * @method toArray\n * @param {Array|Object} array 伪数组\n * @return {Array} 转换结果数组\n * @static\n */\n ntils.toArray = function (array) {\n if (this.isNull(array)) return [];\n return Array.prototype.slice.call(array);\n };\n\n /**\n * 转为日期格式\n * @method toDate\n * @param {Number|String} val 日期字符串或整型数值\n * @return {Date} 日期对象\n * @static\n */\n ntils.toDate = function (val) {\n var self = this;\n if (self.isNumber(val))\n return new Date(val);\n else if (self.isString(val))\n return new Date(self.replace(self.replace(val, '-', '/'), 'T', ' '));\n else if (self.isDate(val))\n return val;\n else\n return null;\n };\n\n /**\n * 遍历一个对像或数组\n * @method each\n * @param {Object or Array} obj 要遍历的数组或对象\n * @param {Function} fn 处理函数\n * @return {void} 无返回值\n * @static\n */\n ntils.each = function (list, handler, scope) {\n if (this.isNull(list) || this.isNull(handler)) return;\n if (this.isArray(list)) {\n var listLength = list.length;\n for (var i = 0; i < listLength; i++) {\n var rs = handler.call(scope || list[i], i, list[i]);\n if (!this.isNull(rs)) return rs;\n }\n } else {\n for (var key in list) {\n var rs = handler.call(scope || list[key], key, list[key]);\n if (!this.isNull(rs)) return rs;\n }\n }\n };\n\n /**\n * 格式化日期\n * @method formatDate\n * @param {Date|String|Number} date 日期\n * @param {String} format 格式化字符串\n * @param {object} dict 反译字典\n * @return {String} 格式化结果\n * @static\n */\n ntils.formatDate = function (date, format, dict) {\n if (this.isNull(format) || this.isNull(date)) return date;\n date = this.toDate(date);\n dict = dict || {};\n var placeholder = {\n \"M+\": date.getMonth() + 1, //month\n \"d+\": date.getDate(), //day\n \"h+\": date.getHours(), //hour\n \"m+\": date.getMinutes(), //minute\n \"s+\": date.getSeconds(), //second\n \"w+\": date.getDay(), //week\n \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n \"S\": date.getMilliseconds() //millisecond\n }\n if (/(y+)/.test(format)) {\n format = format.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n }\n for (var key in placeholder) {\n if (new RegExp(\"(\" + key + \")\").test(format)) {\n var value = placeholder[key];\n value = dict[value] || value;\n format = format.replace(RegExp.$1, RegExp.$1.length == 1\n ? value : (\"00\" + value).substr((\"\" + value).length));\n }\n }\n return format;\n };\n\n /**\n * 拷贝对象\n * @method copy\n * @param {Object} src 源对象\n * @param {Object} dst 目标对象\n * @static\n */\n ntils.copy = function (src, dst, igonres) {\n dst = dst || (this.isArray(src) ? [] : {});\n this.each(src, function (key) {\n if (igonres && igonres.indexOf(key) > -1) return;\n delete dst[key];\n if (Object.getOwnPropertyDescriptor) {\n try {\n Object.defineProperty(dst, key, Object.getOwnPropertyDescriptor(src, key));\n } catch (ex) {\n dst[key] = src[key];\n }\n } else {\n dst[key] = src[key];\n }\n })\n return dst;\n };\n\n /**\n * 深度克隆对象\n * @method clone\n * @param {Object} src 源对象\n * @return {Object} 新对象\n * @static\n */\n ntils.clone = function (src, igonres) {\n if (this.isNull(src) ||\n this.isString(src) ||\n this.isNumber(src) ||\n this.isBoolean(src) ||\n this.isDate(src)) {\n return src;\n }\n var objClone = src;\n try {\n objClone = new src.constructor();\n } catch (ex) { }\n this.each(src, function (key, value) {\n if (objClone[key] != value && !this.contains(igonres, key)) {\n if (this.isObject(value)) {\n objClone[key] = this.clone(value, igonres);\n } else {\n objClone[key] = value;\n }\n }\n }, this);\n ['toString', 'valueOf'].forEach(function (key) {\n if (this.contains(igonres, key)) return;\n this.defineFreezeProp(objClone, key, src[key]);\n }, this);\n return objClone;\n };\n\n /**\n * 合并对象\n * @method mix\n * @return 合并后的对象\n * @param {Object} dst 目标对象\n * @param {Object} src 源对象\n * @param {Array} igonres 忽略的属性名,\n * @param {Number} mode 模式\n */\n ntils.mix = function (dst, src, igonres, mode, igonreNull) {\n //根据模式来判断,默认是Obj to Obj的 \n if (mode) {\n switch (mode) {\n case 1: // proto to proto \n return ntils.mix(dst.prototype, src.prototype, igonres, 0);\n case 2: // object to object and proto to proto \n ntils.mix(dst.prototype, src.prototype, igonres, 0);\n break; // pass through \n case 3: // proto to static \n return ntils.mix(dst, src.prototype, igonres, 0);\n case 4: // static to proto \n return ntils.mix(dst.prototype, src, igonres, 0);\n default: // object to object is what happens below \n }\n }\n //---\n src = src || {};\n dst = dst || (this.isArray(src) ? [] : {});\n this.keys(src).forEach(function (key) {\n if (this.contains(igonres, key)) return;\n if (igonreNull && this.isNull(src[key])) return;\n if (this.isObject(src[key]) &&\n (src[key].constructor == Object ||\n src[key].constructor == Array ||\n src[key].constructor == null)) {\n dst[key] = ntils.mix(dst[key], src[key], igonres, 0, igonreNull);\n } else {\n dst[key] = src[key];\n }\n }, this);\n return dst;\n };\n\n /**\n * 定义不可遍历的属性\n **/\n ntils.defineFreezeProp = function (obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n value: value,\n enumerable: false,\n configurable: true, //能不能重写定义\n writable: false //能不能用「赋值」运算更改\n });\n } catch (err) {\n obj[name] = value;\n }\n };\n\n /**\n * 获取所有 key \n */\n ntils.keys = function (obj) {\n if (Object.keys) return Object.keys(obj);\n var keys = [];\n this.each(obj, function (key) {\n keys.push(key);\n });\n return keys;\n };\n\n /**\n * 创建一个对象\n */\n ntils.create = function (proto, props) {\n if (Object.create) return Object.create(proto, props);\n var Cotr = function () { };\n Cotr.prototype = proto;\n var obj = new Cotr();\n if (props) this.copy(props, obj);\n return obj;\n };\n\n /**\n * 设置 proto\n * 在不支持 setPrototypeOf 也不支持 __proto__ 的浏览器\n * 中,会采用 copy 方式\n */\n ntils.setPrototypeOf = function (obj, proto) {\n if (Object.setPrototypeOf) {\n return Object.setPrototypeOf(obj, proto || this.create(null));\n } else {\n if (!('__proto__' in Object)) this.copy(proto, obj);\n obj.__proto__ = proto;\n }\n };\n\n /**\n * 获取 proto\n */\n ntils.getPrototypeOf = function (obj) {\n if (obj.__proto__) return obj.__proto__;\n if (Object.getPrototypeOf) return Object.getPrototypeOf(obj);\n if (obj.constructor) return obj.constructor.prototype;\n };\n\n /**\n * 是否深度相等\n */\n ntils.deepEqual = function (a, b) {\n if (a === b) return true;\n if (!this.isObject(a) || !this.isObject(b)) return false;\n var aKeys = this.keys(a);\n var bKeys = this.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n var allKeys = aKeys.concat(bKeys);\n var checkedMap = this.create(null);\n var result = true;\n this.each(allKeys, function (i, key) {\n if (checkedMap[key]) return;\n if (!this.deepEqual(a[key], b[key])) result = false;\n checkedMap[key] = true;\n }, this);\n return result;\n };\n\n /**\n * 从一个数值循环到别一个数\n * @param {number} fromNum 开始数值\n * @param {Number} toNum 结束数值\n * @param {Number} step 步长值\n * @param {function} handler 执行函数\n * @returns {void} 无返回\n */\n ntils.fromTo = function (fromNum, toNum, step, handler) {\n if (!handler) handler = [step, step = handler][0];\n step = Math.abs(step || 1);\n if (fromNum < toNum) {\n for (var i = fromNum; i <= toNum; i += step) handler(i);\n } else {\n for (var i = fromNum; i >= toNum; i -= step) handler(i);\n }\n };\n\n /**\n * 生成一个Guid\n * @method newGuid\n * @return {String} GUID字符串\n * @static\n */\n ntils.newGuid = function () {\n var S4 = function () {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n };\n return (S4() + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + S4() + S4());\n };\n\n /**\n * 对象变换\n **/\n ntils.map = function (list, fn) {\n var buffer = this.isArray(list) ? [] : {};\n this.each(list, function (name, value) {\n buffer[name] = fn(name, value);\n });\n return buffer;\n };\n\n /**\n * 通过路径设置属性值\n */\n ntils.setByPath = function (obj, path, value) {\n if (this.isNull(obj) || this.isNull(path) || path === '') {\n return;\n }\n if (!this.isArray(path)) {\n path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n }\n this.each(path, function (index, name) {\n if (this.isNull(name) || name.length < 1) return;\n if (index === path.length - 1) {\n obj[name] = value;\n } else {\n obj[name] = obj[name] || {};\n obj = obj[name];\n }\n }, this);\n };\n\n /**\n * 通过路径获取属性值\n */\n ntils.getByPath = function (obj, path) {\n if (this.isNull(obj) || this.isNull(path) || path === '') {\n return obj;\n }\n if (!this.isArray(path)) {\n path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n }\n this.each(path, function (index, name) {\n if (this.isNull(name) || name.length < 1) return;\n if (!this.isNull(obj)) obj = obj[name];\n }, this);\n return obj;\n };\n\n /**\n * 数组去重\n **/\n ntils.unique = function (array) {\n if (this.isNull(array)) return array;\n var newArray = [];\n this.each(array, function (i, value) {\n if (newArray.indexOf(value) > -1) return;\n newArray.push(value);\n });\n return newArray;\n };\n\n /**\n * 解析 function 的参数列表\n **/\n ntils.getFunctionArgumentNames = function (fn) {\n if (!fn) return [];\n var src = fn.toString();\n var parts = src.split(')')[0].split('=>')[0].split('(');\n return (parts[1] || parts[0]).split(',').map(function (name) {\n return name.trim();\n }).filter(function (name) {\n return name != 'function';\n });\n };\n\n /**\n * 缩短字符串\n */\n ntils.short = function (str, maxLength) {\n if (!str) return str;\n maxLength = maxLength || 40;\n var strLength = str.length;\n var trimLength = maxLength / 2;\n return strLength > maxLength ? str.substr(0, trimLength) + '...' + str.substr(strLength - trimLength) : str;\n };\n\n /**\n * 首字母大写\n */\n ntils.firstUpper = function (str) {\n if (this.isNull(str)) return;\n return str.substring(0, 1).toUpperCase() + str.substring(1);\n };\n\n /**\n * 编码正则字符串\n */\n ntils.escapeRegExp = function (str) {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n };\n\n /**\n * 解析字符串为 dom \n * @param {string} str 字符串\n * @returns {HTMLNode} 解析后的 DOM \n */\n ntils.parseDom = function (str) {\n this._PDD_ = this._PDD_ || document.createElement('div');\n this._PDD_.innerHTML = ntils.trim(str);\n var firstNode = this._PDD_.childNodes[0];\n //先 clone 一份再通过 innerHTML 清空\n //否则 IE9 下,清空时会导出返回的 DOM 没有子结点\n if (firstNode) firstNode = firstNode.cloneNode(true);\n this._PDD_.innerHTML = '';\n return firstNode;\n };\n\n})((typeof exports === 'undefined') ? (window.ntils = {}) : exports);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_ntils@2.1.2@ntils/index.js\n// module id = 3\n// module chunks = 0","const utils = require('ntils');\n\nfunction ClassFactory(options) {\n //处理 options\n options = options || utils.create(null);\n options.$name = options.$name || 'Class';\n options.$extends = options.$extends || ClassFactory;\n options.$static = options.$static || utils.create(null);\n //处理父类 prototype\n var superPrototype = utils.isFunction(options.$extends) ?\n options.$extends.prototype : options.$extends;\n //定义新类\n var Class = function () {\n //处理 super\n if (!this.$super) {\n utils.defineFreezeProp(this, '$super', function () {\n if (this._super_called_) return this._super_ret_;\n this._super_called_ = true;\n if (utils.isFunction(options.$extends)) {\n this._super_ret_ = options.$extends.apply(this, arguments);\n //这几行确保可继承于数组\n if (this._super_ret_) {\n var proto = utils.getPrototypeOf(this);\n utils.setPrototypeOf(proto, this._super_ret_);\n }\n } else {\n this._super_ret_ = options.$extends;\n }\n return this._super_ret_;\n });\n for (var name in superPrototype) {\n var value = superPrototype[name];\n if (utils.isFunction(value)) {\n this.$super[name] = value.bind(this);\n } else {\n this.$super[name] = value;\n }\n }\n }\n //调用构造\n if (utils.isFunction(options.constructor) &&\n options.constructor !== Object) {\n return options.constructor.apply(this, arguments);\n } else {\n //如果没有实现 constructor 则调用父类构造\n this.$super.apply(this, arguments);\n }\n };\n //处理 prototype\n Class.prototype = utils.create(superPrototype);\n utils.copy(options, Class.prototype);\n utils.defineFreezeProp(Class.prototype, '$class', Class);\n //处理静态成员\n utils.copy(options.$static, Class);\n if (utils.isFunction(options.$extends)) {\n utils.setPrototypeOf(Class, options.$extends);\n }\n if (!options.$extends.$extend) {\n utils.copy(ClassFactory, Class);\n }\n utils.defineFreezeProp(Class, '$super', options.$extends);\n //--\n return Class;\n}\n\n//定义扩展方法\nClassFactory.$extend = function (options) {\n options.$extends = this;\n return new ClassFactory(options);\n};\n\nClassFactory.Class = ClassFactory;\nmodule.exports = ClassFactory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_cify@2.1.11@cify/index.js\n// module id = 4\n// module chunks = 0","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\n\n/**\n * Watcher 类\n * 通过「计算函数」、「执行函数」可以创建一个 Watcher 实例\n */\nvar Watcher = new Class({\n\n /**\n * 通过「计算函数」、「执行函数」构建一个 Watcher 实例\n * @param {function} calcor 计算函数\n * @param {function} handler 处理函数\n * @param {boolean} first 是否自动执行第一次\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(calcor, handler, first) {\n if (!utils.isFunction(calcor) || !utils.isFunction(handler)) {\n throw new Error('Invalid parameters');\n }\n this.calcor = calcor;\n this.handler = handler;\n if (first) this.calc(true);\n },\n\n /**\n * 执行计算\n * @param {boolean} force 是否强制触发「计算函数」\n * @returns {Object} 计算后的值\n */\n calc: function /*istanbul ignore next*/calc(force) {\n var newValue = this.calcor();\n if (force || !utils.deepEqual(newValue, this.value)) {\n this.handler(newValue, this.value);\n }\n this.value = utils.clone(newValue);\n }\n\n});\n\nmodule.exports = Watcher;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/watcher/index.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\nvar EventEmitter = require('../events');\n\nvar OBSERVER_PROP_NAME = '_observer_';\nvar CHANGE_EVENT_NAME = 'change';\nvar EVENT_MAX_DISPATCH_LAYER = 10;\nvar IGNORE_REGEXPS = [/^\\_(.*)\\_$/i, /^\\_\\_/i];\n\n/**\n * 对象观察类,可以监控对象变化\n * 目前方案问题:\n * 对于父子关系和事件冒泡,目前方案如果用 delete 删除一个属性,无关真实删除关系,\n * 即便调用 clearReference 也无法再清除关系,子对象的 parents 中会一直有一个引用,当前方案最高效\n * 其它方法一:\n * 将「关系」放入全局数组中,然后将 ob.parents 变成一个「属性」从全局数组件中 filter 出来,\n * 基本和目前方法类似,但是关系在外部存领教,所以 clearReference 可清除。\n * 其它方案二: \n * 构造时添加到全局数组,每一个 observer change 时都让放到全局的 observer 遍历自身的,\n * 检果事件源是不是自已的子对象,如果是则触发自身 change 事件,这样 ob 对象本身没有相关引用\n * clearReference 时只从全局清除掉就行了,并且 delete 操作也不会影响,但效率稍差。\n * 其它方案三: \n * 给构造函数添加一个 deep 属性,只有 deep 的 ob 对象,才放入到全局数组中,检查时逻辑同方案二\n * 但是因为要检查的对象会少很多,效率会更高一点。\n */\nvar Observer = new Class({\n $extends: EventEmitter,\n\n /**\n * 通过目标对象构造一个观察对象\n * @param {Object} target 目标对象\n * @param {Object} options 选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(target, options) {\n if (utils.isNull(target)) {\n throw new Error('Invalid target');\n }\n options = options || {};\n var observer = target[OBSERVER_PROP_NAME];\n if (observer) {\n utils.copy(options, observer.options);\n //当时一个组件 A 的为组件 B 的 prop 时,A 更新不会触发 B 更新\n //所在暂注释这里,另一种方法是更新 prop 指令,重写 excute 方法,而不是现在的 update 方法\n // if (observer.options.root) {\n // observer.parents.length = 0;\n // }\n observer.apply();\n return observer;\n }\n EventEmitter.call(this);\n utils.defineFreezeProp(this, 'options', options);\n utils.defineFreezeProp(this, 'shadow', {});\n utils.defineFreezeProp(this, 'target', target);\n utils.defineFreezeProp(this, 'parents', []);\n utils.defineFreezeProp(target, OBSERVER_PROP_NAME, this);\n this.apply();\n },\n\n /**\n * 添加一个属性,动态添中的属性,无法被观察,\n * 但是通过 set 方法添加的属性可能被观察。\n * @param {string} name 名称\n * @param {Object} value 值\n * @returns {void} 无返回\n */\n set: function /*istanbul ignore next*/set(name, value) {\n if (utils.isFunction(value) || Observer.isIgnore(name)) {\n return;\n }\n Object.defineProperty(this.target, name, {\n get: function /*istanbul ignore next*/get() {\n return this[OBSERVER_PROP_NAME].shadow[name];\n },\n set: function /*istanbul ignore next*/set(value) {\n var observer = this[OBSERVER_PROP_NAME];\n var oldValue = observer.shadow[name];\n if (oldValue === value) return;\n if (utils.isObject(value)) {\n var childObserver = new Observer(value);\n observer.addChild(childObserver, name);\n }\n //移除旧值的父引用\n //如果用 delete 删除属性将无法移除父子引用\n if (oldValue && oldValue[OBSERVER_PROP_NAME]) {\n observer.removeChild(oldValue[OBSERVER_PROP_NAME], name);\n }\n observer.shadow[name] = value;\n observer.emitChange({ path: name, value: value });\n },\n configurable: true,\n enumerable: true\n });\n this.target[name] = value;\n },\n\n /**\n * 自动应用所有动态添加的属性\n * @returns {void} 无返回\n */\n apply: function /*istanbul ignore next*/apply() {\n if (utils.isArray(this.target)) {\n this._wrapArray(this.target);\n }\n var names = this._getPropertyNames(this.target);\n names.forEach(function (name) {\n var desc = Object.getOwnPropertyDescriptor(this.target, name);\n if (!('value' in desc)) return;\n this.set(name, this.target[name]);\n }, this);\n },\n\n /**\n * 清除所有父子引用\n * @returns {void} 无返回\n */\n clearReference: function /*istanbul ignore next*/clearReference() {\n utils.each(this.target, function (name, value) {\n if (utils.isNull(value)) return;\n var child = value[OBSERVER_PROP_NAME];\n if (child) this.removeChild(child);\n }, this);\n },\n\n /**\n * 派发一个事件,事件会向父级对象冒泡\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n * @returns {void} 无返回\n */\n dispatch: function /*istanbul ignore next*/dispatch(eventName, event) {\n if (event._src_ === this) return;\n event._src_ = event._src_ || this;\n event._layer_ = event._layer_ || 0;\n if (event._layer_++ >= EVENT_MAX_DISPATCH_LAYER) return;\n this.emit(eventName, event);\n if (!this.parents || this.parents.length < 1) return;\n this.parents.forEach(function (item) {\n if (!(item.name in item.parent.target)) {\n return item.parent.removeChild(this);\n }\n var parentEvent = utils.copy(event);\n parentEvent.path = item.name + '.' + event.path;\n item.parent.dispatch(eventName, parentEvent);\n }, this);\n },\n\n /**\n * 添子观察者对象\n * @param {Object} child 父对象\n * @param {String} name 属性名\n * @returns {void} 无返回\n */\n addChild: function /*istanbul ignore next*/addChild(child, name) {\n if (utils.isNull(child) || utils.isNull(name)) {\n throw new Error('Invalid paramaters');\n }\n if (child.options.root) return;\n child.parents.push({ parent: this, name: name });\n },\n\n /**\n * 移除子对象\n * @param {Object} child 父对象\n * @param {String} name 属性名\n * @returns {void} 无返回\n */\n removeChild: function /*istanbul ignore next*/removeChild(child, name) {\n if (utils.isNull(child)) {\n throw new Error('Invalid paramaters');\n }\n var foundIndex = -1;\n child.parents.forEach(function (item, index) {\n if (item.parent === this && item.name === name) {\n foundIndex = index;\n }\n }, this);\n if (foundIndex > -1) {\n child.parents.splice(foundIndex, 1);\n }\n },\n\n /**\n * 触发 change 事件\n * @param {Object} event 事件对象\n * @returns {void} 无返回\n */\n emitChange: function /*istanbul ignore next*/emitChange(event) {\n this.dispatch(CHANGE_EVENT_NAME, event);\n },\n\n /**\n * 获取所有成员名称列表\n * @returns {Array} 所有成员名称列表\n */\n _getPropertyNames: function /*istanbul ignore next*/_getPropertyNames() {\n var names = utils.isArray(this.target) ? this.target.map(function (item, index) {\n return index;\n }) : Object.keys(this.target);\n return names.filter(function (name) {\n return name !== OBSERVER_PROP_NAME;\n });\n },\n\n /**\n * 包裹数组\n * @param {array} array 源数组\n * @returns {array} 处理后的数组\n */\n _wrapArray: function /*istanbul ignore next*/_wrapArray(array) {\n utils.defineFreezeProp(array, 'push', function () {\n var items = [].slice.call(arguments);\n items.forEach(function (item) {\n //这里也会触发对应 index 的 change 事件\n this[OBSERVER_PROP_NAME].set(array.length, item);\n }, this);\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n });\n utils.defineFreezeProp(array, 'pop', function () {\n var item = [].pop.apply(this, arguments);\n this[OBSERVER_PROP_NAME].emitChange({ path: this.length, value: item });\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n return item;\n });\n utils.defineFreezeProp(array, 'unshift', function () {\n var items = [].slice.call(arguments);\n items.forEach(function (item) {\n //这里也会触发对应 index 的 change 事件\n this[OBSERVER_PROP_NAME].set(0, item);\n }, this);\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n });\n utils.defineFreezeProp(array, 'shift', function () {\n var item = [].shift.apply(this, arguments);\n this[OBSERVER_PROP_NAME].emitChange({ path: 0, value: item });\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n return item;\n });\n utils.defineFreezeProp(array, 'splice', function () {\n var startIndex = arguments[0];\n var endIndex = utils.isNull(arguments[1]) ? startIndex + arguments[1] : this.length - 1;\n var items = [].splice.apply(this, arguments);\n for (var i = startIndex; i <= endIndex; i++) {\n this[OBSERVER_PROP_NAME].emitChange({ path: i, value: items[i - startIndex] });\n }\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n return items;\n });\n utils.defineFreezeProp(array, 'set', function (index, value) {\n if (index >= this.length) {\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n }\n this[OBSERVER_PROP_NAME].set(index, value);\n });\n }\n\n});\n\n/**\n * 观察一个对象\n * @param {Object} target 目标对象\n * @return {Observer} 观察者对象\n */\nObserver.observe = function (target) {\n return new Observer(target);\n};\n\n/**\n * 检查是不是忽略的属性名\n * @param {string} word 待检查的字符串\n * @returns {void} 无返回\n */\nObserver.isIgnore = function (word) {\n return IGNORE_REGEXPS.some(function (re) /*istanbul ignore next*/{\n return re.test(word);\n });\n};\n\nmodule.exports = Observer;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/observer/index.js","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/keys.js\n// module id = 7\n// module chunks = 0","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/fn/object/keys.js\n// module id = 8\n// module chunks = 0","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/es6.object.keys.js\n// module id = 9\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_to-object.js\n// module id = 10\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_defined.js\n// module id = 11\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_object-keys.js\n// module id = 12\n// module chunks = 0","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_object-keys-internal.js\n// module id = 13\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_has.js\n// module id = 14\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_to-iobject.js\n// module id = 15\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_iobject.js\n// module id = 16\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_cof.js\n// module id = 17\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_array-includes.js\n// module id = 18\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_to-length.js\n// module id = 19\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_to-integer.js\n// module id = 20\n// module chunks = 0","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_to-absolute-index.js\n// module id = 21\n// module chunks = 0","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_shared-key.js\n// module id = 22\n// module chunks = 0","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_shared.js\n// module id = 23\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_global.js\n// module id = 24\n// module chunks = 0","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_uid.js\n// module id = 25\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_enum-bug-keys.js\n// module id = 26\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_object-sap.js\n// module id = 27\n// module chunks = 0","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_export.js\n// module id = 28\n// module chunks = 0","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_core.js\n// module id = 29\n// module chunks = 0","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_ctx.js\n// module id = 30\n// module chunks = 0","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_a-function.js\n// module id = 31\n// module chunks = 0","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_hide.js\n// module id = 32\n// module chunks = 0","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_object-dp.js\n// module id = 33\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_an-object.js\n// module id = 34\n// module chunks = 0","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_is-object.js\n// module id = 35\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_ie8-dom-define.js\n// module id = 36\n// module chunks = 0","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_descriptors.js\n// module id = 37\n// module chunks = 0","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_fails.js\n// module id = 38\n// module chunks = 0","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_dom-create.js\n// module id = 39\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_to-primitive.js\n// module id = 40\n// module chunks = 0","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_property-desc.js\n// module id = 41\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/get-own-property-descriptor.js\n// module id = 42\n// module chunks = 0","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/fn/object/get-own-property-descriptor.js\n// module id = 43\n// module chunks = 0","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/es6.object.get-own-property-descriptor.js\n// module id = 44\n// module chunks = 0","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_object-gopd.js\n// module id = 45\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/_object-pie.js\n// module id = 46\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/define-property.js\n// module id = 47\n// module chunks = 0","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/fn/object/define-property.js\n// module id = 48\n// module chunks = 0","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.1@core-js/library/modules/es6.object.define-property.js\n// module id = 49\n// module chunks = 0","/*istanbul ignore next*/'use strict';\n\nvar utils = require('ntils');\nvar Class = require('cify');\n\n/**\n * 事件触发器基类\n */\nvar EventEmitter = new Class({\n $extends: Function,\n\n /**\n * 构建一个一个事修的触发器对象\n * @param {object} target 将代理的目标对象可以省略\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(target) {\n target = target || this;\n var emitter = target._emitter_;\n if (emitter) return emitter;\n utils.defineFreezeProp(this, '_target_', target);\n utils.defineFreezeProp(target, '_emitter_', this);\n this._isNative_ = this._isNativeObject(this._target_);\n this._listeners_ = this._listeners_ || {};\n this.on = this.$on = this.$addListener = this.addListener;\n this.off = this.$off = this.$removeListener = this.removeListener;\n this.$emit = this.emit;\n },\n\n /**\n * 检查是否原生支持事件\n * @param {object} obj 对象\n * @returns {void} 检查结果\n */\n _isNativeObject: function /*istanbul ignore next*/_isNativeObject(obj) {\n return obj.addEventListener && obj.removeEventListener && obj.dispatchEvent;\n },\n\n /**\n * 添加一个事件监听函数\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n * @returns {void} 无返回\n */\n addListener: function /*istanbul ignore next*/addListener(name, listener, capture) {\n if (this._isNative_) {\n this._addNativeEventListener(name, listener, capture);\n }\n this._listeners_[name] = this._listeners_[name] || [];\n this._listeners_[name].push(listener);\n if (this._listeners_[name].length > EventEmitter._maxListeners) {\n throw new Error('The `' + name + '` event listener is not more than 10');\n }\n },\n\n /**\n * 移除「一个/一组/所有」事件监听函数\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n * @returns {void} 无返回\n */\n removeListener: function /*istanbul ignore next*/removeListener(name, listener, capture) {\n if (name && listener) {\n if (this._isNative_) {\n this._removeNativeEventListener(name, listener, capture);\n }\n if (!this._listeners_[name]) return;\n var index = this._listeners_[name].indexOf(listener);\n this._listeners_[name].splice(index, 1);\n } else if (name) {\n if (this._isNative_ && this._listeners_[name]) {\n this._listeners_[name].forEach(function (_listener) {\n this.removeListener(name, _listener, capture);\n }, this);\n }\n delete this._listeners_[name];\n } else {\n utils.each(this._listeners_, function (name) {\n this.removeListener(name, null, capture);\n }, this);\n this._listeners_ = {};\n }\n },\n\n /**\n * 触发自身的一个事件\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @param {string} canBubble 能否冒泡(只在代理 dom 对象时有效)\n * @param {object} cancelAble 能否取消(只在代理 dom 对象时有效)\n * @returns {void} 无返回\n */\n emit: function /*istanbul ignore next*/emit(name, data, canBubble, cancelAble) {\n if (this._isNative_) {\n return this._emitNativeEvent(name, data, canBubble, cancelAble);\n }\n if (!this._listeners_[name]) return;\n var stopPropagation = false;\n this._listeners_[name].forEach(function (handler) {\n var rs = handler.call(this._target_, data);\n if (rs === false) stopPropagation = true;\n }, this);\n return stopPropagation;\n },\n\n /**\n * 添加 DOM 元素事件\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件\n * @returns {void} 无返回\n */\n _addNativeEventListener: function /*istanbul ignore next*/_addNativeEventListener(name, listener, capture) {\n this._target_.addEventListener(name, listener, capture);\n //如果存在已注册的自定义 “组合事件”\n var descriptor = EventEmitter._events[name];\n if (descriptor) {\n descriptor.addListener = descriptor.addListener || descriptor.on;\n descriptor.addListener(this, name, listener, capture);\n }\n },\n\n /**\n * 移除 DOM 元素事件\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件\n * @returns {void} 无返回\n */\n _removeNativeEventListener: function /*istanbul ignore next*/_removeNativeEventListener(name, listener, capture) {\n this._target_.removeEventListener(name, listener, capture);\n //如果存在已注册的自定义 “组合事件”\n var descriptor = EventEmitter._events[name];\n if (descriptor) {\n descriptor.removeListener = descriptor.removeListener || descriptor.off;\n descriptor.removeListener(this, name, listener, capture);\n }\n },\n\n /**\n * 触发 DOM 元素事件\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @param {string} canBubble 能否冒泡\n * @param {object} cancelAble 能否取消\n * @returns {void} 无返回\n */\n _emitNativeEvent: function /*istanbul ignore next*/_emitNativeEvent(name, data, canBubble, cancelAble) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(name, canBubble, cancelAble);\n utils.copy(data, event, ['data']);\n event.data = data;\n return this._target_.dispatchEvent(event);\n }\n\n});\n\n//最多添加多少个 listener\nEventEmitter._maxListeners = 10;\n\n//所有自定义事件\nEventEmitter._events = [];\n\n/**\n * 注册自定义事件(只在代理 dom 对象时有效)\n * @param {object} descriptor 事件定义\n * @returns {void} 无返回\n */\nEventEmitter.register = function (descriptor) {\n var names = descriptor.name;\n if (!names) return;\n if (!utils.isArray(names)) names = names.split(',');\n names.forEach(function (name) {\n this._events[name] = descriptor;\n }, this);\n};\n\nmodule.exports = EventEmitter;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/events/index.js","/*istanbul ignore next*/'use strict';\n\nvar Compiler = require('./compiler');\nvar Directive = require('./directive');\nvar Expression = require('./expression');\nvar Template = require('./template');\nvar directives = require('./directives/');\n\nTemplate.Template = Template;\nTemplate.Compiler = Compiler;\nTemplate.Directive = Directive;\nTemplate.directives = directives;\nTemplate.Expression = Expression;\n\nmodule.exports = Template;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/index.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar Directive = require('./directive');\nvar utils = require('ntils');\nvar Expression = require('./expression');\nvar commonDirectives = require('./directives');\n\nvar DEFAULT_PREFIX = 'm';\n\n/**\n * 模板编译器\n * 可以通过指定「前缀」或「指令集」构建实例\n */\nvar Compiler = new Class({\n\n /**\n * 构造一个编译器\n * @param {Object} options 选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(options) {\n options = options || {};\n this.prefix = options.prefix || DEFAULT_PREFIX;\n this.elementDirectives = {};\n this.attributeDirectives = {};\n this.registerDirectives(commonDirectives);\n this.registerDirectives(options.directives);\n },\n\n /**\n * 将字符串转成「驼峰」式\n * @param {string} str 原始字符串\n * @param {number} mode 1 大驼峰,0 小驼峰\n * @return {string} 转换后的字符串\n */\n toCamelCase: function /*istanbul ignore next*/toCamelCase(str, mode) {\n if (str) {\n str = str.replace(/\\-[a-z0-9]/g, function ($1) /*istanbul ignore next*/{\n return $1.slice(1).toUpperCase();\n });\n str = str.replace(/^[a-z]/i, function ($1) {\n return mode ? $1.toUpperCase() : $1.toLowerCase();\n });\n }\n return str;\n },\n\n /**\n * 将字符串转成分隔形式\n * @param {string} str 原始字符串\n * @return {string} 转换后的字符串\n */\n toSplitCase: function /*istanbul ignore next*/toSplitCase(str) {\n if (str) {\n str = str.replace(/([A-Z])/g, '-$1');\n if (str[0] == '-') str = str.slice(1);\n }\n return str;\n },\n\n /**\n * 添加指令\n * @param {Object} directives 指令集 \n * @returns {void} 无返回\n */\n registerDirectives: function /*istanbul ignore next*/registerDirectives(directives) {\n utils.each(directives, function (name, directive) {\n name = this.toSplitCase(name);\n var fullName = directive.options.prefix === false ? name : /*istanbul ignore next*/this.prefix + ':' + name;\n if (directive.options.type == Directive.TE) {\n this.elementDirectives[fullName.toUpperCase()] = directive;\n } else {\n this.attributeDirectives[fullName.toLowerCase()] = directive;\n }\n }, this);\n },\n\n /**\n * 解析要 attr 指令信息\n * @param {string} attrName 要解析的名称字符串\n * @returns {Object} 解析后的对象\n */\n _parseAttrInfo: function /*istanbul ignore next*/_parseAttrInfo(attrName) {\n /*istanbul ignore next*/var _this = this;\n\n var parts = attrName.toLowerCase().split(':');\n var info = {};\n if (parts.length > 1) {\n info.name = /*istanbul ignore next*/parts[0] + ':' + parts[1];\n info.decorates = parts.slice(2).map(function (item) /*istanbul ignore next*/{\n return (/*istanbul ignore next*/_this.toCamelCase(item)\n );\n });\n } else {\n info.name = parts[0];\n info.decorates = [];\n }\n return info;\n },\n\n /**\n * 创建一个指令实例\n * @param {Directive} Directive 指令类\n * @param {Object} options 指令构建选项\n * @returns {Directive} 指令实例\n */\n _createDirectiveInstance: function /*istanbul ignore next*/_createDirectiveInstance(Directive, options) {\n options.compiler = this;\n options.prefix = this.prefix;\n return new Directive(options);\n },\n\n /**\n * 初始化一个编译完成的 handler\n * @param {function} handler 编译后的的模板函数\n * @returns {void} 无返回\n */\n _bindHandler: function /*istanbul ignore next*/_bindHandler(handler) {\n //排序 directives\n handler.directives = handler.directives.sort(function (a, b) {\n return b.level - a.level;\n });\n //初始化 directives\n var boundDirectives = [];\n utils.each(handler.directives, function (index, directive) {\n directive.index = index;\n directive.bind();\n boundDirectives.push(directive);\n //移除完成绑定的指令对应的 attribute\n if (directive.remove !== false && directive.attribute) {\n directive.node.removeAttribute(directive.attribute.name);\n }\n //如果遇到一个「终态」指令,停止向下初始化\n if (directive.final) {\n return handler.final = true;\n }\n }, this);\n handler.directives = boundDirectives;\n },\n\n /**\n * 编译一个元素本身\n * @param {function} handler 当前模板函数\n * @param {HTMLNode} node 当前 HTML 结点\n * @returns {void} 无返回\n */\n _compileElement: function /*istanbul ignore next*/_compileElement(handler, node) {\n var ElementDirective = this.elementDirectives[node.nodeName.toUpperCase()];\n if (!ElementDirective) return;\n handler.directives.push(this._createDirectiveInstance(ElementDirective, {\n handler: handler,\n node: node\n }));\n },\n\n /**\n * 编译一个元素所有 attributes \n * @param {function} handler 当前模板函数\n * @param {HTMLNode} node 当前 HTML 结点\n * @returns {void} 无返回\n */\n _compileAttributes: function /*istanbul ignore next*/_compileAttributes(handler, node) {\n utils.toArray(node.attributes).forEach(function (attribute) {\n var attrInfo = this._parseAttrInfo(attribute.name);\n var AttrDirective = this.attributeDirectives[attrInfo.name] || this.attributeDirectives['*'];\n if (!AttrDirective) return;\n var directiveOptions = AttrDirective.options;\n handler.directives.push(this._createDirectiveInstance(AttrDirective, {\n handler: handler,\n node: node,\n attribute: attribute,\n expression: directiveOptions.literal ? attribute.value : new Expression(attribute.value, directiveOptions.mixed),\n decorates: attrInfo.decorates\n }));\n }, this);\n },\n\n /**\n * 编译所有子结点\n * @param {function} handler 当前模板函数\n * @param {HTMLNode} node 当前 HTML 结点\n * @returns {void} 无返回\n */\n _compileChildren: function /*istanbul ignore next*/_compileChildren(handler, node) {\n if (handler.final) return;\n utils.toArray(node.childNodes).forEach(function (childNode) {\n if (childNode._compiled_) return;\n var childHandler = this.compile(childNode);\n childHandler.parent = this;\n handler.children.push(childHandler);\n }, this);\n },\n\n /**\n * 编译一个模板\n * @param {HTMLNode} node 模板根元素\n * @param {Object} options 选项\n * @returns {function} 模板函数\n */\n compile: function /*istanbul ignore next*/compile(node, options) {\n if (!node) {\n throw new Error('Invalid node for compile');\n }\n node._compiled_ = true;\n options = options || {};\n //定义编译结果函数\n var handler = function handler(scope) {\n if (utils.isNull(scope)) scope = {};\n handler.directives.forEach(function (directive) {\n directive.scope = scope;\n directive.execute(scope);\n }, this);\n handler.children.forEach(function (childHandler) {\n childHandler(scope);\n }, this);\n };\n //--\n handler.dispose = function () {\n handler.directives.forEach(function (directive) {\n directive.unbind();\n }, this);\n handler.children.forEach(function (childHandler) {\n childHandler.dispose();\n }, this);\n };\n handler.node = node;\n //定义 children & directives \n handler.directives = [];\n handler.children = [];\n //编译相关指令\n if (options.element !== false) this._compileElement(handler, node);\n if (options.attribute !== false) this._compileAttributes(handler, node);\n this._bindHandler(handler);\n if (options.children !== false) this._compileChildren(handler, node);\n //返回编译后函数\n return handler;\n }\n\n});\n\nmodule.exports = Compiler;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/compiler.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\nvar Expression = require('./expression');\n\n/**\n * 指令定义工场函数\n * @param {Object} classOptions 选项\n * @returns {Directive} 指令类\n */\nfunction Directive(classOptions) {\n //处理指令选项\n classOptions = classOptions || {};\n classOptions.type = classOptions.type || Directive.TA;\n classOptions.level = classOptions.level || Directive.LG;\n\n //生成指令类\n var DirectiveClass = new Class({\n\n $extends: classOptions,\n //指令构建函数\n constructor: function /*istanbul ignore next*/constructor(instanceOptions) {\n utils.copy(instanceOptions, this);\n },\n //挂载实例上的 options\n options: classOptions,\n //挂载实例核心方法\n bind: classOptions.bind || utils.noop,\n execute: classOptions.execute || function (scope) {\n this.scope = scope;\n if (this.options.type === Directive.TE) {\n return this.update();\n }\n var newValue = this.options.literal ? this.attribute.value : this.expression.execute(scope);\n if (!utils.deepEqual(this._value_, newValue)) {\n this.update(newValue, this._value_);\n this._value_ = newValue;\n }\n },\n update: classOptions.update || utils.noop,\n unbind: classOptions.unbind || utils.noop,\n //挂载指令常用的类型\n utils: utils,\n Expression: Expression\n });\n //向指令类添加「指令定义信息」\n DirectiveClass.options = classOptions;\n utils.setPrototypeOf(DirectiveClass, classOptions);\n return DirectiveClass;\n}\n\n//指令类型\nDirective.TA = 'A';\nDirective.TE = 'E';\n\n//指令级别\nDirective.LP = 3000; //prevent\nDirective.LS = 2000; //statement\nDirective.LE = 1000; //eleemtn\nDirective.LG = 0; //general\nDirective.LA = -1000; //any attribute\nDirective.LC = -2000; //cloak\n\nmodule.exports = Directive;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directive.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\n\n/**\n * 表达式类型,将字符串构析为可执行表达式实例\n */\nvar Expression = new Class({\n\n /**\n * 通过字符串构造一个表达式实例\n * @param {string} code 代码字符串\n * @param {boolean} mix 是否是混合代码\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(code, mix) {\n this.func = mix ? this._compileMixedCode(code) : this._compileCode(code);\n },\n\n /**\n * 编译普通表达式代码\n * @param {string} code 代码字符串\n * @returns {function} 编辑后的函数\n */\n _compileCode: function /*istanbul ignore next*/_compileCode(code) {\n code = this._escapeEOL(this._wrapCode(code));\n return this._createFunction(code);\n },\n\n /**\n * 编辑混合的表达式代码\n * @param {string} code 代码字符串\n * @returns {function} 编辑后的函数\n */\n _compileMixedCode: function /*istanbul ignore next*/_compileMixedCode(code) {\n var statements = this._parseMixedCode(code);\n code = this._escapeEOL(statements.join('+'));\n return this._createFunction(code);\n },\n\n /**\n * 通过符串代码创建一个可执行函数\n * @param {string} code 代码字符串\n * @returns {function} 创建的函数\n */\n _createFunction: function /*istanbul ignore next*/_createFunction(code) {\n var func = new Function('utils', 'scope', 'with(scope){return ' + code + '}');\n return func.bind(null, utils);\n },\n\n /**\n * 解析混合代码字符串\n * @param {string} code 混合代码字符串\n * @returns {Array} 解析后的「token」列表\n */\n _parseMixedCode: function /*istanbul ignore next*/_parseMixedCode(code) {\n var index = 0,\n length = code.length;\n var token = '',\n isExpr = false,\n tokens = [];\n while (index <= length) {\n var char = code[index++];\n var nextChar = code[index];\n if (utils.isNull(char)) {\n if (token.length > 0) {\n tokens.push('\"' + this._escapeCode(token) + '\"');\n }\n token = '';\n isExpr = false;\n } else if (!isExpr && char + nextChar == '{{') {\n if (token.length > 0) {\n tokens.push('\"' + this._escapeCode(token) + '\"');\n }\n token = '';\n isExpr = true;\n index++;\n } else if (isExpr && char + nextChar == '}}') {\n if (token.length > 0) {\n tokens.push(this._wrapCode(token));\n }\n token = '';\n isExpr = false;\n index++;\n } else {\n token += char;\n }\n }\n return tokens;\n },\n\n /**\n * 转义处理代码字符串\n * @param {string} code 源字符串\n * @returns {string} 处理后的字符串\n */\n _escapeCode: function /*istanbul ignore next*/_escapeCode(code) {\n return code.replace(/\"/, '\\\\\"').replace('\\r\\n', '\\\\r\\\\n').replace('\\n', '\\\\n');\n },\n\n /**\n * 转义换行符\n * @param {string} code 源字符串\n * @returns {string} 处理后的字符串\n */\n _escapeEOL: function /*istanbul ignore next*/_escapeEOL(code) {\n return code.replace(/\\n/gm, '\\\\\\n');\n },\n\n /**\n * 通过闭包和 try/cache 包裹代码\n * 将模板中错误的代码直接显示在「模板中用到的位置」,更易于定位错误。\n * @param {string} code 源字符串\n * @returns {string} 处理后的字符串\n */\n _wrapCode: function /*istanbul ignore next*/_wrapCode(code) {\n return '((function(){try{return (' + code + ')}catch(err){console.error(err);return err;}})())';\n },\n\n /**\n * 通过 scope 对象执行表达式\n * @param {Object} scope 上下文对象\n * @returns {Object} 执行结果\n */\n execute: function /*istanbul ignore next*/execute(scope) {\n if (utils.isNull(scope)) {\n scope = {};\n }\n return this.func.call(scope, scope);\n }\n\n});\n\nmodule.exports = Expression;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/expression.js","/*istanbul ignore next*/'use strict';\n\nmodule.exports = {\n '#text': require('./text'),\n 'each': require('./each'),\n 'if': require('./if'),\n 'prop': require('./prop'),\n 'attr': require('./attr'),\n 'on': require('./on'),\n 'html': require('./inner-html'),\n 'text': require('./inner-text'),\n 'prevent': require('./prevent'),\n 'id': require('./id'),\n 'cloak': require('./cloak'),\n 'show': require('./show'),\n 'model': require('./model'),\n 'focus': require('./focus'),\n '*': require('./attribute') //处理所有未知 attr\n};\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/index.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\nvar Expression = require('../expression');\n\nmodule.exports = new Directive({\n type: Directive.TE,\n prefix: false,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.expr = new Expression(this.node.nodeValue, true);\n this.node.nodeValue = '';\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n var newValue = this.expr.execute(scope);\n if (this.node.nodeValue !== newValue) {\n this.node.nodeValue = newValue;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/text.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\nvar utils = require('ntils');\nvar Scope = require('../scope');\n\nmodule.exports = new Directive({\n level: Directive.LS + 1, //比 if 要高一个权重\n final: true,\n literal: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.mountNode = document.createTextNode('');\n this.node.parentNode.insertBefore(this.mountNode, this.node);\n //虽然,bind 完成后,也会进行 attribute 的移除,\n //但 each 指令必须先移除,否再进行 item 编译时 each 还会生效\n this.node.removeAttribute(this.attribute.name);\n this.node.parentNode.removeChild(this.node);\n this.parseExpr();\n this.eachItems = {};\n },\n\n parseExpr: function /*istanbul ignore next*/parseExpr() {\n this.eachType = this.attribute.value.indexOf(' in ') > -1 ? 'in' : 'of';\n var tokens = this.attribute.value.split(' ' + this.eachType + ' ');\n var fnText = /*istanbul ignore next*/'with(scope){utils.each(' + tokens[1] + ',fn.bind(this,' + tokens[1] + '))}';\n this.each = new Function('utils', 'scope', 'fn', fnText).bind(null, this.utils);\n var names = tokens[0].split(',').map(function (name) {\n return name.trim();\n });\n if (this.eachType == 'in') {\n this.keyName = names[0];\n this.valueName = names[1];\n } else {\n this.keyName = names[1];\n this.valueName = names[0];\n }\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n /*istanbul ignore next*/var _this = this;\n\n var currentEachKeys = [];\n var itemsFragment = document.createDocumentFragment();\n var self = this;\n this.each(scope, function (eachTarget, key) {\n //创建新 scope,必须选创建再设置 prototype 或采用定义「属性」的方式\n //因为指令参数指定的名称有可能和 scope 原有变量冲突\n //将导致针对 watch 变量的赋值,从引用发循环\n var newScope = new Scope(this.scope);\n if (self.keyName) {\n Object.defineProperty(newScope, self.keyName, {\n /*istanbul ignore next*/get: function get() {\n return key;\n }\n });\n }\n //value 采用「属性」进行代理,否则将会使「双向」绑定无把回设值\n if (self.valueName) {\n Object.defineProperty(newScope, self.valueName, {\n /*istanbul ignore next*/get: function get() {\n return eachTarget[key];\n },\n /*istanbul ignore next*/set: function set(value) {\n eachTarget[key] = value;\n }\n });\n }\n var oldItem = this.eachItems[key];\n if (oldItem) {\n oldItem.handler(newScope);\n } else {\n var newItem = {};\n //创建新元素\n newItem.node = this.node.cloneNode(true);\n itemsFragment.appendChild(newItem.node);\n newItem.handler = this.compiler.compile(newItem.node);\n newItem.handler(newScope);\n this.eachItems[key] = newItem;\n }\n currentEachKeys.push(key);\n }.bind(this));\n utils.each(this.eachItems, function (key, item) {\n if (currentEachKeys.some(function (k) /*istanbul ignore next*/{\n return k == key;\n })) return;\n if (item.node.parentNode) {\n item.node.parentNode.removeChild(item.node);\n }\n delete /*istanbul ignore next*/_this.eachItems[key];\n }, this);\n if (itemsFragment.childNodes.length > 0) {\n this.mountNode.parentNode.insertBefore(itemsFragment, this.mountNode);\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/each.js","/*istanbul ignore next*/'use strict';\n\nvar utils = require('ntils');\n\nvar Scope = function Scope(parent, props) {\n //新的 scope 因为「继承」了 _observer_ \n //所以在新 scope 上进行双向绑定时,将将值成功回写\n //如果有天不须用 utils.cteate 继承法,需要注意 _observer_ \n //或在新 scope 上 defineProperty 代理 parentScope\n var scope = utils.create(parent);\n utils.copy(props, scope);\n //将 func 绑定到原 scope 上;\n utils.each(parent, function (key, value) {\n if (!utils.isFunction(value)) return;\n scope[key] = value.bind(parent);\n });\n return scope;\n};\n\nmodule.exports = Scope;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/scope.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n level: Directive.LS,\n final: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.mountNode = document.createTextNode('');\n this.node.parentNode.insertBefore(this.mountNode, this.node);\n //虽然,bind 完成后,也会进行 attribute 的移除,\n //但 if 指令必须先移除,否再进行 item 编译时 if 还会生效\n this.node.removeAttribute(this.attribute.name);\n this.node.parentNode.removeChild(this.node);\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var newValue = this.expression.execute(scope);\n if (newValue) {\n //如果新计算的结果为 true 才执行 \n this._handler = this._handler || this.compiler.compile(this.node);\n this._handler(scope);\n var node = this.node.$substitute || this.node;\n if (!node.parentNode) {\n this.mountNode.parentNode.insertBefore(node, this.mountNode);\n }\n } else {\n var _node = this.node.$substitute || this.node;\n if (_node.parentNode) _node.parentNode.removeChild(_node);\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/if.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(value) {\n var target = this.node.$target || this.node;\n target[this.decorates[0]] = value;\n }\n // execute: function (scope) {\n // this.scope = scope;\n // let newValue = this.expression.execute(scope);\n // let target = this.node.$target || this.node;\n // target[this.decorates[0]] = newValue;\n // }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/prop.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(value) {\n var target = this.node.$target || this.node;\n if (target.setAttribute) {\n target.setAttribute(this.decorates[0], value);\n } else {\n target[this.decorates[0]] = value;\n }\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/attr.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\nvar EventEmitter = require('../../events');\nvar Scope = require('../scope');\n\nmodule.exports = new Directive({\n literal: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n var attrValue = this.attribute.value || '';\n if (attrValue.indexOf('(') < 0 && attrValue.indexOf(')') < 0) {\n attrValue += '($event)';\n }\n this.expr = new this.Expression(attrValue);\n var eventTarget = this.node.$target || this.node;\n this.emiter = new EventEmitter(eventTarget);\n this.emiter.addListener(this.decorates[0], function (event) {\n if (this.utils.isNull(this.scope)) return;\n this.expr.execute(new Scope(this.scope, {\n $event: event\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/on.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(newValue) {\n this.node.innerHTML = newValue;\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/inner-html.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(newValue) {\n this.node.innerText = newValue;\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/inner-text.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n level: Directive.LP,\n final: true\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/prevent.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n literal: true,\n\n update: function /*istanbul ignore next*/update(id) {\n if (id in this.scope) {\n throw new Error('Conflicting component id `' + id + '`');\n }\n this.scope[id] = this.node.$target || this.node;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/id.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n level: Directive.LC,\n literal: true,\n prefix: false,\n\n bind: function /*istanbul ignore next*/bind() {\n this.node.removeAttribute(this.attribute.name);\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/cloak.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(value) {\n this.node.style.display = value ? '' : 'none';\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/show.js","/*istanbul ignore next*/'use strict';\n\nvar SelectDirective = require('./select');\nvar EditableDirective = require('./editable');\nvar InputDirective = require('./input');\nvar RadioDirective = require('./radio');\nvar CheckboxDirective = require('./checkbox');\nvar PropDirective = require('./prop');\n\nvar Directive = function Directive(options) {\n var node = options.node;\n var tagName = node.tagName;\n if (options.decorates[0]) {\n return new PropDirective(options);\n } else if (tagName == 'INPUT') {\n var type = node.getAttribute('type');\n if (type == 'radio') {\n return new RadioDirective(options);\n } else if (type == 'checkbox') {\n return new CheckboxDirective(options);\n } else {\n return new InputDirective(options);\n }\n } else if (tagName == 'TEXTAREA') {\n return new InputDirective(options);\n } else if (tagName == 'SELECT') {\n return new SelectDirective(options);\n } else if (node.isContentEditable) {\n return new EditableDirective(options);\n } else {\n throw new Error( /*istanbul ignore next*/'Directive `model` cannot be used on `' + tagName + '`');\n }\n};\n\n//手动添加 classOptions\nDirective.options = {\n level: Directive.LA\n};\n\nmodule.exports = Directive;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/index.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n final: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.node.removeAttribute(this.attribute.name);\n this._handler = this.compiler.compile(this.node);\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('change', function () {\n if (this.utils.isNull(this.scope)) return;\n var selectedOptions = this.node.selectedOptions;\n var value = this.node.multiple ? [].slice.call(selectedOptions).map(function (option) {\n return option.value;\n }, this) : selectedOptions[0].value;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: value\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n this._handler(scope);\n var value = this.expression.execute(scope);\n if (!this.utils.isArray(value)) value = [value];\n [].slice.call(this.node.options).forEach(function (option) {\n option.selected = value.indexOf(option.value) > -1;\n }, this);\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/select.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('input', function () {\n if (this.utils.isNull(this.scope)) return;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.innerHTML\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var value = this.expression.execute(scope);\n if (this.node.innerHTML !== value) {\n this.node.innerHTML = value;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/editable.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('input', function () {\n if (this.utils.isNull(this.scope)) return;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.value\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var value = this.expression.execute(scope);\n if (this.node.value !== value) {\n this.node.value = value;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/input.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('change', function () {\n if (this.utils.isNull(this.scope)) return;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.value\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n var value = this.expression.execute(scope);\n this.node.checked = value == this.node.value;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/radio.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('change', function () {\n if (this.utils.isNull(this.scope)) return;\n var value = this.expression.execute(this.scope);\n if (this.utils.isArray(value) && this.node.checked) {\n value.push(this.node.value);\n } else if (this.utils.isArray(value) && !this.node.checked) {\n var index = value.indexOf(this.node.value);\n value.splice(index, 1);\n } else {\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.checked\n }));\n }\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n var value = this.expression.execute(scope);\n if (this.utils.isArray(value)) {\n this.node.checked = value.indexOf(this.node.value) > -1;\n } else {\n this.node.checked = value;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/checkbox.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n /*istanbul ignore next*/var _this = this;\n\n this.target = this.node.$target;\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.bindProp = this.decorates[0];\n if (!this.target) {\n throw new Error( /*istanbul ignore next*/'Directive `model:' + this.bindProp + '` cannot be used on `' + this.node.tagName + '`');\n }\n this.watcher = this.target.$watch(this.bindProp, function (value) {\n if ( /*istanbul ignore next*/_this.utils.isNull( /*istanbul ignore next*/_this.scope)) return;\n /*istanbul ignore next*/_this.backExpr.execute(new Scope( /*istanbul ignore next*/_this.scope, {\n _value_: value\n }));\n });\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.target.$unWatch(this.watcher);\n },\n\n update: function /*istanbul ignore next*/update(value) {\n this.target[this.bindProp] = value;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/prop.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n execute: function /*istanbul ignore next*/execute(scope) {\n /*istanbul ignore next*/var _this = this;\n\n var state = this.expression.execute(scope);\n setTimeout(function () {\n if (state) /*istanbul ignore next*/_this.node.focus();else /*istanbul ignore next*/_this.node.blur();\n }, 0);\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/focus.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\n/**\n * 通用的 attribute 指令\n * 用于所有 attribute 的处理\n * 例如:\n *
    \n *
    \n */\nmodule.exports = new Directive({\n level: Directive.LA,\n prefix: false,\n literal: true,\n remove: false,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.computedName = this.attribute.name;\n this.computedValue = this.attribute.value;\n this.nameExpr = new this.Expression(this.attribute.name, true);\n this.valueExpr = new this.Expression(this.attribute.value, true);\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var target = this.node.$target || this.node;\n var newComputedName = this.nameExpr.execute(scope);\n if (this.computedName !== newComputedName) {\n //移除旧名称\n if (target.removeAttribute) {\n target.removeAttribute(this.computedName);\n }\n //设置新名称\n this.computedName = newComputedName;\n if (!this.utils.isNull(this.computedName) && this.computedName.length > 0) {\n if (target.setAttribute) {\n target.setAttribute(this.computedName, this.computedValue || '');\n }\n }\n }\n var newComputeValue = this.valueExpr.execute(scope);\n if (this.computedValue !== newComputeValue) {\n this.computedValue = newComputeValue;\n if (target.setAttribute) {\n target.setAttribute(this.computedName, this.computedValue || '');\n } else {\n target[this.computedName] = this.computedValue;\n }\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/attribute.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar Observer = require('../observer');\nvar EventEmitter = require('../events');\nvar Compiler = require('./compiler');\n\n/**\n * 模板类\n * 可能通过 element 作为参数,创建一个模板实例\n */\nvar Template = new Class({\n\n $extends: EventEmitter,\n\n /**\n * 构建一个模板板实例\n * @param {HTMLNode} element HTML 元素\n * @param {Object} options 选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(element, options) {\n options = options || {};\n EventEmitter.call(this);\n this.options = options;\n this.element = element;\n this.compiler = options.compiler || new Compiler(options);\n this.render = this.compiler.compile(this.element);\n this.update = this.update.bind(this);\n this._update = this._update.bind(this);\n this._updateTimer = 0;\n },\n\n /**\n * 更新当前模板 (会过滤不必要的更新)\n * @returns {void} 无返回\n */\n update: function /*istanbul ignore next*/update() {\n if (this._updateTimer) {\n clearTimeout(this._updateTimer);\n this._updateTimer = null;\n }\n this._updateTimer = setTimeout(this._update, 0);\n },\n\n /**\n * 更新当前模板内部方法 \n * @returns {void} 无返回\n */\n _update: function /*istanbul ignore next*/_update() {\n if (!this._updateTimer || !this.observer) return;\n this.emit('update', this);\n this.render(this.observer.target);\n this._onBind();\n },\n\n /**\n * 在绑定成功时\n * @returns {void} 无返回\n */\n _onBind: function /*istanbul ignore next*/_onBind() {\n if (this._bound) return;\n this._bound = true;\n this.emit('bind', this);\n },\n\n /**\n * 将模板绑定到一个 scope\n * @param {Object} scope 绑定的上下文对象\n * @param {boolean} disableFirst 是否禁用第一次的自动渲染\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind(scope, disableFirst) {\n if (!scope) return;\n this.unbind();\n this.observer = new Observer(scope, {\n root: this.options.root\n });\n scope.$self = scope;\n this.observer.on('change', this.update);\n if (disableFirst) {\n this._onBind();\n } else {\n this.update();\n }\n },\n\n /**\n * 解绑定\n * @returns {void} 无返回\n */\n unbind: function /*istanbul ignore next*/unbind() {\n if (!this.observer) return;\n this.observer.removeListener('change', this.update);\n this.observer.clearReference();\n this.observer = null;\n },\n\n /**\n * 释放\n * @returns {void} 无返回\n */\n dispose: function /*istanbul ignore next*/dispose() {\n this.unbind();\n this.render.dispose();\n }\n\n});\n\nmodule.exports = Template;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/template.js","/*istanbul ignore next*/'use strict';\n\nvar Component = require('./component');\nvar components = require('./components');\nvar directives = require('../template').directives;\n\nComponent.components = components;\nComponent.Component = Component;\n\nComponent.component = function (name, component) {\n if (!component) return components[name];\n components[name] = component;\n};\n\nComponent.directive = function (name, directive) {\n if (!directive) return directives[name];\n directives[name] = directive;\n};\n\nmodule.exports = Component;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/index.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar Template = require('../template');\nvar Watcher = require('../watcher');\nvar utils = require('ntils');\nvar EventEmitter = require('../events');\nvar Observer = require('../observer');\nvar ComponentDirective = require('./component-directive');\n\n/**\n * 组件类\n * 用于定义一个新的组件\n * @param {Object} classOpts 类选项\n * @returns {Component} 组件类\n */\nfunction Component(classOpts) {\n\n //处理组件选项\n classOpts = classOpts || {};\n\n //处理「继承」,目前的机制,只能用「合并类选项」\n var mixes = classOpts.mixes;\n delete classOpts.mixes;\n if (mixes && !utils.isArray(mixes)) {\n mixes = [mixes];\n } else {\n mixes = [];\n }\n var extendComponent = classOpts.extend || Component;\n delete classOpts.extend;\n //extend 会覆盖 mixes 中的同名成员\n mixes.push(extendComponent);\n //classOpts 会覆盖 extend 或 mixes 中的同名成员\n mixes.push(classOpts);\n var mixedClassOpts = {};\n mixes.forEach(function (mixItem) {\n if (mixItem instanceof Component || mixItem == Component) {\n mixItem = mixItem.$options || {};\n }\n utils.mix(mixedClassOpts, mixItem);\n });\n classOpts = mixedClassOpts;\n\n /**\n * 定义组件类\n * 可以通过 new ComponentClass() 创建组件实例\n */\n var ComponentClass = new Class({\n $extends: extendComponent,\n\n /**\n * 组件类构造函数\n * @param {object} instanceOpts 实例选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(instanceOpts) {\n /*istanbul ignore next*/var _this = this;\n\n if (this == window) return new this.$class(instanceOpts);\n EventEmitter.call(this);\n instanceOpts = instanceOpts || {};\n //创建组件实例时可以给实例添加成员\n utils.each(instanceOpts, function (key, value) {\n if (key in /*istanbul ignore next*/_this) return;\n /*istanbul ignore next*/_this[key] = value;\n });\n this._onTemplateUpdate_ = this._onTemplateUpdate_.bind(this);\n this._createdData_(classOpts.data);\n this._createProperties_(classOpts.properties || classOpts.props);\n this._createWatches_(classOpts.watches || classOpts.watch);\n this.$directives = this.$directives || {};\n this._importDirectives_(classOpts.directives);\n this.$components = this.$components || {};\n this._importComponents_(require('./components'));\n this._importComponents_({\n 'self': ComponentClass\n });\n this._importComponents_(classOpts.components);\n utils.defineFreezeProp(this, '$children', []);\n if (instanceOpts.parent) this.$setParent(instanceOpts.parent);\n this.$callHook('init', [instanceOpts]);\n Observer.observe(this);\n if (classOpts.element) {\n this.$mount();\n } else {\n this.$compile();\n }\n },\n\n /**\n * 设定父组件\n * @param {Object} parent 父组件\n * @returns {void} 无返回\n */\n $setParent: function /*istanbul ignore next*/$setParent(parent) {\n if (this.$parent === parent) return;\n if (this.$parent) {\n this.$parent.$removeChild(this);\n }\n if (parent) {\n parent.$addChild(this);\n }\n },\n\n /**\n * 添加子组件\n * @param {Object} child 子组件\n * @returns {void} 无返回\n */\n $addChild: function /*istanbul ignore next*/$addChild(child) {\n if (!(child instanceof Component)) return;\n this.$children.push(child);\n utils.defineFreezeProp(child, '$parent', this);\n utils.defineFreezeProp(child, '$root', this.$root || this);\n },\n\n /**\n * 移除子组件\n * @param {Object} child 子组件\n * @returns {void} 无返回\n */\n $removeChild: function /*istanbul ignore next*/$removeChild(child) {\n var index = this.$children.indexOf(child);\n this.$children.splice(index, 1);\n utils.defineFreezeProp(child, '$parent', null);\n //utils.defineFreezeProp(child, '$root', null);\n },\n\n /**\n * 获取根组件, 为了能通过 polyfill 处理 IE8 暂不用这种方式\n */\n get $root() {\n if (this.$parent) {\n return this.$parent.$root;\n } else {\n return this;\n }\n },\n\n /**\n * 导入用到的子组件类\n * @param {Object} components 引入的组件\n * @returns {void} 无返回\n */\n _importComponents_: function /*istanbul ignore next*/_importComponents_(components) {\n utils.each(components, function (name, component) {\n if (!component) return;\n this.$components[name] = component;\n this.$directives[name] = new ComponentDirective({\n name: name,\n component: component,\n parent: this\n });\n }, this);\n },\n\n /**\n * 导入一个用到的指令\n * @param {Object} directives 引入的指令\n * @returns {void} 无返回\n */\n _importDirectives_: function /*istanbul ignore next*/_importDirectives_(directives) {\n utils.each(directives, function (name, directive) {\n if (!directive) return;\n this.$directives[name] = directive;\n }, this);\n },\n\n /**\n * 调用生命周期 hook\n * @param {string} name 调用的 hook 名称\n * @param {Array} args 调用 hook 的参数列表\n * @returns {void} 无反回\n */\n $callHook: function /*istanbul ignore next*/$callHook(name, args) {\n var hook = this[/*istanbul ignore next*/'on' + utils.firstUpper(name)];\n if (!utils.isFunction(hook)) return;\n hook.apply(this, args || []);\n this.$emit( /*istanbul ignore next*/'$' + name, args);\n },\n\n /**\n * 创建数据对象\n * @param {Object} data 组件数据对象\n * @returns {void} 无返回\n */\n _createdData_: function /*istanbul ignore next*/_createdData_(data) {\n if (utils.isFunction(data)) {\n this.$data = data.call(this);\n } else {\n this.$data = data || {};\n }\n utils.each(this.$data, function (name) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n get: function /*istanbul ignore next*/get() {\n if (!this.$data) return;\n return this.$data[name];\n },\n set: function /*istanbul ignore next*/set(value) {\n if (!this.$data) return;\n this.$data[name] = value;\n }\n });\n }, this);\n },\n\n /**\n * 创建组件属性\n * @param {Object} properties 属性定义对象\n * @returns {void} 无返回\n */\n _createProperties_: function /*istanbul ignore next*/_createProperties_(properties) {\n this.$properties = {};\n utils.each(properties, function (name, descriptor) {\n if (utils.isFunction(descriptor)) {\n //get 简化写法\n descriptor = {\n get: descriptor\n };\n } else if (!utils.isObject(descriptor)) {\n //基本类型\n descriptor = {\n value: descriptor\n };\n } else {\n //通过 descriptor 定义 get/set/value\n //不能直接用 descriptor,\n //因为为会导到多个组件实例间的影响\n descriptor = utils.copy(descriptor);\n }\n //如果 get/set 都没有,则自动生成\n var hasGetterOrSetter = !!descriptor.get || !!descriptor.set;\n if (!hasGetterOrSetter) {\n descriptor.get = function () {\n return descriptor.value;\n };\n descriptor.set = function (value) {\n descriptor.value = value;\n };\n }\n //定义为属性\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n get: function /*istanbul ignore next*/get() {\n if (!descriptor.get) {\n throw new Error('Property `' + name + '` cannot be read');\n }\n return descriptor.get.call(this);\n },\n set: function /*istanbul ignore next*/set(value) {\n if (!descriptor.set) {\n throw new Error('Property `' + name + '` cannot be written');\n }\n if (descriptor.test && !descriptor.test(value)) {\n throw new Error('Invalid value `' + value + '` for property `' + name + '`');\n }\n descriptor.set.call(this, value);\n if (this._observer_) {\n this._observer_.emitChange({\n path: name,\n value: value\n });\n }\n }\n });\n this.$properties[name] = descriptor;\n }, this);\n },\n\n /**\n * 创建监控\n * 为什么用 watches 而不是 watchers 或其它?\n * 因为,这里仅是「监控配置」并且是「复数」\n * @param {Object} watches 监控定义对象\n * @returns {void} 无返回\n */\n _createWatches_: function /*istanbul ignore next*/_createWatches_(watches) {\n this._watchers_ = this._watchers_ || [];\n utils.each(watches, function (name, handler) {\n this.$watch(name, handler);\n }, this);\n },\n\n /**\n * 在模板发生更新时\n * @returns {void} 无返回\n */\n _onTemplateUpdate_: function /*istanbul ignore next*/_onTemplateUpdate_() {\n this._watchers_.forEach(function (watcher) {\n watcher.calc();\n }, this);\n },\n\n /**\n * 添加一个监控\n * @param {string|function} path 计算函数或路径\n * @param {function} handler 处理函数\n * @returns {void} 无返回\n */\n $watch: function /*istanbul ignore next*/$watch(path, handler) {\n if (!utils.isFunction(handler)) return;\n var calcer = path;\n if (!utils.isFunction(path)) {\n calcer = function /*istanbul ignore next*/calcer() {\n return utils.getByPath(this, path);\n };\n }\n var watcher = new Watcher(calcer.bind(this), handler.bind(this));\n this._watchers_.push(watcher);\n return watcher;\n },\n\n /**\n * 取消一个 watcher 对象\n * @param {object} watcher 监控对象实例\n * @returns {void} 无返回\n */\n $unWatch: function /*istanbul ignore next*/$unWatch(watcher) {\n var index = this._watchers_.findIndex(function (w) /*istanbul ignore next*/{\n return w === watcher;\n });\n this._watchers_.splice(index, 1);\n },\n\n /**\n * 创建元素\n * @returns {void} 无返回\n */\n _createElement_: function /*istanbul ignore next*/_createElement_() {\n if (this._created_) return;\n this._created_ = true;\n this.$callHook('create');\n utils.defineFreezeProp(this, '$element', this.element || ComponentClass.$template.cloneNode(true));\n if (!this.$element || this.$element.nodeName === '#text') {\n throw new Error('Invalid component template');\n }\n this.$callHook('created');\n },\n\n /**\n * 编译自身模板并完成绑定\n * @returns {void} 无返回\n */\n $compile: function /*istanbul ignore next*/$compile() {\n if (this._compiled_) return;\n this._compiled_ = true;\n this._createElement_();\n utils.defineFreezeProp(this, '_template_', new Template(this.$element, {\n directives: this.$directives,\n root: true\n }));\n this._template_.bind(this);\n this._template_.on('update', this._onTemplateUpdate_);\n this._template_.on('bind', function () {\n if (!this.deferReady) this.$callHook('ready');\n }.bind(this));\n },\n\n /**\n * 向 DOM tree 中挂截组件\n * @param {HTMLNode} mountNode 挂载点元素\n * @param {append} append 是否 append 到挂载元素内\n * @returns {void} 无返回 \n */\n $mount: function /*istanbul ignore next*/$mount(mountNode, append) {\n if (this._mounted_) return;\n this.$compile();\n this.$callHook('mount');\n if (mountNode) {\n mountNode.$substitute = this.$element;\n this.$element._mountNode = mountNode;\n if (append) {\n mountNode.appendChild(this.$element);\n } else if (mountNode.parentNode) {\n mountNode.parentNode.insertBefore(this.$element, mountNode);\n }\n }\n this._mounted_ = true;\n this._removed_ = false;\n this.$callHook('mounted');\n },\n\n /**\n * 将组件添加到指定容器元素内\n * @param {HTMLNode} node 容器元素\n * @returns {void} 无返回 \n */\n $appendTo: function /*istanbul ignore next*/$appendTo(node) {\n this.$mount(node, true);\n },\n\n /**\n * 移除组件\n * @returns {void} 无返回\n */\n $remove: function /*istanbul ignore next*/$remove() {\n if (this._removed_ || !this._mounted_) return;\n this.$callHook('remove');\n if (this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n this._removed_ = true;\n this._mounted_ = false;\n this.$callHook('removed');\n },\n\n /**\n * 触发自身的一个事件并向上冒泡\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @returns {void} 无返回\n */\n $dispatch: function /*istanbul ignore next*/$dispatch(name, data) {\n var stopPropagation = this.$emit(name, data);\n if (!stopPropagation && this.$parent) {\n this.$parent.$dispatch(name, data);\n }\n },\n\n /**\n * 触发自身的一个事件并向下广播\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @returns {void} 无返回\n */\n $broadcast: function /*istanbul ignore next*/$broadcast(name, data) {\n var stopPropagation = this.$emit(name, data);\n if (!stopPropagation && this.$children && this.$children.length > 0) {\n this.$children.forEach(function (child) {\n child.$broadcast(name, data);\n }, this);\n }\n },\n\n /**\n * 释放组件\n * @returns {void} 无返回\n */\n $dispose: function /*istanbul ignore next*/$dispose() {\n this.$remove();\n this._emitter_.off();\n this.$children.forEach(function (child) {\n child.$dispose();\n }, this);\n if (this.$parent) {\n var index = this.$parent.$children.indexOf(this);\n this.$parent.$children.splice(index, 1);\n }\n this.$callHook('dispose');\n if (this._compiled_) {\n this._template_.unbind();\n }\n this.$callHook('disposed');\n for (var key in this) {\n delete this[key];\n }\n ['_observer_', '$element', '$children', '$parent', '_template_'].forEach(function (key) {\n delete this[key];\n }, this);\n utils.setPrototypeOf(this, null);\n }\n\n });\n\n //保存类选项\n ComponentClass.$options = classOpts;\n ComponentClass.$template = utils.parseDom(classOpts.template);\n\n //向 ComponentClass.prototype 上拷贝成员\n utils.copy(classOpts, ComponentClass.prototype);\n utils.copy(classOpts.methods, ComponentClass.prototype);\n\n //使 ComponentClass instanceof Component === true \n //IE9/10 下为 false,并且动态为 Component.prototype 添加的成员不会在 ComponentClass 上生效\n utils.setPrototypeOf(ComponentClass, Component.prototype);\n\n return ComponentClass;\n}\n\n//继承自 EventEmitter\nComponent.prototype = utils.create(EventEmitter.prototype);\n\n//组件扩展方法,简单封装 extends\nComponent.extend = function (classOpts) {\n return new Component(classOpts);\n};\n\n//定义扩展方法\nComponent.prototype.extend = function (classOpts) {\n classOpts = classOpts || {};\n classOpts.extend = this;\n return new Component(classOpts);\n};\n\n//创建实例的方法\nComponent.prototype.create = function (instanceOpts) {\n return new this(instanceOpts);\n};\n\n//针对包括 element 组件类的启动方法\nComponent.prototype.start = function (instanceOpts) {\n if (!this.$options || !this.$options.element) {\n throw new Error('Start method cannot be called');\n }\n return this.create(instanceOpts);\n};\n\nmodule.exports = Component;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/component.js","/*istanbul ignore next*/'use strict';\n\nvar Template = require('../template');\nvar Directive = Template.Directive;\n\n/**\n * 创建一个组件指令\n * @param {object} options 选项\n * @returns {object} 组件指令\n */\nfunction ComponentDirective(options) {\n\n return new Directive({\n type: Directive.TE,\n literal: true,\n final: true,\n level: Directive.LE,\n\n bind: function /*istanbul ignore next*/bind() {\n this.component = new options.component({\n deferReady: true,\n parent: options.parent || this.scope\n });\n this.handleAttrs();\n this.node.$target = this.component;\n this.handler = this.compiler.compile(this.node, {\n element: false,\n children: false\n });\n this.handleContents();\n this.component.$mount(this.node);\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n },\n\n handleAttrs: function /*istanbul ignore next*/handleAttrs() {\n this.attrs = [].slice.call(this.node.attributes);\n var directiveRegexp = new RegExp('^' + this.prefix + ':', 'i');\n this.attrs.forEach(function (attr) {\n if (directiveRegexp.test(attr.name)) return;\n if (attr.name in this.component.$properties) return;\n this.component.$element.setAttribute(attr.name, attr.value);\n this.node.removeAttribute(attr.name);\n }, this);\n },\n\n handleContents: function /*istanbul ignore next*/handleContents() {\n this.placeHandlers = [];\n var places = [].slice.call(this.component.$element.querySelectorAll('[' + this.prefix + '\\\\:content]'));\n places.forEach(function (place) {\n //将内容插入到指定的「位置」\n var contents = null;\n var selector = place.getAttribute(this.prefix + ':content');\n if (!selector) {\n contents = [].slice.call(this.node.childNodes);\n } else {\n contents = [].slice.call(this.node.querySelectorAll(selector));\n }\n if (!contents || contents.length < 1) return;\n place.innerHTML = '';\n contents.forEach(function (content) {\n place.appendChild(content.cloneNode(true));\n }, this);\n //编译插入后的子「内容模板」\n var handler = this.compiler.compile(place);\n this.placeHandlers.push(handler);\n }, this);\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.handler(scope);\n if (!this._ready_) {\n this._ready_ = true;\n this.component.$callHook('ready');\n }\n this.placeHandlers.forEach(function (handler) {\n handler(scope);\n }, this);\n }\n\n });\n}\n\nmodule.exports = ComponentDirective;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/component-directive.js","/*istanbul ignore next*/'use strict';\n\nmodule.exports = {\n View: require('./view')\n};\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/components/index.js","/*istanbul ignore next*/'use strict';\n\nvar Component = require('../component');\nvar utils = require('ntils');\n\n/**\n * 内置视图组件\n * 可以加载并显示其它组件,并可以指定「转场效果」\n */\nvar View = new Component({\n\n template: '
    ',\n\n properties: {\n\n /**\n * 显示到视图中的组件\n */\n component: {\n test: function /*istanbul ignore next*/test(value) {\n if (!value) return false;\n return value instanceof Component || utils.isString(value);\n },\n set: function /*istanbul ignore next*/set(component) {\n if (this._transitioning) return;\n this._transitioning = true;\n //如果 value 是字符串则尝试从 $parent.components 中获取组件类 \n if (utils.isString(component)) {\n if (this.$parent && this.$parent.$components) {\n this.component = this.$parent.$components[component];\n } else {\n this.component = null;\n }\n return;\n }\n //声明新旧组件变量\n var newComponentInstance = null;\n var oldComponentInstance = this.componentInstance;\n //创建新组件实例\n if (utils.isFunction(component)) {\n newComponentInstance = new component({\n parent: this\n });\n } else {\n component.$setParent(this);\n newComponentInstance = component;\n }\n //通过转场控制器进行转场准备\n this.transition.prep(newComponentInstance, oldComponentInstance);\n //挂载新组件实例\n newComponentInstance.$appendTo(this.$element);\n //通过转场控制器进行转场\n this.transition.go(newComponentInstance, oldComponentInstance, function () {\n //触发相关事件\n this.$emit('enter', newComponentInstance);\n this.$emit('leave', oldComponentInstance);\n //销毁旧组件实例\n if (oldComponentInstance) {\n oldComponentInstance.$dispose();\n }\n this._transitioning = false;\n }.bind(this));\n //暂存当前组件实例\n this.componentInstance = newComponentInstance;\n },\n get: function /*istanbul ignore next*/get() {\n return this._Component;\n }\n },\n\n /**\n * 视图的转场控制对象\n */\n transition: {\n get: function /*istanbul ignore next*/get() {\n return this._transition || View.transition;\n },\n set: function /*istanbul ignore next*/set(transition) {\n if (this._transitioning) return;\n if (!transition || utils.isFunction(transition.prep) && utils.isFunction(transition.go)) {\n if (this._transition && utils.isFunction(this._transition.clean)) {\n this._transition.clean(this);\n }\n if (transition && utils.isFunction(transition.init)) {\n transition.init(this);\n }\n this._transition = transition;\n } else {\n throw new Error('Invalid transition');\n }\n }\n }\n },\n\n /**\n * 切换到指定的组件\n * @param {Component} component 组件\n * @param {transition} transition 转场控制组件\n * @returns {void} 无返回\n */\n switchTo: function /*istanbul ignore next*/switchTo(component, transition) {\n if (transition) {\n this.transition = transition;\n }\n this.component = component;\n }\n\n});\n\n/**\n * 默认转场设置\n */\nView.transition = {\n //init: function () { },\n //clean: function () { },\n\n /**\n * 转场开始前的准备\n * @param {Component} newComponent 新组件\n * @param {Component} oldComponent 旧组件\n * @returns {void} 无返回\n */\n prep: function /*istanbul ignore next*/prep(newComponent, oldComponent) {\n if (oldComponent) oldComponent.$element.style.display = 'none';\n },\n\n /**\n * 执行转场动画\n * @param {Component} newComponent 新组件\n * @param {Component} oldComponent 旧组件\n * @param {Function} done 完成后的回调\n * @returns {void} 无返回\n */\n go: function /*istanbul ignore next*/go(newComponent, oldComponent, done) {\n done();\n }\n};\n\nmodule.exports = View;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/components/view.js","const mokit = require('mokit');\nconst items = require('./items');\n\nrequire('./index.less');\n\nconst Toolbar = new mokit.Component({\n template: require('./index.html'),\n props: {\n mditor: null\n },\n\n data() {\n return {\n items: items.slice(0)\n };\n },\n\n onReady() {\n this.bindCommands();\n },\n\n watch: {\n items() {\n this.bindCommands();\n }\n },\n\n bindCommands() {\n if (!this.mditor) return;\n this.items.forEach(item => {\n this.mditor.removeCommand(item.name);\n this.mditor.addCommand(item);\n });\n },\n\n isActive(item) {\n return this.mditor && item.state && this.mditor[item.state];\n },\n\n exec(name, event) {\n event.preventDefault();\n this.mditor.execCommand(name, event);\n },\n\n getItem(name) {\n return this.items.find(item => item.name === name);\n },\n\n removeItem(name) {\n let index = this.items.findIndex(item => item.name === name);\n return this.items.splice(index, 1);\n },\n\n addItem(item) {\n this.items.push(item);\n },\n\n replaceItem(name, newItem) {\n let index = this.items.findIndex(item => item.name === name);\n let oldItem = this.items.splice(index, 1);\n this.items.splice(index, 0, newItem);\n return oldItem;\n }\n\n});\n\nmodule.exports = Toolbar;\n\n\n// WEBPACK FOOTER //\n// ./src/toolbar/index.js","module.exports = [{\n name: 'bold',\n title: '粗体',\n key: 'shift+alt+b',\n handler() {\n this.editor.wrapSelectText('**', '**');\n }\n}, {\n name: 'italic',\n title: '斜体',\n key: 'shift+alt+i',\n handler() {\n this.editor.wrapSelectText('*', '*');\n }\n}, {\n name: 'underline',\n title: '下划线',\n key: 'shift+alt+e',\n handler() {\n this.editor.wrapSelectText('', '');\n }\n}, {\n name: 'strikethrough',\n title: '删除线',\n key: 'shift+alt+d',\n handler() {\n this.editor.wrapSelectText('~~', '~~');\n }\n}, {\n name: 'header',\n title: '标题',\n key: 'shift+alt+1',\n handler() {\n this.editor.wrapSelectText('# ');\n }\n}, {\n name: 'quote',\n icon: 'quote-left',\n title: '引用',\n key: 'shift+alt+q',\n handler() {\n let selectText = this.editor.getSelectText();\n if (selectText.length < 1) {\n this.editor.wrapSelectText('> ');\n return;\n }\n let textArray = selectText.split(this.EOL);\n let buffer = [];\n textArray.forEach(function (line) {\n buffer.push('> ' + line + ' ');\n });\n this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n }\n}, {\n name: 'code',\n title: '代码',\n key: 'shift+alt+c',\n handler() {\n let lang = 'js' + this.EOL;\n let before = '```' + lang;\n let after = '``` ' + this.EOL;\n let text = this.editor.getSelectText().trim();\n if (text.length > 0) {\n text += this.EOL;\n }\n this.editor.setSelectText(text);\n this.editor.wrapSelectText(before, after);\n let range = this.editor.getSelectRange();\n let start = range.start - lang.length;\n let end = range.start - this.EOL.length;\n this.editor.setSelectRange(start, end);\n }\n}, {\n name: 'list-ol',\n title: '有序列表',\n key: 'shift+alt+o',\n handler() {\n let selectText = this.editor.getSelectText();\n if (selectText.length < 1) {\n this.editor.wrapSelectText('1. ');\n return;\n }\n let textArray = selectText.split(this.EOL);\n let buffer = [];\n for (let i = 0; i < textArray.length; i++) {\n let line = textArray[i];\n buffer.push((i + 1) + '. ' + line);\n }\n this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n }\n}, {\n name: 'list-ul',\n title: '无序列表',\n key: 'shift+alt+u',\n handler() {\n let selectText = this.editor.getSelectText();\n if (selectText.length < 1) {\n this.editor.wrapSelectText('- ');\n return;\n }\n let textArray = selectText.split(this.EOL);\n let buffer = [];\n textArray.forEach(function (line) {\n buffer.push('- ' + line);\n });\n this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n }\n}, {\n name: 'link',\n title: '链接',\n key: 'shift+alt+l',\n handler() {\n let text = this.editor.getSelectText();\n if (!text || /^(https:|http:|ftp:|file:|mailto:|\\/|\\.)/i.test(text)) {\n this.editor.wrapSelectText('[link](', ')');\n if (!text) return;\n let range = this.editor.getSelectRange();\n let start = range.start - 6;\n this.editor.setSelectRange(start, start + 4);\n } else {\n this.editor.wrapSelectText('[', ']()');\n let range = this.editor.getSelectRange();\n let index = range.end + 2;\n this.editor.setSelectRange(index, index);\n }\n }\n}, {\n name: 'table',\n title: '表格',\n key: 'shift+alt+t',\n handler() {\n let buffer = [\n 'column1 | column2 | column3 ',\n '------- | ------- | ------- ',\n 'column1 | column2 | column3 ',\n 'column1 | column2 | column3 ',\n 'column1 | column2 | column3 '\n ];\n this.editor.wrapSelectText(buffer.join(this.EOL) + this.EOL);\n }\n}, {\n name: 'line',\n title: '分隔线',\n icon: 'minus',\n key: 'shift+alt+h',\n handler() {\n this.editor.wrapSelectText('----' + this.EOL);\n }\n}, {\n name: 'image',\n title: '图片',\n key: 'shift+alt+p',\n handler() {\n this.editor.wrapSelectText('![alt](', ')');\n }\n}, {\n name: 'help',\n title: '帮助',\n icon: 'question',\n key: 'shift+alt+/',\n handler() {\n window.open('http://mditor.com', '_blank');\n }\n}, {\n name: 'toggleFullScreen',\n title: '全屏',\n icon: 'arrows-alt',\n key: 'shift+alt+f',\n control: true,\n state: 'fullscreen',\n owner: function (mditor) {\n return mditor.$element;\n },\n handler() {\n this.fullscreen = !this.fullscreen;\n }\n}, {\n name: 'togglePreview',\n title: '预览',\n icon: 'desktop',\n key: 'shift+alt+v',\n control: true,\n state: 'preview',\n owner: function (mditor) {\n return mditor.$element;\n },\n handler() {\n this.preview = !this.preview;\n if (this.preview) {\n this._split = this.split;\n this.split = false;\n } else {\n this.split = this._split;\n }\n }\n}, {\n name: 'toggleSplit',\n title: '分屏',\n icon: 'columns',\n key: 'shift+alt+s',\n control: true,\n state: 'split',\n owner: function (mditor) {\n return mditor.$element;\n },\n handler() {\n this.split = !this.split;\n if (this.split) {\n this.preview = false;\n }\n }\n}];\n\n\n// WEBPACK FOOTER //\n// ./src/toolbar/items.js","module.exports = \"
      \\n \\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar/index.html\n// module id = 88\n// module chunks = 0","const mokit = require('mokit');\nconst EventEmitter = mokit.EventEmitter;\nconst utils = require('ntils');\nconst Stack = require('./stack');\nconst commands = require('./commands');\n\nrequire('./index.less');\n\nconst ua = window.navigator.userAgent.toLowerCase();\nconst isIE = !!ua.match(/msie|trident\\/7|edge/);\n//const isWinPhone = ua.indexOf('windows phone') !== -1;\n//const isIOS = !isWinPhone && !!ua.match(/ipad|iphone|ipod/);\n\nmodule.exports = new mokit.Component({\n template: require('./index.html'),\n\n props: {\n mditor: null,\n value: null,\n markExp: null\n },\n\n onReady() {\n this.stack = new Stack();\n setTimeout(() => {\n this.textareaEmitter = new EventEmitter(this.textarea);\n this.stack.init({\n value: this.getValue()\n });\n }, 300);\n this._bindCommands();\n },\n\n _bindCommands() {\n commands.forEach(item => {\n this.mditor.removeCommand(item.name);\n this.mditor.addCommand(item);\n });\n },\n\n onCompositionStart() {\n this._compositionLock = true;\n },\n onCompositionEnd() {\n this._compositionLock = false;\n setTimeout(() => this.onInput(), 300);\n /**\n * 在输入中文时,输入法「候选词面板」位置会发生定位错误\n * 经过反复尝试发现了「规律」,第一次「侯选词」上屏后才会位置错误\n * 在「候选词」上屏后让输入框「失去焦点再获取焦点」可「规避」这个 Bug\n * 附上相关 issues\n * https://github.com/electron/electron/issues/8894\n * https://github.com/electron/electron/issues/4539\n */\n // this.textarea.blur();\n // this.textarea.focus();\n },\n onInput() {\n this.$emit('input');\n if (this._changedTimer) {\n clearTimeout(this._changedTimer);\n this._changedTimer = null;\n }\n if (this._compositionLock) return;\n this._changedTimer = setTimeout(() => {\n if (!this._changedTimer) return;\n this.stack.push({\n value: this.getValue(),\n range: this.getSelectRange()\n });\n this.$emit('changed');\n }, 300);\n },\n\n undo() {\n let last = this.stack.last();\n let item = this.stack.undo();\n if (utils.isNull(item) || utils.isNull(item.value)) return;\n let valGap = last.value.length - item.value.length;\n this.value = item.value;\n if (last.range) {\n setTimeout(() => {\n let start = last.range.start - valGap;\n let end = last.range.end - valGap;\n this.setSelectRange(start, end);\n });\n }\n },\n\n redo() {\n let item = this.stack.redo();\n if (utils.isNull(item) || utils.isNull(item.value)) return;\n this.value = item.value;\n if (item.range) {\n setTimeout(() => {\n this.setSelectRange(item.range.start, item.range.end);\n });\n }\n },\n\n onPaste(event) {\n this.$emit('paste', event);\n },\n\n onDragover(event) {\n event.preventDefault();\n this.$emit('dragover', event);\n },\n\n onDrop(event) {\n event.preventDefault();\n this.$emit('drop', event);\n },\n\n focus() {\n this.textarea.focus();\n },\n\n blur() {\n this.textarea.blur();\n },\n\n onScroll(event) {\n this.syncScroll();\n this.$emit('scroll', event);\n },\n\n syncScroll(disTwice) {\n this.marks.scrollTop = this.textarea.scrollTop;\n this.marks.scrollLeft = this.textarea.scrollLeft;\n if (disTwice) return;\n setTimeout(() => {\n this.syncScroll(true);\n }, 0);\n },\n\n applyMarks(text) {\n if (!text || !this.markExp) return;\n text = text\n .replace(/\\n$/g, '\\n\\n')\n .replace(this.markExp, '$&');\n if (isIE) {\n // IE wraps whitespace differently in a div vs textarea, this fixes it\n text = text.replace(/ /g, ' ');\n }\n return text;\n },\n\n activeMark(index) {\n let marks = [].slice.call(this.marks.querySelectorAll('mark'));\n if (marks.length < 1) return;\n this.activeMarkIndex = utils.isNull(this.activeMarkIndex) ?\n -1 : this.activeMarkIndex;\n if (utils.isNull(index)) {\n this.activeMarkIndex++;\n } else {\n this.activeMarkIndex = index;\n }\n if (this.activeMarkIndex >= marks.length) {\n this.activeMarkIndex = 0;\n }\n marks.forEach(mark => {\n mark.classList.remove('active');\n });\n let activeMark = marks[this.activeMarkIndex];\n activeMark.classList.add('active');\n this.scrollToMark(activeMark);\n },\n\n scrollToMark(mark) {\n // mark.scrollIntoView();\n // this.textarea.scrollTop = this.marks.scrollTop;\n // this.textarea.scrollTop -= 20;\n this.textarea.scrollTop = mark.offsetTop - 20;\n },\n\n getValue() {\n return this.textarea.value;\n },\n\n setValue(value) {\n this.textarea.value = value;\n },\n\n getActiveElement() {\n this.textarea.focus();\n return document.activeElement;\n },\n\n getSelectRange() {\n let box = this.getActiveElement();\n return {\n 'start': box.selectionStart,\n 'end': box.selectionEnd\n };\n },\n\n setSelectRange(start, end) {\n let box = this.getActiveElement();\n box.setSelectionRange(start, end);\n },\n\n getSelectText() {\n let box = this.getActiveElement();\n let range = this.getSelectRange();\n return box.value.substring(range.start, range.end);\n },\n\n setSelectText(text) {\n let box = this.getActiveElement();\n let range = this.getSelectRange();\n box.setRangeText(text);\n if (range.end == range.start) {\n this.setSelectRange(range.start, range.end + text.length);\n }\n this.value = this.getValue();\n this.onInput();\n setTimeout(() => {\n this.blur();\n this.focus();\n }, 0);\n },\n\n wrapSelectText(before, after) {\n before = (before !== null && before !== undefined) ? before : '';\n after = (after !== null && after !== undefined) ? after : '';\n let range = this.getSelectRange();\n let text = this.getSelectText();\n this.setSelectText(before + text + after);\n let newStart = range.start + before.length;\n let newEnd = range.end + before.length;\n this.setSelectRange(newStart, newEnd);\n },\n\n insertBeforeText(text) {\n this.wrapSelectText(text);\n },\n\n insertAfterText(text) {\n this.wrapSelectText('', text);\n },\n\n getBeforeText(length) {\n let range = this.getSelectRange();\n let end = range.start;\n let start = end - length;\n let value = this.getValue();\n return value.substring(start, end);\n },\n\n getBeforeFirstCharIndex(char) {\n let range = this.getSelectRange();\n let end = range.start;\n let start = 0;\n let value = this.getValue();\n return value.substring(start, end).lastIndexOf(char);\n },\n\n getBeforeWord() {\n let chars = [' ', '\\t', this.mditor.EOL];\n let start = 0;\n chars.forEach(char => {\n let index = this.getBeforeFirstCharIndex(char);\n if (index + char.length > start) {\n start = index + char.length;\n }\n });\n let range = this.getSelectRange();\n let value = this.getValue();\n return value.substring(start, range.end);\n },\n\n getBeforeTextInLine() {\n let start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\n let range = this.getSelectRange();\n let value = this.getValue();\n return value.substring(start, range.end);\n },\n\n selectBeforeText(length) {\n let range = this.getSelectRange();\n this.setSelectRange(range.start - length, range.end);\n },\n\n selectAfterText(length) {\n let range = this.getSelectRange();\n this.setSelectRange(range.start, range.end + length);\n },\n\n selectBeforeTextInLine() {\n let start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\n let range = this.getSelectRange();\n this.setSelectRange(start, range.end);\n },\n\n addIndent() {\n let selectText = this.getSelectText();\n if (selectText.length < 1) {\n this.insertBeforeText(this.mditor.INDENT);\n return;\n }\n let textArray = selectText.split(this.mditor.EOL);\n let buffer = [];\n let lineCount = textArray.length - 1;\n textArray.forEach((line, index) => {\n line = line.trim() !== '' ? this.mditor.INDENT + line : line;\n if (index < lineCount || line.trim() !== '') {\n buffer.push(line);\n }\n });\n this.setSelectText(buffer.join(this.mditor.EOL));\n },\n\n removeIndent() {\n let indentRegExp = new RegExp('^' + this.mditor.INDENT);\n let selectText = this.getSelectText();\n if (selectText.length < 1) {\n this.selectBeforeTextInLine();\n if (this.getSelectText().length > 0) {\n event.clearSelected = true;\n this.removeIndent();\n }\n return;\n }\n let textArray = selectText.split(this.mditor.EOL);\n let buffer = [];\n textArray.forEach(line => {\n if (indentRegExp.test(line)) {\n line = line.replace(this.mditor.INDENT, '');\n }\n buffer.push(line);\n });\n this.setSelectText(buffer.join(this.mditor.EOL));\n if (event.clearSelected) {\n let range = this.getSelectRange();\n this.setSelectRange(range.end, range.end);\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./src/editor/index.js","const Class = require('cify').Class;\nconst utils = require('ntils');\n\nconst Stack = new Class({\n constructor(item) {\n this.init(item);\n },\n init(item) {\n this.undoList = [item || {\n value: null\n }];\n this.redoList = [];\n },\n push(item) {\n if (this.last() === item) return;\n this.undoList.push(item);\n },\n last() {\n return this.undoList[this.undoList.length - 1];\n },\n undo() {\n if (this.undoList.length > 1) {\n let item = this.undoList.pop();\n if (utils.isNull(item) || utils.isNull(item.value)) return;\n this.redoList.push(item);\n }\n return this.last();\n },\n redo() {\n let item = this.redoList.pop();\n if (utils.isNull(item) || utils.isNull(item.value)) return;\n this.undoList.push(item);\n return item;\n }\n});\n\nmodule.exports = Stack;\n\n\n// WEBPACK FOOTER //\n// ./src/editor/stack.js","module.exports = [{\n name: 'undo',\n key: '{cmd}+z',\n handler() {\n this.editor.undo();\n }\n}, {\n name: 'redo',\n key: '{cmd}+shift+z',\n handler() {\n this.editor.redo();\n }\n}, {\n name: 'h2',\n key: 'shift+alt+2',\n handler() {\n this.editor.wrapSelectText('## ');\n }\n}, {\n name: 'h3',\n key: 'shift+alt+3',\n handler() {\n this.editor.wrapSelectText('### ');\n }\n}, {\n name: 'h4',\n key: 'shift+alt+4',\n handler() {\n this.editor.wrapSelectText('#### ');\n }\n}, {\n name: 'h5',\n key: 'shift+alt+5',\n handler() {\n this.editor.wrapSelectText('##### ');\n }\n}];\n\n\n// WEBPACK FOOTER //\n// ./src/editor/commands.js","module.exports = \"
    \\n
    \\n
    \\n
    \\n \\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/editor/index.html\n// module id = 93\n// module chunks = 0","const mokit = require('mokit');\n\nrequire('./index.less');\n\nconst Viewer = new mokit.Component({\n template: require('./index.html'),\n\n data() {\n return {\n html: '',\n alert: '预览区域'\n };\n },\n\n props: {\n mditor: null,\n value: {\n get() {\n return this._value;\n },\n set(value) {\n this._value = value;\n let beforeEvent = { value: this._value };\n this.$emit('beforeRender', beforeEvent);\n this.mditor.parser.parse(beforeEvent.value, (err, result) => {\n let afterEvent = { value: result || err };\n this.$emit('afterRender', afterEvent);\n this.html = afterEvent.value;\n });\n }\n }\n },\n\n onClick(event) {\n event.preventDefault();\n let tag = event.target;\n if (tag.tagName == 'A') {\n let href = tag.getAttribute('href');\n if (href) window.open(href, '_blank');\n }\n }\n\n});\n\nmodule.exports = Viewer;\n\n\n// WEBPACK FOOTER //\n// ./src/viewer/index.js","module.exports = \"
    \\n
    \\n
    \\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/viewer/index.html\n// module id = 96\n// module chunks = 0","const mokit = require('mokit');\nconst utils = require('ntils');\n\nrequire('./index.less');\n\nconst CHECK_REGEXP = /^\\/[\\s\\S]+\\/(i|g|m)*$/;\n\nconst Finder = new mokit.Component({\n template: require('./index.html'),\n props: {\n mditor: null,\n active: false,\n findWord: '',\n replaceWord: ''\n },\n onReady() {\n this.mditor.removeCommand('find');\n this.mditor.addCommand({\n name: 'find',\n key: '{cmd}+f',\n owner: this.mditor.$element,\n handler: this.show.bind(this, null)\n });\n this.mditor.removeCommand('cancel-find');\n this.mditor.addCommand({\n name: 'cancel-find',\n key: 'esc',\n owner: this.mditor.$element,\n handler: this.hide.bind(this)\n });\n },\n hide() {\n this.findWord = '';\n this.replaceWord = '';\n this.mditor.editor.markExp = null;\n this.active = false;\n },\n show(text) {\n this.active = true;\n this.findWord = text || this.mditor.editor.getSelectText();\n if (this.active) {\n setTimeout(() => {\n this.findBox.focus();\n }, 200);\n }\n this.mditor.editor.syncScroll();\n },\n watch: {\n findWord() {\n if (!this.mditor || !this.mditor.editor) return;\n if (!this.findWord) {\n this.mditor.editor.markExp = null;\n } else {\n this.mditor.editor.markExp = this.parseRegexp(this.findWord);\n }\n setTimeout(() => {\n this.mditor.editor.activeMark(0);\n }, 100);\n }\n },\n parseRegexp(text, forceStr) {\n if (!forceStr && CHECK_REGEXP.test(text)) {\n try {\n return (new Function(`return ${text}`))();\n } catch (err) {\n return this.parseRegexp(text, true);\n }\n } else {\n return new RegExp(utils.escapeRegExp(text), 'gm');\n }\n },\n find() {\n this.mditor.editor.activeMark();\n },\n replace() {\n this.mditor.value = this.mditor.value.replace(\n this.mditor.editor.markExp,\n this.replaceWord || ''\n );\n },\n onFindEnter(event) {\n if (event.keyCode != 13) return;\n event.preventDefault();\n this.find();\n },\n onReplaceEnter(event) {\n if (event.keyCode != 13) return;\n event.preventDefault();\n this.replace();\n },\n onCompositionEnd(event) {\n event.target.blur();\n event.target.focus();\n }\n});\n\nmodule.exports = Finder;\n\n\n// WEBPACK FOOTER //\n// ./src/finder/index.js","module.exports = \"
    \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n
    \\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/finder/index.html\n// module id = 99\n// module chunks = 0","const shortcuts = require('shortcut-key');\nconst utils = require('ntils');\n\nshortcuts.filter = event => {\n return !!event.target;\n};\n\nconst Shortcut = module.exports = function (mditor) {\n utils.defineFreezeProp(this, 'mditor', mditor);\n};\n\nShortcut.prototype._inRegion = function (target, owner) {\n if (!target) return false;\n owner = owner || this.mditor.editor.$element;\n if (utils.isFunction(owner)) owner = owner(this.mditor);\n return (target === owner) || this._inRegion(target.parentNode, owner);\n};\n\nShortcut.prototype.bind = function (key, cmd, allowDefault, owner) {\n let mditor = this.mditor;\n //检查参数\n if (!key || !cmd) return;\n key = key.replace('{cmd}', mditor.CMD);\n shortcuts(key, event => {\n if (!this._inRegion(event.target, owner)) return;\n //禁用浏览器默认快捷键\n if (!allowDefault) {\n event.preventDefault();\n }\n if (cmd instanceof Function) {\n cmd.call(mditor, event);\n } else {\n mditor.execCommand(cmd, event);\n }\n setTimeout(() => {\n mditor.focus();\n }, 0);\n });\n};\n\nShortcut.prototype.unbind = function (key) {\n shortcuts.unbind(key);\n};\n\n\n// WEBPACK FOOTER //\n// ./src/client/shortcut.js","(function (global) {\n var k,\n _handlers = {},\n _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false\n },\n _scope = 'all',\n // modifier keys\n _MODIFIERS = {\n '⇧': 16,\n shift: 16,\n '⌥': 18,\n alt: 18,\n option: 18,\n '⌃': 17,\n ctrl: 17,\n control: 17,\n '⌘': 91,\n command: 91\n },\n // special keys\n _MAP = {\n backspace: 8,\n tab: 9,\n clear: 12,\n enter: 13,\n 'return': 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n 'delete': 46,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': 189,\n '=': 187,\n ';': 186,\n '\\'': 222,\n '[': 219,\n ']': 221,\n '\\\\': 220\n },\n code = function (x) {\n return _MAP[x] || x.toUpperCase().charCodeAt(0);\n },\n _downKeys = [];\n\n for (k = 1; k < 20; k++) _MAP['f' + k] = 111 + k;\n\n // IE doesn't support Array#indexOf, so have a simple replacement\n function index(array, item) {\n var i = array.length;\n while (i--)\n if (array[i] === item) return i;\n return -1;\n }\n\n // for comparing mods before unassignment\n function compareArray(a1, a2) {\n if (a1.length != a2.length) return false;\n for (var i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) return false;\n }\n return true;\n }\n\n var modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey'\n };\n\n function updateModifierKey(event) {\n for (k in _mods) _mods[k] = event[modifierMap[k]];\n };\n\n // handle keydown event\n function dispatch(event) {\n var key, handler, k, i, modifiersMatch, scope;\n key = event.keyCode;\n\n if (index(_downKeys, key) == -1) {\n _downKeys.push(key);\n }\n\n // if a modifier key, set the key. property to true and return\n if (key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n if (key in _mods) {\n _mods[key] = true;\n // 'assignKey' from inside this closure is exported to window.key\n for (k in _MODIFIERS)\n if (_MODIFIERS[k] == key) assignKey[k] = true;\n return;\n }\n updateModifierKey(event);\n\n // see if we need to ignore the keypress (filter() can can be overridden)\n // by default ignore key presses if a select, textarea, or input is focused\n if (!assignKey.filter.call(this, event)) return;\n\n // abort if no potentially matching shortcuts found\n if (!(key in _handlers)) return;\n\n scope = getScope();\n\n // for each potential shortcut\n for (i = 0; i < _handlers[key].length; i++) {\n handler = _handlers[key][i];\n\n // see if it's in the current scope\n if (handler.scope == scope || handler.scope == 'all') {\n // check if modifiers match if any\n modifiersMatch = handler.mods.length > 0;\n for (k in _mods)\n if ((!_mods[k] && index(handler.mods, +k) > -1) ||\n (_mods[k] && index(handler.mods, +k) == -1)) modifiersMatch = false;\n // call the handler and stop the event if neccessary\n if ((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch) {\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();\n else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n }\n };\n\n // unset modifier keys on keyup\n function clearModifier(event) {\n var key = event.keyCode,\n k,\n i = index(_downKeys, key);\n\n // remove key from _downKeys\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n\n if (key == 93 || key == 224) key = 91;\n if (key in _mods) {\n _mods[key] = false;\n for (k in _MODIFIERS)\n if (_MODIFIERS[k] == key) assignKey[k] = false;\n }\n };\n\n function resetModifiers() {\n for (k in _mods) _mods[k] = false;\n for (k in _MODIFIERS) assignKey[k] = false;\n };\n\n // parse and assign shortcut\n function assignKey(key, scope, method) {\n var keys, mods;\n keys = getKeys(key);\n if (method === undefined) {\n method = scope;\n scope = 'all';\n }\n\n // for each shortcut\n for (var i = 0; i < keys.length; i++) {\n // set modifier keys if any\n mods = [];\n key = keys[i].split('+');\n if (key.length > 1) {\n mods = getMods(key);\n key = [key[key.length - 1]];\n }\n // convert to keycode and...\n key = key[0]\n key = code(key);\n // ...store handler\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({\n shortcut: keys[i],\n scope: scope,\n method: method,\n key: keys[i],\n mods: mods\n });\n }\n };\n\n // unbind all handlers for given key in current scope\n function unbindKey(key, scope) {\n var multipleKeys, keys,\n mods = [],\n i, j, obj;\n\n multipleKeys = getKeys(key);\n\n for (j = 0; j < multipleKeys.length; j++) {\n keys = multipleKeys[j].split('+');\n\n if (keys.length > 1) {\n mods = getMods(keys);\n key = keys[keys.length - 1];\n }\n\n key = code(key);\n\n if (scope === undefined) {\n scope = getScope();\n }\n if (!_handlers[key]) {\n return;\n }\n for (i in _handlers[key]) {\n obj = _handlers[key][i];\n // only clear handlers if correct scope and mods match\n if (obj.scope === scope && compareArray(obj.mods, mods)) {\n _handlers[key][i] = {};\n }\n }\n }\n };\n\n // Returns true if the key with code 'keyCode' is currently down\n // Converts strings into key codes.\n function isPressed(keyCode) {\n if (typeof (keyCode) == 'string') {\n keyCode = code(keyCode);\n }\n return index(_downKeys, keyCode) != -1;\n }\n\n function getPressedKeyCodes() {\n return _downKeys.slice(0);\n }\n\n function filter(event) {\n var tagName = (event.target || event.srcElement).tagName;\n // ignore keypressed in any elements that support keyboard data input\n return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n }\n\n // initialize key. to false\n for (k in _MODIFIERS) assignKey[k] = false;\n\n // set current scope (default 'all')\n function setScope(scope) {\n _scope = scope || 'all'\n };\n\n function getScope() {\n return _scope || 'all'\n };\n\n // delete all handlers for a given scope\n function deleteScope(scope) {\n var key, handlers, i;\n\n for (key in _handlers) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length;) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);\n else i++;\n }\n }\n };\n\n // abstract key logic for assign and unassign\n function getKeys(key) {\n var keys;\n key = key.replace(/\\s/g, '');\n keys = key.split(',');\n if ((keys[keys.length - 1]) == '') {\n keys[keys.length - 2] += ',';\n }\n return keys;\n }\n\n // abstract mods logic for assign and unassign\n function getMods(key) {\n var mods = key.slice(0, key.length - 1);\n for (var mi = 0; mi < mods.length; mi++)\n mods[mi] = _MODIFIERS[mods[mi]];\n return mods;\n }\n\n // cross-browser events\n function addEvent(object, event, method) {\n if (object.addEventListener)\n object.addEventListener(event, method, false);\n else if (object.attachEvent)\n object.attachEvent('on' + event, function () {\n method(window.event)\n });\n };\n\n // set the handlers globally on document\n addEvent(document, 'keydown', function (event) {\n dispatch(event)\n }); // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n addEvent(document, 'keyup', clearModifier);\n\n // reset modifiers to false whenever the window is (re)focused.\n addEvent(window, 'focus', resetModifiers);\n\n // store previously defined key\n var previousKey = global.key;\n\n // restore previously defined key and return reference to our key object\n function noConflict() {\n var k = global.key;\n global.key = previousKey;\n return k;\n }\n\n // set window.key and window.key.set/get/deleteScope, and the default filter\n global.key = assignKey;\n global.key.setScope = setScope;\n global.key.getScope = getScope;\n global.key.deleteScope = deleteScope;\n global.key.filter = filter;\n global.key.isPressed = isPressed;\n global.key.getPressedKeyCodes = getPressedKeyCodes;\n global.key.noConflict = noConflict;\n global.key.unbind = unbindKey;\n\n if (typeof module !== 'undefined') module.exports = key;\n\n})(window);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_shortcut-key@1.0.0@shortcut-key/index.js\n// module id = 101\n// module chunks = 0","const marked = require('marked');\nconst Prism = require('prismjs');\n\n//language\nrequire('prismjs/components/prism-java');\nrequire('prismjs/components/prism-csharp');\nrequire('prismjs/components/prism-php');\nrequire('prismjs/components/prism-python');\nrequire('prismjs/components/prism-json');\nrequire('prismjs/components/prism-yaml.min');\nrequire('prismjs/components/prism-perl');\nrequire('prismjs/components/prism-go');\nrequire('prismjs/components/prism-bash');\nrequire('prismjs/components/prism-fsharp');\nrequire('prismjs/components/prism-typescript');\nrequire('prismjs/components/prism-stylus');\nrequire('prismjs/components/prism-less');\nrequire('prismjs/components/prism-sass');\nrequire('prismjs/components/prism-handlebars');\nrequire('prismjs/components/prism-applescript');\nrequire('prismjs/components/prism-actionscript');\nrequire('prismjs/components/prism-aspnet');\nrequire('prismjs/components/prism-basic');\nrequire('prismjs/components/prism-c');\nrequire('prismjs/components/prism-pascal');\nrequire('prismjs/components/prism-vim');\nrequire('prismjs/components/prism-swift');\nrequire('prismjs/components/prism-objectivec');\nrequire('prismjs/components/prism-sql');\nrequire('prismjs/components/prism-scheme');\nrequire('prismjs/components/prism-ruby');\nrequire('prismjs/components/prism-smarty');\nrequire('prismjs/components/prism-smalltalk');\nrequire('prismjs/components/prism-rust');\nrequire('prismjs/components/prism-r');\nrequire('prismjs/components/prism-d');\nrequire('prismjs/components/prism-dart');\nrequire('prismjs/components/prism-coffeescript');\nrequire('prismjs/components/prism-batch');\nrequire('prismjs/components/prism-cpp');\nrequire('prismjs/components/prism-lua');\nrequire('prismjs/components/prism-livescript');\nrequire('prismjs/components/prism-latex');\nrequire('prismjs/components/prism-groovy');\nrequire('prismjs/components/prism-graphql');\nrequire('prismjs/components/prism-nginx');\nrequire('prismjs/components/prism-erlang');\nrequire('prismjs/components/prism-powershell');\nrequire('prismjs/components/prism-makefile');\nrequire('prismjs/components/prism-markdown');\n\n//alias\nPrism.languages.js = Prism.languages.javascript;\nPrism.languages['c#'] = Prism.languages.csharp;\nPrism.languages['f#'] = Prism.languages.fsharp;\nPrism.languages.sh = Prism.languages.bash;\nPrism.languages.md = Prism.languages.markdown;\nPrism.languages.py = Prism.languages.python;\nPrism.languages.yml = Prism.languages.yaml;\nPrism.languages.rb = Prism.languages.ruby;\n\nconst Parser = function (options) {\n options = options || {};\n this.options = options;\n};\n\nParser.highlights = {};\nParser.marked = marked;\nParser.Prism = Prism;\n\n//使标题解析 # 号可以无空格\nmarked.Lexer.rules.gfm.heading = marked.Lexer.rules.heading;\nmarked.Lexer.rules.tables.heading = marked.Lexer.rules.heading;\n\nlet renderer = new marked.Renderer();\nParser.renderer = renderer;\nmarked.setOptions({\n renderer: renderer, gfm: true, tables: true, breaks: true, //可行尾不加两空格直接换行\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n mangle: false,\n highlight: function (code, lang, callback) {\n if (Parser.highlights[lang]) {\n let result = Parser.highlights[lang].parse(code, lang, callback);\n if (!callback)\n return result;\n } else if (Prism.languages[lang]) {\n let result = Prism.highlight(code, Prism.languages[lang]);\n if (callback)\n return callback(null, result);\n else\n return result;\n } else {\n if (callback) //eslint-disable-line\n return callback(null, code);\n else\n return code;\n }\n }\n});\n\nParser.prototype.parse = function (mdText, callback) {\n return marked(mdText, callback);\n};\n\nmodule.exports = Parser;\n\n\n// WEBPACK FOOTER //\n// ./src/common/parser.js","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^
    /i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_marked@0.3.6@marked/lib/marked.js\n// module id = 103\n// module chunks = 0","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\s\\S]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/prism.js\n// module id = 104\n// module chunks = 0","Prism.languages.java = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\\b/,\n\t'number': /\\b0b[01]+\\b|\\b0x[\\da-f]*\\.?[\\da-fp\\-]+\\b|\\b\\d*\\.?\\d+(?:e[+-]?\\d+)?[df]?\\b/i,\n\t'operator': {\n\t\tpattern: /(^|[^.])(?:\\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\\|[|=]?|\\*=?|\\/=?|%=?|\\^=?|[?:~])/m,\n\t\tlookbehind: true\n\t}\n});\n\nPrism.languages.insertBefore('java','function', {\n\t'annotation': {\n\t\talias: 'punctuation',\n\t\tpattern: /(^|[^.])@\\w+/,\n\t\tlookbehind: true\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-java.js\n// module id = 105\n// module chunks = 0","Prism.languages.csharp = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\\b/,\n\t'string': [\n\t\t{\n\t\t\tpattern: /@(\"|')(\\1\\1|\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|')(\\\\?.)*?\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'number': /\\b-?(0x[\\da-f]+|\\d*\\.?\\d+f?)\\b/i\n});\n\nPrism.languages.insertBefore('csharp', 'keyword', {\n\t'generic-method': {\n\t\tpattern: /[a-z0-9_]+\\s*<[^>\\r\\n]+?>\\s*(?=\\()/i,\n\t\talias: 'function',\n\t\tinside: {\n\t\t\tkeyword: Prism.languages.csharp.keyword,\n\t\t\tpunctuation: /[<>(),.:]/\n\t\t}\n\t},\n\t'preprocessor': {\n\t\tpattern: /(^\\s*)#.*/m,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight preprocessor directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(\\s*#)\\b(define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-csharp.js\n// module id = 106\n// module chunks = 0","/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n *\n * Supports the following:\n * \t\t- Extends clike syntax\n * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n * \t\t- Smarter constant and function matching\n *\n * Adds the following new token classes:\n * \t\tconstant, delimiter, variable, function, package\n */\n\nPrism.languages.php = Prism.languages.extend('clike', {\n\t'keyword': /\\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\\b/i,\n\t'constant': /\\b[A-Z0-9_]{2,}\\b/,\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\tlookbehind: true\n\t}\n});\n\n// Shell-like comments are matched after strings, because they are less\n// common than strings containing hashes...\nPrism.languages.insertBefore('php', 'class-name', {\n\t'shell-comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true,\n\t\talias: 'comment'\n\t}\n});\n\nPrism.languages.insertBefore('php', 'keyword', {\n\t'delimiter': {\n\t\tpattern: /\\?>|<\\?(?:php|=)?/i,\n\t\talias: 'important'\n\t},\n\t'variable': /\\$\\w+\\b/i,\n\t'package': {\n\t\tpattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /\\\\/\n\t\t}\n\t}\n});\n\n// Must be defined after the function pattern\nPrism.languages.insertBefore('php', 'operator', {\n\t'property': {\n\t\tpattern: /(->)[\\w]+/,\n\t\tlookbehind: true\n\t}\n});\n\n// Add HTML support if the markup language exists\nif (Prism.languages.markup) {\n\n\t// Tokenize all inline PHP blocks that are wrapped in \n\t// This allows for easy PHP + markup highlighting\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'php' || !/(?:<\\?php|<\\?)/ig.test(env.code)) {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(/(?:<\\?php|<\\?)[\\s\\S]*?(?:\\?>|$)/ig, function(match) {\n\t\t\tvar i = env.tokenStack.length;\n\t\t\t// Check for existing strings\n\t\t\twhile (env.backupCode.indexOf('___PHP' + i + '___') !== -1)\n\t\t\t\t++i;\n\n\t\t\t// Create a sparse array\n\t\t\tenv.tokenStack[i] = match;\n\n\t\t\treturn '___PHP' + i + '___';\n\t\t});\n\n\t\t// Switch the grammar to markup\n\t\tenv.grammar = Prism.languages.markup;\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'php' && env.backupCode) {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'php' || !env.tokenStack) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Switch the grammar back\n\t\tenv.grammar = Prism.languages.php;\n\n\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\tvar k = keys[i];\n\t\t\tvar t = env.tokenStack[k];\n\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('___PHP' + k + '___',\n\t\t\t\t\t\"\" +\n\t\t\t\t\tPrism.highlight(t, env.grammar, 'php').replace(/\\$/g, '$$$$') +\n\t\t\t\t\t\"\");\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-php.js\n// module id = 107\n// module chunks = 0","Prism.languages.python= {\n\t'triple-quoted-string': {\n\t\tpattern: /\"\"\"[\\s\\S]+?\"\"\"|'''[\\s\\S]+?'''/,\n\t\talias: 'string'\n\t},\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true\n\t},\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\\\\\|\\\\?[^\\\\\\r\\n])*?\\1/,\n\t\tgreedy: true\n\t},\n\t'function' : {\n\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\\()/g,\n\t\tlookbehind: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\bclass\\s+)[a-z0-9_]+/i,\n\t\tlookbehind: true\n\t},\n\t'keyword' : /\\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\\b/,\n\t'boolean' : /\\b(?:True|False)\\b/,\n\t'number' : /\\b-?(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n\t'operator' : /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:or|and|not)\\b/,\n\t'punctuation' : /[{}[\\];(),.:]/\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-python.js\n// module id = 108\n// module chunks = 0","Prism.languages.json = {\n\t'property': /\"(?:\\\\.|[^\\\\\"])*\"(?=\\s*:)/ig,\n\t'string': /\"(?!:)(?:\\\\.|[^\\\\\"])*\"(?!:)/g,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?)\\b/g,\n\t'punctuation': /[{}[\\]);,]/g,\n\t'operator': /:/g,\n\t'boolean': /\\b(true|false)\\b/gi,\n\t'null': /\\bnull\\b/gi\n};\n\nPrism.languages.jsonp = Prism.languages.json;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-json.js\n// module id = 109\n// module chunks = 0","Prism.languages.yaml={scalar:{pattern:/([\\-:]\\s*(![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\3[^\\r\\n]+)*)/,lookbehind:!0,alias:\"string\"},comment:/#.*/,key:{pattern:/(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,lookbehind:!0,alias:\"atrule\"},directive:{pattern:/(^[ \\t]*)%.+/m,lookbehind:!0,alias:\"important\"},datetime:{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(\\d{4}-\\d\\d?-\\d\\d?([tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(\\.\\d*)?[ \\t]*(Z|[-+]\\d\\d?(:\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(:\\d{2}(\\.\\d*)?)?)(?=[ \\t]*($|,|]|}))/m,lookbehind:!0,alias:\"number\"},\"boolean\":{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(true|false)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},\"null\":{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(null|~)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},string:{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')(?=[ \\t]*($|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\\-,[{]\\s*(![^\\s]+)?[ \\t]*)[+\\-]?(0x[\\da-f]+|0o[0-7]+|(\\d+\\.?\\d*|\\.?\\d+)(e[\\+\\-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\\s]+/,important:/[&*][\\w]+/,punctuation:/---|[:[\\]{}\\-,|>?]|\\.\\.\\./};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-yaml.min.js\n// module id = 110\n// module chunks = 0","Prism.languages.perl = {\n\t'comment': [\n\t\t{\n\t\t\t// POD\n\t\t\tpattern: /(^\\s*)=\\w+[\\s\\S]*?=cut.*/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t// TODO Could be nice to handle Heredoc too.\n\t'string': [\n\t\t// q/.../\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q a...a\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q(...)\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q{...}\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q[...]\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q<...>\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t// \"...\", `...`\n\t\t{\n\t\t\tpattern: /(\"|`)(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t// '...'\n\t\t// FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n\t\t{\n\t\t\tpattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'regex': [\n\t\t// m/.../\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m a...a\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\.)*?\\1[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m(...)\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m{...}\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m[...]\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m<...>\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t// The lookbehinds prevent -s from breaking\n\t\t// FIXME We don't handle change of separator like s(...)[...]\n\t\t// s/.../.../\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s a...a...a\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s(...)(...)\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s{...}{...}\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s[...][...]\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s<...><...>\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// /.../\n\t\t// The look-ahead tries to prevent two divisions on\n\t\t// the same line from being highlighted as regex.\n\t\t// This does not support multi-line regex.\n\t\t{\n\t\t\tpattern: /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\n\t// FIXME Not sure about the handling of ::, ', and #\n\t'variable': [\n\t\t// ${^POSTMATCH}\n\t\t/[&*$@%]\\{\\^[A-Z]+\\}/,\n\t\t// $^V\n\t\t/[&*$@%]\\^[A-Z_]/,\n\t\t// ${...}\n\t\t/[&*$@%]#?(?=\\{)/,\n\t\t// $foo\n\t\t/[&*$@%]#?((::)*'?(?!\\d)[\\w$]+)+(::)*/i,\n\t\t// $1\n\t\t/[&*$@%]\\d+/,\n\t\t// $_, @_, %!\n\t\t// The negative lookahead prevents from breaking the %= operator\n\t\t/(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n\t],\n\t'filehandle': {\n\t\t// <>, , _\n\t\tpattern: /<(?![<=])\\S*>|\\b_\\b/,\n\t\talias: 'symbol'\n\t},\n\t'vstring': {\n\t\t// v1.2, 1.2.3\n\t\tpattern: /v\\d+(\\.\\d+)*|\\d+(\\.\\d+){2,}/,\n\t\talias: 'string'\n\t},\n\t'function': {\n\t\tpattern: /sub [a-z0-9_]+/i,\n\t\tinside: {\n\t\t\tkeyword: /sub/\n\t\t}\n\t},\n\t'keyword': /\\b(any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f](_?[\\dA-Fa-f])*|0b[01](_?[01])*|(\\d(_?\\d)*)?\\.?\\d(_?\\d)*([Ee][+-]?\\d+)?)\\b/,\n\t'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n\t'punctuation': /[{}[\\];(),:]/\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-perl.js\n// module id = 111\n// module chunks = 0","Prism.languages.go = Prism.languages.extend('clike', {\n\t'keyword': /\\b(break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t'builtin': /\\b(bool|byte|complex(64|128)|error|float(32|64)|rune|string|u?int(8|16|32|64|)|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(ln)?|real|recover)\\b/,\n\t'boolean': /\\b(_|iota|nil|true|false)\\b/,\n\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t'number': /\\b(-?(0x[a-f\\d]+|(\\d+\\.?\\d*|\\.\\d+)(e[-+]?\\d+)?)i?)\\b/i,\n\t'string': {\n\t\tpattern: /(\"|'|`)(\\\\?.|\\r|\\n)*?\\1/,\n\t\tgreedy: true\n\t}\n});\ndelete Prism.languages.go['class-name'];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-go.js\n// module id = 112\n// module chunks = 0","(function(Prism) {\n\tvar insideString = {\n\t\tvariable: [\n\t\t\t// Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\tvariable: [{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/,\n\t\t\t\t\t],\n\t\t\t\t\tnumber: /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee]-?\\d+)?)\\b/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\toperator: /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\tpunctuation: /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\([^)]+\\)|`[^`]+`/,\n\t\t\t\tinside: {\n\t\t\t\t\tvariable: /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:[a-z0-9_#\\?\\*!@]+|\\{[^}]+\\})/i\n\t\t],\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/bin\\/bash|^#!\\s*\\/bin\\/sh/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<\\s*)(?:\"|')?(\\w+?)(?:\"|')?\\s*\\r?\\n(?:[\\s\\S])*?\\r?\\n\\2/g,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /([\"'])(?:\\\\\\\\|\\\\?[^\\\\])*?\\1/g,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t}\n\t\t],\n\t\t'variable': insideString.variable,\n\t\t// Originally based on http://ss64.com/bash/\n\t\t'function': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:let|:|\\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:true|false)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'operator': /&&?|\\|\\|?|==?|!=?|<<>|<=?|>=?|=~/,\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];]/\n\t};\n\n\tvar inside = insideString.variable[1].inside;\n\tinside['function'] = Prism.languages.bash['function'];\n\tinside.keyword = Prism.languages.bash.keyword;\n\tinside.boolean = Prism.languages.bash.boolean;\n\tinside.operator = Prism.languages.bash.operator;\n\tinside.punctuation = Prism.languages.bash.punctuation;\n})(Prism);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-bash.js\n// module id = 113\n// module chunks = 0","Prism.languages.fsharp = Prism.languages.extend('clike', {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\(\\*[\\s\\S]*?\\*\\)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\\b/,\n\t'string': {\n\t\tpattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1)B?/,\n\t\tgreedy: true\n\t},\n\t'number': [\n\t\t/\\b-?0x[\\da-fA-F]+(un|lf|LF)?\\b/,\n\t\t/\\b-?0b[01]+(y|uy)?\\b/,\n\t\t/\\b-?(\\d*\\.?\\d+|\\d+\\.)([fFmM]|[eE][+-]?\\d+)?\\b/,\n\t\t/\\b-?\\d+(y|uy|s|us|l|u|ul|L|UL|I)?\\b/\n\t]\n});\nPrism.languages.insertBefore('fsharp', 'keyword', {\n\t'preprocessor': {\n\t\tpattern: /^[^\\r\\n\\S]*#.*/m,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t'directive': {\n\t\t\t\tpattern: /(\\s*#)\\b(else|endif|if|light|line|nowarn)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-fsharp.js\n// module id = 114\n// module chunks = 0","Prism.languages.typescript = Prism.languages.extend('javascript', {\n\t// From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|enum|symbol|namespace|abstract|require|type)\\b/\n});\n\nPrism.languages.ts = Prism.languages.typescript;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-typescript.js\n// module id = 115\n// module chunks = 0","(function (Prism) {\n\tvar inside = {\n\t\t'url': /url\\(([\"']?).*?\\1\\)/i,\n\t\t'string': {\n\t\t\tpattern: /(\"|')(?:[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'interpolation': null, // See below\n\t\t'func': null, // See below\n\t\t'important': /\\B!(?:important|optional)\\b/i,\n\t\t'keyword': {\n\t\t\tpattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'hexcode': /#[\\da-f]{3,6}/i,\n\t\t'number': /\\b\\d+(?:\\.\\d+)?%?/,\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'operator': [\n\t\t\t// We want non-word chars around \"-\" because it is\n\t\t\t// accepted in property names.\n\t\t\t/~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.+|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n\t\t],\n\t\t'punctuation': /[{}()\\[\\];:,]/\n\t};\n\n\tinside['interpolation'] = {\n\t\tpattern: /\\{[^\\r\\n}:]+\\}/,\n\t\talias: 'variable',\n\t\tinside: Prism.util.clone(inside)\n\t};\n\tinside['func'] = {\n\t\tpattern: /[\\w-]+\\([^)]*\\).*/,\n\t\tinside: {\n\t\t\t'function': /^[^(]+/,\n\t\t\trest: Prism.util.clone(inside)\n\t\t}\n\t};\n\n\tPrism.languages.stylus = {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'atrule-declaration': {\n\t\t\tpattern: /(^\\s*)@.+/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'atrule': /^@[\\w-]+/,\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\t\t'variable-declaration': {\n\t\t\tpattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:(?:\\{[^}]*\\}|.+)|$)/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'variable': /^\\S+/,\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\n\t\t'statement': {\n\t\t\tpattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t]+.+/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\tkeyword: /^\\S+/,\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\n\t\t// A property/value pair cannot end with a comma or a brace\n\t\t// It cannot have indented content unless it ended with a semicolon\n\t\t'property-declaration': {\n\t\t\tpattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'property': {\n\t\t\t\t\tpattern: /^[^\\s:]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': inside.interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\n\n\n\t\t// A selector can contain parentheses only as part of a pseudo-element\n\t\t// It can span multiple lines.\n\t\t// It must end with a comma or an accolade or have indented content.\n\t\t'selector': {\n\t\t\tpattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': inside.interpolation,\n\t\t\t\t'punctuation': /[{},]/\n\t\t\t}\n\t\t},\n\n\t\t'func': inside.func,\n\t\t'string': inside.string,\n\t\t'interpolation': inside.interpolation,\n\t\t'punctuation': /[{}()\\[\\];:.]/\n\t};\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-stylus.js\n// module id = 116\n// module chunks = 0","/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nPrism.languages.less = Prism.languages.extend('css', {\n\t'comment': [\n\t\t/\\/\\*[\\s\\S]*?\\*\\//,\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?(?:\\([^{}]+\\)|[^(){};])*?(?=\\s*\\{)/i,\n\t\tinside: {\n\t\t\t'punctuation': /[:()]/\n\t\t}\n\t},\n\t// selectors and mixins are considered the same\n\t'selector': {\n\t\tpattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\([^{}]*\\)|[^{};@])*?(?=\\s*\\{)/,\n\t\tinside: {\n\t\t\t// mixin parameters\n\t\t\t'variable': /@+[\\w-]+/\n\t\t}\n\t},\n\n\t'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n\t'punctuation': /[{}();:,]/,\n\t'operator': /[+\\-*\\/]/\n});\n\n// Invert function and punctuation positions\nPrism.languages.insertBefore('less', 'punctuation', {\n\t'function': Prism.languages.less.function\n});\n\nPrism.languages.insertBefore('less', 'property', {\n\t'variable': [\n\t\t// Variable declaration (the colon must be consumed!)\n\t\t{\n\t\t\tpattern: /@[\\w-]+\\s*:/,\n\t\t\tinside: {\n\t\t\t\t\"punctuation\": /:/\n\t\t\t}\n\t\t},\n\n\t\t// Variable usage\n\t\t/@@?[\\w-]+/\n\t],\n\t'mixin-usage': {\n\t\tpattern: /([{;]\\s*)[.#](?!\\d)[\\w-]+.*?(?=[(;])/,\n\t\tlookbehind: true,\n\t\talias: 'function'\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-less.js\n// module id = 117\n// module chunks = 0","(function(Prism) {\n\tPrism.languages.sass = Prism.languages.extend('css', {\n\t\t// Sass comments don't need to be closed, only indented\n\t\t'comment': {\n\t\t\tpattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t]+.+)*/m,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('sass', 'atrule', {\n\t\t// We want to consume the whole line\n\t\t'atrule-line': {\n\t\t\t// Includes support for = and + shortcuts\n\t\t\tpattern: /^(?:[ \\t]*)[@+=].+/m,\n\t\t\tinside: {\n\t\t\t\t'atrule': /(?:@[\\w-]+|[+=])/m\n\t\t\t}\n\t\t}\n\t});\n\tdelete Prism.languages.sass.atrule;\n\n\n\tvar variable = /((\\$[-_\\w]+)|(#\\{\\$[-_\\w]+\\}))/i;\n\tvar operator = [\n\t\t/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/,\n\t\t{\n\t\t\tpattern: /(\\s+)-(?=\\s)/,\n\t\t\tlookbehind: true\n\t\t}\n\t];\n\n\tPrism.languages.insertBefore('sass', 'property', {\n\t\t// We want to consume the whole line\n\t\t'variable-line': {\n\t\t\tpattern: /^[ \\t]*\\$.+/m,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /:/,\n\t\t\t\t'variable': variable,\n\t\t\t\t'operator': operator\n\t\t\t}\n\t\t},\n\t\t// We want to consume the whole line\n\t\t'property-line': {\n\t\t\tpattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s]+.*)/m,\n\t\t\tinside: {\n\t\t\t\t'property': [\n\t\t\t\t\t/[^:\\s]+(?=\\s*:)/,\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(:)[^:\\s]+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'punctuation': /:/,\n\t\t\t\t'variable': variable,\n\t\t\t\t'operator': operator,\n\t\t\t\t'important': Prism.languages.sass.important\n\t\t\t}\n\t\t}\n\t});\n\tdelete Prism.languages.sass.property;\n\tdelete Prism.languages.sass.important;\n\n\t// Now that whole lines for other patterns are consumed,\n\t// what's left should be selectors\n\tdelete Prism.languages.sass.selector;\n\tPrism.languages.insertBefore('sass', 'punctuation', {\n\t\t'selector': {\n\t\t\tpattern: /([ \\t]*)\\S(?:,?[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,?[^,\\r\\n]+)*)*/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-sass.js\n// module id = 118\n// module chunks = 0","(function(Prism) {\n\n\tvar handlebars_pattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n\n\tPrism.languages.handlebars = Prism.languages.extend('markup', {\n\t\t'handlebars': {\n\t\t\tpattern: handlebars_pattern,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\t'string': /([\"'])(\\\\?.)*?\\1/,\n\t\t\t\t'number': /\\b-?(0x[\\dA-Fa-f]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?)\\b/,\n\t\t\t\t'boolean': /\\b(true|false)\\b/,\n\t\t\t\t'block': {\n\t\t\t\t\tpattern: /^(\\s*~?\\s*)[#\\/]\\S+?(?=\\s*~?\\s*$|\\s)/i,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t},\n\t\t\t\t'brackets': {\n\t\t\t\t\tpattern: /\\[[^\\]]+\\]/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\tpunctuation: /\\[|\\]/,\n\t\t\t\t\t\tvariable: /[\\s\\S]+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'punctuation': /[!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n\t\t\t\t'variable': /[^!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n\t\t\t}\n\t\t}\n\t});\n\n\t// Comments are inserted at top so that they can\n\t// surround markup\n\tPrism.languages.insertBefore('handlebars', 'tag', {\n\t\t'handlebars-comment': {\n\t\t\tpattern: /\\{\\{![\\s\\S]*?\\}\\}/,\n\t\t\talias: ['handlebars','comment']\n\t\t}\n\t});\n\n\t// Tokenize all inline Handlebars expressions that are wrapped in {{ }} or {{{ }}}\n\t// This allows for easy Handlebars + markup highlighting\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'handlebars') {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(handlebars_pattern, function(match) {\n\t\t\tvar i = env.tokenStack.length;\n\t\t\t// Check for existing strings\n\t\t\twhile (env.backupCode.indexOf('___HANDLEBARS' + i + '___') !== -1)\n\t\t\t\t++i;\n\n\t\t\t// Create a sparse array\n\t\t\tenv.tokenStack[i] = match;\n\n\t\t\treturn '___HANDLEBARS' + i + '___';\n\t\t});\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'handlebars') {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\t// and highlight them with defined grammar\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'handlebars') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\tvar k = keys[i];\n\t\t\tvar t = env.tokenStack[k];\n\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('___HANDLEBARS' + k + '___', Prism.highlight(t, env.grammar, 'handlebars').replace(/\\$/g, '$$$$'));\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n\n}(Prism));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-handlebars.js\n// module id = 119\n// module chunks = 0","Prism.languages.applescript = {\n\t'comment': [\n\t\t// Allow one level of nesting\n\t\t/\\(\\*(?:\\(\\*[\\s\\S]*?\\*\\)|[\\s\\S])*?\\*\\)/,\n\t\t/--.+/,\n\t\t/#.+/\n\t],\n\t'string': /\"(?:\\\\?.)*?\"/,\n\t'number': /\\b-?\\d*\\.?\\d+([Ee]-?\\d+)?\\b/,\n\t'operator': [\n\t\t/[&=≠≤≥*+\\-\\/÷^]|[<>]=?/,\n\t\t/\\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\\b/\n\t],\n\t'keyword': /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n\t'class': {\n\t\tpattern: /\\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\\b/,\n\t\talias: 'builtin'\n\t},\n\t'punctuation': /[{}():,¬«»《》]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-applescript.js\n// module id = 120\n// module chunks = 0","Prism.languages.actionscript = Prism.languages.extend('javascript', {\n\t'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n\t'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<>?>?|[!=]=?)=?|[~?@]/\n});\nPrism.languages.actionscript['class-name'].alias = 'function';\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('actionscript', 'string', {\n\t\t'xml': {\n\t\t\tpattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\2)*\\s*\\/?>/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\trest: Prism.languages.markup\n\t\t\t}\n\t\t}\n\t});\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-actionscript.js\n// module id = 121\n// module chunks = 0","Prism.languages.aspnet = Prism.languages.extend('markup', {\n\t'page-directive tag': {\n\t\tpattern: /<%\\s*@.*%>/i,\n\t\tinside: {\n\t\t\t'page-directive tag': /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n\t\t\trest: Prism.languages.markup.tag.inside\n\t\t}\n\t},\n\t'directive tag': {\n\t\tpattern: /<%.*%>/i,\n\t\tinside: {\n\t\t\t'directive tag': /<%\\s*?[$=%#:]{0,2}|%>/i,\n\t\t\trest: Prism.languages.csharp\n\t\t}\n\t}\n});\n// Regexp copied from prism-markup, with a negative look-ahead added\nPrism.languages.aspnet.tag.pattern = /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i;\n\n// match directives of attribute value foo=\"<% Bar %>\"\nPrism.languages.insertBefore('inside', 'punctuation', {\n\t'directive tag': Prism.languages.aspnet['directive tag']\n}, Prism.languages.aspnet.tag.inside[\"attr-value\"]);\n\nPrism.languages.insertBefore('aspnet', 'comment', {\n\t'asp comment': /<%--[\\s\\S]*?--%>/\n});\n\n// script runat=\"server\" contains csharp, not javascript\nPrism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {\n\t'asp script': {\n\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\tlookbehind: true,\n\t\tinside: Prism.languages.csharp || {}\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-aspnet.js\n// module id = 122\n// module chunks = 0","Prism.languages.basic = {\n\t'string': /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^_ +\\-.A-Z\\d])*\"/i,\n\t'comment': {\n\t\tpattern: /(?:!|REM\\b).+/i,\n\t\tinside: {\n\t\t\t'keyword': /^REM/i\n\t\t}\n\t},\n\t'number': /(?:\\b|\\B[.-])(?:\\d+\\.?\\d*)(?:E[+-]?\\d+)?/i,\n\t'keyword': /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n\t'function': /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n\t'operator': /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n\t'punctuation': /[,;:()]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-basic.js\n// module id = 123\n// module chunks = 0","Prism.languages.c = Prism.languages.extend('clike', {\n\t'keyword': /\\b(_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n\t'operator': /\\-[>-]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|?\\||[~^%?*\\/]/,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)[ful]*\\b/i\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'macro': {\n\t\t// allow for multiline macro definitions\n\t\t// spaces after the # character compile fine with gcc\n\t\tpattern: /(^\\s*)#\\s*[a-z]+([^\\r\\n\\\\]|\\\\.|\\\\(?:\\r\\n?|\\n))*/im,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight the path of the include statement as a string\n\t\t\t'string': {\n\t\t\t\tpattern: /(#\\s*include\\s*)(<.+?>|(\"|')(\\\\?.)+?\\3)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// highlight macro directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(#\\s*)\\b(define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t},\n\t// highlight predefined macros as constants\n\t'constant': /\\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\n\ndelete Prism.languages.c['class-name'];\ndelete Prism.languages.c['boolean'];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-c.js\n// module id = 124\n// module chunks = 0","// Based on Free Pascal\n\n/* TODO\n\tSupport inline asm ?\n*/\n\nPrism.languages.pascal = {\n\t'comment': [\n\t\t/\\(\\*[\\s\\S]+?\\*\\)/,\n\t\t/\\{[\\s\\S]+?\\}/,\n\t\t/\\/\\/.*/\n\t],\n\t'string': {\n\t\tpattern: /(?:'(?:''|[^'\\r\\n])*'|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n\t\tgreedy: true\n\t},\n\t'keyword': [\n\t\t{\n\t\t\t// Turbo Pascal\n\t\t\tpattern: /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// Free Pascal\n\t\t\tpattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// Object Pascal\n\t\t\tpattern: /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// Modifiers\n\t\t\tpattern: /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'number': [\n\t\t// Hexadecimal, octal and binary\n\t\t/[+-]?(?:[&%]\\d+|\\$[a-f\\d]+)/i,\n\t\t// Decimal\n\t\t/([+-]|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n\t],\n\t'operator': [\n\t\t/\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/i,\n\t\t{\n\t\t\tpattern: /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'punctuation': /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-pascal.js\n// module id = 125\n// module chunks = 0","Prism.languages.vim = {\n\t'string': /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n\t'comment': /\".*/,\n\t'function': /\\w+(?=\\()/,\n\t'keyword': /\\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n\t'builtin': /\\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\\b/,\n\t'number': /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n\t'operator': /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n\t'punctuation': /[{}[\\](),;:]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-vim.js\n// module id = 126\n// module chunks = 0","// issues: nested multiline comments\nPrism.languages.swift = Prism.languages.extend('clike', {\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\((?:[^()]|\\([^)]+\\))+\\)|\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\\\\\((?:[^()]|\\([^)]+\\))+\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\tdelimiter: {\n\t\t\t\t\t\tpattern: /^\\\\\\(|\\)$/,\n\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t}\n\t\t\t\t\t// See rest below\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t'keyword': /\\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\\b/,\n\t'number': /\\b([\\d_]+(\\.[\\de_]+)?|0x[a-f0-9_]+(\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\t'constant': /\\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\t'atrule': /@\\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\\b/,\n\t'builtin': /\\b([A-Z]\\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\\b/\n});\nPrism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.util.clone(Prism.languages.swift);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-swift.js\n// module id = 127\n// module chunks = 0","Prism.languages.objectivec = Prism.languages.extend('c', {\n\t'keyword': /\\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t'string': /(\"|')(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t'operator': /-[->]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-objectivec.js\n// module id = 128\n// module chunks = 0","Prism.languages.sql= {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n\t\tlookbehind: true\n\t},\n\t'string' : {\n\t\tpattern: /(^|[^@\\\\])(\"|')(?:\\\\?[\\s\\S])*?\\2/,\n\t\tgreedy: true,\n\t\tlookbehind: true\n\t},\n\t'variable': /@[\\w.$]+|@(\"|'|`)(?:\\\\?[\\s\\S])+?\\1/,\n\t'function': /\\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n\t'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\\b/i,\n\t'boolean': /\\b(?:TRUE|FALSE|NULL)\\b/i,\n\t'number': /\\b-?(?:0x)?\\d*\\.?[\\da-f]+\\b/,\n\t'operator': /[-+*\\/=%^~]|&&?|\\|?\\||!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n\t'punctuation': /[;[\\]()`,.]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-sql.js\n// module id = 129\n// module chunks = 0","Prism.languages.scheme = {\n\t'comment' : /;.*/,\n\t'string' : {\n\t\tpattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*?\"|'[^('\\s]*/,\n\t\tgreedy: true\n\t},\n\t'keyword' : {\n\t\tpattern : /(\\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,\n\t\tlookbehind : true\n\t},\n\t'builtin' : {\n\t\tpattern : /(\\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\\/cc|append|abs|apply|eval)\\b|null\\?|pair\\?|boolean\\?|eof-object\\?|char\\?|procedure\\?|number\\?|port\\?|string\\?|vector\\?|symbol\\?|bytevector\\?)/,\n\t\tlookbehind : true\n\t},\n\t'number' : {\n\t\tpattern: /(\\s|\\))[-+]?\\d*\\.?\\d+(?:\\s*[-+]\\s*\\d*\\.?\\d+i)?\\b/,\n\t\tlookbehind: true\n\t},\n\t'boolean' : /#[tf]/,\n\t'operator': {\n\t\tpattern: /(\\()(?:[-+*%\\/]|[<>]=?|=>?)/,\n\t\tlookbehind: true\n\t},\n\t'function' : {\n\t\tpattern : /(\\()[^\\s()]*(?=\\s)/,\n\t\tlookbehind : true\n\t},\n\t'punctuation' : /[()]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-scheme.js\n// module id = 130\n// module chunks = 0","/**\n * Original by Samuel Flores\n *\n * Adds the following new token classes:\n * \t\tconstant, builtin, variable, symbol, regex\n */\n(function(Prism) {\n\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t'comment': [\n\t\t\t/#(?!\\{[^\\r\\n]*?\\}).*/,\n\t\t\t/^=begin(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r))*?=end/m\n\t\t],\n\t\t'keyword': /\\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\\b/\n\t});\n\n\tvar interpolation = {\n\t\tpattern: /#\\{[^}]+\\}/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\talias: 'tag'\n\t\t\t},\n\t\t\trest: Prism.util.clone(Prism.languages.ruby)\n\t\t}\n\t};\n\n\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t'regex': [\n\t\t\t{\n\t\t\t\tpattern: /%r([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\tpattern: /%r\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\][gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r<(?:[^<>\\\\]|\\\\[\\s\\S])*>[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gim]{0,3}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'variable': /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/,\n\t\t'symbol': /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t'builtin': /\\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n\t\t'constant': /\\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.ruby.string = [\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// Here we need to specifically allow interpolation\n\t\t\tpattern: /%[qQiIwWxs]?\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|')(#\\{[^}]+\\}|\\\\(?:\\r?\\n|\\r)|\\\\?.)*?\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t];\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-ruby.js\n// module id = 131\n// module chunks = 0","/* TODO\n\tAdd support for variables inside double quoted strings\n\tAdd support for {php}\n*/\n\n(function(Prism) {\n\n\tvar smarty_pattern = /\\{\\*[\\s\\S]+?\\*\\}|\\{[\\s\\S]+?\\}/g;\n\tvar smarty_litteral_start = '{literal}';\n\tvar smarty_litteral_end = '{/literal}';\n\tvar smarty_litteral_mode = false;\n\n\tPrism.languages.smarty = Prism.languages.extend('markup', {\n\t\t'smarty': {\n\t\t\tpattern: smarty_pattern,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^\\{|\\}$/i,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\t'string': /([\"'])(?:\\\\?.)*?\\1/,\n\t\t\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][-+]?\\d+)?)\\b/,\n\t\t\t\t'variable': [\n\t\t\t\t\t/\\$(?!\\d)\\w+/,\n\t\t\t\t\t/#(?!\\d)\\w+#/,\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(\\.|->)(?!\\d)\\w+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'function': [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(\\|\\s*)@?(?!\\d)\\w+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t/^\\/?(?!\\d)\\w+/,\n\t\t\t\t\t/(?!\\d)\\w+(?=\\()/\n\t\t\t\t],\n\t\t\t\t'attr-name': {\n\t\t\t\t\t// Value is made optional because it may have already been tokenized\n\t\t\t\t\tpattern: /\\w+\\s*=\\s*(?:(?!\\d)\\w+)?/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t\"variable\": {\n\t\t\t\t\t\t\tpattern: /(=\\s*)(?!\\d)\\w+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"operator\": /=/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'punctuation': [\n\t\t\t\t\t/[\\[\\]().,:`]|\\->/\n\t\t\t\t],\n\t\t\t\t'operator': [\n\t\t\t\t\t/[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n\t\t\t\t\t/\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n\t\t\t\t\t/\\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\\b/\n\t\t\t\t],\n\t\t\t\t'keyword': /\\b(?:false|off|on|no|true|yes)\\b/\n\t\t\t}\n\t\t}\n\t});\n\n\t// Comments are inserted at top so that they can\n\t// surround markup\n\tPrism.languages.insertBefore('smarty', 'tag', {\n\t\t'smarty-comment': {\n\t\t\tpattern: /\\{\\*[\\s\\S]*?\\*\\}/,\n\t\t\talias: ['smarty','comment']\n\t\t}\n\t});\n\n\t// Tokenize all inline Smarty expressions\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'smarty') {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(smarty_pattern, function(match) {\n\n\t\t\t// Smarty tags inside {literal} block are ignored\n\t\t\tif(match === smarty_litteral_end) {\n\t\t\t\tsmarty_litteral_mode = false;\n\t\t\t}\n\n\t\t\tif(!smarty_litteral_mode) {\n\t\t\t\tif(match === smarty_litteral_start) {\n\t\t\t\t\tsmarty_litteral_mode = true;\n\t\t\t\t}\n\n\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t// Check for existing strings\n\t\t\t\twhile (env.backupCode.indexOf('___SMARTY' + i + '___') !== -1)\n\t\t\t\t\t++i;\n\n\t\t\t\t// Create a sparse array\n\t\t\t\tenv.tokenStack[i] = match;\n\n\t\t\t\treturn '___SMARTY' + i + '___';\n\t\t\t}\n\t\t\treturn match;\n\t\t});\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'smarty') {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\t// and highlight them with defined grammar\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'smarty') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\tvar k = keys[i];\n\t\t\tvar t = env.tokenStack[k];\n\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('___SMARTY' + k + '___', Prism.highlight(t, env.grammar, 'smarty').replace(/\\$/g, '$$$$'));\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-smarty.js\n// module id = 132\n// module chunks = 0","Prism.languages.smalltalk = {\n\t'comment': /\"(?:\"\"|[^\"])+\"/,\n\t'string': /'(?:''|[^'])+'/,\n\t'symbol': /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n\t'block-arguments': {\n\t\tpattern: /(\\[\\s*):[^\\[|]*?\\|/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'variable': /:[\\da-z]+/i,\n\t\t\t'punctuation': /\\|/\n\t\t}\n\t},\n\t'temporary-variables': {\n\t\tpattern: /\\|[^|]+\\|/,\n\t\tinside: {\n\t\t\t'variable': /[\\da-z]+/i,\n\t\t\t'punctuation': /\\|/\n\t\t}\n\t},\n\t'keyword': /\\b(?:nil|true|false|self|super|new)\\b/,\n\t'character': {\n\t\tpattern: /\\$./,\n\t\talias: 'string'\n\t},\n\t'number': [\n\t\t/\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n\t\t/(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n\t],\n\t'operator': /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n\t'punctuation': /[.;:?\\[\\](){}]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-smalltalk.js\n// module id = 133\n// module chunks = 0","/* TODO\n\tAdd support for Markdown notation inside doc comments\n\tAdd support for nested block comments...\n\tMatch closure params even when not followed by dash or brace\n\tAdd better support for macro definition\n*/\n\nPrism.languages.rust = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': [\n\t\t{\n\t\t\tpattern: /b?r(#*)\"(?:\\\\?.)*?\"\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /b?(\"|')(?:\\\\?.)*?\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'keyword': /\\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n\n\t'attribute': {\n\t\tpattern: /#!?\\[.+?\\]/,\n\t\tgreedy: true,\n\t\talias: 'attr-name'\n\t},\n\n\t'function': [\n\t\t/[a-z0-9_]+(?=\\s*\\()/i,\n\t\t// Macros can use parens or brackets\n\t\t/[a-z0-9_]+!(?=\\s*\\(|\\[)/i\n\t],\n\t'macro-rules': {\n\t\tpattern: /[a-z0-9_]+!/i,\n\t\talias: 'function'\n\t},\n\n\t// Hex, oct, bin, dec numbers with visual separators and type suffix\n\t'number': /\\b-?(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\\d(_?\\d)*)?\\.?\\d(_?\\d)*([Ee][+-]?\\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\\b/,\n\n\t// Closure params should not be confused with bitwise OR |\n\t'closure-params': {\n\t\tpattern: /\\|[^|]*\\|(?=\\s*[{-])/,\n\t\tinside: {\n\t\t\t'punctuation': /[\\|:,]/,\n\t\t\t'operator': /[&*]/\n\t\t}\n\t},\n\t'punctuation': /[{}[\\];(),:]|\\.+|->/,\n\t'operator': /[-+*\\/%!^=]=?|@|&[&=]?|\\|[|=]?|<>?=?/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-rust.js\n// module id = 134\n// module chunks = 0","Prism.languages.r = {\n\t'comment': /#.*/,\n\t'string': {\n\t\tpattern: /(['\"])(?:\\\\?.)*?\\1/,\n\t\tgreedy: true\n\t},\n\t'percent-operator': {\n\t\t// Includes user-defined operators\n\t\t// and %%, %*%, %/%, %in%, %o%, %x%\n\t\tpattern: /%[^%\\s]*%/,\n\t\talias: 'operator'\n\t},\n\t'boolean': /\\b(?:TRUE|FALSE)\\b/,\n\t'ellipsis': /\\.\\.(?:\\.|\\d+)/,\n\t'number': [\n\t\t/\\b(?:NaN|Inf)\\b/,\n\t\t/\\b(?:0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\d*\\.?\\d+)(?:[EePp][+-]?\\d+)?[iL]?\\b/\n\t],\n\t'keyword': /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n\t'operator': /->?>?|<(?:=|=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n\t'punctuation': /[(){}\\[\\],;]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-r.js\n// module id = 135\n// module chunks = 0","Prism.languages.d = Prism.languages.extend('clike', {\n\t'string': [\n\t\t// r\"\", x\"\"\n\t\t/\\b[rx]\"(\\\\.|[^\\\\\"])*\"[cwd]?/,\n\t\t// q\"[]\", q\"()\", q\"<>\", q\"{}\"\n\t\t/\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/,\n\t\t// q\"IDENT\n\t\t// ...\n\t\t// IDENT\"\n\t\t/\\bq\"([_a-zA-Z][_a-zA-Z\\d]*)(?:\\r?\\n|\\r)[\\s\\S]*?(?:\\r?\\n|\\r)\\1\"/,\n\t\t// q\"//\", q\"||\", etc.\n\t\t/\\bq\"(.)[\\s\\S]*?\\1\"/,\n\t\t// Characters\n\t\t/'(?:\\\\'|\\\\?[^']+)'/,\n\n\t\t/([\"`])(\\\\.|(?!\\1)[^\\\\])*\\1[cwd]?/\n\t],\n\n\t'number': [\n\t\t// The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n\t\t// Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n\t\t/\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]*/i,\n\t\t{\n\t\t\tpattern: /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]*/i,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\n\t// In order: $, keywords and special tokens, globally defined symbols\n\t'keyword': /\\$|\\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\\b/,\n\t'operator': /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n});\n\n\nPrism.languages.d.comment = [\n\t// Shebang\n\t/^\\s*#!.+/,\n\t// /+ +/\n\t{\n\t\t// Allow one level of nesting\n\t\tpattern: /(^|[^\\\\])\\/\\+(?:\\/\\+[\\s\\S]*?\\+\\/|[\\s\\S])*?\\+\\//,\n\t\tlookbehind: true\n\t}\n].concat(Prism.languages.d.comment);\n\nPrism.languages.insertBefore('d', 'comment', {\n\t'token-string': {\n\t\t// Allow one level of nesting\n\t\tpattern: /\\bq\\{(?:|\\{[^}]*\\}|[^}])*\\}/,\n\t\talias: 'string'\n\t}\n});\n\nPrism.languages.insertBefore('d', 'keyword', {\n\t'property': /\\B@\\w*/\n});\n\nPrism.languages.insertBefore('d', 'function', {\n\t'register': {\n\t\t// Iasm registers\n\t\tpattern: /\\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n\t\talias: 'variable'\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-d.js\n// module id = 136\n// module chunks = 0","Prism.languages.dart = Prism.languages.extend('clike', {\n\t'string': [\n\t\t{\n\t\t\tpattern: /r?(\"\"\"|''')[\\s\\S]*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /r?(\"|')(\\\\?.)*?\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t/\\b(?:async|sync|yield)\\*/,\n\t\t/\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\\b/\n\t],\n\t'operator': /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n});\n\nPrism.languages.insertBefore('dart','function',{\n\t'metadata': {\n\t\tpattern: /@\\w+/,\n\t\talias: 'symbol'\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-dart.js\n// module id = 137\n// module chunks = 0","(function(Prism) {\n\n// Ignore comments starting with { to privilege string interpolation highlighting\nvar comment = /#(?!\\{).+/,\n interpolation = {\n \tpattern: /#\\{[^}]+\\}/,\n \talias: 'variable'\n };\n\nPrism.languages.coffeescript = Prism.languages.extend('javascript', {\n\t'comment': comment,\n\t'string': [\n\n\t\t// Strings are multiline\n\t\t{\n\t\t\tpattern: /'(?:\\\\?[^\\\\])*?'/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t{\n\t\t\t// Strings are multiline\n\t\t\tpattern: /\"(?:\\\\?[^\\\\])*?\"/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t],\n\t'keyword': /\\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n\t'class-member': {\n\t\tpattern: /@(?!\\d)\\w+/,\n\t\talias: 'variable'\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'comment', {\n\t'multiline-comment': {\n\t\tpattern: /###[\\s\\S]+?###/,\n\t\talias: 'comment'\n\t},\n\n\t// Block regexp can contain comments and interpolation\n\t'block-regex': {\n\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\talias: 'regex',\n\t\tinside: {\n\t\t\t'comment': comment,\n\t\t\t'interpolation': interpolation\n\t\t}\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'string', {\n\t'inline-javascript': {\n\t\tpattern: /`(?:\\\\?[\\s\\S])*?`/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'punctuation'\n\t\t\t},\n\t\t\trest: Prism.languages.javascript\n\t\t}\n\t},\n\n\t// Block strings\n\t'multiline-string': [\n\t\t{\n\t\t\tpattern: /'''[\\s\\S]*?'''/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string'\n\t\t},\n\t\t{\n\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string',\n\t\t\tinside: {\n\t\t\t\tinterpolation: interpolation\n\t\t\t}\n\t\t}\n\t]\n\n});\n\nPrism.languages.insertBefore('coffeescript', 'keyword', {\n\t// Object property\n\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n});\n\ndelete Prism.languages.coffeescript['template-string'];\n\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-coffeescript.js\n// module id = 138\n// module chunks = 0","(function (Prism) {\n\tvar variable = /%%?[~:\\w]+%?|!\\S+!/;\n\tvar parameter = {\n\t\tpattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n\t\talias: 'attr-name',\n\t\tinside: {\n\t\t\t'punctuation': /:/\n\t\t}\n\t};\n\tvar string = /\"[^\"]*\"/;\n\tvar number = /(?:\\b|-)\\d+\\b/;\n\n\tPrism.languages.batch = {\n\t\t'comment': [\n\t\t\t/^::.*/m,\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'label': {\n\t\t\tpattern: /^:.*/m,\n\t\t\talias: 'property'\n\t\t},\n\t\t'command': [\n\t\t\t{\n\t\t\t\t// FOR command\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)for(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* \\S+ in \\([^)]+\\) do/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^for\\b|\\b(?:in|do)\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// IF command\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)if(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|\\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:\"[^\"]*\"|\\S+))/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^if\\b|\\b(?:not|cmdextversion|defined|errorlevel|exist)\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'operator': /\\^|==|\\b(?:equ|neq|lss|leq|gtr|geq)\\b/i\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// ELSE command\n\t\t\t\tpattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^else\\b/i\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// SET command\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)set(?: ?\\/[a-z](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^set\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t/\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/\n\t\t\t\t\t],\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'operator': /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Other commands\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^\\w+\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'label': {\n\t\t\t\t\t\tpattern: /(^\\s*):\\S+/m,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'property'\n\t\t\t\t\t},\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'operator': /\\^/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'operator': /[&@]/,\n\t\t'punctuation': /[()']/\n\t};\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-batch.js\n// module id = 139\n// module chunks = 0","Prism.languages.cpp = Prism.languages.extend('c', {\n\t'keyword': /\\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'operator': /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\\->|:{1,2}|={1,2}|\\^|~|%|&{1,2}|\\|?\\||\\?|\\*|\\/|\\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/\n});\n\nPrism.languages.insertBefore('cpp', 'keyword', {\n\t'class-name': {\n\t\tpattern: /(class\\s+)[a-z0-9_]+/i,\n\t\tlookbehind: true\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-cpp.js\n// module id = 140\n// module chunks = 0","Prism.languages.lua = {\n\t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n\t// \\z may be used to skip the following space\n\t'string': {\n\t\tpattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n\t\tgreedy: true\n\t},\n\t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n\t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n\t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n\t'operator': [\n\t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n\t\t{\n\t\t\t// Match \"..\" but don't break \"...\"\n\t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-lua.js\n// module id = 141\n// module chunks = 0","Prism.languages.livescript = {\n\t'interpolated-string': {\n\t\tpattern: /(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'variable': {\n\t\t\t\tpattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|\\d)*/m,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t}\n\t\t\t\t\t// See rest below\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': [\n\t\t{\n\t\t\tpattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /<\\[[\\s\\S]*?\\]>/,\n\t\t\tgreedy: true\n\t\t},\n\t\t/\\\\[^\\s,;\\])}]+/\n\t],\n\t'regex': [\n\t\t{\n\t\t\tpattern: /\\/\\/(\\[.+?]|\\\\.|(?!\\/\\/)[^\\\\])+\\/\\/[gimyu]{0,5}/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'comment': {\n\t\t\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /\\/(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'keyword': {\n\t\tpattern: /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n\t\tlookbehind: true\n\t},\n\t'keyword-operator': {\n\t\tpattern: /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n\t\tlookbehind: true,\n\t\talias: 'operator'\n\t},\n\t'boolean': {\n\t\tpattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n\t\tlookbehind: true\n\t},\n\t'argument': {\n\t\t// Don't match .&. nor &&\n\t\tpattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n\t\tlookbehind: true,\n\t\talias: 'variable'\n\t},\n\t'number': /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n\t'identifier': /[a-z_](?:-?[a-z]|\\d)*/i,\n\t'operator': [\n\t\t// Spaced .\n\t\t{\n\t\t\tpattern: /( )\\.(?= )/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Full list, in order:\n\t\t// .= .~ .. ...\n\t\t// .&. .^. .<<. .>>. .>>>.\n\t\t// := :: ::=\n\t\t// &&\n\t\t// || |>\n\t\t// < << <<< <<<<\n\t\t// <- <-- <-! <--!\n\t\t// <~ <~~ <~! <~~!\n\t\t// <| <= >> >= >?\n\t\t// - -- -> -->\n\t\t// + ++\n\t\t// @ @@\n\t\t// % %%\n\t\t// * **\n\t\t// ! != !~=\n\t\t// !~> !~~>\n\t\t// !-> !-->\n\t\t// ~ ~> ~~> ~=\n\t\t// = ==\n\t\t// ^ ^^\n\t\t// / ?\n\t\t/\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n\t],\n\t'punctuation': /[(){}\\[\\]|.,:;`]/\n};\n\nPrism.languages.livescript['interpolated-string'].inside['interpolation'].inside.rest = Prism.languages.livescript;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-livescript.js\n// module id = 142\n// module chunks = 0","(function(Prism) {\n\tvar funcPattern = /\\\\([^a-z()[\\]]|[a-z\\*]+)/i,\n\t insideEqu = {\n\t\t 'equation-command': {\n\t\t\t pattern: funcPattern,\n\t\t\t alias: 'regex'\n\t\t }\n\t };\n\n\tPrism.languages.latex = {\n\t\t'comment': /%.*/m,\n\t\t// the verbatim environment prints whitespace to the document\n\t\t'cdata': {\n\t\t\tpattern: /(\\\\begin\\{((?:verbatim|lstlisting)\\*?)\\})([\\s\\S]*?)(?=\\\\end\\{\\2\\})/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t/*\n\t\t * equations can be between $ $ or \\( \\) or \\[ \\]\n\t\t * (all are multiline)\n\t\t */\n\t\t'equation': [\n\t\t\t{\n\t\t\t\tpattern: /\\$(?:\\\\?[\\s\\S])*?\\$|\\\\\\((?:\\\\?[\\s\\S])*?\\\\\\)|\\\\\\[(?:\\\\?[\\s\\S])*?\\\\\\]/,\n\t\t\t\tinside: insideEqu,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\\\begin\\{((?:equation|math|eqnarray|align|multline|gather)\\*?)\\})([\\s\\S]*?)(?=\\\\end\\{\\2\\})/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: insideEqu,\n\t\t\t\talias: 'string'\n\t\t\t}\n\t\t],\n\t\t/*\n\t\t * arguments which are keywords or references are highlighted\n\t\t * as keywords\n\t\t */\n\t\t'keyword': {\n\t\t\tpattern: /(\\\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'url': {\n\t\t\tpattern: /(\\\\url\\{)[^}]+(?=\\})/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t/*\n\t\t * section or chapter headlines are highlighted as bold so that\n\t\t * they stand out more\n\t\t */\n\t\t'headline': {\n\t\t\tpattern: /(\\\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\}(?:\\[[^\\]]+\\])?)/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'function': {\n\t\t\tpattern: funcPattern,\n\t\t\talias: 'selector'\n\t\t},\n\t\t'punctuation': /[[\\]{}&]/\n\t};\n})(Prism);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-latex.js\n// module id = 143\n// module chunks = 0","Prism.languages.groovy = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n\t'string': [\n\t\t{\n\t\t\tpattern: /(\"\"\"|''')[\\s\\S]*?\\1|(\\$\\/)(\\$\\/\\$|[\\s\\S])*?\\/\\$/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|'|\\/)(?:\\\\?.)*?\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'number': /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?[\\d]+)?)[glidf]?\\b/i,\n\t'operator': {\n\t\tpattern: /(^|[^.])(~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.{1,2}(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n\t\tlookbehind: true\n\t},\n\t'punctuation': /\\.+|[{}[\\];(),:$]/\n});\n\nPrism.languages.insertBefore('groovy', 'string', {\n\t'shebang': {\n\t\tpattern: /#!.+/,\n\t\talias: 'comment'\n\t}\n});\n\nPrism.languages.insertBefore('groovy', 'punctuation', {\n\t'spock-block': /\\b(setup|given|when|then|and|cleanup|expect|where):/\n});\n\nPrism.languages.insertBefore('groovy', 'function', {\n\t'annotation': {\n\t\talias: 'punctuation',\n\t\tpattern: /(^|[^.])@\\w+/,\n\t\tlookbehind: true\n\t}\n});\n\n// Handle string interpolation\nPrism.hooks.add('wrap', function(env) {\n\tif (env.language === 'groovy' && env.type === 'string') {\n\t\tvar delimiter = env.content[0];\n\n\t\tif (delimiter != \"'\") {\n\t\t\tvar pattern = /([^\\\\])(\\$(\\{.*?\\}|[\\w\\.]+))/;\n\t\t\tif (delimiter === '$') {\n\t\t\t\tpattern = /([^\\$])(\\$(\\{.*?\\}|[\\w\\.]+))/;\n\t\t\t}\n\n\t\t\t// To prevent double HTML-encoding we have to decode env.content first\n\t\t\tenv.content = env.content.replace(/</g, '<').replace(/&/g, '&');\n\n\t\t\tenv.content = Prism.highlight(env.content, {\n\t\t\t\t'expression': {\n\t\t\t\t\tpattern: pattern,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: Prism.languages.groovy\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tenv.classes.push(delimiter === '/' ? 'regex' : 'gstring');\n\t\t}\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-groovy.js\n// module id = 144\n// module chunks = 0","Prism.languages.graphql = {\n\t'comment': /#.*/,\n\t'string': {\n\t\tpattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n\t\tgreedy: true\n\t},\n\t'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'variable': /\\$[a-z_]\\w*/i,\n\t'directive': {\n\t\tpattern: /@[a-z_]\\w*/i,\n\t\talias: 'function'\n\t},\n\t'attr-name': /[a-z_]\\w*(?=\\s*:)/i,\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /(fragment\\s+(?!on)[a-z_]\\w*\\s+|\\.\\.\\.\\s*)on\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t/\\b(?:query|fragment|mutation)\\b/\n\t],\n\t'operator': /!|=|\\.{3}/,\n\t'punctuation': /[!(){}\\[\\]:=,]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-graphql.js\n// module id = 145\n// module chunks = 0","Prism.languages.nginx = Prism.languages.extend('clike', {\n 'comment': {\n pattern: /(^|[^\"{\\\\])#.*/,\n lookbehind: true\n },\n 'keyword': /\\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|server|events|location|include|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\\b/i,\n});\n\nPrism.languages.insertBefore('nginx', 'keyword', {\n 'variable': /\\$[a-z_]+/i\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-nginx.js\n// module id = 146\n// module chunks = 0","Prism.languages.erlang = {\n\t'comment': /%.+/,\n\t'string': {\n\t\tpattern: /\"(?:\\\\?.)*?\"/,\n\t\tgreedy: true\n\t},\n\t'quoted-function': {\n\t\tpattern: /'(?:\\\\.|[^'\\\\])+'(?=\\()/,\n\t\talias: 'function'\n\t},\n\t'quoted-atom': {\n\t\tpattern: /'(?:\\\\.|[^'\\\\])+'/,\n\t\talias: 'atom'\n\t},\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'keyword': /\\b(?:fun|when|case|of|end|if|receive|after|try|catch)\\b/,\n\t'number': [\n\t\t/\\$\\\\?./,\n\t\t/\\d+#[a-z0-9]+/i,\n\t\t/(?:\\b|-)\\d*\\.?\\d+([Ee][+-]?\\d+)?\\b/\n\t],\n\t'function': /\\b[a-z][\\w@]*(?=\\()/,\n\t'variable': {\n\t\t// Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n\t\tpattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n\t\tlookbehind: true\n\t},\n\t'operator': [\n\t\t/[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\\b/,\n\t\t{\n\t\t\t// We don't want to match <<\n\t\t\tpattern: /(^|[^<])<(?!<)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// We don't want to match >>\n\t\t\tpattern: /(^|[^>])>(?!>)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'atom': /\\b[a-z][\\w@]*/,\n\t'punctuation': /[()[\\]{}:;,.#|]|<<|>>/\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-erlang.js\n// module id = 147\n// module chunks = 0","Prism.languages.powershell = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^`])<#[\\s\\S]*?#>/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^`])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': [\n\t\t{\n\t\t\tpattern: /\"(`?[\\s\\S])*?\"/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': {\n\t\t\t\t\tpattern: /[^`]\\$\\(.*?\\)/,\n\t\t\t\t\t// Populated at end of file\n\t\t\t\t\tinside: {}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /'([^']|'')*'/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t// Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n\t'namespace': /\\[[a-z][\\s\\S]*?\\]/i,\n\t'boolean': /\\$(true|false)\\b/i,\n\t'variable': /\\$\\w+\\b/i,\n\t// Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n\t// Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t// Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t'function': [\n\t\t/\\b(Add-(Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(Csv|Json|StringData)|Convert-Path|ConvertTo-(Csv|Html|Json|Xml)|Copy-(Item|ItemProperty)|Debug-Process|Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(Custom|List|Table|Wide)|Get-(Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(Command|Object)|Move-(Item|ItemProperty)|New-(Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(Job|PSSession)|Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(Computer|Service)|Restore-Computer|Resume-(Job|Service)|Save-Help|Select-(Object|String|Xml)|Send-MailMessage|Set-(Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(Job|Process|Service|Sleep|Transaction)|Stop-(Computer|Job|Process|Service)|Suspend-(Job|Service)|Tee-Object|Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(Event|PSSessionConfiguration)|Update-(FormatData|Help|List|TypeData)|Use-Transaction|Wait-(Event|Job|Process)|Where-Object|Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\\b/i,\n\t\t/\\b(ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n\t],\n\t// per http://technet.microsoft.com/en-us/library/hh847744.aspx\n\t'keyword': /\\b(Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n\t'operator': {\n\t\tpattern: /(\\W?)(!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(and|x?or)|(Not)?(Like|Match|Contains|In)|Replace|Join|is(Not)?|as)\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n\t\tlookbehind: true\n\t},\n\t'punctuation': /[|{}[\\];(),.]/\n};\n\n// Variable interpolation inside strings, and nested expressions\nPrism.languages.powershell.string[0].inside.boolean = Prism.languages.powershell.boolean;\nPrism.languages.powershell.string[0].inside.variable = Prism.languages.powershell.variable;\nPrism.languages.powershell.string[0].inside.function.inside = Prism.util.clone(Prism.languages.powershell);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-powershell.js\n// module id = 148\n// module chunks = 0","Prism.languages.makefile = {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|.)*/,\n\t\tlookbehind: true\n\t},\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\n\t// Built-in target names\n\t'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n\n\t// Targets\n\t'symbol': {\n\t\tpattern: /^[^:=\\r\\n]+(?=\\s*:(?!=))/m,\n\t\tinside: {\n\t\t\t'variable': /\\$+(?:[^(){}:#=\\s]+|(?=[({]))/\n\t\t}\n\t},\n\t'variable': /\\$+(?:[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n\n\t'keyword': [\n\t\t// Directives\n\t\t/-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n\t\t// Functions\n\t\t{\n\t\t\tpattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'operator': /(?:::|[?:+!])?=|[|@]/,\n\t'punctuation': /[:;(){}]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-makefile.js\n// module id = 149\n// module chunks = 0","Prism.languages.markdown = Prism.languages.extend('markup', {});\nPrism.languages.insertBefore('markdown', 'prolog', {\n\t'blockquote': {\n\t\t// > ...\n\t\tpattern: /^>(?:[\\t ]*>)*/m,\n\t\talias: 'punctuation'\n\t},\n\t'code': [\n\t\t{\n\t\t\t// Prefixed by 4 spaces or 1 tab\n\t\t\tpattern: /^(?: {4}|\\t).+/m,\n\t\t\talias: 'keyword'\n\t\t},\n\t\t{\n\t\t\t// `code`\n\t\t\t// ``code``\n\t\t\tpattern: /``.+?``|`[^`\\n]+`/,\n\t\t\talias: 'keyword'\n\t\t}\n\t],\n\t'title': [\n\t\t{\n\t\t\t// title 1\n\t\t\t// =======\n\n\t\t\t// title 2\n\t\t\t// -------\n\t\t\tpattern: /\\w+.*(?:\\r?\\n|\\r)(?:==+|--+)/,\n\t\t\talias: 'important',\n\t\t\tinside: {\n\t\t\t\tpunctuation: /==+$|--+$/\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// # title 1\n\t\t\t// ###### title 6\n\t\t\tpattern: /(^\\s*)#+.+/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'important',\n\t\t\tinside: {\n\t\t\t\tpunctuation: /^#+|#+$/\n\t\t\t}\n\t\t}\n\t],\n\t'hr': {\n\t\t// ***\n\t\t// ---\n\t\t// * * *\n\t\t// -----------\n\t\tpattern: /(^\\s*)([*-])([\\t ]*\\2){2,}(?=\\s*$)/m,\n\t\tlookbehind: true,\n\t\talias: 'punctuation'\n\t},\n\t'list': {\n\t\t// * item\n\t\t// + item\n\t\t// - item\n\t\t// 1. item\n\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n\t\tlookbehind: true,\n\t\talias: 'punctuation'\n\t},\n\t'url-reference': {\n\t\t// [id]: http://example.com \"Optional title\"\n\t\t// [id]: http://example.com 'Optional title'\n\t\t// [id]: http://example.com (Optional title)\n\t\t// [id]: \"Optional title\"\n\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n\t\tinside: {\n\t\t\t'variable': {\n\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n\t\t},\n\t\talias: 'url'\n\t},\n\t'bold': {\n\t\t// **strong**\n\t\t// __strong__\n\n\t\t// Allow only one line break\n\t\tpattern: /(^|[^\\\\])(\\*\\*|__)(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /^\\*\\*|^__|\\*\\*$|__$/\n\t\t}\n\t},\n\t'italic': {\n\t\t// *em*\n\t\t// _em_\n\n\t\t// Allow only one line break\n\t\tpattern: /(^|[^\\\\])([*_])(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /^[*_]|[*_]$/\n\t\t}\n\t},\n\t'url': {\n\t\t// [example](http://example.com \"Optional title\")\n\t\t// [example] [id]\n\t\tpattern: /!?\\[[^\\]]+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[[^\\]\\n]*\\])/,\n\t\tinside: {\n\t\t\t'variable': {\n\t\t\t\tpattern: /(!?\\[)[^\\]]+(?=\\]$)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n\t\t\t}\n\t\t}\n\t}\n});\n\nPrism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\nPrism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\nPrism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']);\nPrism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.8.3@prismjs/components/prism-markdown.js\n// module id = 150\n// module chunks = 0","module.exports = \"
    \\n
    \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/client/index.html\n// module id = 162\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///js/mditor.min.js","webpack:///webpack/bootstrap 3c01eafb01fce1935266","webpack:///./src/client/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/index.js","webpack:///./~/_mokit@3.1.3@mokit/info.json","webpack:///./~/_ntils@2.1.2@ntils/index.js","webpack:///./~/_cify@2.1.12@cify/index.js","webpack:///./~/_ntils@3.1.11@ntils/lib/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/watcher/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/observer/index.js","webpack:///./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/keys.js","webpack:///./~/_core-js@2.5.3@core-js/library/fn/object/keys.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/es6.object.keys.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_to-object.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_defined.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_object-keys.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_object-keys-internal.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_has.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_to-iobject.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_iobject.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_cof.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_array-includes.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_to-length.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_to-integer.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_to-absolute-index.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_shared-key.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_shared.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_global.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_uid.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_enum-bug-keys.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_object-sap.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_export.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_core.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_ctx.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_a-function.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_hide.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_object-dp.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_an-object.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_is-object.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_ie8-dom-define.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_descriptors.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_fails.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_dom-create.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_to-primitive.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_property-desc.js","webpack:///./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/get-own-property-descriptor.js","webpack:///./~/_core-js@2.5.3@core-js/library/fn/object/get-own-property-descriptor.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_object-gopd.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/_object-pie.js","webpack:///./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/define-property.js","webpack:///./~/_core-js@2.5.3@core-js/library/fn/object/define-property.js","webpack:///./~/_core-js@2.5.3@core-js/library/modules/es6.object.define-property.js","webpack:///./~/_mokit@3.1.3@mokit/lib/events/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/compiler.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directive.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/expression.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/text.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/each.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/scope.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/if.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/prop.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/attr.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/on.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/inner-html.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/inner-text.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/prevent.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/id.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/cloak.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/show.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/select.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/editable.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/input.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/radio.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/checkbox.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/model/prop.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/focus.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/directives/attribute.js","webpack:///./~/_mokit@3.1.3@mokit/lib/template/template.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/component.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/component-directive.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/components/index.js","webpack:///./~/_mokit@3.1.3@mokit/lib/component/components/view.js","webpack:///./src/toolbar/index.js","webpack:///./src/toolbar/items.js","webpack:///./src/toolbar/index.html","webpack:///./src/editor/index.js","webpack:///./src/editor/stack.js","webpack:///./src/editor/commands.js","webpack:///./src/editor/index.html","webpack:///./src/viewer/index.js","webpack:///./src/viewer/index.html","webpack:///./src/finder/index.js","webpack:///./src/finder/index.html","webpack:///./src/client/shortcut.js","webpack:///./~/_shortcut-key@1.0.0@shortcut-key/index.js","webpack:///./src/common/parser.js","webpack:///./~/_marked@0.3.9@marked/lib/marked.js","webpack:///./~/_prismjs@1.9.0@prismjs/prism.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-java.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-csharp.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-php.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-python.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-json.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-yaml.min.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-perl.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-go.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-bash.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-fsharp.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-typescript.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-stylus.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-less.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-sass.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-handlebars.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-applescript.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-actionscript.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-aspnet.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-basic.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-c.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-pascal.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-vim.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-swift.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-objectivec.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-sql.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-scheme.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-ruby.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-smarty.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-smalltalk.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-rust.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-r.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-d.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-dart.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-coffeescript.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-batch.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-cpp.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-lua.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-livescript.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-latex.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-groovy.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-graphql.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-nginx.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-erlang.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-powershell.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-makefile.js","webpack:///./~/_prismjs@1.9.0@prismjs/components/prism-markdown.js","webpack:///./src/client/index.html"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","mokit","Toolbar","Editor","Viewer","Finder","Shortcut","Parser","HIDDEN_CLASS_NAME","Mditor","Component","template","onInit","this","PLATFORM","navigator","platform","toLowerCase","EOL","CMD","indexOf","INDENT","shortcut","parser","onReady","_this","bind","editor","addIndent","removeIndent","event","_ulAndQuoteAutoComplete","_olAutoComplete","_keepIndent","setTimeout","$emit","components","props","height","width","preview","split","fullscreen","data","self","value","find","text","finder","show","syncScroll","offsetHeight","textarea","editorScrollHeight","scrollHeight","viewerScrollHeight","viewer","$element","editorScrollTop","scrollTop","viewerScrollTop","onChanged","onInput","onPaste","onHeadDblClick","target","tagName","getBeforeTextInLine","parts","length","count","buffer","push","insertBeforeText","join","preventDefault","prefix","substr","selectBeforeText","setSelectText","exp","trimedText","trim","test","num","parseInt","focus","blur","addCommand","item","name","handler","commands","key","allowDefault","owner","removeCommand","unbind","execCommand","mditor","toolbar","fromTextarea","classList","add","$watch","$mount","switchTextarea","contains","remove","window","info","utils","Class","Watcher","Observer","Template","EventEmitter","copy","version","use","plugin","install","isFunction","Error","ntils","noop","isNull","obj","str","replace","str1","str2","RegExp","startWith","endWith","has","hasProperty","hasOwnProperty","isString","String","isNumber","Number","isBoolean","Boolean","isElement","Element","nodeType","nodeName","attributes","ownerDocument","isText","Text","isObject","isArray","v1","Object","prototype","toString","v2","Array","v3","splice","v4","isDate","val","Date","isRegexp","toArray","array","slice","toDate","each","list","scope","listLength","i","rs","formatDate","date","format","dict","placeholder","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","w+","getDay","q+","Math","floor","S","getMilliseconds","$1","getFullYear","src","dst","igonres","getOwnPropertyDescriptor","defineProperty","ex","clone","objClone","constructor","forEach","defineFreezeProp","mix","mode","igonreNull","keys","enumerable","configurable","writable","err","create","proto","Cotr","setPrototypeOf","__proto__","getPrototypeOf","deepEqual","a","b","aKeys","bKeys","allKeys","concat","checkedMap","result","fromTo","fromNum","toNum","step","abs","newGuid","S4","random","substring","map","fn","setByPath","path","index","getByPath","unique","newArray","getFunctionArgumentNames","filter","short","maxLength","strLength","trimLength","firstUpper","toUpperCase","escapeRegExp","parseDom","_PDD_","document","createElement","innerHTML","firstNode","childNodes","cloneNode","ClassFactory","options","$name","$extends","$static","superPrototype","$super","final","_super_called_","_super_ret_","apply","arguments","$extend","getType","exec","undefined","isAsyncFunction","isGeneratorFunction","win","type","get","set","s4","toCamelCase","toSplitCase","htmlPrefilter","html","rxhtmlTag","parseHTML","parent","childNode","removeChild","calcor","first","calc","force","newValue","_interopRequireDefault","__esModule","default","_keys","_keys2","_getOwnPropertyDescriptor","_getOwnPropertyDescriptor2","_defineProperty","_defineProperty2","OBSERVER_PROP_NAME","CHANGE_EVENT_NAME","EVENT_MAX_DISPATCH_LAYER","IGNORE_REGEXPS","observer","isIgnore","shadow","oldValue","childObserver","addChild","emitChange","_wrapArray","names","_getPropertyNames","desc","clearReference","child","dispatch","eventName","_src_","_layer_","emit","parents","parentEvent","root","foundIndex","items","pop","shift","startIndex","endIndex","observe","word","some","re","toObject","$keys","it","defined","TypeError","enumBugKeys","O","toIObject","arrayIndexOf","IE_PROTO","object","IObject","cof","propertyIsEnumerable","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","toInteger","min","ceil","isNaN","max","shared","uid","global","SHARED","store","Function","__g","px","$export","core","fails","KEY","F","ctx","hide","PROTOTYPE","source","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","C","virtual","R","U","__e","aFunction","that","dP","createDesc","f","anObject","IE8_DOM_DEFINE","toPrimitive","Attributes","e","is","valueOf","bitmap","$Object","$getOwnPropertyDescriptor","pIE","gOPD","emitter","_emitter_","_isNative_","_isNativeObject","_target_","_listeners_","on","$on","$addListener","addListener","off","$off","$removeListener","removeListener","addEventListener","removeEventListener","dispatchEvent","listener","capture","_addNativeEventListener","_maxListeners","_removeNativeEventListener","_listener","canBubble","cancelAble","_emitNativeEvent","stopPropagation","descriptor","_events","createEvent","initEvent","register","Compiler","Directive","Expression","directives","commonDirectives","DEFAULT_PREFIX","elementDirectives","attributeDirectives","registerDirectives","directive","fullName","TE","_parseAttrInfo","attrName","decorates","_createDirectiveInstance","compiler","_bindHandler","sort","level","boundDirectives","attribute","node","removeAttribute","_compileElement","ElementDirective","_compileAttributes","attrInfo","AttrDirective","directiveOptions","expression","literal","mixed","_compileChildren","_compiled_","childHandler","compile","children","execute","dispose","element","classOptions","TA","LG","DirectiveClass","instanceOptions","update","_value_","LP","LS","LE","LA","LC","code","func","_compileMixedCode","_compileCode","_escapeEOL","_wrapCode","_createFunction","statements","_parseMixedCode","token","isExpr","tokens","char","nextChar","_escapeCode","#text","if","prop","attr","prevent","cloak","model","*","expr","nodeValue","Scope","mountNode","createTextNode","parentNode","insertBefore","parseExpr","eachItems","eachType","fnText","keyName","valueName","currentEachKeys","itemsFragment","createDocumentFragment","eachTarget","newScope","oldItem","newItem","appendChild","k","_handler","$substitute","_node","$target","setAttribute","attrValue","eventTarget","emiter","$event","innerText","style","display","SelectDirective","EditableDirective","InputDirective","RadioDirective","CheckboxDirective","PropDirective","getAttribute","isContentEditable","backExpr","selectedOptions","multiple","option","selected","checked","bindProp","watcher","$unWatch","state","computedName","computedValue","nameExpr","valueExpr","newComputedName","newComputeValue","render","_update","_updateTimer","clearTimeout","_onBind","_bound","disableFirst","$self","component","classOpts","mixes","extendComponent","extend","mixedClassOpts","mixItem","$options","ComponentClass","instanceOpts","$class","_onTemplateUpdate_","_createdData_","_createProperties_","properties","_createWatches_","watches","watch","$directives","_importDirectives_","$components","_importComponents_","$setParent","$callHook","$compile","$parent","$removeChild","$addChild","$children","$root","ComponentDirective","args","hook","$data","$properties","hasGetterOrSetter","_observer_","_watchers_","calcer","findIndex","w","_createElement_","_created_","$template","_template_","deferReady","append","_mounted_","_mountNode","_removed_","$appendTo","$remove","$dispatch","$broadcast","$dispose","methods","start","handleAttrs","handleContents","attrs","directiveRegexp","placeHandlers","places","querySelectorAll","place","contents","selector","content","_ready_","View","_transitioning","newComponentInstance","oldComponentInstance","componentInstance","transition","prep","go","_Component","_transition","clean","init","switchTo","newComponent","oldComponent","done","bindCommands","isActive","getItem","removeItem","addItem","replaceItem","title","wrapSelectText","icon","selectText","getSelectText","textArray","line","lang","before","after","range","getSelectRange","end","setSelectRange","container","body","filereader","FileReader","fileEle","getElementById","onchange","file","files","onload","base64Str","readAsDataURL","click","open","control","_split","Stack","ua","userAgent","isIE","match","markExp","stack","textareaEmitter","getValue","_bindCommands","_this2","onCompositionStart","_compositionLock","onCompositionEnd","_this3","_this4","_changedTimer","undo","_this5","last","valGap","redo","_this6","onDragover","onDrop","onScroll","disTwice","_this7","marks","scrollLeft","applyMarks","activeMark","activeMarkIndex","mark","scrollToMark","offsetTop","setValue","getActiveElement","activeElement","box","selectionStart","selectionEnd","setSelectionRange","_this8","setRangeText","newStart","newEnd","insertAfterText","getBeforeText","getBeforeFirstCharIndex","lastIndexOf","getBeforeWord","_this9","chars","selectAfterText","selectBeforeTextInLine","_this10","lineCount","_this11","indentRegExp","clearSelected","undoList","redoList","alert","_value","beforeEvent","parse","afterEvent","onClick","tag","href","CHECK_REGEXP","active","findWord","replaceWord","findBox","parseRegexp","forceStr","onFindEnter","keyCode","onReplaceEnter","shortcuts","_inRegion","cmd","compareArray","a1","a2","updateModifierKey","_mods","modifierMap","modifiersMatch","_downKeys","_MODIFIERS","assignKey","_handlers","getScope","mods","method","returnValue","cancelBubble","clearModifier","resetModifiers","getKeys","getMods","unbindKey","multipleKeys","j","isPressed","getPressedKeyCodes","srcElement","setScope","_scope","deleteScope","handlers","mi","addEvent","attachEvent","noConflict","previousKey","16","18","17","91","⇧","⌥","alt","⌃","ctrl","⌘","command","_MAP","backspace","tab","clear","enter","return","esc","escape","space","left","up","right","down","del","delete","home","pageup","pagedown",",",".","/","`","-","=",";","'","[","]","\\","x","charCodeAt","marked","Prism","languages","js","javascript","csharp","fsharp","sh","bash","md","markdown","py","python","yml","yaml","rb","ruby","highlights","Lexer","rules","gfm","heading","tables","renderer","Renderer","setOptions","breaks","pedantic","sanitize","smartLists","smartypants","mangle","highlight","callback","mdText","links","defaults","block","normal","InlineLexer","inline","encode","unescape","_","n","charAt","fromCharCode","regex","opt","resolveUrl","base","baseUrls","merge","pending","lex","escaped","message","silent","newline","fences","hr","nptable","lheading","blockquote","def","table","paragraph","bullet","_tag","lexer","top","bq","next","loose","cap","bull","l","depth","header","align","cells","ordered","pre","sanitizer","autolink","url","link","reflink","nolink","strong","em","br","_inside","_href","output","inLink","outputLink","codespan","image","ch","langPrefix","quote","raw","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","baseUrl","originIndependentUrl","reverse","tok","peek","parseText","row","cell","inlineLexer","_self","WorkerGlobalScope","uniqueId","manual","disableWorkerMessageHandler","util","Token","alias","o","objId","v","redef","inside","insert","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","highlightAllUnder","env","hooks","run","elements","highlightElement","language","className","textContent","Worker","worker","filename","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","matchGrammar","strarr","startPos","oneshot","patterns","pattern","lookbehind","greedy","lookbehindLength","pos","lastIndex","delNum","from","to","len","wrapped","rest","all","callbacks","matchedStr","classes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","markup","comment","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","string","property","important","function","style-attr","clike","class-name","keyword","boolean","number","operator","function-variable","template-string","interpolation","interpolation-punctuation","querySelector","fileHighlight","Extensions","ps1","psm1","bat","h","tex","extension","xhr","XMLHttpRequest","onreadystatechange","status","responseText","statusText","send","java","annotation","generic-method","preprocessor","php","constant","shell-comment","delimiter","variable","package","tokenStack","backupCode","t","triple-quoted-string","builtin","json","null","jsonp","scalar","datetime","perl","filehandle","vstring","insideString","shebang","typescript","ts","hexcode","stylus","atrule-declaration","variable-declaration","statement","property-declaration","less","mixin-usage","sass","atrule-line","variable-line","property-line","handlebars_pattern","handlebars","brackets","handlebars-comment","applescript","class","actionscript","aspnet","page-directive tag","directive tag","asp comment","asp script","basic","macro","pascal","vim","swift","objectivec","sql","scheme","symbol","smarty_pattern","smarty_litteral_start","smarty_litteral_end","smarty_litteral_mode","smarty","smarty-comment","smalltalk","block-arguments","temporary-variables","character","rust","macro-rules","closure-params","r","percent-operator","ellipsis","d","token-string","dart","metadata","coffeescript","class-member","multiline-comment","block-regex","inline-javascript","multiline-string","parameter","batch","label","cpp","lua","livescript","interpolated-string","keyword-operator","argument","identifier","funcPattern","insideEqu","equation-command","latex","equation","headline","groovy","spock-block","graphql","nginx","erlang","quoted-function","quoted-atom","atom","powershell","makefile","url-reference","bold","italic"],"mappings":"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","file":"js/mditor.min.js","sourcesContent":["/*!\n * Mditor embed version 1.3.3\n * Homepage: http://mditor.com\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar Toolbar = __webpack_require__(85);\n\tvar Editor = __webpack_require__(90);\n\tvar Viewer = __webpack_require__(95);\n\tvar Finder = __webpack_require__(98);\n\tvar Shortcut = __webpack_require__(101);\n\tvar Parser = __webpack_require__(103);\n\t\n\t__webpack_require__(152);\n\t__webpack_require__(159);\n\t__webpack_require__(160);\n\t__webpack_require__(161);\n\t\n\tvar HIDDEN_CLASS_NAME = 'mditor-hidden';\n\t\n\tvar Mditor = new mokit.Component({\n\t template: __webpack_require__(163),\n\t\n\t /*istanbul ignore next*/onInit: function onInit() {\n\t this.PLATFORM = navigator.platform.toLowerCase();\n\t this.EOL = this.PLATFORM == 'win32' ? '\\r\\n' : '\\n';\n\t this.CMD = this.PLATFORM.indexOf('mac') > -1 ? 'command' : 'ctrl';\n\t this.INDENT = ' ';\n\t this.shortcut = new Shortcut(this);\n\t this.Parser = Parser;\n\t this.parser = new Parser(this);\n\t },\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.shortcut.bind('tab', this.editor.addIndent.bind(this.editor));\n\t this.shortcut.bind('shift+tab', this.editor.removeIndent.bind(this.editor));\n\t this.shortcut.bind('enter', function (event) {\n\t /*istanbul ignore next*/_this._ulAndQuoteAutoComplete(event);\n\t /*istanbul ignore next*/_this._olAutoComplete(event);\n\t /*istanbul ignore next*/_this._keepIndent(event);\n\t }, true);\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this.$emit('ready');\n\t }, 0);\n\t },\n\t\n\t\n\t components: {\n\t Toolbar: Toolbar,\n\t Editor: Editor,\n\t Viewer: Viewer,\n\t Finder: Finder\n\t },\n\t\n\t props: {\n\t height: '400px',\n\t width: 'auto',\n\t preview: false,\n\t split: true,\n\t fullscreen: false\n\t },\n\t\n\t /*istanbul ignore next*/data: function data() {\n\t return {\n\t self: this,\n\t value: ''\n\t };\n\t },\n\t /*istanbul ignore next*/find: function find(text) {\n\t this.finder.show(text);\n\t },\n\t /*istanbul ignore next*/syncScroll: function syncScroll() {\n\t if (!this.split || this.preview) return;\n\t var offsetHeight = this.editor.textarea.offsetHeight;\n\t var editorScrollHeight = this.editor.textarea.scrollHeight;\n\t var viewerScrollHeight = this.viewer.$element.scrollHeight;\n\t var editorScrollTop = this.editor.textarea.scrollTop;\n\t var viewerScrollTop = editorScrollTop * (viewerScrollHeight - offsetHeight) / (editorScrollHeight - offsetHeight);\n\t this.viewer.$element.scrollTop = viewerScrollTop;\n\t },\n\t /*istanbul ignore next*/onChanged: function onChanged(event) {\n\t this.$emit('changed', event);\n\t this.syncScroll();\n\t },\n\t /*istanbul ignore next*/onInput: function onInput(event) {\n\t this.$emit('input', event);\n\t },\n\t /*istanbul ignore next*/onPaste: function onPaste(event) {\n\t this.$emit('paste', event);\n\t this.syncScroll();\n\t },\n\t /*istanbul ignore next*/onHeadDblClick: function onHeadDblClick(event) {\n\t if (event.target.tagName == 'I') return;\n\t this.$emit('head-dblclick', event);\n\t },\n\t /*istanbul ignore next*/_keepIndent: function _keepIndent(event) {\n\t var text = this.editor.getBeforeTextInLine();\n\t var parts = text.split(this.INDENT);\n\t if (parts.length < 2) return;\n\t var count = 0;\n\t var buffer = [this.EOL];\n\t while (parts[count] === '' && count < parts.length - 1) {\n\t count++;\n\t buffer.push(this.INDENT);\n\t }\n\t this.editor.insertBeforeText(buffer.join(''));\n\t event.preventDefault();\n\t },\n\t /*istanbul ignore next*/_ulAndQuoteAutoComplete: function _ulAndQuoteAutoComplete(event) {\n\t var text = this.editor.getBeforeTextInLine();\n\t var prefix = text.substr(0, 2);\n\t if (prefix != '- ' && prefix != '* ' && prefix != '> ') return;\n\t if (text.length > prefix.length) {\n\t this.editor.insertBeforeText(this.EOL + prefix);\n\t } else {\n\t this.editor.selectBeforeText(prefix.length);\n\t this.editor.setSelectText('');\n\t }\n\t event.preventDefault();\n\t },\n\t /*istanbul ignore next*/_olAutoComplete: function _olAutoComplete(event) {\n\t var exp = /^\\d+\\./;\n\t var text = this.editor.getBeforeTextInLine();\n\t var trimedText = text.trim();\n\t if (!exp.test(trimedText)) return;\n\t var num = trimedText.split('.')[0];\n\t if (trimedText.length > num.length + 1) {\n\t this.editor.insertBeforeText(this.EOL + (parseInt(num) + 1) + '. ');\n\t } else {\n\t this.editor.selectBeforeText(text.length);\n\t this.editor.setSelectText('');\n\t }\n\t event.preventDefault();\n\t },\n\t /*istanbul ignore next*/focus: function focus() {\n\t if (this.preview) {\n\t this.$element.focus();\n\t } else {\n\t this.editor.focus();\n\t }\n\t },\n\t /*istanbul ignore next*/blur: function blur() {\n\t this.editor.blur();\n\t },\n\t /*istanbul ignore next*/addCommand: function addCommand(item) {\n\t if (!item.name || !item.handler) return;\n\t this.commands = this.commands || {};\n\t this.commands[item.name] = item;\n\t if (item.key) {\n\t this.shortcut.bind(item.key, item.name, item.allowDefault, item.owner);\n\t }\n\t },\n\t /*istanbul ignore next*/removeCommand: function removeCommand(name) {\n\t this.commands = this.commands || {};\n\t var item = this.commands[name];\n\t if (!item) return;\n\t this.shortcut.unbind(item.key);\n\t this.commands[name] = null;\n\t delete this.commands[name];\n\t },\n\t /*istanbul ignore next*/execCommand: function execCommand(name, event) {\n\t event = event || {};\n\t event.mditor = this;\n\t event.toolbar = this.toolbar;\n\t event.editor = this.editor;\n\t this.commands[name].handler.call(this, event);\n\t }\n\t});\n\t\n\tMditor.fromTextarea = function (textarea) {\n\t textarea.classList.add(HIDDEN_CLASS_NAME);\n\t var mditor = new Mditor();\n\t mditor.value = textarea.value;\n\t mditor.$watch('value', function () {\n\t textarea.value = mditor.value;\n\t });\n\t mditor.$mount(textarea);\n\t mditor.switchTextarea = function () {\n\t if (textarea.classList.contains(HIDDEN_CLASS_NAME)) {\n\t textarea.value = mditor.value;\n\t mditor.$element.classList.add(HIDDEN_CLASS_NAME);\n\t textarea.classList.remove(HIDDEN_CLASS_NAME);\n\t } else {\n\t mditor.value = textarea.value;\n\t textarea.classList.add(HIDDEN_CLASS_NAME);\n\t mditor.$element.classList.remove(HIDDEN_CLASS_NAME);\n\t }\n\t };\n\t return mditor;\n\t};\n\t\n\tMditor.Parser = Parser;\n\t\n\tmodule.exports = window.Mditor = Mditor;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar info = __webpack_require__(2);\n\tvar utils = __webpack_require__(3);\n\tvar Class = __webpack_require__(4);\n\tvar Watcher = __webpack_require__(6);\n\tvar Observer = __webpack_require__(7);\n\tvar Template = __webpack_require__(52);\n\tvar Component = __webpack_require__(80);\n\tvar EventEmitter = __webpack_require__(51);\n\t\n\t//持载模板相关对象\n\tutils.copy(Template, Component);\n\t\n\tComponent.version = info.version;\n\tComponent.Template = Template;\n\tComponent.Watcher = Watcher;\n\tComponent.Observer = Observer;\n\tComponent.EventEmitter = EventEmitter;\n\tComponent.utils = utils;\n\tComponent.Class = Class;\n\t\n\t//定义安装插件的方法\n\tComponent.use = function (plugin) {\n\t var install = plugin.install || plugin;\n\t if (!utils.isFunction(install)) {\n\t throw new Error('Invalid Plugin');\n\t }\n\t return install.call(plugin, this);\n\t};\n\t\n\t//安装内置的路由插件\n\t//Component.use(Router);\n\t\n\tmodule.exports = Component;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = {\"name\":\"mokit\",\"version\":\"3.1.3\"}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t(function (ntils) {\n\t\n\t /**\n\t * 空函数\n\t */\n\t ntils.noop = function () { };\n\t\n\t /**\n\t * 验证一个对象是否为NULL\n\t * @method isNull\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isNull = function (obj) {\n\t return obj === null || typeof obj === \"undefined\";\n\t };\n\t\n\t /**\n\t * 除去字符串两端的空格\n\t * @method trim\n\t * @param {String} str 源字符串\n\t * @return {String} 结果字符串\n\t * @static\n\t */\n\t ntils.trim = function (str) {\n\t if (this.isNull(str)) return str;\n\t if (str.trim) {\n\t return str.trim();\n\t } else {\n\t return str.replace(/(^[\\\\s]*)|([\\\\s]*$)/g, \"\");\n\t }\n\t };\n\t\n\t /**\n\t * 替换所有\n\t * @method replace\n\t * @param {String} str 源字符串\n\t * @param {String} str1 要替换的字符串\n\t * @param {String} str2 替换为的字符串\n\t * @static\n\t */\n\t ntils.replace = function (str, str1, str2) {\n\t if (this.isNull(str)) return str;\n\t return str.replace(new RegExp(str1, 'g'), str2);\n\t };\n\t\n\t /**\n\t * 从字符串开头匹配\n\t * @method startWith\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 要匹配的字符串\n\t * @return {Boolean} 匹配结果\n\t * @static\n\t */\n\t ntils.startWith = function (str1, str2) {\n\t if (this.isNull(str1) || this.isNull(str2)) return false;\n\t return str1.indexOf(str2) === 0;\n\t };\n\t\n\t /**\n\t * 是否包含\n\t * @method contains\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 检查包括字符串\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.contains = function (str1, str2) {\n\t var self = this;\n\t if (this.isNull(str1) || this.isNull(str2)) return false;\n\t return str1.indexOf(str2) > -1;\n\t };\n\t\n\t /**\n\t * 从字符串结束匹配\n\t * @method endWidth\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 匹配字符串\n\t * @return {Boolean} 匹配结果\n\t * @static\n\t */\n\t ntils.endWith = function (str1, str2) {\n\t if (this.isNull(str1) || this.isNull(str2)) return false;\n\t return str1.indexOf(str2) === (str1.length - str2.length);\n\t };\n\t\n\t /**\n\t * 是否包含属性\n\t * @method hasProperty\n\t * @param {Object} obj 对象\n\t * @param {String} name 属性名\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.has = ntils.hasProperty = function (obj, name) {\n\t if (this.isNull(obj) || this.isNull(name)) return false;\n\t return (name in obj) || (obj.hasOwnProperty(name));\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Function\n\t * @method isFunction\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isFunction = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === \"function\";\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为String\n\t * @method isString\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isString = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === 'string' || obj instanceof String;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Number\n\t * @method isNumber\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isNumber = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === 'number' || obj instanceof Number;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Boolean\n\t * @method isBoolean\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isBoolean = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === 'boolean' || obj instanceof Boolean;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为HTML Element\n\t * @method isElement\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isElement = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t if (window.Element) {\n\t return obj instanceof Element;\n\t } else {\n\t return (obj.tagName && obj.nodeType && obj.nodeName && obj.attributes && obj.ownerDocument);\n\t }\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为HTML Text Element\n\t * @method isText\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isText = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return obj instanceof Text;\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Object\n\t * @method isObject\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isObject = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t return typeof obj === \"object\";\n\t };\n\t\n\t /**\n\t * 验证一个对象是否为Array或伪Array\n\t * @method isArray\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isArray = function (obj) {\n\t if (this.isNull(obj)) return false;\n\t var v1 = Object.prototype.toString.call(obj) === '[object Array]';\n\t var v2 = obj instanceof Array;\n\t var v3 = !this.isString(obj) && this.isNumber(obj.length) && this.isFunction(obj.splice);\n\t var v4 = !this.isString(obj) && this.isNumber(obj.length) && obj[0];\n\t return v1 || v2 || v3 || v4;\n\t };\n\t\n\t /**\n\t * 验证是不是一个日期对象\n\t * @method isDate\n\t * @param {Object} val 要检查的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isDate = function (val) {\n\t if (this.isNull(val)) return false;\n\t return val instanceof Date;\n\t };\n\t\n\t /**\n\t * 验证是不是一个正则对象\n\t * @method isDate\n\t * @param {Object} val 要检查的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\t ntils.isRegexp = function (val) {\n\t return val instanceof RegExp;\n\t };\n\t\n\t /**\n\t * 转换为数组\n\t * @method toArray\n\t * @param {Array|Object} array 伪数组\n\t * @return {Array} 转换结果数组\n\t * @static\n\t */\n\t ntils.toArray = function (array) {\n\t if (this.isNull(array)) return [];\n\t return Array.prototype.slice.call(array);\n\t };\n\t\n\t /**\n\t * 转为日期格式\n\t * @method toDate\n\t * @param {Number|String} val 日期字符串或整型数值\n\t * @return {Date} 日期对象\n\t * @static\n\t */\n\t ntils.toDate = function (val) {\n\t var self = this;\n\t if (self.isNumber(val))\n\t return new Date(val);\n\t else if (self.isString(val))\n\t return new Date(self.replace(self.replace(val, '-', '/'), 'T', ' '));\n\t else if (self.isDate(val))\n\t return val;\n\t else\n\t return null;\n\t };\n\t\n\t /**\n\t * 遍历一个对像或数组\n\t * @method each\n\t * @param {Object or Array} obj 要遍历的数组或对象\n\t * @param {Function} fn 处理函数\n\t * @return {void} 无返回值\n\t * @static\n\t */\n\t ntils.each = function (list, handler, scope) {\n\t if (this.isNull(list) || this.isNull(handler)) return;\n\t if (this.isArray(list)) {\n\t var listLength = list.length;\n\t for (var i = 0; i < listLength; i++) {\n\t var rs = handler.call(scope || list[i], i, list[i]);\n\t if (!this.isNull(rs)) return rs;\n\t }\n\t } else {\n\t for (var key in list) {\n\t var rs = handler.call(scope || list[key], key, list[key]);\n\t if (!this.isNull(rs)) return rs;\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * 格式化日期\n\t * @method formatDate\n\t * @param {Date|String|Number} date 日期\n\t * @param {String} format 格式化字符串\n\t * @param {object} dict 反译字典\n\t * @return {String} 格式化结果\n\t * @static\n\t */\n\t ntils.formatDate = function (date, format, dict) {\n\t if (this.isNull(format) || this.isNull(date)) return date;\n\t date = this.toDate(date);\n\t dict = dict || {};\n\t var placeholder = {\n\t \"M+\": date.getMonth() + 1, //month\n\t \"d+\": date.getDate(), //day\n\t \"h+\": date.getHours(), //hour\n\t \"m+\": date.getMinutes(), //minute\n\t \"s+\": date.getSeconds(), //second\n\t \"w+\": date.getDay(), //week\n\t \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n\t \"S\": date.getMilliseconds() //millisecond\n\t }\n\t if (/(y+)/.test(format)) {\n\t format = format.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n\t }\n\t for (var key in placeholder) {\n\t if (new RegExp(\"(\" + key + \")\").test(format)) {\n\t var value = placeholder[key];\n\t value = dict[value] || value;\n\t format = format.replace(RegExp.$1, RegExp.$1.length == 1\n\t ? value : (\"00\" + value).substr((\"\" + value).length));\n\t }\n\t }\n\t return format;\n\t };\n\t\n\t /**\n\t * 拷贝对象\n\t * @method copy\n\t * @param {Object} src 源对象\n\t * @param {Object} dst 目标对象\n\t * @static\n\t */\n\t ntils.copy = function (src, dst, igonres) {\n\t dst = dst || (this.isArray(src) ? [] : {});\n\t this.each(src, function (key) {\n\t if (igonres && igonres.indexOf(key) > -1) return;\n\t delete dst[key];\n\t if (Object.getOwnPropertyDescriptor) {\n\t try {\n\t Object.defineProperty(dst, key, Object.getOwnPropertyDescriptor(src, key));\n\t } catch (ex) {\n\t dst[key] = src[key];\n\t }\n\t } else {\n\t dst[key] = src[key];\n\t }\n\t })\n\t return dst;\n\t };\n\t\n\t /**\n\t * 深度克隆对象\n\t * @method clone\n\t * @param {Object} src 源对象\n\t * @return {Object} 新对象\n\t * @static\n\t */\n\t ntils.clone = function (src, igonres) {\n\t if (this.isNull(src) ||\n\t this.isString(src) ||\n\t this.isNumber(src) ||\n\t this.isBoolean(src) ||\n\t this.isDate(src)) {\n\t return src;\n\t }\n\t var objClone = src;\n\t try {\n\t objClone = new src.constructor();\n\t } catch (ex) { }\n\t this.each(src, function (key, value) {\n\t if (objClone[key] != value && !this.contains(igonres, key)) {\n\t if (this.isObject(value)) {\n\t objClone[key] = this.clone(value, igonres);\n\t } else {\n\t objClone[key] = value;\n\t }\n\t }\n\t }, this);\n\t ['toString', 'valueOf'].forEach(function (key) {\n\t if (this.contains(igonres, key)) return;\n\t this.defineFreezeProp(objClone, key, src[key]);\n\t }, this);\n\t return objClone;\n\t };\n\t\n\t /**\n\t * 合并对象\n\t * @method mix\n\t * @return 合并后的对象\n\t * @param {Object} dst 目标对象\n\t * @param {Object} src 源对象\n\t * @param {Array} igonres 忽略的属性名,\n\t * @param {Number} mode 模式\n\t */\n\t ntils.mix = function (dst, src, igonres, mode, igonreNull) {\n\t //根据模式来判断,默认是Obj to Obj的 \n\t if (mode) {\n\t switch (mode) {\n\t case 1: // proto to proto \n\t return ntils.mix(dst.prototype, src.prototype, igonres, 0);\n\t case 2: // object to object and proto to proto \n\t ntils.mix(dst.prototype, src.prototype, igonres, 0);\n\t break; // pass through \n\t case 3: // proto to static \n\t return ntils.mix(dst, src.prototype, igonres, 0);\n\t case 4: // static to proto \n\t return ntils.mix(dst.prototype, src, igonres, 0);\n\t default: // object to object is what happens below \n\t }\n\t }\n\t //---\n\t src = src || {};\n\t dst = dst || (this.isArray(src) ? [] : {});\n\t this.keys(src).forEach(function (key) {\n\t if (this.contains(igonres, key)) return;\n\t if (igonreNull && this.isNull(src[key])) return;\n\t if (this.isObject(src[key]) &&\n\t (src[key].constructor == Object ||\n\t src[key].constructor == Array ||\n\t src[key].constructor == null)) {\n\t dst[key] = ntils.mix(dst[key], src[key], igonres, 0, igonreNull);\n\t } else {\n\t dst[key] = src[key];\n\t }\n\t }, this);\n\t return dst;\n\t };\n\t\n\t /**\n\t * 定义不可遍历的属性\n\t **/\n\t ntils.defineFreezeProp = function (obj, name, value) {\n\t try {\n\t Object.defineProperty(obj, name, {\n\t value: value,\n\t enumerable: false,\n\t configurable: true, //能不能重写定义\n\t writable: false //能不能用「赋值」运算更改\n\t });\n\t } catch (err) {\n\t obj[name] = value;\n\t }\n\t };\n\t\n\t /**\n\t * 获取所有 key \n\t */\n\t ntils.keys = function (obj) {\n\t if (Object.keys) return Object.keys(obj);\n\t var keys = [];\n\t this.each(obj, function (key) {\n\t keys.push(key);\n\t });\n\t return keys;\n\t };\n\t\n\t /**\n\t * 创建一个对象\n\t */\n\t ntils.create = function (proto, props) {\n\t if (Object.create) return Object.create(proto, props);\n\t var Cotr = function () { };\n\t Cotr.prototype = proto;\n\t var obj = new Cotr();\n\t if (props) this.copy(props, obj);\n\t return obj;\n\t };\n\t\n\t /**\n\t * 设置 proto\n\t * 在不支持 setPrototypeOf 也不支持 __proto__ 的浏览器\n\t * 中,会采用 copy 方式\n\t */\n\t ntils.setPrototypeOf = function (obj, proto) {\n\t if (Object.setPrototypeOf) {\n\t return Object.setPrototypeOf(obj, proto || this.create(null));\n\t } else {\n\t if (!('__proto__' in Object)) this.copy(proto, obj);\n\t obj.__proto__ = proto;\n\t }\n\t };\n\t\n\t /**\n\t * 获取 proto\n\t */\n\t ntils.getPrototypeOf = function (obj) {\n\t if (obj.__proto__) return obj.__proto__;\n\t if (Object.getPrototypeOf) return Object.getPrototypeOf(obj);\n\t if (obj.constructor) return obj.constructor.prototype;\n\t };\n\t\n\t /**\n\t * 是否深度相等\n\t */\n\t ntils.deepEqual = function (a, b) {\n\t if (a === b) return true;\n\t if (!this.isObject(a) || !this.isObject(b)) return false;\n\t var aKeys = this.keys(a);\n\t var bKeys = this.keys(b);\n\t if (aKeys.length !== bKeys.length) return false;\n\t var allKeys = aKeys.concat(bKeys);\n\t var checkedMap = this.create(null);\n\t var result = true;\n\t this.each(allKeys, function (i, key) {\n\t if (checkedMap[key]) return;\n\t if (!this.deepEqual(a[key], b[key])) result = false;\n\t checkedMap[key] = true;\n\t }, this);\n\t return result;\n\t };\n\t\n\t /**\n\t * 从一个数值循环到别一个数\n\t * @param {number} fromNum 开始数值\n\t * @param {Number} toNum 结束数值\n\t * @param {Number} step 步长值\n\t * @param {function} handler 执行函数\n\t * @returns {void} 无返回\n\t */\n\t ntils.fromTo = function (fromNum, toNum, step, handler) {\n\t if (!handler) handler = [step, step = handler][0];\n\t step = Math.abs(step || 1);\n\t if (fromNum < toNum) {\n\t for (var i = fromNum; i <= toNum; i += step) handler(i);\n\t } else {\n\t for (var i = fromNum; i >= toNum; i -= step) handler(i);\n\t }\n\t };\n\t\n\t /**\n\t * 生成一个Guid\n\t * @method newGuid\n\t * @return {String} GUID字符串\n\t * @static\n\t */\n\t ntils.newGuid = function () {\n\t var S4 = function () {\n\t return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n\t };\n\t return (S4() + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + S4() + S4());\n\t };\n\t\n\t /**\n\t * 对象变换\n\t **/\n\t ntils.map = function (list, fn) {\n\t var buffer = this.isArray(list) ? [] : {};\n\t this.each(list, function (name, value) {\n\t buffer[name] = fn(name, value);\n\t });\n\t return buffer;\n\t };\n\t\n\t /**\n\t * 通过路径设置属性值\n\t */\n\t ntils.setByPath = function (obj, path, value) {\n\t if (this.isNull(obj) || this.isNull(path) || path === '') {\n\t return;\n\t }\n\t if (!this.isArray(path)) {\n\t path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n\t }\n\t this.each(path, function (index, name) {\n\t if (this.isNull(name) || name.length < 1) return;\n\t if (index === path.length - 1) {\n\t obj[name] = value;\n\t } else {\n\t obj[name] = obj[name] || {};\n\t obj = obj[name];\n\t }\n\t }, this);\n\t };\n\t\n\t /**\n\t * 通过路径获取属性值\n\t */\n\t ntils.getByPath = function (obj, path) {\n\t if (this.isNull(obj) || this.isNull(path) || path === '') {\n\t return obj;\n\t }\n\t if (!this.isArray(path)) {\n\t path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n\t }\n\t this.each(path, function (index, name) {\n\t if (this.isNull(name) || name.length < 1) return;\n\t if (!this.isNull(obj)) obj = obj[name];\n\t }, this);\n\t return obj;\n\t };\n\t\n\t /**\n\t * 数组去重\n\t **/\n\t ntils.unique = function (array) {\n\t if (this.isNull(array)) return array;\n\t var newArray = [];\n\t this.each(array, function (i, value) {\n\t if (newArray.indexOf(value) > -1) return;\n\t newArray.push(value);\n\t });\n\t return newArray;\n\t };\n\t\n\t /**\n\t * 解析 function 的参数列表\n\t **/\n\t ntils.getFunctionArgumentNames = function (fn) {\n\t if (!fn) return [];\n\t var src = fn.toString();\n\t var parts = src.split(')')[0].split('=>')[0].split('(');\n\t return (parts[1] || parts[0]).split(',').map(function (name) {\n\t return name.trim();\n\t }).filter(function (name) {\n\t return name != 'function';\n\t });\n\t };\n\t\n\t /**\n\t * 缩短字符串\n\t */\n\t ntils.short = function (str, maxLength) {\n\t if (!str) return str;\n\t maxLength = maxLength || 40;\n\t var strLength = str.length;\n\t var trimLength = maxLength / 2;\n\t return strLength > maxLength ? str.substr(0, trimLength) + '...' + str.substr(strLength - trimLength) : str;\n\t };\n\t\n\t /**\n\t * 首字母大写\n\t */\n\t ntils.firstUpper = function (str) {\n\t if (this.isNull(str)) return;\n\t return str.substring(0, 1).toUpperCase() + str.substring(1);\n\t };\n\t\n\t /**\n\t * 编码正则字符串\n\t */\n\t ntils.escapeRegExp = function (str) {\n\t return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t };\n\t\n\t /**\n\t * 解析字符串为 dom \n\t * @param {string} str 字符串\n\t * @returns {HTMLNode} 解析后的 DOM \n\t */\n\t ntils.parseDom = function (str) {\n\t this._PDD_ = this._PDD_ || document.createElement('div');\n\t this._PDD_.innerHTML = ntils.trim(str);\n\t var firstNode = this._PDD_.childNodes[0];\n\t //先 clone 一份再通过 innerHTML 清空\n\t //否则 IE9 下,清空时会导出返回的 DOM 没有子结点\n\t if (firstNode) firstNode = firstNode.cloneNode(true);\n\t this._PDD_.innerHTML = '';\n\t return firstNode;\n\t };\n\t\n\t})(( false) ? (window.ntils = {}) : exports);\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tconst utils = __webpack_require__(5);\n\t\n\tfunction ClassFactory(options) {\n\t //处理 options\n\t options = options || utils.create(null);\n\t options.$name = options.$name || 'Class';\n\t options.$extends = options.$extends || ClassFactory;\n\t options.$static = options.$static || utils.create(null);\n\t //处理父类 prototype\n\t var superPrototype = utils.isFunction(options.$extends) ?\n\t options.$extends.prototype : options.$extends;\n\t //定义新类\n\t var Class = function () {\n\t //处理 super\n\t if (!this.$super) {\n\t utils.final(this, '$super', function () {\n\t if (this._super_called_) return this._super_ret_;\n\t this._super_called_ = true;\n\t if (utils.isFunction(options.$extends)) {\n\t this._super_ret_ = options.$extends.apply(this, arguments);\n\t //这几行确保可继承于数组\n\t if (this._super_ret_) {\n\t var proto = utils.getPrototypeOf(this);\n\t utils.setPrototypeOf(proto, this._super_ret_);\n\t }\n\t } else {\n\t this._super_ret_ = options.$extends;\n\t }\n\t return this._super_ret_;\n\t });\n\t for (var name in superPrototype) {\n\t var value = superPrototype[name];\n\t if (utils.isFunction(value)) {\n\t this.$super[name] = value.bind(this);\n\t } else {\n\t this.$super[name] = value;\n\t }\n\t }\n\t }\n\t //调用构造\n\t if (utils.isFunction(options.constructor) &&\n\t options.constructor !== Object) {\n\t return options.constructor.apply(this, arguments);\n\t } else {\n\t //如果没有实现 constructor 则调用父类构造\n\t this.$super.apply(this, arguments);\n\t }\n\t };\n\t //处理 prototype\n\t Class.prototype = utils.create(superPrototype);\n\t utils.copy(options, Class.prototype);\n\t utils.final(Class.prototype, '$class', Class);\n\t //处理静态成员\n\t utils.copy(options.$static, Class);\n\t if (utils.isFunction(options.$extends)) {\n\t utils.setPrototypeOf(Class, options.$extends);\n\t }\n\t if (!options.$extends.$extend) {\n\t utils.copy(ClassFactory, Class);\n\t }\n\t utils.final(Class, '$super', options.$extends);\n\t //--\n\t return Class;\n\t}\n\t\n\t//定义扩展方法\n\tClassFactory.$extend = function (options) {\n\t options.$extends = this;\n\t return new ClassFactory(options);\n\t};\n\t\n\tClassFactory.Class = ClassFactory;\n\tmodule.exports = ClassFactory;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t/**\n\t * 空函数\n\t */\n\tfunction noop() { }\n\t\n\tfunction toString(obj) {\n\t return Object.prototype.toString.call(obj);\n\t}\n\t\n\tfunction getType(obj) {\n\t var str = toString(obj);\n\t return (/^\\[object (.+)\\]$/i.exec(str))[1];\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为NULL\n\t * @method isNull\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isNull(obj) {\n\t return obj === undefined || obj === null;\n\t}\n\t\n\t/**\n\t * 除去字符串两端的空格\n\t * @method trim\n\t * @param {String} str 源字符串\n\t * @return {String} 结果字符串\n\t * @static\n\t */\n\tfunction trim(str) {\n\t if (isNull(str)) return str;\n\t if (str.trim) {\n\t return str.trim();\n\t } else {\n\t return str.replace(/(^[\\\\s]*)|([\\\\s]*$)/g, \"\");\n\t }\n\t}\n\t\n\t/**\n\t * 替换所有\n\t * @method replace\n\t * @param {String} str 源字符串\n\t * @param {String} str1 要替换的字符串\n\t * @param {String} str2 替换为的字符串\n\t * @static\n\t */\n\tfunction replace(str, str1, str2) {\n\t if (isNull(str)) return str;\n\t return str.replace(new RegExp(str1, 'g'), str2);\n\t}\n\t\n\t/**\n\t * 从字符串开头匹配\n\t * @method startWith\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 要匹配的字符串\n\t * @return {Boolean} 匹配结果\n\t * @static\n\t */\n\tfunction startWith(str1, str2) {\n\t if (isNull(str1) || isNull(str2)) return false;\n\t return str1.indexOf(str2) === 0;\n\t}\n\t\n\t/**\n\t * 是否包含\n\t * @method contains\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 检查包括字符串\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction contains(str1, str2) {\n\t if (isNull(str1) || isNull(str2)) return false;\n\t return str1.indexOf(str2) > -1;\n\t}\n\t\n\t/**\n\t * 从字符串结束匹配\n\t * @method endWidth\n\t * @param {String} str1 源字符串\n\t * @param {String} str2 匹配字符串\n\t * @return {Boolean} 匹配结果\n\t * @static\n\t */\n\tfunction endWith(str1, str2) {\n\t if (isNull(str1) || isNull(str2)) return false;\n\t return str1.indexOf(str2) === (str1.length - str2.length);\n\t}\n\t\n\t/**\n\t * 是否包含属性\n\t * @method hasProperty\n\t * @param {Object} obj 对象\n\t * @param {String} name 属性名\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction has(obj, name) {\n\t if (isNull(obj) || isNull(name)) return false;\n\t return (name in obj) || (obj.hasOwnProperty(name));\n\t}\n\tvar hasProperty = has;\n\t\n\t/**\n\t * 验证一个对象是否为Function\n\t * @method isFunction\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isFunction(obj) {\n\t if (isNull(obj)) return false;\n\t return typeof obj === \"function\";\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为 AsyncFunction\n\t * @method isAsyncFunction\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isAsyncFunction(obj) {\n\t if (isNull(obj)) return false;\n\t return getType(obj) === \"AsyncFunction\";\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为 GeneratorFunction\n\t * @method isGeneratorFunction\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isGeneratorFunction(obj) {\n\t if (isNull(obj)) return false;\n\t return getType(obj) === \"GeneratorFunction\";\n\t}\n\t\n\t\n\t/**\n\t * 验证一个对象是否为String\n\t * @method isString\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isString(obj) {\n\t if (isNull(obj)) return false;\n\t return getType(obj) === 'String';\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为Number\n\t * @method isNumber\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isNumber(obj) {\n\t if (isNull(obj)) return false;\n\t return getType(obj) === 'Number';\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为Boolean\n\t * @method isBoolean\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isBoolean(obj) {\n\t if (isNull(obj)) return false;\n\t return getType(obj) === 'Boolean';\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为HTML Element\n\t * @method isElement\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isElement(obj) {\n\t if (isNull(obj)) return false;\n\t if (win.Element) {\n\t return obj instanceof Element;\n\t } else {\n\t return (obj.tagName && obj.nodeType &&\n\t obj.nodeName && obj.attributes &&\n\t obj.ownerDocument);\n\t }\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为HTML Text Element\n\t * @method isText\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isText(obj) {\n\t if (isNull(obj)) return false;\n\t return obj instanceof Text;\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为Object\n\t * @method isObject\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isObject(obj) {\n\t if (isNull(obj)) return false;\n\t var type = getType(obj);\n\t return type === 'Object' || type === 'Array';\n\t}\n\t\n\t/**\n\t * 验证一个对象是否为Array或伪Array\n\t * @method isArray\n\t * @param {Object} obj 要验证的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isArray(obj) {\n\t if (isNull(obj)) return false;\n\t var v1 = getType(obj) === 'Array';\n\t var v2 = obj instanceof Array;\n\t var v3 = !isString(obj) && isNumber(obj.length) && isFunction(obj.splice);\n\t var v4 = !isString(obj) && isNumber(obj.length) && obj[0];\n\t return v1 || v2 || v3 || v4;\n\t}\n\t\n\t/**\n\t * 验证是不是一个日期对象\n\t * @method isDate\n\t * @param {Object} val 要检查的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isDate(val) {\n\t if (isNull(val)) return false;\n\t return val instanceof Date;\n\t}\n\t\n\t/**\n\t * 验证是不是一个正则对象\n\t * @method isDate\n\t * @param {Object} val 要检查的对象\n\t * @return {Boolean} 结果\n\t * @static\n\t */\n\tfunction isRegexp(val) {\n\t return val instanceof RegExp;\n\t}\n\t\n\t/**\n\t * 转换为数组\n\t * @method toArray\n\t * @param {Array|Object} array 伪数组\n\t * @return {Array} 转换结果数组\n\t * @static\n\t */\n\tfunction toArray(array) {\n\t if (isNull(array)) return [];\n\t return Array.prototype.slice.call(array);\n\t}\n\t\n\t/**\n\t * 转为日期格式\n\t * @method toDate\n\t * @param {Number|String} val 日期字符串或整型数值\n\t * @return {Date} 日期对象\n\t * @static\n\t */\n\tfunction toDate(val) {\n\t if (isNumber(val))\n\t return new Date(val);\n\t else if (isString(val))\n\t return new Date(replace(replace(val, '-', '/'), 'T', ' '));\n\t else if (isDate(val))\n\t return val;\n\t else\n\t return null;\n\t}\n\t\n\t/**\n\t * 遍历一个对像或数组\n\t * @method each\n\t * @param {Object or Array} obj 要遍历的数组或对象\n\t * @param {Function} fn 处理函数\n\t * @return {void} 无返回值\n\t * @static\n\t */\n\tfunction each(list, handler, scope) {\n\t if (isNull(list) || isNull(handler)) return;\n\t if (isArray(list)) {\n\t var listLength = list.length;\n\t for (var i = 0; i < listLength; i++) {\n\t var rs = handler.call(scope || list[i], i, list[i]);\n\t if (!isNull(rs)) return rs;\n\t }\n\t } else {\n\t for (var key in list) {\n\t var rs = handler.call(scope || list[key], key, list[key]);\n\t if (!isNull(rs)) return rs;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * 格式化日期\n\t * @method formatDate\n\t * @param {Date|String|Number} date 日期\n\t * @param {String} format 格式化字符串\n\t * @param {object} dict 反译字典\n\t * @return {String} 格式化结果\n\t * @static\n\t */\n\tfunction formatDate(date, format, dict) {\n\t if (isNull(format) || isNull(date)) return date;\n\t date = toDate(date);\n\t dict = dict || {};\n\t var placeholder = {\n\t \"M+\": date.getMonth() + 1, //month\n\t \"d+\": date.getDate(), //day\n\t \"h+\": date.getHours(), //hour\n\t \"m+\": date.getMinutes(), //minute\n\t \"s+\": date.getSeconds(), //second\n\t \"w+\": date.getDay(), //week\n\t \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n\t \"S\": date.getMilliseconds() //millisecond\n\t };\n\t if (/(y+)/.test(format)) {\n\t format = format.replace(\n\t RegExp.$1,\n\t (date.getFullYear() + \"\").substr(4 - RegExp.$1.length)\n\t );\n\t }\n\t for (var key in placeholder) {\n\t if (new RegExp(\"(\" + key + \")\").test(format)) {\n\t var value = placeholder[key];\n\t value = dict[value] || value;\n\t format = format.replace(RegExp.$1, RegExp.$1.length == 1\n\t ? value : (\"00\" + value).substr((\"\" + value).length));\n\t }\n\t }\n\t return format;\n\t}\n\t\n\t/**\n\t * 拷贝对象\n\t * @method copy\n\t * @param {Object} src 源对象\n\t * @param {Object} dst 目标对象\n\t * @static\n\t */\n\tfunction copy(src, dst, igonres) {\n\t dst = dst || (isArray(src) ? [] : {});\n\t each(src, function (key) {\n\t if (igonres && igonres.indexOf(key) > -1) return;\n\t delete dst[key];\n\t if (Object.getOwnPropertyDescriptor) {\n\t try {\n\t Object.defineProperty(dst, key,\n\t Object.getOwnPropertyDescriptor(src, key));\n\t } catch (ex) {\n\t dst[key] = src[key];\n\t }\n\t } else {\n\t dst[key] = src[key];\n\t }\n\t });\n\t return dst;\n\t}\n\t\n\t/**\n\t * 深度克隆对象\n\t * @method clone\n\t * @param {Object} src 源对象\n\t * @return {Object} 新对象\n\t * @static\n\t */\n\tfunction clone(src, igonres) {\n\t if (isNull(src) ||\n\t isString(src) ||\n\t isNumber(src) ||\n\t isBoolean(src) ||\n\t isDate(src)) {\n\t return src;\n\t }\n\t var objClone = src;\n\t try {\n\t objClone = new src.constructor();\n\t } catch (ex) { }\n\t each(src, function (key, value) {\n\t if (objClone[key] != value && !contains(igonres, key)) {\n\t if (isObject(value)) {\n\t objClone[key] = clone(value, igonres);\n\t } else {\n\t objClone[key] = value;\n\t }\n\t }\n\t });\n\t ['toString', 'valueOf'].forEach(function (key) {\n\t if (contains(igonres, key)) return;\n\t final(objClone, key, src[key]);\n\t });\n\t return objClone;\n\t}\n\t\n\t/**\n\t * 合并对象\n\t * @method mix\n\t * @return 合并后的对象\n\t * @param {Object} dst 目标对象\n\t * @param {Object} src 源对象\n\t * @param {Array} igonres 忽略的属性名,\n\t * @param {Number} mode 模式\n\t */\n\tfunction mix(dst, src, igonres, mode, igonreNull) {\n\t //根据模式来判断,默认是Obj to Obj的 \n\t if (mode) {\n\t switch (mode) {\n\t case 1: // proto to proto \n\t return mix(dst.prototype, src.prototype, igonres, 0);\n\t case 2: // object to object and proto to proto \n\t mix(dst.prototype, src.prototype, igonres, 0);\n\t break; // pass through \n\t case 3: // proto to static \n\t return mix(dst, src.prototype, igonres, 0);\n\t case 4: // static to proto \n\t return mix(dst.prototype, src, igonres, 0);\n\t default: // object to object is what happens below \n\t }\n\t }\n\t //---\n\t src = src || {};\n\t dst = dst || (isArray(src) ? [] : {});\n\t keys(src).forEach(function (key) {\n\t if (contains(igonres, key)) return;\n\t if (igonreNull && isNull(src[key])) return;\n\t if (isObject(src[key]) &&\n\t (src[key].constructor == Object ||\n\t src[key].constructor == Array ||\n\t src[key].constructor == null)) {\n\t dst[key] = mix(dst[key], src[key], igonres, 0, igonreNull);\n\t } else {\n\t dst[key] = src[key];\n\t }\n\t });\n\t return dst;\n\t}\n\t\n\t/**\n\t * 定义不可遍历的属性\n\t **/\n\tfunction final(obj, name, value) {\n\t if (arguments.length < 1) throw new Error('Parameter missing');\n\t if (arguments.length < 2) {\n\t return each(obj, function (name, value) {\n\t final(obj, name, value);\n\t });\n\t }\n\t if (arguments.length < 3) return final(obj, name, obj[name]);\n\t try {\n\t Object.defineProperty(obj, name, {\n\t get: function () {\n\t return value;\n\t },\n\t set: function () {\n\t throw new Error('Cannot assign to final property:' + name);\n\t },\n\t enumerable: false, //不能枚举\n\t configurable: false, //不能重写定义\n\t });\n\t } catch (err) {\n\t obj[name] = value;\n\t }\n\t}\n\t\n\t/**\n\t * 获取所有 key \n\t */\n\tfunction keys(obj) {\n\t if (Object.keys) return Object.keys(obj);\n\t var keys = [];\n\t each(obj, function (key) {\n\t keys.push(key);\n\t });\n\t return keys;\n\t}\n\t\n\t/**\n\t * 创建一个对象\n\t */\n\tfunction create(proto, props) {\n\t if (Object.create) return Object.create(proto, props);\n\t function Cotr() { }\n\t Cotr.prototype = proto;\n\t var obj = new Cotr();\n\t if (props) copy(props, obj);\n\t return obj;\n\t}\n\t\n\t/**\n\t * 设置 proto\n\t * 在不支持 setPrototypeOf 也不支持 __proto__ 的浏览器\n\t * 中,会采用 copy 方式\n\t */\n\tfunction setPrototypeOf(obj, proto) {\n\t if (Object.setPrototypeOf) {\n\t return Object.setPrototypeOf(obj, proto || create(null));\n\t } else {\n\t if (!('__proto__' in Object)) copy(proto, obj);\n\t obj.__proto__ = proto;\n\t }\n\t}\n\t\n\t/**\n\t * 获取 proto\n\t */\n\tfunction getPrototypeOf(obj) {\n\t if (obj.__proto__) return obj.__proto__;\n\t if (Object.getPrototypeOf) return Object.getPrototypeOf(obj);\n\t if (obj.constructor) return obj.constructor.prototype;\n\t}\n\t\n\t/**\n\t * 是否深度相等\n\t */\n\tfunction deepEqual(a, b) {\n\t if (a === b) return true;\n\t if (!isObject(a) || !isObject(b)) return false;\n\t var aKeys = keys(a);\n\t var bKeys = keys(b);\n\t if (aKeys.length !== bKeys.length) return false;\n\t var allKeys = aKeys.concat(bKeys);\n\t var checkedMap = create(null);\n\t var result = true;\n\t each(allKeys, function (i, key) {\n\t if (checkedMap[key]) return;\n\t if (!deepEqual(a[key], b[key])) result = false;\n\t checkedMap[key] = true;\n\t });\n\t return result;\n\t}\n\t\n\t/**\n\t * 从一个数值循环到别一个数\n\t * @param {number} fromNum 开始数值\n\t * @param {Number} toNum 结束数值\n\t * @param {Number} step 步长值\n\t * @param {function} handler 执行函数\n\t * @returns {void} 无返回\n\t */\n\tfunction fromTo(fromNum, toNum, step, handler) {\n\t if (!handler) handler = [step, step = handler][0];\n\t step = Math.abs(step || 1);\n\t if (fromNum < toNum) {\n\t for (var i = fromNum; i <= toNum; i += step) handler(i);\n\t } else {\n\t for (var i = fromNum; i >= toNum; i -= step) handler(i);\n\t }\n\t}\n\t\n\t/**\n\t * 生成一个Guid\n\t * @method newGuid\n\t * @return {String} GUID字符串\n\t * @static\n\t */\n\tfunction newGuid() {\n\t function s4() {\n\t return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n\t }\n\t return (s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" +\n\t s4() + \"-\" + s4() + s4() + s4());\n\t}\n\t\n\t/**\n\t * 对象变换\n\t **/\n\tfunction map(list, fn) {\n\t var buffer = isArray(list) ? [] : {};\n\t each(list, function (name, value) {\n\t buffer[name] = fn(name, value);\n\t });\n\t return buffer;\n\t}\n\t\n\t/**\n\t * 通过路径设置属性值\n\t */\n\tfunction setByPath(obj, path, value) {\n\t if (isNull(obj) || isNull(path) || path === '') {\n\t return;\n\t }\n\t if (!isArray(path)) {\n\t path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n\t }\n\t each(path, function (index, name) {\n\t if (isNull(name) || name.length < 1) return;\n\t if (index === path.length - 1) {\n\t obj[name] = value;\n\t } else {\n\t obj[name] = obj[name] || {};\n\t obj = obj[name];\n\t }\n\t });\n\t}\n\t\n\t/**\n\t * 通过路径获取属性值\n\t */\n\tfunction getByPath(obj, path) {\n\t if (isNull(obj) || isNull(path) || path === '') {\n\t return obj;\n\t }\n\t if (!isArray(path)) {\n\t path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n\t }\n\t each(path, function (index, name) {\n\t if (isNull(name) || name.length < 1) return;\n\t if (!isNull(obj)) obj = obj[name];\n\t });\n\t return obj;\n\t}\n\t\n\t/**\n\t * 数组去重\n\t **/\n\tfunction unique(array) {\n\t if (isNull(array)) return array;\n\t var newArray = [];\n\t each(array, function (i, value) {\n\t if (newArray.indexOf(value) > -1) return;\n\t newArray.push(value);\n\t });\n\t return newArray;\n\t}\n\t\n\t/**\n\t * 解析 function 的参数列表\n\t **/\n\tfunction getFunctionArgumentNames(fn) {\n\t if (!fn) return [];\n\t var src = fn.toString();\n\t var parts = src.split(')')[0].split('=>')[0].split('(');\n\t return (parts[1] || parts[0]).split(',').map(function (name) {\n\t return trim(name);\n\t }).filter(function (name) {\n\t return name != 'function';\n\t });\n\t}\n\t\n\t/**\n\t * 缩短字符串\n\t */\n\tfunction short(str, maxLength) {\n\t if (!str) return str;\n\t maxLength = maxLength || 40;\n\t var strLength = str.length;\n\t var trimLength = maxLength / 2;\n\t return strLength > maxLength ?\n\t str.substr(0, trimLength) + '...' + str.substr(strLength - trimLength) :\n\t str;\n\t}\n\t\n\t/**\n\t * 首字母大写\n\t */\n\tfunction firstUpper(str) {\n\t if (!isString(str)) return '';\n\t return str.substring(0, 1).toUpperCase() + str.substring(1);\n\t}\n\t\n\t/**\n\t * 编码正则字符串\n\t */\n\tfunction escapeRegExp(str) {\n\t if (!isString(str)) return '';\n\t return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t}\n\t\n\t/**\n\t * 将字符串转成「驼峰」式\n\t * @param {string} str 原始字符串\n\t * @param {number} mode 1 大驼峰,0 小驼峰\n\t * @return {string} 转换后的字符串\n\t */\n\tfunction toCamelCase(str, mode) {\n\t if (!isString(str)) return '';\n\t if (str) {\n\t str = str.replace(/\\-[a-z0-9]/g, function ($1) {\n\t return $1.slice(1).toUpperCase()\n\t });\n\t str = str.replace(/^[a-z]/i, function ($1) {\n\t return mode ? $1.toUpperCase() : $1.toLowerCase();\n\t });\n\t }\n\t return str;\n\t}\n\t\n\t/**\n\t * 将字符串转成分隔形式\n\t * @param {string} str 原始字符串\n\t * @return {string} 转换后的字符串\n\t */\n\tfunction toSplitCase(str) {\n\t if (!isString(str)) return '';\n\t if (str) {\n\t str = str.replace(/([A-Z])/g, '-$1');\n\t if (str[0] == '-') str = str.slice(1);\n\t }\n\t return str.toLowerCase();\n\t}\n\t\n\tfunction htmlPrefilter(html) {\n\t var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi;\n\t return html.replace(rxhtmlTag, \"<$1>\");\n\t}\n\t\n\t/**\n\t * 解析字符串为 dom \n\t * @param {string} str 字符串\n\t * @returns {HTMLNode} 解析后的 DOM \n\t */\n\tfunction parseHTML(str) {\n\t str = str || ' ';\n\t var parent = document.createElement('div');\n\t parent.innerHTML = htmlPrefilter(trim(str));\n\t var childNodes = toArray(parent.childNodes);\n\t //先 clone 一份再通过 innerHTML 清空\n\t //否则 IE9 下,清空时会导不通过返回的 DOM 没有子结点\n\t // if (firstNode) firstNode = firstNode.cloneNode(true);\n\t // win._NPH_.innerHTML = '';\n\t each(childNodes, function (index, childNode) {\n\t parent.removeChild(childNode);\n\t });\n\t return childNodes;\n\t}\n\t\n\texports.noop = noop;\n\texports.toString = toString;\n\texports.getType = getType;\n\texports.isNull = isNull;\n\texports.trim = trim;\n\texports.replace = replace;\n\texports.startWith = startWith;\n\texports.contains = contains;\n\texports.endWith = endWith;\n\texports.has = has;\n\texports.hasProperty = hasProperty;\n\texports.isFunction = isFunction;\n\texports.isAsyncFunction = isAsyncFunction;\n\texports.isGeneratorFunction = isGeneratorFunction;\n\texports.isString = isString;\n\texports.isNumber = isNumber;\n\texports.isBoolean = isBoolean;\n\texports.isElement = isElement;\n\texports.isText = isText;\n\texports.isObject = isObject;\n\texports.isArray = isArray;\n\texports.isDate = isDate;\n\texports.isRegexp = isRegexp;\n\texports.toArray = toArray;\n\texports.toDate = toDate;\n\texports.each = each;\n\texports.formatDate = formatDate;\n\texports.copy = copy;\n\texports.clone = clone;\n\texports.mix = mix;\n\texports.final = final;\n\texports.keys = keys;\n\texports.create = create;\n\texports.setPrototypeOf = setPrototypeOf;\n\texports.getPrototypeOf = getPrototypeOf;\n\texports.deepEqual = deepEqual;\n\texports.fromTo = fromTo;\n\texports.newGuid = newGuid;\n\texports.map = map;\n\texports.setByPath = setByPath;\n\texports.getByPath = getByPath;\n\texports.unique = unique;\n\texports.getFunctionArgumentNames = getFunctionArgumentNames;\n\texports.short = short;\n\texports.firstUpper = firstUpper;\n\texports.escapeRegExp = escapeRegExp;\n\texports.toCamelCase = toCamelCase;\n\texports.toSplitCase = toSplitCase;\n\texports.htmlPrefilter = htmlPrefilter;\n\texports.parseHTML = parseHTML;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\t\n\t/**\n\t * Watcher 类\n\t * 通过「计算函数」、「执行函数」可以创建一个 Watcher 实例\n\t */\n\tvar Watcher = new Class({\n\t\n\t /**\n\t * 通过「计算函数」、「执行函数」构建一个 Watcher 实例\n\t * @param {function} calcor 计算函数\n\t * @param {function} handler 处理函数\n\t * @param {boolean} first 是否自动执行第一次\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(calcor, handler, first) {\n\t if (!utils.isFunction(calcor) || !utils.isFunction(handler)) {\n\t throw new Error('Invalid parameters');\n\t }\n\t this.calcor = calcor;\n\t this.handler = handler;\n\t if (first) this.calc(true);\n\t },\n\t\n\t /**\n\t * 执行计算\n\t * @param {boolean} force 是否强制触发「计算函数」\n\t * @returns {Object} 计算后的值\n\t */\n\t calc: function /*istanbul ignore next*/calc(force) {\n\t var newValue = this.calcor();\n\t if (force || !utils.deepEqual(newValue, this.value)) {\n\t this.handler(newValue, this.value);\n\t }\n\t this.value = utils.clone(newValue);\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Watcher;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\t/*istanbul ignore next*/var _keys = __webpack_require__(8);\n\t\n\tvar _keys2 = _interopRequireDefault(_keys);\n\t\n\tvar _getOwnPropertyDescriptor = __webpack_require__(43);\n\t\n\tvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\t\n\tvar _defineProperty = __webpack_require__(48);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\tvar EventEmitter = __webpack_require__(51);\n\t\n\tvar OBSERVER_PROP_NAME = '_observer_';\n\tvar CHANGE_EVENT_NAME = 'change';\n\tvar EVENT_MAX_DISPATCH_LAYER = 10;\n\tvar IGNORE_REGEXPS = [/^\\_(.*)\\_$/i, /^\\_\\_/i];\n\t\n\t/**\n\t * 对象观察类,可以监控对象变化\n\t * 目前方案问题:\n\t * 对于父子关系和事件冒泡,目前方案如果用 delete 删除一个属性,无关真实删除关系,\n\t * 即便调用 clearReference 也无法再清除关系,子对象的 parents 中会一直有一个引用,当前方案最高效\n\t * 其它方法一:\n\t * 将「关系」放入全局数组中,然后将 ob.parents 变成一个「属性」从全局数组件中 filter 出来,\n\t * 基本和目前方法类似,但是关系在外部存领教,所以 clearReference 可清除。\n\t * 其它方案二: \n\t * 构造时添加到全局数组,每一个 observer change 时都让放到全局的 observer 遍历自身的,\n\t * 检果事件源是不是自已的子对象,如果是则触发自身 change 事件,这样 ob 对象本身没有相关引用\n\t * clearReference 时只从全局清除掉就行了,并且 delete 操作也不会影响,但效率稍差。\n\t * 其它方案三: \n\t * 给构造函数添加一个 deep 属性,只有 deep 的 ob 对象,才放入到全局数组中,检查时逻辑同方案二\n\t * 但是因为要检查的对象会少很多,效率会更高一点。\n\t */\n\tvar Observer = new Class({\n\t $extends: EventEmitter,\n\t\n\t /**\n\t * 通过目标对象构造一个观察对象\n\t * @param {Object} target 目标对象\n\t * @param {Object} options 选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(target, options) {\n\t if (utils.isNull(target)) {\n\t throw new Error('Invalid target');\n\t }\n\t options = options || {};\n\t var observer = target[OBSERVER_PROP_NAME];\n\t if (observer) {\n\t utils.copy(options, observer.options);\n\t //当时一个组件 A 的为组件 B 的 prop 时,A 更新不会触发 B 更新\n\t //所在暂注释这里,另一种方法是更新 prop 指令,重写 excute 方法,而不是现在的 update 方法\n\t // if (observer.options.root) {\n\t // observer.parents.length = 0;\n\t // }\n\t observer.apply();\n\t return observer;\n\t }\n\t EventEmitter.call(this);\n\t utils.defineFreezeProp(this, 'options', options);\n\t utils.defineFreezeProp(this, 'shadow', {});\n\t utils.defineFreezeProp(this, 'target', target);\n\t utils.defineFreezeProp(this, 'parents', []);\n\t utils.defineFreezeProp(target, OBSERVER_PROP_NAME, this);\n\t this.apply();\n\t },\n\t\n\t /**\n\t * 添加一个属性,动态添中的属性,无法被观察,\n\t * 但是通过 set 方法添加的属性可能被观察。\n\t * @param {string} name 名称\n\t * @param {Object} value 值\n\t * @returns {void} 无返回\n\t */\n\t set: function /*istanbul ignore next*/set(name, value) {\n\t if (utils.isFunction(value) || Observer.isIgnore(name)) {\n\t return;\n\t }\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(this.target, name, {\n\t get: function /*istanbul ignore next*/get() {\n\t return this[OBSERVER_PROP_NAME].shadow[name];\n\t },\n\t set: function /*istanbul ignore next*/set(value) {\n\t var observer = this[OBSERVER_PROP_NAME];\n\t var oldValue = observer.shadow[name];\n\t if (oldValue === value) return;\n\t if (utils.isObject(value)) {\n\t var childObserver = new Observer(value);\n\t observer.addChild(childObserver, name);\n\t }\n\t //移除旧值的父引用\n\t //如果用 delete 删除属性将无法移除父子引用\n\t if (oldValue && oldValue[OBSERVER_PROP_NAME]) {\n\t observer.removeChild(oldValue[OBSERVER_PROP_NAME], name);\n\t }\n\t observer.shadow[name] = value;\n\t observer.emitChange({ path: name, value: value });\n\t },\n\t configurable: true,\n\t enumerable: true\n\t });\n\t this.target[name] = value;\n\t },\n\t\n\t /**\n\t * 自动应用所有动态添加的属性\n\t * @returns {void} 无返回\n\t */\n\t apply: function /*istanbul ignore next*/apply() {\n\t if (utils.isArray(this.target)) {\n\t this._wrapArray(this.target);\n\t }\n\t var names = this._getPropertyNames(this.target);\n\t names.forEach(function (name) {\n\t var desc = /*istanbul ignore next*/(0, _getOwnPropertyDescriptor2.default)(this.target, name);\n\t if (!('value' in desc)) return;\n\t this.set(name, this.target[name]);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 清除所有父子引用\n\t * @returns {void} 无返回\n\t */\n\t clearReference: function /*istanbul ignore next*/clearReference() {\n\t utils.each(this.target, function (name, value) {\n\t if (utils.isNull(value)) return;\n\t var child = value[OBSERVER_PROP_NAME];\n\t if (child) this.removeChild(child);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 派发一个事件,事件会向父级对象冒泡\n\t * @param {string} eventName 事件名称\n\t * @param {Object} event 事件对象\n\t * @returns {void} 无返回\n\t */\n\t dispatch: function /*istanbul ignore next*/dispatch(eventName, event) {\n\t if (event._src_ === this) return;\n\t event._src_ = event._src_ || this;\n\t event._layer_ = event._layer_ || 0;\n\t if (event._layer_++ >= EVENT_MAX_DISPATCH_LAYER) return;\n\t this.emit(eventName, event);\n\t if (!this.parents || this.parents.length < 1) return;\n\t this.parents.forEach(function (item) {\n\t if (!(item.name in item.parent.target)) {\n\t return item.parent.removeChild(this);\n\t }\n\t var parentEvent = utils.copy(event);\n\t parentEvent.path = item.name + '.' + event.path;\n\t item.parent.dispatch(eventName, parentEvent);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 添子观察者对象\n\t * @param {Object} child 父对象\n\t * @param {String} name 属性名\n\t * @returns {void} 无返回\n\t */\n\t addChild: function /*istanbul ignore next*/addChild(child, name) {\n\t if (utils.isNull(child) || utils.isNull(name)) {\n\t throw new Error('Invalid paramaters');\n\t }\n\t if (child.options.root) return;\n\t child.parents.push({ parent: this, name: name });\n\t },\n\t\n\t /**\n\t * 移除子对象\n\t * @param {Object} child 父对象\n\t * @param {String} name 属性名\n\t * @returns {void} 无返回\n\t */\n\t removeChild: function /*istanbul ignore next*/removeChild(child, name) {\n\t if (utils.isNull(child)) {\n\t throw new Error('Invalid paramaters');\n\t }\n\t var foundIndex = -1;\n\t child.parents.forEach(function (item, index) {\n\t if (item.parent === this && item.name === name) {\n\t foundIndex = index;\n\t }\n\t }, this);\n\t if (foundIndex > -1) {\n\t child.parents.splice(foundIndex, 1);\n\t }\n\t },\n\t\n\t /**\n\t * 触发 change 事件\n\t * @param {Object} event 事件对象\n\t * @returns {void} 无返回\n\t */\n\t emitChange: function /*istanbul ignore next*/emitChange(event) {\n\t this.dispatch(CHANGE_EVENT_NAME, event);\n\t },\n\t\n\t /**\n\t * 获取所有成员名称列表\n\t * @returns {Array} 所有成员名称列表\n\t */\n\t _getPropertyNames: function /*istanbul ignore next*/_getPropertyNames() {\n\t var names = utils.isArray(this.target) ? this.target.map(function (item, index) {\n\t return index;\n\t }) : /*istanbul ignore next*/(0, _keys2.default)(this.target);\n\t return names.filter(function (name) {\n\t return name !== OBSERVER_PROP_NAME;\n\t });\n\t },\n\t\n\t /**\n\t * 包裹数组\n\t * @param {array} array 源数组\n\t * @returns {array} 处理后的数组\n\t */\n\t _wrapArray: function /*istanbul ignore next*/_wrapArray(array) {\n\t utils.defineFreezeProp(array, 'push', function () {\n\t var items = [].slice.call(arguments);\n\t items.forEach(function (item) {\n\t //这里也会触发对应 index 的 change 事件\n\t this[OBSERVER_PROP_NAME].set(array.length, item);\n\t }, this);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t });\n\t utils.defineFreezeProp(array, 'pop', function () {\n\t var item = [].pop.apply(this, arguments);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: this.length, value: item });\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t return item;\n\t });\n\t utils.defineFreezeProp(array, 'unshift', function () {\n\t var items = [].slice.call(arguments);\n\t items.forEach(function (item) {\n\t //这里也会触发对应 index 的 change 事件\n\t this[OBSERVER_PROP_NAME].set(0, item);\n\t }, this);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t });\n\t utils.defineFreezeProp(array, 'shift', function () {\n\t var item = [].shift.apply(this, arguments);\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 0, value: item });\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t return item;\n\t });\n\t utils.defineFreezeProp(array, 'splice', function () {\n\t var startIndex = arguments[0];\n\t var endIndex = utils.isNull(arguments[1]) ? startIndex + arguments[1] : this.length - 1;\n\t var items = [].splice.apply(this, arguments);\n\t for (var i = startIndex; i <= endIndex; i++) {\n\t this[OBSERVER_PROP_NAME].emitChange({ path: i, value: items[i - startIndex] });\n\t }\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t return items;\n\t });\n\t utils.defineFreezeProp(array, 'set', function (index, value) {\n\t if (index >= this.length) {\n\t this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n\t }\n\t this[OBSERVER_PROP_NAME].set(index, value);\n\t });\n\t }\n\t\n\t});\n\t\n\t/**\n\t * 观察一个对象\n\t * @param {Object} target 目标对象\n\t * @return {Observer} 观察者对象\n\t */\n\tObserver.observe = function (target) {\n\t return new Observer(target);\n\t};\n\t\n\t/**\n\t * 检查是不是忽略的属性名\n\t * @param {string} word 待检查的字符串\n\t * @returns {void} 无返回\n\t */\n\tObserver.isIgnore = function (word) {\n\t return IGNORE_REGEXPS.some(function (re) /*istanbul ignore next*/{\n\t return re.test(word);\n\t });\n\t};\n\t\n\tmodule.exports = Observer;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(9), __esModule: true };\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(10);\n\tmodule.exports = __webpack_require__(30).Object.keys;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 Object.keys(O)\n\tvar toObject = __webpack_require__(11);\n\tvar $keys = __webpack_require__(13);\n\t\n\t__webpack_require__(28)('keys', function () {\n\t return function keys(it) {\n\t return $keys(toObject(it));\n\t };\n\t});\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 7.1.13 ToObject(argument)\n\tvar defined = __webpack_require__(12);\n\tmodule.exports = function (it) {\n\t return Object(defined(it));\n\t};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tmodule.exports = function (it) {\n\t if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\tvar $keys = __webpack_require__(14);\n\tvar enumBugKeys = __webpack_require__(27);\n\t\n\tmodule.exports = Object.keys || function keys(O) {\n\t return $keys(O, enumBugKeys);\n\t};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar has = __webpack_require__(15);\n\tvar toIObject = __webpack_require__(16);\n\tvar arrayIndexOf = __webpack_require__(19)(false);\n\tvar IE_PROTO = __webpack_require__(23)('IE_PROTO');\n\t\n\tmodule.exports = function (object, names) {\n\t var O = toIObject(object);\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while (names.length > i) if (has(O, key = names[i++])) {\n\t ~arrayIndexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tmodule.exports = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// to indexed object, toObject with fallback for non-array-like ES3 strings\n\tvar IObject = __webpack_require__(17);\n\tvar defined = __webpack_require__(12);\n\tmodule.exports = function (it) {\n\t return IObject(defined(it));\n\t};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar cof = __webpack_require__(18);\n\t// eslint-disable-next-line no-prototype-builtins\n\tmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n\t return cof(it) == 'String' ? it.split('') : Object(it);\n\t};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = function (it) {\n\t return toString.call(it).slice(8, -1);\n\t};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// false -> Array#indexOf\n\t// true -> Array#includes\n\tvar toIObject = __webpack_require__(16);\n\tvar toLength = __webpack_require__(20);\n\tvar toAbsoluteIndex = __webpack_require__(22);\n\tmodule.exports = function (IS_INCLUDES) {\n\t return function ($this, el, fromIndex) {\n\t var O = toIObject($this);\n\t var length = toLength(O.length);\n\t var index = toAbsoluteIndex(fromIndex, length);\n\t var value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t // eslint-disable-next-line no-self-compare\n\t if (IS_INCLUDES && el != el) while (length > index) {\n\t value = O[index++];\n\t // eslint-disable-next-line no-self-compare\n\t if (value != value) return true;\n\t // Array#indexOf ignores holes, Array#includes - not\n\t } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n\t if (O[index] === el) return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 7.1.15 ToLength\n\tvar toInteger = __webpack_require__(21);\n\tvar min = Math.min;\n\tmodule.exports = function (it) {\n\t return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n\t};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tmodule.exports = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(21);\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tmodule.exports = function (index, length) {\n\t index = toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar shared = __webpack_require__(24)('keys');\n\tvar uid = __webpack_require__(26);\n\tmodule.exports = function (key) {\n\t return shared[key] || (shared[key] = uid(key));\n\t};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(25);\n\tvar SHARED = '__core-js_shared__';\n\tvar store = global[SHARED] || (global[SHARED] = {});\n\tmodule.exports = function (key) {\n\t return store[key] || (store[key] = {});\n\t};\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tmodule.exports = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\n\t// IE 8- don't enum bug keys\n\tmodule.exports = (\n\t 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n\t).split(',');\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// most Object methods by ES6 should accept primitives\n\tvar $export = __webpack_require__(29);\n\tvar core = __webpack_require__(30);\n\tvar fails = __webpack_require__(39);\n\tmodule.exports = function (KEY, exec) {\n\t var fn = (core.Object || {})[KEY] || Object[KEY];\n\t var exp = {};\n\t exp[KEY] = exec(fn);\n\t $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n\t};\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(25);\n\tvar core = __webpack_require__(30);\n\tvar ctx = __webpack_require__(31);\n\tvar hide = __webpack_require__(33);\n\tvar PROTOTYPE = 'prototype';\n\t\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var IS_WRAP = type & $export.W;\n\t var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n\t var expProto = exports[PROTOTYPE];\n\t var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n\t var key, own, out;\n\t if (IS_GLOBAL) source = name;\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t if (own && key in exports) continue;\n\t // export native or passed\n\t out = own ? target[key] : source[key];\n\t // prevent global pollution for namespaces\n\t exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n\t // bind timers to global for call from export context\n\t : IS_BIND && own ? ctx(out, global)\n\t // wrap global constructors for prevent change them in library\n\t : IS_WRAP && target[key] == out ? (function (C) {\n\t var F = function (a, b, c) {\n\t if (this instanceof C) {\n\t switch (arguments.length) {\n\t case 0: return new C();\n\t case 1: return new C(a);\n\t case 2: return new C(a, b);\n\t } return new C(a, b, c);\n\t } return C.apply(this, arguments);\n\t };\n\t F[PROTOTYPE] = C[PROTOTYPE];\n\t return F;\n\t // make static versions for prototype methods\n\t })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n\t // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n\t if (IS_PROTO) {\n\t (exports.virtual || (exports.virtual = {}))[key] = out;\n\t // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n\t if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n\t }\n\t }\n\t};\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tmodule.exports = $export;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\n\tvar core = module.exports = { version: '2.5.3' };\n\tif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// optional / simple context binding\n\tvar aFunction = __webpack_require__(32);\n\tmodule.exports = function (fn, that, length) {\n\t aFunction(fn);\n\t if (that === undefined) return fn;\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (it) {\n\t if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n\t return it;\n\t};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar dP = __webpack_require__(34);\n\tvar createDesc = __webpack_require__(42);\n\tmodule.exports = __webpack_require__(38) ? function (object, key, value) {\n\t return dP.f(object, key, createDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar anObject = __webpack_require__(35);\n\tvar IE8_DOM_DEFINE = __webpack_require__(37);\n\tvar toPrimitive = __webpack_require__(41);\n\tvar dP = Object.defineProperty;\n\t\n\texports.f = __webpack_require__(38) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t anObject(O);\n\t P = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if (IE8_DOM_DEFINE) try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ }\n\t if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n\t if ('value' in Attributes) O[P] = Attributes.value;\n\t return O;\n\t};\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(36);\n\tmodule.exports = function (it) {\n\t if (!isObject(it)) throw TypeError(it + ' is not an object!');\n\t return it;\n\t};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = !__webpack_require__(38) && !__webpack_require__(39)(function () {\n\t return Object.defineProperty(__webpack_require__(40)('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// Thank's IE8 for his funny defineProperty\n\tmodule.exports = !__webpack_require__(39)(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(36);\n\tvar document = __webpack_require__(25).document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = isObject(document) && isObject(document.createElement);\n\tmodule.exports = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\tvar isObject = __webpack_require__(36);\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tmodule.exports = function (it, S) {\n\t if (!isObject(it)) return it;\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n\t if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n\t if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(44), __esModule: true };\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(45);\n\tvar $Object = __webpack_require__(30).Object;\n\tmodule.exports = function getOwnPropertyDescriptor(it, key) {\n\t return $Object.getOwnPropertyDescriptor(it, key);\n\t};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n\tvar toIObject = __webpack_require__(16);\n\tvar $getOwnPropertyDescriptor = __webpack_require__(46).f;\n\t\n\t__webpack_require__(28)('getOwnPropertyDescriptor', function () {\n\t return function getOwnPropertyDescriptor(it, key) {\n\t return $getOwnPropertyDescriptor(toIObject(it), key);\n\t };\n\t});\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar pIE = __webpack_require__(47);\n\tvar createDesc = __webpack_require__(42);\n\tvar toIObject = __webpack_require__(16);\n\tvar toPrimitive = __webpack_require__(41);\n\tvar has = __webpack_require__(15);\n\tvar IE8_DOM_DEFINE = __webpack_require__(37);\n\tvar gOPD = Object.getOwnPropertyDescriptor;\n\t\n\texports.f = __webpack_require__(38) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n\t O = toIObject(O);\n\t P = toPrimitive(P, true);\n\t if (IE8_DOM_DEFINE) try {\n\t return gOPD(O, P);\n\t } catch (e) { /* empty */ }\n\t if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n\t};\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\n\texports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(49), __esModule: true };\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(50);\n\tvar $Object = __webpack_require__(30).Object;\n\tmodule.exports = function defineProperty(it, key, desc) {\n\t return $Object.defineProperty(it, key, desc);\n\t};\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(29);\n\t// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n\t$export($export.S + $export.F * !__webpack_require__(38), 'Object', { defineProperty: __webpack_require__(34).f });\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar utils = __webpack_require__(3);\n\tvar Class = __webpack_require__(4);\n\t\n\t/**\n\t * 事件触发器基类\n\t */\n\tvar EventEmitter = new Class({\n\t $extends: Function,\n\t\n\t /**\n\t * 构建一个一个事修的触发器对象\n\t * @param {object} target 将代理的目标对象可以省略\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(target) {\n\t target = target || this;\n\t var emitter = target._emitter_;\n\t if (emitter) return emitter;\n\t utils.defineFreezeProp(this, '_target_', target);\n\t utils.defineFreezeProp(target, '_emitter_', this);\n\t this._isNative_ = this._isNativeObject(this._target_);\n\t this._listeners_ = this._listeners_ || {};\n\t this.on = this.$on = this.$addListener = this.addListener;\n\t this.off = this.$off = this.$removeListener = this.removeListener;\n\t this.$emit = this.emit;\n\t },\n\t\n\t /**\n\t * 检查是否原生支持事件\n\t * @param {object} obj 对象\n\t * @returns {void} 检查结果\n\t */\n\t _isNativeObject: function /*istanbul ignore next*/_isNativeObject(obj) {\n\t return obj.addEventListener && obj.removeEventListener && obj.dispatchEvent;\n\t },\n\t\n\t /**\n\t * 添加一个事件监听函数\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n\t * @returns {void} 无返回\n\t */\n\t addListener: function /*istanbul ignore next*/addListener(name, listener, capture) {\n\t if (this._isNative_) {\n\t this._addNativeEventListener(name, listener, capture);\n\t }\n\t this._listeners_[name] = this._listeners_[name] || [];\n\t this._listeners_[name].push(listener);\n\t if (this._listeners_[name].length > EventEmitter._maxListeners) {\n\t throw new Error('The `' + name + '` event listener is not more than 10');\n\t }\n\t },\n\t\n\t /**\n\t * 移除「一个/一组/所有」事件监听函数\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n\t * @returns {void} 无返回\n\t */\n\t removeListener: function /*istanbul ignore next*/removeListener(name, listener, capture) {\n\t if (name && listener) {\n\t if (this._isNative_) {\n\t this._removeNativeEventListener(name, listener, capture);\n\t }\n\t if (!this._listeners_[name]) return;\n\t var index = this._listeners_[name].indexOf(listener);\n\t this._listeners_[name].splice(index, 1);\n\t } else if (name) {\n\t if (this._isNative_ && this._listeners_[name]) {\n\t this._listeners_[name].forEach(function (_listener) {\n\t this.removeListener(name, _listener, capture);\n\t }, this);\n\t }\n\t delete this._listeners_[name];\n\t } else {\n\t utils.each(this._listeners_, function (name) {\n\t this.removeListener(name, null, capture);\n\t }, this);\n\t this._listeners_ = {};\n\t }\n\t },\n\t\n\t /**\n\t * 触发自身的一个事件\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @param {string} canBubble 能否冒泡(只在代理 dom 对象时有效)\n\t * @param {object} cancelAble 能否取消(只在代理 dom 对象时有效)\n\t * @returns {void} 无返回\n\t */\n\t emit: function /*istanbul ignore next*/emit(name, data, canBubble, cancelAble) {\n\t if (this._isNative_) {\n\t return this._emitNativeEvent(name, data, canBubble, cancelAble);\n\t }\n\t if (!this._listeners_[name]) return;\n\t var stopPropagation = false;\n\t this._listeners_[name].forEach(function (handler) {\n\t var rs = handler.call(this._target_, data);\n\t if (rs === false) stopPropagation = true;\n\t }, this);\n\t return stopPropagation;\n\t },\n\t\n\t /**\n\t * 添加 DOM 元素事件\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件\n\t * @returns {void} 无返回\n\t */\n\t _addNativeEventListener: function /*istanbul ignore next*/_addNativeEventListener(name, listener, capture) {\n\t this._target_.addEventListener(name, listener, capture);\n\t //如果存在已注册的自定义 “组合事件”\n\t var descriptor = EventEmitter._events[name];\n\t if (descriptor) {\n\t descriptor.addListener = descriptor.addListener || descriptor.on;\n\t descriptor.addListener(this, name, listener, capture);\n\t }\n\t },\n\t\n\t /**\n\t * 移除 DOM 元素事件\n\t * @param {string} name 事件名称\n\t * @param {function} listener 事件处理函数\n\t * @param {capture} capture 是否是捕获阶段事件\n\t * @returns {void} 无返回\n\t */\n\t _removeNativeEventListener: function /*istanbul ignore next*/_removeNativeEventListener(name, listener, capture) {\n\t this._target_.removeEventListener(name, listener, capture);\n\t //如果存在已注册的自定义 “组合事件”\n\t var descriptor = EventEmitter._events[name];\n\t if (descriptor) {\n\t descriptor.removeListener = descriptor.removeListener || descriptor.off;\n\t descriptor.removeListener(this, name, listener, capture);\n\t }\n\t },\n\t\n\t /**\n\t * 触发 DOM 元素事件\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @param {string} canBubble 能否冒泡\n\t * @param {object} cancelAble 能否取消\n\t * @returns {void} 无返回\n\t */\n\t _emitNativeEvent: function /*istanbul ignore next*/_emitNativeEvent(name, data, canBubble, cancelAble) {\n\t var event = document.createEvent('HTMLEvents');\n\t event.initEvent(name, canBubble, cancelAble);\n\t utils.copy(data, event, ['data']);\n\t event.data = data;\n\t return this._target_.dispatchEvent(event);\n\t }\n\t\n\t});\n\t\n\t//最多添加多少个 listener\n\tEventEmitter._maxListeners = 10;\n\t\n\t//所有自定义事件\n\tEventEmitter._events = [];\n\t\n\t/**\n\t * 注册自定义事件(只在代理 dom 对象时有效)\n\t * @param {object} descriptor 事件定义\n\t * @returns {void} 无返回\n\t */\n\tEventEmitter.register = function (descriptor) {\n\t var names = descriptor.name;\n\t if (!names) return;\n\t if (!utils.isArray(names)) names = names.split(',');\n\t names.forEach(function (name) {\n\t this._events[name] = descriptor;\n\t }, this);\n\t};\n\t\n\tmodule.exports = EventEmitter;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Compiler = __webpack_require__(53);\n\tvar Directive = __webpack_require__(54);\n\tvar Expression = __webpack_require__(55);\n\tvar Template = __webpack_require__(79);\n\tvar directives = __webpack_require__(56);\n\t\n\tTemplate.Template = Template;\n\tTemplate.Compiler = Compiler;\n\tTemplate.Directive = Directive;\n\tTemplate.directives = directives;\n\tTemplate.Expression = Expression;\n\t\n\tmodule.exports = Template;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar Directive = __webpack_require__(54);\n\tvar utils = __webpack_require__(3);\n\tvar Expression = __webpack_require__(55);\n\tvar commonDirectives = __webpack_require__(56);\n\t\n\tvar DEFAULT_PREFIX = 'm';\n\t\n\t/**\n\t * 模板编译器\n\t * 可以通过指定「前缀」或「指令集」构建实例\n\t */\n\tvar Compiler = new Class({\n\t\n\t /**\n\t * 构造一个编译器\n\t * @param {Object} options 选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(options) {\n\t options = options || {};\n\t this.prefix = options.prefix || DEFAULT_PREFIX;\n\t this.elementDirectives = {};\n\t this.attributeDirectives = {};\n\t this.registerDirectives(commonDirectives);\n\t this.registerDirectives(options.directives);\n\t },\n\t\n\t /**\n\t * 将字符串转成「驼峰」式\n\t * @param {string} str 原始字符串\n\t * @param {number} mode 1 大驼峰,0 小驼峰\n\t * @return {string} 转换后的字符串\n\t */\n\t toCamelCase: function /*istanbul ignore next*/toCamelCase(str, mode) {\n\t if (str) {\n\t str = str.replace(/\\-[a-z0-9]/g, function ($1) /*istanbul ignore next*/{\n\t return $1.slice(1).toUpperCase();\n\t });\n\t str = str.replace(/^[a-z]/i, function ($1) {\n\t return mode ? $1.toUpperCase() : $1.toLowerCase();\n\t });\n\t }\n\t return str;\n\t },\n\t\n\t /**\n\t * 将字符串转成分隔形式\n\t * @param {string} str 原始字符串\n\t * @return {string} 转换后的字符串\n\t */\n\t toSplitCase: function /*istanbul ignore next*/toSplitCase(str) {\n\t if (str) {\n\t str = str.replace(/([A-Z])/g, '-$1');\n\t if (str[0] == '-') str = str.slice(1);\n\t }\n\t return str;\n\t },\n\t\n\t /**\n\t * 添加指令\n\t * @param {Object} directives 指令集 \n\t * @returns {void} 无返回\n\t */\n\t registerDirectives: function /*istanbul ignore next*/registerDirectives(directives) {\n\t utils.each(directives, function (name, directive) {\n\t name = this.toSplitCase(name);\n\t var fullName = directive.options.prefix === false ? name : /*istanbul ignore next*/this.prefix + ':' + name;\n\t if (directive.options.type == Directive.TE) {\n\t this.elementDirectives[fullName.toUpperCase()] = directive;\n\t } else {\n\t this.attributeDirectives[fullName.toLowerCase()] = directive;\n\t }\n\t }, this);\n\t },\n\t\n\t /**\n\t * 解析要 attr 指令信息\n\t * @param {string} attrName 要解析的名称字符串\n\t * @returns {Object} 解析后的对象\n\t */\n\t _parseAttrInfo: function /*istanbul ignore next*/_parseAttrInfo(attrName) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var parts = attrName.toLowerCase().split(':');\n\t var info = {};\n\t if (parts.length > 1) {\n\t info.name = /*istanbul ignore next*/parts[0] + ':' + parts[1];\n\t info.decorates = parts.slice(2).map(function (item) /*istanbul ignore next*/{\n\t return (/*istanbul ignore next*/_this.toCamelCase(item)\n\t );\n\t });\n\t } else {\n\t info.name = parts[0];\n\t info.decorates = [];\n\t }\n\t return info;\n\t },\n\t\n\t /**\n\t * 创建一个指令实例\n\t * @param {Directive} Directive 指令类\n\t * @param {Object} options 指令构建选项\n\t * @returns {Directive} 指令实例\n\t */\n\t _createDirectiveInstance: function /*istanbul ignore next*/_createDirectiveInstance(Directive, options) {\n\t options.compiler = this;\n\t options.prefix = this.prefix;\n\t return new Directive(options);\n\t },\n\t\n\t /**\n\t * 初始化一个编译完成的 handler\n\t * @param {function} handler 编译后的的模板函数\n\t * @returns {void} 无返回\n\t */\n\t _bindHandler: function /*istanbul ignore next*/_bindHandler(handler) {\n\t //排序 directives\n\t handler.directives = handler.directives.sort(function (a, b) {\n\t return b.level - a.level;\n\t });\n\t //初始化 directives\n\t var boundDirectives = [];\n\t utils.each(handler.directives, function (index, directive) {\n\t directive.index = index;\n\t directive.bind();\n\t boundDirectives.push(directive);\n\t //移除完成绑定的指令对应的 attribute\n\t if (directive.remove !== false && directive.attribute) {\n\t directive.node.removeAttribute(directive.attribute.name);\n\t }\n\t //如果遇到一个「终态」指令,停止向下初始化\n\t if (directive.final) {\n\t return handler.final = true;\n\t }\n\t }, this);\n\t handler.directives = boundDirectives;\n\t },\n\t\n\t /**\n\t * 编译一个元素本身\n\t * @param {function} handler 当前模板函数\n\t * @param {HTMLNode} node 当前 HTML 结点\n\t * @returns {void} 无返回\n\t */\n\t _compileElement: function /*istanbul ignore next*/_compileElement(handler, node) {\n\t var ElementDirective = this.elementDirectives[node.nodeName.toUpperCase()];\n\t if (!ElementDirective) return;\n\t handler.directives.push(this._createDirectiveInstance(ElementDirective, {\n\t handler: handler,\n\t node: node\n\t }));\n\t },\n\t\n\t /**\n\t * 编译一个元素所有 attributes \n\t * @param {function} handler 当前模板函数\n\t * @param {HTMLNode} node 当前 HTML 结点\n\t * @returns {void} 无返回\n\t */\n\t _compileAttributes: function /*istanbul ignore next*/_compileAttributes(handler, node) {\n\t utils.toArray(node.attributes).forEach(function (attribute) {\n\t var attrInfo = this._parseAttrInfo(attribute.name);\n\t var AttrDirective = this.attributeDirectives[attrInfo.name] || this.attributeDirectives['*'];\n\t if (!AttrDirective) return;\n\t var directiveOptions = AttrDirective.options;\n\t handler.directives.push(this._createDirectiveInstance(AttrDirective, {\n\t handler: handler,\n\t node: node,\n\t attribute: attribute,\n\t expression: directiveOptions.literal ? attribute.value : new Expression(attribute.value, directiveOptions.mixed),\n\t decorates: attrInfo.decorates\n\t }));\n\t }, this);\n\t },\n\t\n\t /**\n\t * 编译所有子结点\n\t * @param {function} handler 当前模板函数\n\t * @param {HTMLNode} node 当前 HTML 结点\n\t * @returns {void} 无返回\n\t */\n\t _compileChildren: function /*istanbul ignore next*/_compileChildren(handler, node) {\n\t if (handler.final) return;\n\t utils.toArray(node.childNodes).forEach(function (childNode) {\n\t if (childNode._compiled_) return;\n\t var childHandler = this.compile(childNode);\n\t childHandler.parent = this;\n\t handler.children.push(childHandler);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 编译一个模板\n\t * @param {HTMLNode} node 模板根元素\n\t * @param {Object} options 选项\n\t * @returns {function} 模板函数\n\t */\n\t compile: function /*istanbul ignore next*/compile(node, options) {\n\t if (!node) {\n\t throw new Error('Invalid node for compile');\n\t }\n\t node._compiled_ = true;\n\t options = options || {};\n\t //定义编译结果函数\n\t var handler = function handler(scope) {\n\t if (utils.isNull(scope)) scope = {};\n\t handler.directives.forEach(function (directive) {\n\t directive.scope = scope;\n\t directive.execute(scope);\n\t }, this);\n\t handler.children.forEach(function (childHandler) {\n\t childHandler(scope);\n\t }, this);\n\t };\n\t //--\n\t handler.dispose = function () {\n\t handler.directives.forEach(function (directive) {\n\t directive.unbind();\n\t }, this);\n\t handler.children.forEach(function (childHandler) {\n\t childHandler.dispose();\n\t }, this);\n\t };\n\t handler.node = node;\n\t //定义 children & directives \n\t handler.directives = [];\n\t handler.children = [];\n\t //编译相关指令\n\t if (options.element !== false) this._compileElement(handler, node);\n\t if (options.attribute !== false) this._compileAttributes(handler, node);\n\t this._bindHandler(handler);\n\t if (options.children !== false) this._compileChildren(handler, node);\n\t //返回编译后函数\n\t return handler;\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Compiler;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\tvar Expression = __webpack_require__(55);\n\t\n\t/**\n\t * 指令定义工场函数\n\t * @param {Object} classOptions 选项\n\t * @returns {Directive} 指令类\n\t */\n\tfunction Directive(classOptions) {\n\t //处理指令选项\n\t classOptions = classOptions || {};\n\t classOptions.type = classOptions.type || Directive.TA;\n\t classOptions.level = classOptions.level || Directive.LG;\n\t\n\t //生成指令类\n\t var DirectiveClass = new Class({\n\t\n\t $extends: classOptions,\n\t //指令构建函数\n\t constructor: function /*istanbul ignore next*/constructor(instanceOptions) {\n\t utils.copy(instanceOptions, this);\n\t },\n\t //挂载实例上的 options\n\t options: classOptions,\n\t //挂载实例核心方法\n\t bind: classOptions.bind || utils.noop,\n\t execute: classOptions.execute || function (scope) {\n\t this.scope = scope;\n\t if (this.options.type === Directive.TE) {\n\t return this.update();\n\t }\n\t var newValue = this.options.literal ? this.attribute.value : this.expression.execute(scope);\n\t if (!utils.deepEqual(this._value_, newValue)) {\n\t this.update(newValue, this._value_);\n\t this._value_ = newValue;\n\t }\n\t },\n\t update: classOptions.update || utils.noop,\n\t unbind: classOptions.unbind || utils.noop,\n\t //挂载指令常用的类型\n\t utils: utils,\n\t Expression: Expression\n\t });\n\t //向指令类添加「指令定义信息」\n\t DirectiveClass.options = classOptions;\n\t utils.setPrototypeOf(DirectiveClass, classOptions);\n\t return DirectiveClass;\n\t}\n\t\n\t//指令类型\n\tDirective.TA = 'A';\n\tDirective.TE = 'E';\n\t\n\t//指令级别\n\tDirective.LP = 3000; //prevent\n\tDirective.LS = 2000; //statement\n\tDirective.LE = 1000; //eleemtn\n\tDirective.LG = 0; //general\n\tDirective.LA = -1000; //any attribute\n\tDirective.LC = -2000; //cloak\n\t\n\tmodule.exports = Directive;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar utils = __webpack_require__(3);\n\t\n\t/**\n\t * 表达式类型,将字符串构析为可执行表达式实例\n\t */\n\tvar Expression = new Class({\n\t\n\t /**\n\t * 通过字符串构造一个表达式实例\n\t * @param {string} code 代码字符串\n\t * @param {boolean} mix 是否是混合代码\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(code, mix) {\n\t this.func = mix ? this._compileMixedCode(code) : this._compileCode(code);\n\t },\n\t\n\t /**\n\t * 编译普通表达式代码\n\t * @param {string} code 代码字符串\n\t * @returns {function} 编辑后的函数\n\t */\n\t _compileCode: function /*istanbul ignore next*/_compileCode(code) {\n\t code = this._escapeEOL(this._wrapCode(code));\n\t return this._createFunction(code);\n\t },\n\t\n\t /**\n\t * 编辑混合的表达式代码\n\t * @param {string} code 代码字符串\n\t * @returns {function} 编辑后的函数\n\t */\n\t _compileMixedCode: function /*istanbul ignore next*/_compileMixedCode(code) {\n\t var statements = this._parseMixedCode(code);\n\t code = this._escapeEOL(statements.join('+'));\n\t return this._createFunction(code);\n\t },\n\t\n\t /**\n\t * 通过符串代码创建一个可执行函数\n\t * @param {string} code 代码字符串\n\t * @returns {function} 创建的函数\n\t */\n\t _createFunction: function /*istanbul ignore next*/_createFunction(code) {\n\t var func = new Function('utils', 'scope', 'with(scope){return ' + code + '}');\n\t return func.bind(null, utils);\n\t },\n\t\n\t /**\n\t * 解析混合代码字符串\n\t * @param {string} code 混合代码字符串\n\t * @returns {Array} 解析后的「token」列表\n\t */\n\t _parseMixedCode: function /*istanbul ignore next*/_parseMixedCode(code) {\n\t var index = 0,\n\t length = code.length;\n\t var token = '',\n\t isExpr = false,\n\t tokens = [];\n\t while (index <= length) {\n\t var char = code[index++];\n\t var nextChar = code[index];\n\t if (utils.isNull(char)) {\n\t if (token.length > 0) {\n\t tokens.push('\"' + this._escapeCode(token) + '\"');\n\t }\n\t token = '';\n\t isExpr = false;\n\t } else if (!isExpr && char + nextChar == '{{') {\n\t if (token.length > 0) {\n\t tokens.push('\"' + this._escapeCode(token) + '\"');\n\t }\n\t token = '';\n\t isExpr = true;\n\t index++;\n\t } else if (isExpr && char + nextChar == '}}') {\n\t if (token.length > 0) {\n\t tokens.push(this._wrapCode(token));\n\t }\n\t token = '';\n\t isExpr = false;\n\t index++;\n\t } else {\n\t token += char;\n\t }\n\t }\n\t return tokens;\n\t },\n\t\n\t /**\n\t * 转义处理代码字符串\n\t * @param {string} code 源字符串\n\t * @returns {string} 处理后的字符串\n\t */\n\t _escapeCode: function /*istanbul ignore next*/_escapeCode(code) {\n\t return code.replace(/\"/, '\\\\\"').replace('\\r\\n', '\\\\r\\\\n').replace('\\n', '\\\\n');\n\t },\n\t\n\t /**\n\t * 转义换行符\n\t * @param {string} code 源字符串\n\t * @returns {string} 处理后的字符串\n\t */\n\t _escapeEOL: function /*istanbul ignore next*/_escapeEOL(code) {\n\t return code.replace(/\\n/gm, '\\\\\\n');\n\t },\n\t\n\t /**\n\t * 通过闭包和 try/cache 包裹代码\n\t * 将模板中错误的代码直接显示在「模板中用到的位置」,更易于定位错误。\n\t * @param {string} code 源字符串\n\t * @returns {string} 处理后的字符串\n\t */\n\t _wrapCode: function /*istanbul ignore next*/_wrapCode(code) {\n\t return '((function(){try{return (' + code + ')}catch(err){console.error(err);return err;}})())';\n\t },\n\t\n\t /**\n\t * 通过 scope 对象执行表达式\n\t * @param {Object} scope 上下文对象\n\t * @returns {Object} 执行结果\n\t */\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t if (utils.isNull(scope)) {\n\t scope = {};\n\t }\n\t return this.func.call(scope, scope);\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Expression;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = {\n\t '#text': __webpack_require__(57),\n\t 'each': __webpack_require__(58),\n\t 'if': __webpack_require__(60),\n\t 'prop': __webpack_require__(61),\n\t 'attr': __webpack_require__(62),\n\t 'on': __webpack_require__(63),\n\t 'html': __webpack_require__(64),\n\t 'text': __webpack_require__(65),\n\t 'prevent': __webpack_require__(66),\n\t 'id': __webpack_require__(67),\n\t 'cloak': __webpack_require__(68),\n\t 'show': __webpack_require__(69),\n\t 'model': __webpack_require__(70),\n\t 'focus': __webpack_require__(77),\n\t '*': __webpack_require__(78) //处理所有未知 attr\n\t};\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar Expression = __webpack_require__(55);\n\t\n\tmodule.exports = new Directive({\n\t type: Directive.TE,\n\t prefix: false,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.expr = new Expression(this.node.nodeValue, true);\n\t this.node.nodeValue = '';\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t var newValue = this.expr.execute(scope);\n\t if (this.node.nodeValue !== newValue) {\n\t this.node.nodeValue = newValue;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\t/*istanbul ignore next*/var _defineProperty = __webpack_require__(48);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar utils = __webpack_require__(3);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LS + 1, //比 if 要高一个权重\n\t final: true,\n\t literal: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.mountNode = document.createTextNode('');\n\t this.node.parentNode.insertBefore(this.mountNode, this.node);\n\t //虽然,bind 完成后,也会进行 attribute 的移除,\n\t //但 each 指令必须先移除,否再进行 item 编译时 each 还会生效\n\t this.node.removeAttribute(this.attribute.name);\n\t this.node.parentNode.removeChild(this.node);\n\t this.parseExpr();\n\t this.eachItems = {};\n\t },\n\t\n\t parseExpr: function /*istanbul ignore next*/parseExpr() {\n\t this.eachType = this.attribute.value.indexOf(' in ') > -1 ? 'in' : 'of';\n\t var tokens = this.attribute.value.split(' ' + this.eachType + ' ');\n\t var fnText = /*istanbul ignore next*/'with(scope){utils.each(' + tokens[1] + ',fn.bind(this,' + tokens[1] + '))}';\n\t this.each = new Function('utils', 'scope', 'fn', fnText).bind(null, this.utils);\n\t var names = tokens[0].split(',').map(function (name) {\n\t return name.trim();\n\t });\n\t if (this.eachType == 'in') {\n\t this.keyName = names[0];\n\t this.valueName = names[1];\n\t } else {\n\t this.keyName = names[1];\n\t this.valueName = names[0];\n\t }\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var currentEachKeys = [];\n\t var itemsFragment = document.createDocumentFragment();\n\t var self = this;\n\t this.each(scope, function (eachTarget, key) {\n\t //创建新 scope,必须选创建再设置 prototype 或采用定义「属性」的方式\n\t //因为指令参数指定的名称有可能和 scope 原有变量冲突\n\t //将导致针对 watch 变量的赋值,从引用发循环\n\t var newScope = new Scope(this.scope);\n\t if (self.keyName) {\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(newScope, self.keyName, {\n\t /*istanbul ignore next*/get: function get() {\n\t return key;\n\t }\n\t });\n\t }\n\t //value 采用「属性」进行代理,否则将会使「双向」绑定无把回设值\n\t if (self.valueName) {\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(newScope, self.valueName, {\n\t /*istanbul ignore next*/get: function get() {\n\t return eachTarget[key];\n\t },\n\t /*istanbul ignore next*/set: function set(value) {\n\t eachTarget[key] = value;\n\t }\n\t });\n\t }\n\t var oldItem = this.eachItems[key];\n\t if (oldItem) {\n\t oldItem.handler(newScope);\n\t } else {\n\t var newItem = {};\n\t //创建新元素\n\t newItem.node = this.node.cloneNode(true);\n\t itemsFragment.appendChild(newItem.node);\n\t newItem.handler = this.compiler.compile(newItem.node);\n\t newItem.handler(newScope);\n\t this.eachItems[key] = newItem;\n\t }\n\t currentEachKeys.push(key);\n\t }.bind(this));\n\t utils.each(this.eachItems, function (key, item) {\n\t if (currentEachKeys.some(function (k) /*istanbul ignore next*/{\n\t return k == key;\n\t })) return;\n\t if (item.node.parentNode) {\n\t item.node.parentNode.removeChild(item.node);\n\t }\n\t delete /*istanbul ignore next*/_this.eachItems[key];\n\t }, this);\n\t if (itemsFragment.childNodes.length > 0) {\n\t this.mountNode.parentNode.insertBefore(itemsFragment, this.mountNode);\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar utils = __webpack_require__(3);\n\t\n\tvar Scope = function Scope(parent, props) {\n\t //新的 scope 因为「继承」了 _observer_ \n\t //所以在新 scope 上进行双向绑定时,将将值成功回写\n\t //如果有天不须用 utils.cteate 继承法,需要注意 _observer_ \n\t //或在新 scope 上 defineProperty 代理 parentScope\n\t var scope = utils.create(parent);\n\t utils.copy(props, scope);\n\t //将 func 绑定到原 scope 上;\n\t utils.each(parent, function (key, value) {\n\t if (!utils.isFunction(value)) return;\n\t scope[key] = value.bind(parent);\n\t });\n\t return scope;\n\t};\n\t\n\tmodule.exports = Scope;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LS,\n\t final: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.mountNode = document.createTextNode('');\n\t this.node.parentNode.insertBefore(this.mountNode, this.node);\n\t //虽然,bind 完成后,也会进行 attribute 的移除,\n\t //但 if 指令必须先移除,否再进行 item 编译时 if 还会生效\n\t this.node.removeAttribute(this.attribute.name);\n\t this.node.parentNode.removeChild(this.node);\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var newValue = this.expression.execute(scope);\n\t if (newValue) {\n\t //如果新计算的结果为 true 才执行 \n\t this._handler = this._handler || this.compiler.compile(this.node);\n\t this._handler(scope);\n\t var node = this.node.$substitute || this.node;\n\t if (!node.parentNode) {\n\t this.mountNode.parentNode.insertBefore(node, this.mountNode);\n\t }\n\t } else {\n\t var _node = this.node.$substitute || this.node;\n\t if (_node.parentNode) _node.parentNode.removeChild(_node);\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(value) {\n\t var target = this.node.$target || this.node;\n\t target[this.decorates[0]] = value;\n\t }\n\t // execute: function (scope) {\n\t // this.scope = scope;\n\t // let newValue = this.expression.execute(scope);\n\t // let target = this.node.$target || this.node;\n\t // target[this.decorates[0]] = newValue;\n\t // }\n\t});\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(value) {\n\t var target = this.node.$target || this.node;\n\t if (target.setAttribute) {\n\t target.setAttribute(this.decorates[0], value);\n\t } else {\n\t target[this.decorates[0]] = value;\n\t }\n\t }\n\t});\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t literal: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t var attrValue = this.attribute.value || '';\n\t if (attrValue.indexOf('(') < 0 && attrValue.indexOf(')') < 0) {\n\t attrValue += '($event)';\n\t }\n\t this.expr = new this.Expression(attrValue);\n\t var eventTarget = this.node.$target || this.node;\n\t this.emiter = new EventEmitter(eventTarget);\n\t this.emiter.addListener(this.decorates[0], function (event) {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.expr.execute(new Scope(this.scope, {\n\t $event: event\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(newValue) {\n\t this.node.innerHTML = newValue;\n\t }\n\t});\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(newValue) {\n\t this.node.innerText = newValue;\n\t }\n\t});\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LP,\n\t final: true\n\t});\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t literal: true,\n\t\n\t update: function /*istanbul ignore next*/update(id) {\n\t if (id in this.scope) {\n\t throw new Error('Conflicting component id `' + id + '`');\n\t }\n\t this.scope[id] = this.node.$target || this.node;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t level: Directive.LC,\n\t literal: true,\n\t prefix: false,\n\t\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.node.removeAttribute(this.attribute.name);\n\t }\n\t\n\t});\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t update: function /*istanbul ignore next*/update(value) {\n\t this.node.style.display = value ? '' : 'none';\n\t }\n\t});\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar SelectDirective = __webpack_require__(71);\n\tvar EditableDirective = __webpack_require__(72);\n\tvar InputDirective = __webpack_require__(73);\n\tvar RadioDirective = __webpack_require__(74);\n\tvar CheckboxDirective = __webpack_require__(75);\n\tvar PropDirective = __webpack_require__(76);\n\t\n\tvar Directive = function Directive(options) {\n\t var node = options.node;\n\t var tagName = node.tagName;\n\t if (options.decorates[0]) {\n\t return new PropDirective(options);\n\t } else if (tagName == 'INPUT') {\n\t var type = node.getAttribute('type');\n\t if (type == 'radio') {\n\t return new RadioDirective(options);\n\t } else if (type == 'checkbox') {\n\t return new CheckboxDirective(options);\n\t } else {\n\t return new InputDirective(options);\n\t }\n\t } else if (tagName == 'TEXTAREA') {\n\t return new InputDirective(options);\n\t } else if (tagName == 'SELECT') {\n\t return new SelectDirective(options);\n\t } else if (node.isContentEditable) {\n\t return new EditableDirective(options);\n\t } else {\n\t throw new Error( /*istanbul ignore next*/'Directive `model` cannot be used on `' + tagName + '`');\n\t }\n\t};\n\t\n\t//手动添加 classOptions\n\tDirective.options = {\n\t level: Directive.LA\n\t};\n\t\n\tmodule.exports = Directive;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t final: true,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.node.removeAttribute(this.attribute.name);\n\t this._handler = this.compiler.compile(this.node);\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('change', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t var selectedOptions = this.node.selectedOptions;\n\t var value = this.node.multiple ? [].slice.call(selectedOptions).map(function (option) {\n\t return option.value;\n\t }, this) : selectedOptions[0].value;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: value\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t this._handler(scope);\n\t var value = this.expression.execute(scope);\n\t if (!this.utils.isArray(value)) value = [value];\n\t [].slice.call(this.node.options).forEach(function (option) {\n\t option.selected = value.indexOf(option.value) > -1;\n\t }, this);\n\t }\n\t\n\t});\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('input', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.innerHTML\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var value = this.expression.execute(scope);\n\t if (this.node.innerHTML !== value) {\n\t this.node.innerHTML = value;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('input', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.value\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var value = this.expression.execute(scope);\n\t if (this.node.value !== value) {\n\t this.node.value = value;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('change', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.value\n\t }));\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t var value = this.expression.execute(scope);\n\t this.node.checked = value == this.node.value;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.emiter = new EventEmitter(this.node);\n\t this.emiter.addListener('change', function () {\n\t if (this.utils.isNull(this.scope)) return;\n\t var value = this.expression.execute(this.scope);\n\t if (this.utils.isArray(value) && this.node.checked) {\n\t value.push(this.node.value);\n\t } else if (this.utils.isArray(value) && !this.node.checked) {\n\t var index = value.indexOf(this.node.value);\n\t value.splice(index, 1);\n\t } else {\n\t this.backExpr.execute(new Scope(this.scope, {\n\t _value_: this.node.checked\n\t }));\n\t }\n\t }.bind(this), false);\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.emiter.removeListener();\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.scope = scope;\n\t var value = this.expression.execute(scope);\n\t if (this.utils.isArray(value)) {\n\t this.node.checked = value.indexOf(this.node.value) > -1;\n\t } else {\n\t this.node.checked = value;\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\tvar Scope = __webpack_require__(59);\n\t\n\tmodule.exports = new Directive({\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.target = this.node.$target;\n\t this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n\t this.bindProp = this.decorates[0];\n\t if (!this.target) {\n\t throw new Error( /*istanbul ignore next*/'Directive `model:' + this.bindProp + '` cannot be used on `' + this.node.tagName + '`');\n\t }\n\t this.watcher = this.target.$watch(this.bindProp, function (value) {\n\t if ( /*istanbul ignore next*/_this.utils.isNull( /*istanbul ignore next*/_this.scope)) return;\n\t /*istanbul ignore next*/_this.backExpr.execute(new Scope( /*istanbul ignore next*/_this.scope, {\n\t _value_: value\n\t }));\n\t });\n\t },\n\t\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t this.target.$unWatch(this.watcher);\n\t },\n\t\n\t update: function /*istanbul ignore next*/update(value) {\n\t this.target[this.bindProp] = value;\n\t }\n\t\n\t});\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\tmodule.exports = new Directive({\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var state = this.expression.execute(scope);\n\t setTimeout(function () {\n\t if (state) /*istanbul ignore next*/_this.node.focus();else /*istanbul ignore next*/_this.node.blur();\n\t }, 0);\n\t }\n\t});\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Directive = __webpack_require__(54);\n\t\n\t/**\n\t * 通用的 attribute 指令\n\t * 用于所有 attribute 的处理\n\t * 例如:\n\t *
    \n\t *
    \n\t */\n\tmodule.exports = new Directive({\n\t level: Directive.LA,\n\t prefix: false,\n\t literal: true,\n\t remove: false,\n\t\n\t /**\n\t * 初始化指令\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.computedName = this.attribute.name;\n\t this.computedValue = this.attribute.value;\n\t this.nameExpr = new this.Expression(this.attribute.name, true);\n\t this.valueExpr = new this.Expression(this.attribute.value, true);\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t var target = this.node.$target || this.node;\n\t var newComputedName = this.nameExpr.execute(scope);\n\t if (this.computedName !== newComputedName) {\n\t //移除旧名称\n\t if (target.removeAttribute) {\n\t target.removeAttribute(this.computedName);\n\t }\n\t //设置新名称\n\t this.computedName = newComputedName;\n\t if (!this.utils.isNull(this.computedName) && this.computedName.length > 0) {\n\t if (target.setAttribute) {\n\t target.setAttribute(this.computedName, this.computedValue || '');\n\t }\n\t }\n\t }\n\t var newComputeValue = this.valueExpr.execute(scope);\n\t if (this.computedValue !== newComputeValue) {\n\t this.computedValue = newComputeValue;\n\t if (target.setAttribute) {\n\t target.setAttribute(this.computedName, this.computedValue || '');\n\t } else {\n\t target[this.computedName] = this.computedValue;\n\t }\n\t }\n\t }\n\t\n\t});\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4);\n\tvar Observer = __webpack_require__(7);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Compiler = __webpack_require__(53);\n\t\n\t/**\n\t * 模板类\n\t * 可能通过 element 作为参数,创建一个模板实例\n\t */\n\tvar Template = new Class({\n\t\n\t $extends: EventEmitter,\n\t\n\t /**\n\t * 构建一个模板板实例\n\t * @param {HTMLNode} element HTML 元素\n\t * @param {Object} options 选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(element, options) {\n\t options = options || {};\n\t EventEmitter.call(this);\n\t this.options = options;\n\t this.element = element;\n\t this.compiler = options.compiler || new Compiler(options);\n\t this.render = this.compiler.compile(this.element);\n\t this.update = this.update.bind(this);\n\t this._update = this._update.bind(this);\n\t this._updateTimer = 0;\n\t },\n\t\n\t /**\n\t * 更新当前模板 (会过滤不必要的更新)\n\t * @returns {void} 无返回\n\t */\n\t update: function /*istanbul ignore next*/update() {\n\t if (this._updateTimer) {\n\t clearTimeout(this._updateTimer);\n\t this._updateTimer = null;\n\t }\n\t this._updateTimer = setTimeout(this._update, 0);\n\t },\n\t\n\t /**\n\t * 更新当前模板内部方法 \n\t * @returns {void} 无返回\n\t */\n\t _update: function /*istanbul ignore next*/_update() {\n\t if (!this._updateTimer || !this.observer) return;\n\t this.emit('update', this);\n\t this.render(this.observer.target);\n\t this._onBind();\n\t },\n\t\n\t /**\n\t * 在绑定成功时\n\t * @returns {void} 无返回\n\t */\n\t _onBind: function /*istanbul ignore next*/_onBind() {\n\t if (this._bound) return;\n\t this._bound = true;\n\t this.emit('bind', this);\n\t },\n\t\n\t /**\n\t * 将模板绑定到一个 scope\n\t * @param {Object} scope 绑定的上下文对象\n\t * @param {boolean} disableFirst 是否禁用第一次的自动渲染\n\t * @returns {void} 无返回\n\t */\n\t bind: function /*istanbul ignore next*/bind(scope, disableFirst) {\n\t if (!scope) return;\n\t this.unbind();\n\t this.observer = new Observer(scope, {\n\t root: this.options.root\n\t });\n\t scope.$self = scope;\n\t this.observer.on('change', this.update);\n\t if (disableFirst) {\n\t this._onBind();\n\t } else {\n\t this.update();\n\t }\n\t },\n\t\n\t /**\n\t * 解绑定\n\t * @returns {void} 无返回\n\t */\n\t unbind: function /*istanbul ignore next*/unbind() {\n\t if (!this.observer) return;\n\t this.observer.removeListener('change', this.update);\n\t this.observer.clearReference();\n\t this.observer = null;\n\t },\n\t\n\t /**\n\t * 释放\n\t * @returns {void} 无返回\n\t */\n\t dispose: function /*istanbul ignore next*/dispose() {\n\t this.unbind();\n\t this.render.dispose();\n\t }\n\t\n\t});\n\t\n\tmodule.exports = Template;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Component = __webpack_require__(81);\n\tvar components = __webpack_require__(83);\n\tvar directives = __webpack_require__(52).directives;\n\t\n\tComponent.components = components;\n\tComponent.Component = Component;\n\t\n\tComponent.component = function (name, component) {\n\t if (!component) return components[name];\n\t components[name] = component;\n\t};\n\t\n\tComponent.directive = function (name, directive) {\n\t if (!directive) return directives[name];\n\t directives[name] = directive;\n\t};\n\t\n\tmodule.exports = Component;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\t/*istanbul ignore next*/var _defineProperty = __webpack_require__(48);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Class = __webpack_require__(4);\n\tvar Template = __webpack_require__(52);\n\tvar Watcher = __webpack_require__(6);\n\tvar utils = __webpack_require__(3);\n\tvar EventEmitter = __webpack_require__(51);\n\tvar Observer = __webpack_require__(7);\n\tvar ComponentDirective = __webpack_require__(82);\n\t\n\t/**\n\t * 组件类\n\t * 用于定义一个新的组件\n\t * @param {Object} classOpts 类选项\n\t * @returns {Component} 组件类\n\t */\n\tfunction Component(classOpts) {\n\t\n\t //处理组件选项\n\t classOpts = classOpts || {};\n\t\n\t //处理「继承」,目前的机制,只能用「合并类选项」\n\t var mixes = classOpts.mixes;\n\t delete classOpts.mixes;\n\t if (mixes && !utils.isArray(mixes)) {\n\t mixes = [mixes];\n\t } else {\n\t mixes = [];\n\t }\n\t var extendComponent = classOpts.extend || Component;\n\t delete classOpts.extend;\n\t //extend 会覆盖 mixes 中的同名成员\n\t mixes.push(extendComponent);\n\t //classOpts 会覆盖 extend 或 mixes 中的同名成员\n\t mixes.push(classOpts);\n\t var mixedClassOpts = {};\n\t mixes.forEach(function (mixItem) {\n\t if (mixItem instanceof Component || mixItem == Component) {\n\t mixItem = mixItem.$options || {};\n\t }\n\t utils.mix(mixedClassOpts, mixItem);\n\t });\n\t classOpts = mixedClassOpts;\n\t\n\t /**\n\t * 定义组件类\n\t * 可以通过 new ComponentClass() 创建组件实例\n\t */\n\t var ComponentClass = new Class({\n\t $extends: extendComponent,\n\t\n\t /**\n\t * 组件类构造函数\n\t * @param {object} instanceOpts 实例选项\n\t * @returns {void} 无返回\n\t */\n\t constructor: function /*istanbul ignore next*/constructor(instanceOpts) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t if (this == window) return new this.$class(instanceOpts);\n\t EventEmitter.call(this);\n\t instanceOpts = instanceOpts || {};\n\t //创建组件实例时可以给实例添加成员\n\t utils.each(instanceOpts, function (key, value) {\n\t if (key in /*istanbul ignore next*/_this) return;\n\t /*istanbul ignore next*/_this[key] = value;\n\t });\n\t this._onTemplateUpdate_ = this._onTemplateUpdate_.bind(this);\n\t this._createdData_(classOpts.data);\n\t this._createProperties_(classOpts.properties || classOpts.props);\n\t this._createWatches_(classOpts.watches || classOpts.watch);\n\t this.$directives = this.$directives || {};\n\t this._importDirectives_(classOpts.directives);\n\t this.$components = this.$components || {};\n\t this._importComponents_(__webpack_require__(83));\n\t this._importComponents_({\n\t 'self': ComponentClass\n\t });\n\t this._importComponents_(classOpts.components);\n\t utils.defineFreezeProp(this, '$children', []);\n\t if (instanceOpts.parent) this.$setParent(instanceOpts.parent);\n\t this.$callHook('init', [instanceOpts]);\n\t Observer.observe(this);\n\t if (classOpts.element) {\n\t this.$mount();\n\t } else {\n\t this.$compile();\n\t }\n\t },\n\t\n\t /**\n\t * 设定父组件\n\t * @param {Object} parent 父组件\n\t * @returns {void} 无返回\n\t */\n\t $setParent: function /*istanbul ignore next*/$setParent(parent) {\n\t if (this.$parent === parent) return;\n\t if (this.$parent) {\n\t this.$parent.$removeChild(this);\n\t }\n\t if (parent) {\n\t parent.$addChild(this);\n\t }\n\t },\n\t\n\t /**\n\t * 添加子组件\n\t * @param {Object} child 子组件\n\t * @returns {void} 无返回\n\t */\n\t $addChild: function /*istanbul ignore next*/$addChild(child) {\n\t if (!(child instanceof Component)) return;\n\t this.$children.push(child);\n\t utils.defineFreezeProp(child, '$parent', this);\n\t utils.defineFreezeProp(child, '$root', this.$root || this);\n\t },\n\t\n\t /**\n\t * 移除子组件\n\t * @param {Object} child 子组件\n\t * @returns {void} 无返回\n\t */\n\t $removeChild: function /*istanbul ignore next*/$removeChild(child) {\n\t var index = this.$children.indexOf(child);\n\t this.$children.splice(index, 1);\n\t utils.defineFreezeProp(child, '$parent', null);\n\t //utils.defineFreezeProp(child, '$root', null);\n\t },\n\t\n\t /**\n\t * 获取根组件, 为了能通过 polyfill 处理 IE8 暂不用这种方式\n\t */\n\t get $root() {\n\t if (this.$parent) {\n\t return this.$parent.$root;\n\t } else {\n\t return this;\n\t }\n\t },\n\t\n\t /**\n\t * 导入用到的子组件类\n\t * @param {Object} components 引入的组件\n\t * @returns {void} 无返回\n\t */\n\t _importComponents_: function /*istanbul ignore next*/_importComponents_(components) {\n\t utils.each(components, function (name, component) {\n\t if (!component) return;\n\t this.$components[name] = component;\n\t this.$directives[name] = new ComponentDirective({\n\t name: name,\n\t component: component,\n\t parent: this\n\t });\n\t }, this);\n\t },\n\t\n\t /**\n\t * 导入一个用到的指令\n\t * @param {Object} directives 引入的指令\n\t * @returns {void} 无返回\n\t */\n\t _importDirectives_: function /*istanbul ignore next*/_importDirectives_(directives) {\n\t utils.each(directives, function (name, directive) {\n\t if (!directive) return;\n\t this.$directives[name] = directive;\n\t }, this);\n\t },\n\t\n\t /**\n\t * 调用生命周期 hook\n\t * @param {string} name 调用的 hook 名称\n\t * @param {Array} args 调用 hook 的参数列表\n\t * @returns {void} 无反回\n\t */\n\t $callHook: function /*istanbul ignore next*/$callHook(name, args) {\n\t var hook = this[/*istanbul ignore next*/'on' + utils.firstUpper(name)];\n\t if (!utils.isFunction(hook)) return;\n\t hook.apply(this, args || []);\n\t this.$emit( /*istanbul ignore next*/'$' + name, args);\n\t },\n\t\n\t /**\n\t * 创建数据对象\n\t * @param {Object} data 组件数据对象\n\t * @returns {void} 无返回\n\t */\n\t _createdData_: function /*istanbul ignore next*/_createdData_(data) {\n\t if (utils.isFunction(data)) {\n\t this.$data = data.call(this);\n\t } else {\n\t this.$data = data || {};\n\t }\n\t utils.each(this.$data, function (name) {\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(this, name, {\n\t configurable: true,\n\t enumerable: true,\n\t get: function /*istanbul ignore next*/get() {\n\t if (!this.$data) return;\n\t return this.$data[name];\n\t },\n\t set: function /*istanbul ignore next*/set(value) {\n\t if (!this.$data) return;\n\t this.$data[name] = value;\n\t }\n\t });\n\t }, this);\n\t },\n\t\n\t /**\n\t * 创建组件属性\n\t * @param {Object} properties 属性定义对象\n\t * @returns {void} 无返回\n\t */\n\t _createProperties_: function /*istanbul ignore next*/_createProperties_(properties) {\n\t this.$properties = {};\n\t utils.each(properties, function (name, descriptor) {\n\t if (utils.isFunction(descriptor)) {\n\t //get 简化写法\n\t descriptor = {\n\t get: descriptor\n\t };\n\t } else if (!utils.isObject(descriptor)) {\n\t //基本类型\n\t descriptor = {\n\t value: descriptor\n\t };\n\t } else {\n\t //通过 descriptor 定义 get/set/value\n\t //不能直接用 descriptor,\n\t //因为为会导到多个组件实例间的影响\n\t descriptor = utils.copy(descriptor);\n\t }\n\t //如果 get/set 都没有,则自动生成\n\t var hasGetterOrSetter = !!descriptor.get || !!descriptor.set;\n\t if (!hasGetterOrSetter) {\n\t descriptor.get = function () {\n\t return descriptor.value;\n\t };\n\t descriptor.set = function (value) {\n\t descriptor.value = value;\n\t };\n\t }\n\t //定义为属性\n\t /*istanbul ignore next*/(0, _defineProperty2.default)(this, name, {\n\t configurable: true,\n\t enumerable: true,\n\t get: function /*istanbul ignore next*/get() {\n\t if (!descriptor.get) {\n\t throw new Error('Property `' + name + '` cannot be read');\n\t }\n\t return descriptor.get.call(this);\n\t },\n\t set: function /*istanbul ignore next*/set(value) {\n\t if (!descriptor.set) {\n\t throw new Error('Property `' + name + '` cannot be written');\n\t }\n\t if (descriptor.test && !descriptor.test(value)) {\n\t throw new Error('Invalid value `' + value + '` for property `' + name + '`');\n\t }\n\t descriptor.set.call(this, value);\n\t if (this._observer_) {\n\t this._observer_.emitChange({\n\t path: name,\n\t value: value\n\t });\n\t }\n\t }\n\t });\n\t this.$properties[name] = descriptor;\n\t }, this);\n\t },\n\t\n\t /**\n\t * 创建监控\n\t * 为什么用 watches 而不是 watchers 或其它?\n\t * 因为,这里仅是「监控配置」并且是「复数」\n\t * @param {Object} watches 监控定义对象\n\t * @returns {void} 无返回\n\t */\n\t _createWatches_: function /*istanbul ignore next*/_createWatches_(watches) {\n\t this._watchers_ = this._watchers_ || [];\n\t utils.each(watches, function (name, handler) {\n\t this.$watch(name, handler);\n\t }, this);\n\t },\n\t\n\t /**\n\t * 在模板发生更新时\n\t * @returns {void} 无返回\n\t */\n\t _onTemplateUpdate_: function /*istanbul ignore next*/_onTemplateUpdate_() {\n\t this._watchers_.forEach(function (watcher) {\n\t watcher.calc();\n\t }, this);\n\t },\n\t\n\t /**\n\t * 添加一个监控\n\t * @param {string|function} path 计算函数或路径\n\t * @param {function} handler 处理函数\n\t * @returns {void} 无返回\n\t */\n\t $watch: function /*istanbul ignore next*/$watch(path, handler) {\n\t if (!utils.isFunction(handler)) return;\n\t var calcer = path;\n\t if (!utils.isFunction(path)) {\n\t calcer = function /*istanbul ignore next*/calcer() {\n\t return utils.getByPath(this, path);\n\t };\n\t }\n\t var watcher = new Watcher(calcer.bind(this), handler.bind(this));\n\t this._watchers_.push(watcher);\n\t return watcher;\n\t },\n\t\n\t /**\n\t * 取消一个 watcher 对象\n\t * @param {object} watcher 监控对象实例\n\t * @returns {void} 无返回\n\t */\n\t $unWatch: function /*istanbul ignore next*/$unWatch(watcher) {\n\t var index = this._watchers_.findIndex(function (w) /*istanbul ignore next*/{\n\t return w === watcher;\n\t });\n\t this._watchers_.splice(index, 1);\n\t },\n\t\n\t /**\n\t * 创建元素\n\t * @returns {void} 无返回\n\t */\n\t _createElement_: function /*istanbul ignore next*/_createElement_() {\n\t if (this._created_) return;\n\t this._created_ = true;\n\t this.$callHook('create');\n\t utils.defineFreezeProp(this, '$element', this.element || ComponentClass.$template.cloneNode(true));\n\t if (!this.$element || this.$element.nodeName === '#text') {\n\t throw new Error('Invalid component template');\n\t }\n\t this.$callHook('created');\n\t },\n\t\n\t /**\n\t * 编译自身模板并完成绑定\n\t * @returns {void} 无返回\n\t */\n\t $compile: function /*istanbul ignore next*/$compile() {\n\t if (this._compiled_) return;\n\t this._compiled_ = true;\n\t this._createElement_();\n\t utils.defineFreezeProp(this, '_template_', new Template(this.$element, {\n\t directives: this.$directives,\n\t root: true\n\t }));\n\t this._template_.bind(this);\n\t this._template_.on('update', this._onTemplateUpdate_);\n\t this._template_.on('bind', function () {\n\t if (!this.deferReady) this.$callHook('ready');\n\t }.bind(this));\n\t },\n\t\n\t /**\n\t * 向 DOM tree 中挂截组件\n\t * @param {HTMLNode} mountNode 挂载点元素\n\t * @param {append} append 是否 append 到挂载元素内\n\t * @returns {void} 无返回 \n\t */\n\t $mount: function /*istanbul ignore next*/$mount(mountNode, append) {\n\t if (this._mounted_) return;\n\t this.$compile();\n\t this.$callHook('mount');\n\t if (mountNode) {\n\t mountNode.$substitute = this.$element;\n\t this.$element._mountNode = mountNode;\n\t if (append) {\n\t mountNode.appendChild(this.$element);\n\t } else if (mountNode.parentNode) {\n\t mountNode.parentNode.insertBefore(this.$element, mountNode);\n\t }\n\t }\n\t this._mounted_ = true;\n\t this._removed_ = false;\n\t this.$callHook('mounted');\n\t },\n\t\n\t /**\n\t * 将组件添加到指定容器元素内\n\t * @param {HTMLNode} node 容器元素\n\t * @returns {void} 无返回 \n\t */\n\t $appendTo: function /*istanbul ignore next*/$appendTo(node) {\n\t this.$mount(node, true);\n\t },\n\t\n\t /**\n\t * 移除组件\n\t * @returns {void} 无返回\n\t */\n\t $remove: function /*istanbul ignore next*/$remove() {\n\t if (this._removed_ || !this._mounted_) return;\n\t this.$callHook('remove');\n\t if (this.$element.parentNode) {\n\t this.$element.parentNode.removeChild(this.$element);\n\t }\n\t this._removed_ = true;\n\t this._mounted_ = false;\n\t this.$callHook('removed');\n\t },\n\t\n\t /**\n\t * 触发自身的一个事件并向上冒泡\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @returns {void} 无返回\n\t */\n\t $dispatch: function /*istanbul ignore next*/$dispatch(name, data) {\n\t var stopPropagation = this.$emit(name, data);\n\t if (!stopPropagation && this.$parent) {\n\t this.$parent.$dispatch(name, data);\n\t }\n\t },\n\t\n\t /**\n\t * 触发自身的一个事件并向下广播\n\t * @param {string} name 事件名称\n\t * @param {object} data 传递的对象\n\t * @returns {void} 无返回\n\t */\n\t $broadcast: function /*istanbul ignore next*/$broadcast(name, data) {\n\t var stopPropagation = this.$emit(name, data);\n\t if (!stopPropagation && this.$children && this.$children.length > 0) {\n\t this.$children.forEach(function (child) {\n\t child.$broadcast(name, data);\n\t }, this);\n\t }\n\t },\n\t\n\t /**\n\t * 释放组件\n\t * @returns {void} 无返回\n\t */\n\t $dispose: function /*istanbul ignore next*/$dispose() {\n\t this.$remove();\n\t this._emitter_.off();\n\t this.$children.forEach(function (child) {\n\t child.$dispose();\n\t }, this);\n\t if (this.$parent) {\n\t var index = this.$parent.$children.indexOf(this);\n\t this.$parent.$children.splice(index, 1);\n\t }\n\t this.$callHook('dispose');\n\t if (this._compiled_) {\n\t this._template_.unbind();\n\t }\n\t this.$callHook('disposed');\n\t for (var key in this) {\n\t delete this[key];\n\t }\n\t ['_observer_', '$element', '$children', '$parent', '_template_'].forEach(function (key) {\n\t delete this[key];\n\t }, this);\n\t utils.setPrototypeOf(this, null);\n\t }\n\t\n\t });\n\t\n\t //保存类选项\n\t ComponentClass.$options = classOpts;\n\t ComponentClass.$template = utils.parseDom(classOpts.template);\n\t\n\t //向 ComponentClass.prototype 上拷贝成员\n\t utils.copy(classOpts, ComponentClass.prototype);\n\t utils.copy(classOpts.methods, ComponentClass.prototype);\n\t\n\t //使 ComponentClass instanceof Component === true \n\t //IE9/10 下为 false,并且动态为 Component.prototype 添加的成员不会在 ComponentClass 上生效\n\t utils.setPrototypeOf(ComponentClass, Component.prototype);\n\t\n\t return ComponentClass;\n\t}\n\t\n\t//继承自 EventEmitter\n\tComponent.prototype = utils.create(EventEmitter.prototype);\n\t\n\t//组件扩展方法,简单封装 extends\n\tComponent.extend = function (classOpts) {\n\t return new Component(classOpts);\n\t};\n\t\n\t//定义扩展方法\n\tComponent.prototype.extend = function (classOpts) {\n\t classOpts = classOpts || {};\n\t classOpts.extend = this;\n\t return new Component(classOpts);\n\t};\n\t\n\t//创建实例的方法\n\tComponent.prototype.create = function (instanceOpts) {\n\t return new this(instanceOpts);\n\t};\n\t\n\t//针对包括 element 组件类的启动方法\n\tComponent.prototype.start = function (instanceOpts) {\n\t if (!this.$options || !this.$options.element) {\n\t throw new Error('Start method cannot be called');\n\t }\n\t return this.create(instanceOpts);\n\t};\n\t\n\tmodule.exports = Component;\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Template = __webpack_require__(52);\n\tvar Directive = Template.Directive;\n\t\n\t/**\n\t * 创建一个组件指令\n\t * @param {object} options 选项\n\t * @returns {object} 组件指令\n\t */\n\tfunction ComponentDirective(options) {\n\t\n\t return new Directive({\n\t type: Directive.TE,\n\t literal: true,\n\t final: true,\n\t level: Directive.LE,\n\t\n\t bind: function /*istanbul ignore next*/bind() {\n\t this.component = new options.component({\n\t deferReady: true,\n\t parent: options.parent || this.scope\n\t });\n\t this.handleAttrs();\n\t this.node.$target = this.component;\n\t this.handler = this.compiler.compile(this.node, {\n\t element: false,\n\t children: false\n\t });\n\t this.handleContents();\n\t this.component.$mount(this.node);\n\t if (this.node.parentNode) {\n\t this.node.parentNode.removeChild(this.node);\n\t }\n\t },\n\t\n\t handleAttrs: function /*istanbul ignore next*/handleAttrs() {\n\t this.attrs = [].slice.call(this.node.attributes);\n\t var directiveRegexp = new RegExp('^' + this.prefix + ':', 'i');\n\t this.attrs.forEach(function (attr) {\n\t if (directiveRegexp.test(attr.name)) return;\n\t if (attr.name in this.component.$properties) return;\n\t this.component.$element.setAttribute(attr.name, attr.value);\n\t this.node.removeAttribute(attr.name);\n\t }, this);\n\t },\n\t\n\t handleContents: function /*istanbul ignore next*/handleContents() {\n\t this.placeHandlers = [];\n\t var places = [].slice.call(this.component.$element.querySelectorAll('[' + this.prefix + '\\\\:content]'));\n\t places.forEach(function (place) {\n\t //将内容插入到指定的「位置」\n\t var contents = null;\n\t var selector = place.getAttribute(this.prefix + ':content');\n\t if (!selector) {\n\t contents = [].slice.call(this.node.childNodes);\n\t } else {\n\t contents = [].slice.call(this.node.querySelectorAll(selector));\n\t }\n\t if (!contents || contents.length < 1) return;\n\t place.innerHTML = '';\n\t contents.forEach(function (content) {\n\t place.appendChild(content.cloneNode(true));\n\t }, this);\n\t //编译插入后的子「内容模板」\n\t var handler = this.compiler.compile(place);\n\t this.placeHandlers.push(handler);\n\t }, this);\n\t },\n\t\n\t execute: function /*istanbul ignore next*/execute(scope) {\n\t this.handler(scope);\n\t if (!this._ready_) {\n\t this._ready_ = true;\n\t this.component.$callHook('ready');\n\t }\n\t this.placeHandlers.forEach(function (handler) {\n\t handler(scope);\n\t }, this);\n\t }\n\t\n\t });\n\t}\n\t\n\tmodule.exports = ComponentDirective;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = {\n\t View: __webpack_require__(84)\n\t};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Component = __webpack_require__(81);\n\tvar utils = __webpack_require__(3);\n\t\n\t/**\n\t * 内置视图组件\n\t * 可以加载并显示其它组件,并可以指定「转场效果」\n\t */\n\tvar View = new Component({\n\t\n\t template: '
    ',\n\t\n\t properties: {\n\t\n\t /**\n\t * 显示到视图中的组件\n\t */\n\t component: {\n\t test: function /*istanbul ignore next*/test(value) {\n\t if (!value) return false;\n\t return value instanceof Component || utils.isString(value);\n\t },\n\t set: function /*istanbul ignore next*/set(component) {\n\t if (this._transitioning) return;\n\t this._transitioning = true;\n\t //如果 value 是字符串则尝试从 $parent.components 中获取组件类 \n\t if (utils.isString(component)) {\n\t if (this.$parent && this.$parent.$components) {\n\t this.component = this.$parent.$components[component];\n\t } else {\n\t this.component = null;\n\t }\n\t return;\n\t }\n\t //声明新旧组件变量\n\t var newComponentInstance = null;\n\t var oldComponentInstance = this.componentInstance;\n\t //创建新组件实例\n\t if (utils.isFunction(component)) {\n\t newComponentInstance = new component({\n\t parent: this\n\t });\n\t } else {\n\t component.$setParent(this);\n\t newComponentInstance = component;\n\t }\n\t //通过转场控制器进行转场准备\n\t this.transition.prep(newComponentInstance, oldComponentInstance);\n\t //挂载新组件实例\n\t newComponentInstance.$appendTo(this.$element);\n\t //通过转场控制器进行转场\n\t this.transition.go(newComponentInstance, oldComponentInstance, function () {\n\t //触发相关事件\n\t this.$emit('enter', newComponentInstance);\n\t this.$emit('leave', oldComponentInstance);\n\t //销毁旧组件实例\n\t if (oldComponentInstance) {\n\t oldComponentInstance.$dispose();\n\t }\n\t this._transitioning = false;\n\t }.bind(this));\n\t //暂存当前组件实例\n\t this.componentInstance = newComponentInstance;\n\t },\n\t get: function /*istanbul ignore next*/get() {\n\t return this._Component;\n\t }\n\t },\n\t\n\t /**\n\t * 视图的转场控制对象\n\t */\n\t transition: {\n\t get: function /*istanbul ignore next*/get() {\n\t return this._transition || View.transition;\n\t },\n\t set: function /*istanbul ignore next*/set(transition) {\n\t if (this._transitioning) return;\n\t if (!transition || utils.isFunction(transition.prep) && utils.isFunction(transition.go)) {\n\t if (this._transition && utils.isFunction(this._transition.clean)) {\n\t this._transition.clean(this);\n\t }\n\t if (transition && utils.isFunction(transition.init)) {\n\t transition.init(this);\n\t }\n\t this._transition = transition;\n\t } else {\n\t throw new Error('Invalid transition');\n\t }\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * 切换到指定的组件\n\t * @param {Component} component 组件\n\t * @param {transition} transition 转场控制组件\n\t * @returns {void} 无返回\n\t */\n\t switchTo: function /*istanbul ignore next*/switchTo(component, transition) {\n\t if (transition) {\n\t this.transition = transition;\n\t }\n\t this.component = component;\n\t }\n\t\n\t});\n\t\n\t/**\n\t * 默认转场设置\n\t */\n\tView.transition = {\n\t //init: function () { },\n\t //clean: function () { },\n\t\n\t /**\n\t * 转场开始前的准备\n\t * @param {Component} newComponent 新组件\n\t * @param {Component} oldComponent 旧组件\n\t * @returns {void} 无返回\n\t */\n\t prep: function /*istanbul ignore next*/prep(newComponent, oldComponent) {\n\t if (oldComponent) oldComponent.$element.style.display = 'none';\n\t },\n\t\n\t /**\n\t * 执行转场动画\n\t * @param {Component} newComponent 新组件\n\t * @param {Component} oldComponent 旧组件\n\t * @param {Function} done 完成后的回调\n\t * @returns {void} 无返回\n\t */\n\t go: function /*istanbul ignore next*/go(newComponent, oldComponent, done) {\n\t done();\n\t }\n\t};\n\t\n\tmodule.exports = View;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar items = __webpack_require__(86);\n\t\n\t__webpack_require__(87);\n\t\n\tvar Toolbar = new mokit.Component({\n\t template: __webpack_require__(89),\n\t props: {\n\t mditor: null\n\t },\n\t\n\t /*istanbul ignore next*/data: function data() {\n\t return {\n\t items: items.slice(0)\n\t };\n\t },\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t this.bindCommands();\n\t },\n\t\n\t\n\t watch: {\n\t /*istanbul ignore next*/items: function items() {\n\t this.bindCommands();\n\t }\n\t },\n\t\n\t /*istanbul ignore next*/bindCommands: function bindCommands() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t if (!this.mditor) return;\n\t this.items.forEach(function (item) {\n\t /*istanbul ignore next*/_this.mditor.removeCommand(item.name);\n\t /*istanbul ignore next*/_this.mditor.addCommand(item);\n\t });\n\t },\n\t /*istanbul ignore next*/isActive: function isActive(item) {\n\t return this.mditor && item.state && this.mditor[item.state];\n\t },\n\t /*istanbul ignore next*/exec: function exec(name, event) {\n\t event.preventDefault();\n\t this.mditor.execCommand(name, event);\n\t },\n\t /*istanbul ignore next*/getItem: function getItem(name) {\n\t return this.items.find(function (item) /*istanbul ignore next*/{\n\t return item.name === name;\n\t });\n\t },\n\t /*istanbul ignore next*/removeItem: function removeItem(name) {\n\t var index = this.items.findIndex(function (item) /*istanbul ignore next*/{\n\t return item.name === name;\n\t });\n\t return this.items.splice(index, 1);\n\t },\n\t /*istanbul ignore next*/addItem: function addItem(item) {\n\t this.items.push(item);\n\t },\n\t /*istanbul ignore next*/replaceItem: function replaceItem(name, newItem) {\n\t var index = this.items.findIndex(function (item) /*istanbul ignore next*/{\n\t return item.name === name;\n\t });\n\t var oldItem = this.items.splice(index, 1);\n\t this.items.splice(index, 0, newItem);\n\t return oldItem;\n\t }\n\t});\n\t\n\tmodule.exports = Toolbar;\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = [{\n\t name: 'bold',\n\t title: '粗体',\n\t key: 'shift+alt+b',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('**', '**');\n\t }\n\t}, {\n\t name: 'italic',\n\t title: '斜体',\n\t key: 'shift+alt+i',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('*', '*');\n\t }\n\t}, {\n\t name: 'underline',\n\t title: '下划线',\n\t key: 'shift+alt+e',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('', '');\n\t }\n\t}, {\n\t name: 'strikethrough',\n\t title: '删除线',\n\t key: 'shift+alt+d',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('~~', '~~');\n\t }\n\t}, {\n\t name: 'header',\n\t title: '标题',\n\t key: 'shift+alt+1',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('# ');\n\t }\n\t}, {\n\t name: 'quote',\n\t icon: 'quote-left',\n\t title: '引用',\n\t key: 'shift+alt+q',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var selectText = this.editor.getSelectText();\n\t if (selectText.length < 1) {\n\t this.editor.wrapSelectText('> ');\n\t return;\n\t }\n\t var textArray = selectText.split(this.EOL);\n\t var buffer = [];\n\t textArray.forEach(function (line) {\n\t buffer.push('> ' + line + ' ');\n\t });\n\t this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'code',\n\t title: '代码',\n\t key: 'shift+alt+c',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var lang = 'js' + this.EOL;\n\t var before = '```' + lang;\n\t var after = '``` ' + this.EOL;\n\t var text = this.editor.getSelectText().trim();\n\t if (text.length > 0) {\n\t text += this.EOL;\n\t }\n\t this.editor.setSelectText(text);\n\t this.editor.wrapSelectText(before, after);\n\t var range = this.editor.getSelectRange();\n\t var start = range.start - lang.length;\n\t var end = range.start - this.EOL.length;\n\t this.editor.setSelectRange(start, end);\n\t }\n\t}, {\n\t name: 'list-ol',\n\t title: '有序列表',\n\t key: 'shift+alt+o',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var selectText = this.editor.getSelectText();\n\t if (selectText.length < 1) {\n\t this.editor.wrapSelectText('1. ');\n\t return;\n\t }\n\t var textArray = selectText.split(this.EOL);\n\t var buffer = [];\n\t for (var i = 0; i < textArray.length; i++) {\n\t var line = textArray[i];\n\t buffer.push(i + 1 + '. ' + line);\n\t }\n\t this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'list-ul',\n\t title: '无序列表',\n\t key: 'shift+alt+u',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var selectText = this.editor.getSelectText();\n\t if (selectText.length < 1) {\n\t this.editor.wrapSelectText('- ');\n\t return;\n\t }\n\t var textArray = selectText.split(this.EOL);\n\t var buffer = [];\n\t textArray.forEach(function (line) {\n\t buffer.push('- ' + line);\n\t });\n\t this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'link',\n\t title: '链接',\n\t key: 'shift+alt+l',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var text = this.editor.getSelectText();\n\t if (!text || /^(https:|http:|ftp:|file:|mailto:|\\/|\\.)/i.test(text)) {\n\t this.editor.wrapSelectText('[link](', ')');\n\t if (!text) return;\n\t var range = this.editor.getSelectRange();\n\t var start = range.start - 6;\n\t this.editor.setSelectRange(start, start + 4);\n\t } else {\n\t this.editor.wrapSelectText('[', ']()');\n\t var _range = this.editor.getSelectRange();\n\t var index = _range.end + 2;\n\t this.editor.setSelectRange(index, index);\n\t }\n\t }\n\t}, {\n\t name: 'table',\n\t title: '表格',\n\t key: 'shift+alt+t',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var buffer = ['column1 | column2 | column3 ', '------- | ------- | ------- ', 'column1 | column2 | column3 ', 'column1 | column2 | column3 ', 'column1 | column2 | column3 '];\n\t this.editor.wrapSelectText(buffer.join(this.EOL) + this.EOL);\n\t }\n\t}, {\n\t name: 'line',\n\t title: '分隔线',\n\t icon: 'minus',\n\t key: 'shift+alt+h',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('----' + this.EOL);\n\t }\n\t}, {\n\t name: 'image',\n\t title: '图片',\n\t key: 'shift+alt+p',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('![alt](', ')');\n\t }\n\t}, {\n\t name: 'baseimg',\n\t title: 'base64图片',\n\t icon: 'file-photo-o',\n\t key: 'shift+alt+k',\n\t /*istanbul ignore next*/handler: function handler() {\n\t var _this = this;\n\t // 创建元素用来选择图片\n\t var container = document.createElement('div');\n\t container.id = \"iDiv\";\n\t container.style = 'display:none';\n\t container.innerHTML = '';\n\t // 将创建的元素追加到body\n\t document.body.appendChild(container);\n\t\n\t var filereader = new FileReader();\n\t // 获取页面上刚追加的文件选择控件\n\t var fileEle = document.getElementById('iFile');\n\t // 监听change方法\n\t fileEle.onchange = function (e) {\n\t var file = e.target.files[0];\n\t filereader.onload = function () {\n\t // 获取读取到的base64字符串\n\t var base64Str = this.result;\n\t\n\t //this 指向当前 mditor 实例\n\t _this.editor.insertBeforeText('![](' + base64Str + ')');\n\t // 获取base64格式之后,把容器删除\n\t document.body.removeChild(container);\n\t };\n\t // 如果没有选择对应的文件,则返回。不再进行后续逻辑的处理\n\t if (!file) return;\n\t filereader.readAsDataURL(file);\n\t };\n\t // 模拟点击事件\n\t fileEle.click();\n\t\n\t // this.editor.wrapSelectText('![alt](', ')');\n\t }\n\t}, {\n\t name: 'help',\n\t title: '帮助',\n\t icon: 'question',\n\t key: 'shift+alt+/',\n\t /*istanbul ignore next*/handler: function handler() {\n\t window.open('http://mditor.com', '_blank');\n\t }\n\t}, {\n\t name: 'toggleFullScreen',\n\t title: '全屏',\n\t icon: 'arrows-alt',\n\t key: 'shift+alt+f',\n\t control: true,\n\t state: 'fullscreen',\n\t owner: function /*istanbul ignore next*/owner(mditor) {\n\t return mditor.$element;\n\t },\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.fullscreen = !this.fullscreen;\n\t }\n\t}, {\n\t name: 'togglePreview',\n\t title: '预览',\n\t icon: 'desktop',\n\t key: 'shift+alt+v',\n\t control: true,\n\t state: 'preview',\n\t owner: function /*istanbul ignore next*/owner(mditor) {\n\t return mditor.$element;\n\t },\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.preview = !this.preview;\n\t if (this.preview) {\n\t this._split = this.split;\n\t this.split = false;\n\t } else {\n\t this.split = this._split;\n\t }\n\t }\n\t}, {\n\t name: 'toggleSplit',\n\t title: '分屏',\n\t icon: 'columns',\n\t key: 'shift+alt+s',\n\t control: true,\n\t state: 'split',\n\t owner: function /*istanbul ignore next*/owner(mditor) {\n\t return mditor.$element;\n\t },\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.split = !this.split;\n\t if (this.split) {\n\t this.preview = false;\n\t }\n\t }\n\t}];\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 88 */,\n/* 89 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
      \\r\\n \\r\\n
    \"\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar EventEmitter = mokit.EventEmitter;\n\tvar utils = __webpack_require__(3);\n\tvar Stack = __webpack_require__(91);\n\tvar commands = __webpack_require__(92);\n\t\n\t__webpack_require__(93);\n\t\n\tvar ua = window.navigator.userAgent.toLowerCase();\n\tvar isIE = !!ua.match(/msie|trident\\/7|edge/);\n\t//const isWinPhone = ua.indexOf('windows phone') !== -1;\n\t//const isIOS = !isWinPhone && !!ua.match(/ipad|iphone|ipod/);\n\t\n\tmodule.exports = new mokit.Component({\n\t template: __webpack_require__(94),\n\t\n\t props: {\n\t mditor: null,\n\t value: null,\n\t markExp: null\n\t },\n\t\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.stack = new Stack();\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this.textareaEmitter = new EventEmitter( /*istanbul ignore next*/_this.textarea);\n\t /*istanbul ignore next*/_this.stack.init({\n\t value: /*istanbul ignore next*/_this.getValue()\n\t });\n\t }, 300);\n\t this._bindCommands();\n\t },\n\t /*istanbul ignore next*/_bindCommands: function _bindCommands() {\n\t /*istanbul ignore next*/var _this2 = this;\n\t\n\t commands.forEach(function (item) {\n\t /*istanbul ignore next*/_this2.mditor.removeCommand(item.name);\n\t /*istanbul ignore next*/_this2.mditor.addCommand(item);\n\t });\n\t },\n\t /*istanbul ignore next*/onCompositionStart: function onCompositionStart() {\n\t this._compositionLock = true;\n\t },\n\t /*istanbul ignore next*/onCompositionEnd: function onCompositionEnd() {\n\t /*istanbul ignore next*/var _this3 = this;\n\t\n\t this._compositionLock = false;\n\t setTimeout(function () /*istanbul ignore next*/{\n\t return (/*istanbul ignore next*/_this3.onInput()\n\t );\n\t }, 300);\n\t /**\r\n\t * 在输入中文时,输入法「候选词面板」位置会发生定位错误\r\n\t * 经过反复尝试发现了「规律」,第一次「侯选词」上屏后才会位置错误\r\n\t * 在「候选词」上屏后让输入框「失去焦点再获取焦点」可「规避」这个 Bug\r\n\t * 附上相关 issues\r\n\t * https://github.com/electron/electron/issues/8894\r\n\t * https://github.com/electron/electron/issues/4539\r\n\t */\n\t // this.textarea.blur();\n\t // this.textarea.focus();\n\t },\n\t /*istanbul ignore next*/onInput: function onInput() {\n\t /*istanbul ignore next*/var _this4 = this;\n\t\n\t this.$emit('input');\n\t if (this._changedTimer) {\n\t clearTimeout(this._changedTimer);\n\t this._changedTimer = null;\n\t }\n\t if (this._compositionLock) return;\n\t this._changedTimer = setTimeout(function () {\n\t if (! /*istanbul ignore next*/_this4._changedTimer) return;\n\t /*istanbul ignore next*/_this4.stack.push({\n\t value: /*istanbul ignore next*/_this4.getValue(),\n\t range: /*istanbul ignore next*/_this4.getSelectRange()\n\t });\n\t /*istanbul ignore next*/_this4.$emit('changed');\n\t }, 300);\n\t },\n\t /*istanbul ignore next*/undo: function undo() {\n\t /*istanbul ignore next*/var _this5 = this;\n\t\n\t var last = this.stack.last();\n\t var item = this.stack.undo();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t var valGap = last.value.length - item.value.length;\n\t this.value = item.value;\n\t if (last.range) {\n\t setTimeout(function () {\n\t var start = last.range.start - valGap;\n\t var end = last.range.end - valGap;\n\t /*istanbul ignore next*/_this5.setSelectRange(start, end);\n\t });\n\t }\n\t },\n\t /*istanbul ignore next*/redo: function redo() {\n\t /*istanbul ignore next*/var _this6 = this;\n\t\n\t var item = this.stack.redo();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t this.value = item.value;\n\t if (item.range) {\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this6.setSelectRange(item.range.start, item.range.end);\n\t });\n\t }\n\t },\n\t /*istanbul ignore next*/onPaste: function onPaste(event) {\n\t this.$emit('paste', event);\n\t },\n\t /*istanbul ignore next*/onDragover: function onDragover(event) {\n\t event.preventDefault();\n\t this.$emit('dragover', event);\n\t },\n\t /*istanbul ignore next*/onDrop: function onDrop(event) {\n\t event.preventDefault();\n\t this.$emit('drop', event);\n\t },\n\t /*istanbul ignore next*/focus: function focus() {\n\t this.textarea.focus();\n\t },\n\t /*istanbul ignore next*/blur: function blur() {\n\t this.textarea.blur();\n\t },\n\t /*istanbul ignore next*/onScroll: function onScroll(event) {\n\t this.syncScroll();\n\t this.$emit('scroll', event);\n\t },\n\t /*istanbul ignore next*/syncScroll: function syncScroll(disTwice) {\n\t /*istanbul ignore next*/var _this7 = this;\n\t\n\t this.marks.scrollTop = this.textarea.scrollTop;\n\t this.marks.scrollLeft = this.textarea.scrollLeft;\n\t if (disTwice) return;\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this7.syncScroll(true);\n\t }, 0);\n\t },\n\t /*istanbul ignore next*/applyMarks: function applyMarks(text) {\n\t if (!text || !this.markExp) return;\n\t text = text.replace(/\\n$/g, '\\n\\n').replace(this.markExp, '$&');\n\t if (isIE) {\n\t // IE wraps whitespace differently in a div vs textarea, this fixes it\n\t text = text.replace(/ /g, ' ');\n\t }\n\t return text;\n\t },\n\t /*istanbul ignore next*/activeMark: function activeMark(index) {\n\t var marks = [].slice.call(this.marks.querySelectorAll('mark'));\n\t if (marks.length < 1) return;\n\t this.activeMarkIndex = utils.isNull(this.activeMarkIndex) ? -1 : this.activeMarkIndex;\n\t if (utils.isNull(index)) {\n\t this.activeMarkIndex++;\n\t } else {\n\t this.activeMarkIndex = index;\n\t }\n\t if (this.activeMarkIndex >= marks.length) {\n\t this.activeMarkIndex = 0;\n\t }\n\t marks.forEach(function (mark) {\n\t mark.classList.remove('active');\n\t });\n\t var activeMark = marks[this.activeMarkIndex];\n\t activeMark.classList.add('active');\n\t this.scrollToMark(activeMark);\n\t },\n\t /*istanbul ignore next*/scrollToMark: function scrollToMark(mark) {\n\t // mark.scrollIntoView();\n\t // this.textarea.scrollTop = this.marks.scrollTop;\n\t // this.textarea.scrollTop -= 20;\n\t this.textarea.scrollTop = mark.offsetTop - 20;\n\t },\n\t /*istanbul ignore next*/getValue: function getValue() {\n\t return this.textarea.value;\n\t },\n\t /*istanbul ignore next*/setValue: function setValue(value) {\n\t this.textarea.value = value;\n\t },\n\t /*istanbul ignore next*/getActiveElement: function getActiveElement() {\n\t this.textarea.focus();\n\t return document.activeElement;\n\t },\n\t /*istanbul ignore next*/getSelectRange: function getSelectRange() {\n\t var box = this.getActiveElement();\n\t return {\n\t 'start': box.selectionStart,\n\t 'end': box.selectionEnd\n\t };\n\t },\n\t /*istanbul ignore next*/setSelectRange: function setSelectRange(start, end) {\n\t var box = this.getActiveElement();\n\t box.setSelectionRange(start, end);\n\t },\n\t /*istanbul ignore next*/getSelectText: function getSelectText() {\n\t var box = this.getActiveElement();\n\t var range = this.getSelectRange();\n\t return box.value.substring(range.start, range.end);\n\t },\n\t /*istanbul ignore next*/setSelectText: function setSelectText(text) {\n\t /*istanbul ignore next*/var _this8 = this;\n\t\n\t var box = this.getActiveElement();\n\t var range = this.getSelectRange();\n\t box.setRangeText(text);\n\t if (range.end == range.start) {\n\t this.setSelectRange(range.start, range.end + text.length);\n\t }\n\t this.value = this.getValue();\n\t this.onInput();\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this8.blur();\n\t /*istanbul ignore next*/_this8.focus();\n\t }, 0);\n\t },\n\t /*istanbul ignore next*/wrapSelectText: function wrapSelectText(before, after) {\n\t before = before !== null && before !== undefined ? before : '';\n\t after = after !== null && after !== undefined ? after : '';\n\t var range = this.getSelectRange();\n\t var text = this.getSelectText();\n\t this.setSelectText(before + text + after);\n\t var newStart = range.start + before.length;\n\t var newEnd = range.end + before.length;\n\t this.setSelectRange(newStart, newEnd);\n\t },\n\t /*istanbul ignore next*/insertBeforeText: function insertBeforeText(text) {\n\t this.wrapSelectText(text);\n\t },\n\t /*istanbul ignore next*/insertAfterText: function insertAfterText(text) {\n\t this.wrapSelectText('', text);\n\t },\n\t /*istanbul ignore next*/getBeforeText: function getBeforeText(length) {\n\t var range = this.getSelectRange();\n\t var end = range.start;\n\t var start = end - length;\n\t var value = this.getValue();\n\t return value.substring(start, end);\n\t },\n\t /*istanbul ignore next*/getBeforeFirstCharIndex: function getBeforeFirstCharIndex(char) {\n\t var range = this.getSelectRange();\n\t var end = range.start;\n\t var start = 0;\n\t var value = this.getValue();\n\t return value.substring(start, end).lastIndexOf(char);\n\t },\n\t /*istanbul ignore next*/getBeforeWord: function getBeforeWord() {\n\t /*istanbul ignore next*/var _this9 = this;\n\t\n\t var chars = [' ', '\\t', this.mditor.EOL];\n\t var start = 0;\n\t chars.forEach(function (char) {\n\t var index = /*istanbul ignore next*/_this9.getBeforeFirstCharIndex(char);\n\t if (index + char.length > start) {\n\t start = index + char.length;\n\t }\n\t });\n\t var range = this.getSelectRange();\n\t var value = this.getValue();\n\t return value.substring(start, range.end);\n\t },\n\t /*istanbul ignore next*/getBeforeTextInLine: function getBeforeTextInLine() {\n\t var start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\n\t var range = this.getSelectRange();\n\t var value = this.getValue();\n\t return value.substring(start, range.end);\n\t },\n\t /*istanbul ignore next*/selectBeforeText: function selectBeforeText(length) {\n\t var range = this.getSelectRange();\n\t this.setSelectRange(range.start - length, range.end);\n\t },\n\t /*istanbul ignore next*/selectAfterText: function selectAfterText(length) {\n\t var range = this.getSelectRange();\n\t this.setSelectRange(range.start, range.end + length);\n\t },\n\t /*istanbul ignore next*/selectBeforeTextInLine: function selectBeforeTextInLine() {\n\t var start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\n\t var range = this.getSelectRange();\n\t this.setSelectRange(start, range.end);\n\t },\n\t /*istanbul ignore next*/addIndent: function addIndent() {\n\t /*istanbul ignore next*/var _this10 = this;\n\t\n\t var selectText = this.getSelectText();\n\t if (selectText.length < 1) {\n\t this.insertBeforeText(this.mditor.INDENT);\n\t return;\n\t }\n\t var textArray = selectText.split(this.mditor.EOL);\n\t var buffer = [];\n\t var lineCount = textArray.length - 1;\n\t textArray.forEach(function (line, index) {\n\t line = line.trim() !== '' ? /*istanbul ignore next*/_this10.mditor.INDENT + line : line;\n\t if (index < lineCount || line.trim() !== '') {\n\t buffer.push(line);\n\t }\n\t });\n\t this.setSelectText(buffer.join(this.mditor.EOL));\n\t },\n\t /*istanbul ignore next*/removeIndent: function removeIndent() {\n\t /*istanbul ignore next*/var _this11 = this;\n\t\n\t var indentRegExp = new RegExp('^' + this.mditor.INDENT);\n\t var selectText = this.getSelectText();\n\t if (selectText.length < 1) {\n\t this.selectBeforeTextInLine();\n\t if (this.getSelectText().length > 0) {\n\t event.clearSelected = true;\n\t this.removeIndent();\n\t }\n\t return;\n\t }\n\t var textArray = selectText.split(this.mditor.EOL);\n\t var buffer = [];\n\t textArray.forEach(function (line) {\n\t if (indentRegExp.test(line)) {\n\t line = line.replace( /*istanbul ignore next*/_this11.mditor.INDENT, '');\n\t }\n\t buffer.push(line);\n\t });\n\t this.setSelectText(buffer.join(this.mditor.EOL));\n\t if (event.clearSelected) {\n\t var range = this.getSelectRange();\n\t this.setSelectRange(range.end, range.end);\n\t }\n\t }\n\t});\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar Class = __webpack_require__(4).Class;\n\tvar utils = __webpack_require__(3);\n\t\n\tvar Stack = new Class({\n\t /*istanbul ignore next*/constructor: function constructor(item) {\n\t this.init(item);\n\t },\n\t /*istanbul ignore next*/init: function init(item) {\n\t this.undoList = [item || {\n\t value: null\n\t }];\n\t this.redoList = [];\n\t },\n\t /*istanbul ignore next*/push: function push(item) {\n\t if (this.last() === item) return;\n\t this.undoList.push(item);\n\t },\n\t /*istanbul ignore next*/last: function last() {\n\t return this.undoList[this.undoList.length - 1];\n\t },\n\t /*istanbul ignore next*/undo: function undo() {\n\t if (this.undoList.length > 1) {\n\t var item = this.undoList.pop();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t this.redoList.push(item);\n\t }\n\t return this.last();\n\t },\n\t /*istanbul ignore next*/redo: function redo() {\n\t var item = this.redoList.pop();\n\t if (utils.isNull(item) || utils.isNull(item.value)) return;\n\t this.undoList.push(item);\n\t return item;\n\t }\n\t});\n\t\n\tmodule.exports = Stack;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tmodule.exports = [{\n\t name: 'undo',\n\t key: '{cmd}+z',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.undo();\n\t }\n\t}, {\n\t name: 'redo',\n\t key: '{cmd}+shift+z',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.redo();\n\t }\n\t}, {\n\t name: 'h2',\n\t key: 'shift+alt+2',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('## ');\n\t }\n\t}, {\n\t name: 'h3',\n\t key: 'shift+alt+3',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('### ');\n\t }\n\t}, {\n\t name: 'h4',\n\t key: 'shift+alt+4',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('#### ');\n\t }\n\t}, {\n\t name: 'h5',\n\t key: 'shift+alt+5',\n\t /*istanbul ignore next*/handler: function handler() {\n\t this.editor.wrapSelectText('##### ');\n\t }\n\t}];\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \"\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\t\n\t__webpack_require__(96);\n\t\n\tvar Viewer = new mokit.Component({\n\t template: __webpack_require__(97),\n\t\n\t /*istanbul ignore next*/data: function data() {\n\t return {\n\t html: '',\n\t alert: '预览区域'\n\t };\n\t },\n\t\n\t\n\t props: {\n\t mditor: null,\n\t value: {\n\t /*istanbul ignore next*/get: function get() {\n\t return this._value;\n\t },\n\t /*istanbul ignore next*/set: function set(value) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this._value = value;\n\t var beforeEvent = { value: this._value };\n\t this.$emit('beforeRender', beforeEvent);\n\t this.mditor.parser.parse(beforeEvent.value, function (err, result) {\n\t var afterEvent = { value: result || err };\n\t /*istanbul ignore next*/_this.$emit('afterRender', afterEvent);\n\t /*istanbul ignore next*/_this.html = afterEvent.value;\n\t });\n\t }\n\t }\n\t },\n\t\n\t /*istanbul ignore next*/onClick: function onClick(event) {\n\t event.preventDefault();\n\t var tag = event.target;\n\t if (tag.tagName == 'A') {\n\t var href = tag.getAttribute('href');\n\t if (href) window.open(href, '_blank');\n\t }\n\t }\n\t});\n\t\n\tmodule.exports = Viewer;\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\r\\n
    \\r\\n
    \\r\\n
    \"\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar mokit = __webpack_require__(1);\n\tvar utils = __webpack_require__(3);\n\t\n\t__webpack_require__(99);\n\t\n\tvar CHECK_REGEXP = /^\\/[\\s\\S]+\\/(i|g|m)*$/;\n\t\n\tvar Finder = new mokit.Component({\n\t template: __webpack_require__(100),\n\t props: {\n\t mditor: null,\n\t active: false,\n\t findWord: '',\n\t replaceWord: ''\n\t },\n\t /*istanbul ignore next*/onReady: function onReady() {\n\t this.mditor.removeCommand('find');\n\t this.mditor.addCommand({\n\t name: 'find',\n\t key: '{cmd}+f',\n\t owner: this.mditor.$element,\n\t handler: this.show.bind(this, null)\n\t });\n\t this.mditor.removeCommand('cancel-find');\n\t this.mditor.addCommand({\n\t name: 'cancel-find',\n\t key: 'esc',\n\t owner: this.mditor.$element,\n\t handler: this.hide.bind(this)\n\t });\n\t },\n\t /*istanbul ignore next*/hide: function hide() {\n\t this.findWord = '';\n\t this.replaceWord = '';\n\t this.mditor.editor.markExp = null;\n\t this.active = false;\n\t },\n\t /*istanbul ignore next*/show: function show(text) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t this.active = true;\n\t this.findWord = text || this.mditor.editor.getSelectText();\n\t if (this.active) {\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this.findBox.focus();\n\t }, 200);\n\t }\n\t this.mditor.editor.syncScroll();\n\t },\n\t\n\t watch: {\n\t /*istanbul ignore next*/findWord: function findWord() {\n\t /*istanbul ignore next*/var _this2 = this;\n\t\n\t if (!this.mditor || !this.mditor.editor) return;\n\t if (!this.findWord) {\n\t this.mditor.editor.markExp = null;\n\t } else {\n\t this.mditor.editor.markExp = this.parseRegexp(this.findWord);\n\t }\n\t setTimeout(function () {\n\t /*istanbul ignore next*/_this2.mditor.editor.activeMark(0);\n\t }, 100);\n\t }\n\t },\n\t /*istanbul ignore next*/parseRegexp: function parseRegexp(text, forceStr) {\n\t if (!forceStr && CHECK_REGEXP.test(text)) {\n\t try {\n\t return new Function( /*istanbul ignore next*/'return ' + text)();\n\t } catch (err) {\n\t return this.parseRegexp(text, true);\n\t }\n\t } else {\n\t return new RegExp(utils.escapeRegExp(text), 'gm');\n\t }\n\t },\n\t /*istanbul ignore next*/find: function find() {\n\t this.mditor.editor.activeMark();\n\t },\n\t /*istanbul ignore next*/replace: function replace() {\n\t this.mditor.value = this.mditor.value.replace(this.mditor.editor.markExp, this.replaceWord || '');\n\t },\n\t /*istanbul ignore next*/onFindEnter: function onFindEnter(event) {\n\t if (event.keyCode != 13) return;\n\t event.preventDefault();\n\t this.find();\n\t },\n\t /*istanbul ignore next*/onReplaceEnter: function onReplaceEnter(event) {\n\t if (event.keyCode != 13) return;\n\t event.preventDefault();\n\t this.replace();\n\t },\n\t /*istanbul ignore next*/onCompositionEnd: function onCompositionEnd(event) {\n\t event.target.blur();\n\t event.target.focus();\n\t }\n\t});\n\t\n\tmodule.exports = Finder;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar shortcuts = __webpack_require__(102);\n\tvar utils = __webpack_require__(3);\n\t\n\tshortcuts.filter = function (event) {\n\t return !!event.target;\n\t};\n\t\n\tvar Shortcut = module.exports = function (mditor) {\n\t utils.defineFreezeProp(this, 'mditor', mditor);\n\t};\n\t\n\tShortcut.prototype._inRegion = function (target, owner) {\n\t if (!target) return false;\n\t owner = owner || this.mditor.editor.$element;\n\t if (utils.isFunction(owner)) owner = owner(this.mditor);\n\t return target === owner || this._inRegion(target.parentNode, owner);\n\t};\n\t\n\tShortcut.prototype.bind = function (key, cmd, allowDefault, owner) {\n\t /*istanbul ignore next*/var _this = this;\n\t\n\t var mditor = this.mditor;\n\t //检查参数\n\t if (!key || !cmd) return;\n\t key = key.replace('{cmd}', mditor.CMD);\n\t shortcuts(key, function (event) {\n\t if (! /*istanbul ignore next*/_this._inRegion(event.target, owner)) return;\n\t //禁用浏览器默认快捷键\n\t if (!allowDefault) {\n\t event.preventDefault();\n\t }\n\t if (cmd instanceof Function) {\n\t cmd.call(mditor, event);\n\t } else {\n\t mditor.execCommand(cmd, event);\n\t }\n\t setTimeout(function () {\n\t mditor.focus();\n\t }, 0);\n\t });\n\t};\n\t\n\tShortcut.prototype.unbind = function (key) {\n\t shortcuts.unbind(key);\n\t};\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t(function (global) {\n\t var k,\n\t _handlers = {},\n\t _mods = {\n\t 16: false,\n\t 18: false,\n\t 17: false,\n\t 91: false\n\t },\n\t _scope = 'all',\n\t // modifier keys\n\t _MODIFIERS = {\n\t '⇧': 16,\n\t shift: 16,\n\t '⌥': 18,\n\t alt: 18,\n\t option: 18,\n\t '⌃': 17,\n\t ctrl: 17,\n\t control: 17,\n\t '⌘': 91,\n\t command: 91\n\t },\n\t // special keys\n\t _MAP = {\n\t backspace: 8,\n\t tab: 9,\n\t clear: 12,\n\t enter: 13,\n\t 'return': 13,\n\t esc: 27,\n\t escape: 27,\n\t space: 32,\n\t left: 37,\n\t up: 38,\n\t right: 39,\n\t down: 40,\n\t del: 46,\n\t 'delete': 46,\n\t home: 36,\n\t end: 35,\n\t pageup: 33,\n\t pagedown: 34,\n\t ',': 188,\n\t '.': 190,\n\t '/': 191,\n\t '`': 192,\n\t '-': 189,\n\t '=': 187,\n\t ';': 186,\n\t '\\'': 222,\n\t '[': 219,\n\t ']': 221,\n\t '\\\\': 220\n\t },\n\t code = function (x) {\n\t return _MAP[x] || x.toUpperCase().charCodeAt(0);\n\t },\n\t _downKeys = [];\n\t\n\t for (k = 1; k < 20; k++) _MAP['f' + k] = 111 + k;\n\t\n\t // IE doesn't support Array#indexOf, so have a simple replacement\n\t function index(array, item) {\n\t var i = array.length;\n\t while (i--)\n\t if (array[i] === item) return i;\n\t return -1;\n\t }\n\t\n\t // for comparing mods before unassignment\n\t function compareArray(a1, a2) {\n\t if (a1.length != a2.length) return false;\n\t for (var i = 0; i < a1.length; i++) {\n\t if (a1[i] !== a2[i]) return false;\n\t }\n\t return true;\n\t }\n\t\n\t var modifierMap = {\n\t 16: 'shiftKey',\n\t 18: 'altKey',\n\t 17: 'ctrlKey',\n\t 91: 'metaKey'\n\t };\n\t\n\t function updateModifierKey(event) {\n\t for (k in _mods) _mods[k] = event[modifierMap[k]];\n\t };\n\t\n\t // handle keydown event\n\t function dispatch(event) {\n\t var key, handler, k, i, modifiersMatch, scope;\n\t key = event.keyCode;\n\t\n\t if (index(_downKeys, key) == -1) {\n\t _downKeys.push(key);\n\t }\n\t\n\t // if a modifier key, set the key. property to true and return\n\t if (key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n\t if (key in _mods) {\n\t _mods[key] = true;\n\t // 'assignKey' from inside this closure is exported to window.key\n\t for (k in _MODIFIERS)\n\t if (_MODIFIERS[k] == key) assignKey[k] = true;\n\t return;\n\t }\n\t updateModifierKey(event);\n\t\n\t // see if we need to ignore the keypress (filter() can can be overridden)\n\t // by default ignore key presses if a select, textarea, or input is focused\n\t if (!assignKey.filter.call(this, event)) return;\n\t\n\t // abort if no potentially matching shortcuts found\n\t if (!(key in _handlers)) return;\n\t\n\t scope = getScope();\n\t\n\t // for each potential shortcut\n\t for (i = 0; i < _handlers[key].length; i++) {\n\t handler = _handlers[key][i];\n\t\n\t // see if it's in the current scope\n\t if (handler.scope == scope || handler.scope == 'all') {\n\t // check if modifiers match if any\n\t modifiersMatch = handler.mods.length > 0;\n\t for (k in _mods)\n\t if ((!_mods[k] && index(handler.mods, +k) > -1) ||\n\t (_mods[k] && index(handler.mods, +k) == -1)) modifiersMatch = false;\n\t // call the handler and stop the event if neccessary\n\t if ((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch) {\n\t if (handler.method(event, handler) === false) {\n\t if (event.preventDefault) event.preventDefault();\n\t else event.returnValue = false;\n\t if (event.stopPropagation) event.stopPropagation();\n\t if (event.cancelBubble) event.cancelBubble = true;\n\t }\n\t }\n\t }\n\t }\n\t };\n\t\n\t // unset modifier keys on keyup\n\t function clearModifier(event) {\n\t var key = event.keyCode,\n\t k,\n\t i = index(_downKeys, key);\n\t\n\t // remove key from _downKeys\n\t if (i >= 0) {\n\t _downKeys.splice(i, 1);\n\t }\n\t\n\t if (key == 93 || key == 224) key = 91;\n\t if (key in _mods) {\n\t _mods[key] = false;\n\t for (k in _MODIFIERS)\n\t if (_MODIFIERS[k] == key) assignKey[k] = false;\n\t }\n\t };\n\t\n\t function resetModifiers() {\n\t for (k in _mods) _mods[k] = false;\n\t for (k in _MODIFIERS) assignKey[k] = false;\n\t };\n\t\n\t // parse and assign shortcut\n\t function assignKey(key, scope, method) {\n\t var keys, mods;\n\t keys = getKeys(key);\n\t if (method === undefined) {\n\t method = scope;\n\t scope = 'all';\n\t }\n\t\n\t // for each shortcut\n\t for (var i = 0; i < keys.length; i++) {\n\t // set modifier keys if any\n\t mods = [];\n\t key = keys[i].split('+');\n\t if (key.length > 1) {\n\t mods = getMods(key);\n\t key = [key[key.length - 1]];\n\t }\n\t // convert to keycode and...\n\t key = key[0]\n\t key = code(key);\n\t // ...store handler\n\t if (!(key in _handlers)) _handlers[key] = [];\n\t _handlers[key].push({\n\t shortcut: keys[i],\n\t scope: scope,\n\t method: method,\n\t key: keys[i],\n\t mods: mods\n\t });\n\t }\n\t };\n\t\n\t // unbind all handlers for given key in current scope\n\t function unbindKey(key, scope) {\n\t var multipleKeys, keys,\n\t mods = [],\n\t i, j, obj;\n\t\n\t multipleKeys = getKeys(key);\n\t\n\t for (j = 0; j < multipleKeys.length; j++) {\n\t keys = multipleKeys[j].split('+');\n\t\n\t if (keys.length > 1) {\n\t mods = getMods(keys);\n\t key = keys[keys.length - 1];\n\t }\n\t\n\t key = code(key);\n\t\n\t if (scope === undefined) {\n\t scope = getScope();\n\t }\n\t if (!_handlers[key]) {\n\t return;\n\t }\n\t for (i in _handlers[key]) {\n\t obj = _handlers[key][i];\n\t // only clear handlers if correct scope and mods match\n\t if (obj.scope === scope && compareArray(obj.mods, mods)) {\n\t _handlers[key][i] = {};\n\t }\n\t }\n\t }\n\t };\n\t\n\t // Returns true if the key with code 'keyCode' is currently down\n\t // Converts strings into key codes.\n\t function isPressed(keyCode) {\n\t if (typeof (keyCode) == 'string') {\n\t keyCode = code(keyCode);\n\t }\n\t return index(_downKeys, keyCode) != -1;\n\t }\n\t\n\t function getPressedKeyCodes() {\n\t return _downKeys.slice(0);\n\t }\n\t\n\t function filter(event) {\n\t var tagName = (event.target || event.srcElement).tagName;\n\t // ignore keypressed in any elements that support keyboard data input\n\t return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n\t }\n\t\n\t // initialize key. to false\n\t for (k in _MODIFIERS) assignKey[k] = false;\n\t\n\t // set current scope (default 'all')\n\t function setScope(scope) {\n\t _scope = scope || 'all'\n\t };\n\t\n\t function getScope() {\n\t return _scope || 'all'\n\t };\n\t\n\t // delete all handlers for a given scope\n\t function deleteScope(scope) {\n\t var key, handlers, i;\n\t\n\t for (key in _handlers) {\n\t handlers = _handlers[key];\n\t for (i = 0; i < handlers.length;) {\n\t if (handlers[i].scope === scope) handlers.splice(i, 1);\n\t else i++;\n\t }\n\t }\n\t };\n\t\n\t // abstract key logic for assign and unassign\n\t function getKeys(key) {\n\t var keys;\n\t key = key.replace(/\\s/g, '');\n\t keys = key.split(',');\n\t if ((keys[keys.length - 1]) == '') {\n\t keys[keys.length - 2] += ',';\n\t }\n\t return keys;\n\t }\n\t\n\t // abstract mods logic for assign and unassign\n\t function getMods(key) {\n\t var mods = key.slice(0, key.length - 1);\n\t for (var mi = 0; mi < mods.length; mi++)\n\t mods[mi] = _MODIFIERS[mods[mi]];\n\t return mods;\n\t }\n\t\n\t // cross-browser events\n\t function addEvent(object, event, method) {\n\t if (object.addEventListener)\n\t object.addEventListener(event, method, false);\n\t else if (object.attachEvent)\n\t object.attachEvent('on' + event, function () {\n\t method(window.event)\n\t });\n\t };\n\t\n\t // set the handlers globally on document\n\t addEvent(document, 'keydown', function (event) {\n\t dispatch(event)\n\t }); // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n\t addEvent(document, 'keyup', clearModifier);\n\t\n\t // reset modifiers to false whenever the window is (re)focused.\n\t addEvent(window, 'focus', resetModifiers);\n\t\n\t // store previously defined key\n\t var previousKey = global.key;\n\t\n\t // restore previously defined key and return reference to our key object\n\t function noConflict() {\n\t var k = global.key;\n\t global.key = previousKey;\n\t return k;\n\t }\n\t\n\t // set window.key and window.key.set/get/deleteScope, and the default filter\n\t global.key = assignKey;\n\t global.key.setScope = setScope;\n\t global.key.getScope = getScope;\n\t global.key.deleteScope = deleteScope;\n\t global.key.filter = filter;\n\t global.key.isPressed = isPressed;\n\t global.key.getPressedKeyCodes = getPressedKeyCodes;\n\t global.key.noConflict = noConflict;\n\t global.key.unbind = unbindKey;\n\t\n\t if (true) module.exports = key;\n\t\n\t})(window);\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*istanbul ignore next*/'use strict';\n\t\n\tvar marked = __webpack_require__(104);\n\tvar Prism = __webpack_require__(105);\n\t\n\t//language\n\t__webpack_require__(106);\n\t__webpack_require__(107);\n\t__webpack_require__(108);\n\t__webpack_require__(109);\n\t__webpack_require__(110);\n\t__webpack_require__(111);\n\t__webpack_require__(112);\n\t__webpack_require__(113);\n\t__webpack_require__(114);\n\t__webpack_require__(115);\n\t__webpack_require__(116);\n\t__webpack_require__(117);\n\t__webpack_require__(118);\n\t__webpack_require__(119);\n\t__webpack_require__(120);\n\t__webpack_require__(121);\n\t__webpack_require__(122);\n\t__webpack_require__(123);\n\t__webpack_require__(124);\n\t__webpack_require__(125);\n\t__webpack_require__(126);\n\t__webpack_require__(127);\n\t__webpack_require__(128);\n\t__webpack_require__(129);\n\t__webpack_require__(130);\n\t__webpack_require__(131);\n\t__webpack_require__(132);\n\t__webpack_require__(133);\n\t__webpack_require__(134);\n\t__webpack_require__(135);\n\t__webpack_require__(136);\n\t__webpack_require__(137);\n\t__webpack_require__(138);\n\t__webpack_require__(139);\n\t__webpack_require__(140);\n\t__webpack_require__(141);\n\t__webpack_require__(142);\n\t__webpack_require__(143);\n\t__webpack_require__(144);\n\t__webpack_require__(145);\n\t__webpack_require__(146);\n\t__webpack_require__(147);\n\t__webpack_require__(148);\n\t__webpack_require__(149);\n\t__webpack_require__(150);\n\t__webpack_require__(151);\n\t\n\t//alias\n\tPrism.languages.js = Prism.languages.javascript;\n\tPrism.languages['c#'] = Prism.languages.csharp;\n\tPrism.languages['f#'] = Prism.languages.fsharp;\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.md = Prism.languages.markdown;\n\tPrism.languages.py = Prism.languages.python;\n\tPrism.languages.yml = Prism.languages.yaml;\n\tPrism.languages.rb = Prism.languages.ruby;\n\t\n\tvar Parser = function Parser(options) {\n\t options = options || {};\n\t this.options = options;\n\t};\n\t\n\tParser.highlights = {};\n\tParser.marked = marked;\n\tParser.Prism = Prism;\n\t\n\t//使标题解析 # 号可以无空格\n\tmarked.Lexer.rules.gfm.heading = marked.Lexer.rules.heading;\n\tmarked.Lexer.rules.tables.heading = marked.Lexer.rules.heading;\n\t\n\tvar renderer = new marked.Renderer();\n\tParser.renderer = renderer;\n\tmarked.setOptions({\n\t renderer: renderer, gfm: true, tables: true, breaks: true, //可行尾不加两空格直接换行\n\t pedantic: false,\n\t sanitize: false,\n\t smartLists: true,\n\t smartypants: false,\n\t mangle: false,\n\t highlight: function /*istanbul ignore next*/highlight(code, lang, callback) {\n\t if (Parser.highlights[lang]) {\n\t var result = Parser.highlights[lang].parse(code, lang, callback);\n\t if (!callback) return result;\n\t } else if (Prism.languages[lang]) {\n\t var _result = Prism.highlight(code, Prism.languages[lang]);\n\t if (callback) return callback(null, _result);else return _result;\n\t } else {\n\t if (callback) //eslint-disable-line\n\t return callback(null, code);else return code;\n\t }\n\t }\n\t});\n\t\n\tParser.prototype.parse = function (mdText, callback) {\n\t return marked(mdText, callback);\n\t};\n\t\n\tmodule.exports = Parser;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/**\n\t * marked - a markdown parser\n\t * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n\t * https://github.com/chjj/marked\n\t */\n\t\n\t;(function() {\n\t\n\t/**\n\t * Block-Level Grammar\n\t */\n\t\n\tvar block = {\n\t newline: /^\\n+/,\n\t code: /^( {4}[^\\n]+\\n*)+/,\n\t fences: noop,\n\t hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n\t heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n\t nptable: noop,\n\t lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n\t blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n\t list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n\t html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n\t def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n\t table: noop,\n\t paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n\t text: /^[^\\n]+/\n\t};\n\t\n\tblock.bullet = /(?:[*+-]|\\d+\\.)/;\n\tblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\n\tblock.item = replace(block.item, 'gm')\n\t (/bull/g, block.bullet)\n\t ();\n\t\n\tblock.list = replace(block.list)\n\t (/bull/g, block.bullet)\n\t ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n\t ('def', '\\\\n+(?=' + block.def.source + ')')\n\t ();\n\t\n\tblock._tag = '(?!(?:'\n\t + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n\t + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n\t + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\t\n\tblock.html = replace(block.html)\n\t ('comment', //)\n\t ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n\t ('closing', /])*?>/)\n\t (/tag/g, block._tag)\n\t ();\n\t\n\tblock.paragraph = replace(block.paragraph)\n\t ('hr', block.hr)\n\t ('heading', block.heading)\n\t ('lheading', block.lheading)\n\t ('blockquote', block.blockquote)\n\t ('tag', '<' + block._tag)\n\t ('def', block.def)\n\t ();\n\t\n\t/**\n\t * Normal Block Grammar\n\t */\n\t\n\tblock.normal = merge({}, block);\n\t\n\t/**\n\t * GFM Block Grammar\n\t */\n\t\n\tblock.gfm = merge({}, block.normal, {\n\t fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n\t paragraph: /^/,\n\t heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n\t});\n\t\n\tblock.gfm.paragraph = replace(block.paragraph)\n\t ('(?!', '(?!'\n\t + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n\t + block.list.source.replace('\\\\1', '\\\\3') + '|')\n\t ();\n\t\n\t/**\n\t * GFM + Tables Block Grammar\n\t */\n\t\n\tblock.tables = merge({}, block.gfm, {\n\t nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n\t table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n\t});\n\t\n\t/**\n\t * Block Lexer\n\t */\n\t\n\tfunction Lexer(options) {\n\t this.tokens = [];\n\t this.tokens.links = {};\n\t this.options = options || marked.defaults;\n\t this.rules = block.normal;\n\t\n\t if (this.options.gfm) {\n\t if (this.options.tables) {\n\t this.rules = block.tables;\n\t } else {\n\t this.rules = block.gfm;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Expose Block Rules\n\t */\n\t\n\tLexer.rules = block;\n\t\n\t/**\n\t * Static Lex Method\n\t */\n\t\n\tLexer.lex = function(src, options) {\n\t var lexer = new Lexer(options);\n\t return lexer.lex(src);\n\t};\n\t\n\t/**\n\t * Preprocessing\n\t */\n\t\n\tLexer.prototype.lex = function(src) {\n\t src = src\n\t .replace(/\\r\\n|\\r/g, '\\n')\n\t .replace(/\\t/g, ' ')\n\t .replace(/\\u00a0/g, ' ')\n\t .replace(/\\u2424/g, '\\n');\n\t\n\t return this.token(src, true);\n\t};\n\t\n\t/**\n\t * Lexing\n\t */\n\t\n\tLexer.prototype.token = function(src, top, bq) {\n\t var src = src.replace(/^ +$/gm, '')\n\t , next\n\t , loose\n\t , cap\n\t , bull\n\t , b\n\t , item\n\t , space\n\t , i\n\t , l;\n\t\n\t while (src) {\n\t // newline\n\t if (cap = this.rules.newline.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t if (cap[0].length > 1) {\n\t this.tokens.push({\n\t type: 'space'\n\t });\n\t }\n\t }\n\t\n\t // code\n\t if (cap = this.rules.code.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t cap = cap[0].replace(/^ {4}/gm, '');\n\t this.tokens.push({\n\t type: 'code',\n\t text: !this.options.pedantic\n\t ? cap.replace(/\\n+$/, '')\n\t : cap\n\t });\n\t continue;\n\t }\n\t\n\t // fences (gfm)\n\t if (cap = this.rules.fences.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'code',\n\t lang: cap[2],\n\t text: cap[3] || ''\n\t });\n\t continue;\n\t }\n\t\n\t // heading\n\t if (cap = this.rules.heading.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'heading',\n\t depth: cap[1].length,\n\t text: cap[2]\n\t });\n\t continue;\n\t }\n\t\n\t // table no leading pipe (gfm)\n\t if (top && (cap = this.rules.nptable.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t\n\t item = {\n\t type: 'table',\n\t header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n\t align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n\t cells: cap[3].replace(/\\n$/, '').split('\\n')\n\t };\n\t\n\t for (i = 0; i < item.align.length; i++) {\n\t if (/^ *-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'right';\n\t } else if (/^ *:-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'center';\n\t } else if (/^ *:-+ *$/.test(item.align[i])) {\n\t item.align[i] = 'left';\n\t } else {\n\t item.align[i] = null;\n\t }\n\t }\n\t\n\t for (i = 0; i < item.cells.length; i++) {\n\t item.cells[i] = item.cells[i].split(/ *\\| */);\n\t }\n\t\n\t this.tokens.push(item);\n\t\n\t continue;\n\t }\n\t\n\t // lheading\n\t if (cap = this.rules.lheading.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'heading',\n\t depth: cap[2] === '=' ? 1 : 2,\n\t text: cap[1]\n\t });\n\t continue;\n\t }\n\t\n\t // hr\n\t if (cap = this.rules.hr.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'hr'\n\t });\n\t continue;\n\t }\n\t\n\t // blockquote\n\t if (cap = this.rules.blockquote.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t\n\t this.tokens.push({\n\t type: 'blockquote_start'\n\t });\n\t\n\t cap = cap[0].replace(/^ *> ?/gm, '');\n\t\n\t // Pass `top` to keep the current\n\t // \"toplevel\" state. This is exactly\n\t // how markdown.pl works.\n\t this.token(cap, top, true);\n\t\n\t this.tokens.push({\n\t type: 'blockquote_end'\n\t });\n\t\n\t continue;\n\t }\n\t\n\t // list\n\t if (cap = this.rules.list.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t bull = cap[2];\n\t\n\t this.tokens.push({\n\t type: 'list_start',\n\t ordered: bull.length > 1\n\t });\n\t\n\t // Get each top-level item.\n\t cap = cap[0].match(this.rules.item);\n\t\n\t next = false;\n\t l = cap.length;\n\t i = 0;\n\t\n\t for (; i < l; i++) {\n\t item = cap[i];\n\t\n\t // Remove the list item's bullet\n\t // so it is seen as the next token.\n\t space = item.length;\n\t item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\t\n\t // Outdent whatever the\n\t // list item contains. Hacky.\n\t if (~item.indexOf('\\n ')) {\n\t space -= item.length;\n\t item = !this.options.pedantic\n\t ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n\t : item.replace(/^ {1,4}/gm, '');\n\t }\n\t\n\t // Determine whether the next list item belongs here.\n\t // Backpedal if it does not belong in this list.\n\t if (this.options.smartLists && i !== l - 1) {\n\t b = block.bullet.exec(cap[i + 1])[0];\n\t if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n\t src = cap.slice(i + 1).join('\\n') + src;\n\t i = l - 1;\n\t }\n\t }\n\t\n\t // Determine whether item is loose or not.\n\t // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n\t // for discount behavior.\n\t loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\t if (i !== l - 1) {\n\t next = item.charAt(item.length - 1) === '\\n';\n\t if (!loose) loose = next;\n\t }\n\t\n\t this.tokens.push({\n\t type: loose\n\t ? 'loose_item_start'\n\t : 'list_item_start'\n\t });\n\t\n\t // Recurse.\n\t this.token(item, false, bq);\n\t\n\t this.tokens.push({\n\t type: 'list_item_end'\n\t });\n\t }\n\t\n\t this.tokens.push({\n\t type: 'list_end'\n\t });\n\t\n\t continue;\n\t }\n\t\n\t // html\n\t if (cap = this.rules.html.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: this.options.sanitize\n\t ? 'paragraph'\n\t : 'html',\n\t pre: !this.options.sanitizer\n\t && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n\t text: cap[0]\n\t });\n\t continue;\n\t }\n\t\n\t // def\n\t if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.links[cap[1].toLowerCase()] = {\n\t href: cap[2],\n\t title: cap[3]\n\t };\n\t continue;\n\t }\n\t\n\t // table (gfm)\n\t if (top && (cap = this.rules.table.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t\n\t item = {\n\t type: 'table',\n\t header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n\t align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n\t cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n\t };\n\t\n\t for (i = 0; i < item.align.length; i++) {\n\t if (/^ *-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'right';\n\t } else if (/^ *:-+: *$/.test(item.align[i])) {\n\t item.align[i] = 'center';\n\t } else if (/^ *:-+ *$/.test(item.align[i])) {\n\t item.align[i] = 'left';\n\t } else {\n\t item.align[i] = null;\n\t }\n\t }\n\t\n\t for (i = 0; i < item.cells.length; i++) {\n\t item.cells[i] = item.cells[i]\n\t .replace(/^ *\\| *| *\\| *$/g, '')\n\t .split(/ *\\| */);\n\t }\n\t\n\t this.tokens.push(item);\n\t\n\t continue;\n\t }\n\t\n\t // top-level paragraph\n\t if (top && (cap = this.rules.paragraph.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'paragraph',\n\t text: cap[1].charAt(cap[1].length - 1) === '\\n'\n\t ? cap[1].slice(0, -1)\n\t : cap[1]\n\t });\n\t continue;\n\t }\n\t\n\t // text\n\t if (cap = this.rules.text.exec(src)) {\n\t // Top-level should never reach here.\n\t src = src.substring(cap[0].length);\n\t this.tokens.push({\n\t type: 'text',\n\t text: cap[0]\n\t });\n\t continue;\n\t }\n\t\n\t if (src) {\n\t throw new\n\t Error('Infinite loop on byte: ' + src.charCodeAt(0));\n\t }\n\t }\n\t\n\t return this.tokens;\n\t};\n\t\n\t/**\n\t * Inline-Level Grammar\n\t */\n\t\n\tvar inline = {\n\t escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n\t autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n\t url: noop,\n\t tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n\t link: /^!?\\[(inside)\\]\\(href\\)/,\n\t reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n\t nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n\t strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n\t em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n\t code: /^(`+)([\\s\\S]*?[^`])\\1(?!`)/,\n\t br: /^ {2,}\\n(?!\\s*$)/,\n\t del: noop,\n\t text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\t\n\tinline.link = replace(inline.link)\n\t ('inside', inline._inside)\n\t ('href', inline._href)\n\t ();\n\t\n\tinline.reflink = replace(inline.reflink)\n\t ('inside', inline._inside)\n\t ();\n\t\n\t/**\n\t * Normal Inline Grammar\n\t */\n\t\n\tinline.normal = merge({}, inline);\n\t\n\t/**\n\t * Pedantic Inline Grammar\n\t */\n\t\n\tinline.pedantic = merge({}, inline.normal, {\n\t strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n\t em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n\t});\n\t\n\t/**\n\t * GFM Inline Grammar\n\t */\n\t\n\tinline.gfm = merge({}, inline.normal, {\n\t escape: replace(inline.escape)('])', '~|])')(),\n\t url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n\t del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n\t text: replace(inline.text)\n\t (']|', '~]|')\n\t ('|', '|https?://|')\n\t ()\n\t});\n\t\n\t/**\n\t * GFM + Line Breaks Inline Grammar\n\t */\n\t\n\tinline.breaks = merge({}, inline.gfm, {\n\t br: replace(inline.br)('{2,}', '*')(),\n\t text: replace(inline.gfm.text)('{2,}', '*')()\n\t});\n\t\n\t/**\n\t * Inline Lexer & Compiler\n\t */\n\t\n\tfunction InlineLexer(links, options) {\n\t this.options = options || marked.defaults;\n\t this.links = links;\n\t this.rules = inline.normal;\n\t this.renderer = this.options.renderer || new Renderer;\n\t this.renderer.options = this.options;\n\t\n\t if (!this.links) {\n\t throw new\n\t Error('Tokens array requires a `links` property.');\n\t }\n\t\n\t if (this.options.gfm) {\n\t if (this.options.breaks) {\n\t this.rules = inline.breaks;\n\t } else {\n\t this.rules = inline.gfm;\n\t }\n\t } else if (this.options.pedantic) {\n\t this.rules = inline.pedantic;\n\t }\n\t}\n\t\n\t/**\n\t * Expose Inline Rules\n\t */\n\t\n\tInlineLexer.rules = inline;\n\t\n\t/**\n\t * Static Lexing/Compiling Method\n\t */\n\t\n\tInlineLexer.output = function(src, links, options) {\n\t var inline = new InlineLexer(links, options);\n\t return inline.output(src);\n\t};\n\t\n\t/**\n\t * Lexing/Compiling\n\t */\n\t\n\tInlineLexer.prototype.output = function(src) {\n\t var out = ''\n\t , link\n\t , text\n\t , href\n\t , cap;\n\t\n\t while (src) {\n\t // escape\n\t if (cap = this.rules.escape.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += cap[1];\n\t continue;\n\t }\n\t\n\t // autolink\n\t if (cap = this.rules.autolink.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t if (cap[2] === '@') {\n\t text = escape(\n\t cap[1].charAt(6) === ':'\n\t ? this.mangle(cap[1].substring(7))\n\t : this.mangle(cap[1])\n\t );\n\t href = this.mangle('mailto:') + text;\n\t } else {\n\t text = escape(cap[1]);\n\t href = text;\n\t }\n\t out += this.renderer.link(href, null, text);\n\t continue;\n\t }\n\t\n\t // url (gfm)\n\t if (!this.inLink && (cap = this.rules.url.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t text = escape(cap[1]);\n\t href = text;\n\t out += this.renderer.link(href, null, text);\n\t continue;\n\t }\n\t\n\t // tag\n\t if (cap = this.rules.tag.exec(src)) {\n\t if (!this.inLink && /^
    /i.test(cap[0])) {\n\t this.inLink = false;\n\t }\n\t src = src.substring(cap[0].length);\n\t out += this.options.sanitize\n\t ? this.options.sanitizer\n\t ? this.options.sanitizer(cap[0])\n\t : escape(cap[0])\n\t : cap[0]\n\t continue;\n\t }\n\t\n\t // link\n\t if (cap = this.rules.link.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t this.inLink = true;\n\t out += this.outputLink(cap, {\n\t href: cap[2],\n\t title: cap[3]\n\t });\n\t this.inLink = false;\n\t continue;\n\t }\n\t\n\t // reflink, nolink\n\t if ((cap = this.rules.reflink.exec(src))\n\t || (cap = this.rules.nolink.exec(src))) {\n\t src = src.substring(cap[0].length);\n\t link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n\t link = this.links[link.toLowerCase()];\n\t if (!link || !link.href) {\n\t out += cap[0].charAt(0);\n\t src = cap[0].substring(1) + src;\n\t continue;\n\t }\n\t this.inLink = true;\n\t out += this.outputLink(cap, link);\n\t this.inLink = false;\n\t continue;\n\t }\n\t\n\t // strong\n\t if (cap = this.rules.strong.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.strong(this.output(cap[2] || cap[1]));\n\t continue;\n\t }\n\t\n\t // em\n\t if (cap = this.rules.em.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.em(this.output(cap[2] || cap[1]));\n\t continue;\n\t }\n\t\n\t // code\n\t if (cap = this.rules.code.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.codespan(escape(cap[2].trim(), true));\n\t continue;\n\t }\n\t\n\t // br\n\t if (cap = this.rules.br.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.br();\n\t continue;\n\t }\n\t\n\t // del (gfm)\n\t if (cap = this.rules.del.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.del(this.output(cap[1]));\n\t continue;\n\t }\n\t\n\t // text\n\t if (cap = this.rules.text.exec(src)) {\n\t src = src.substring(cap[0].length);\n\t out += this.renderer.text(escape(this.smartypants(cap[0])));\n\t continue;\n\t }\n\t\n\t if (src) {\n\t throw new\n\t Error('Infinite loop on byte: ' + src.charCodeAt(0));\n\t }\n\t }\n\t\n\t return out;\n\t};\n\t\n\t/**\n\t * Compile Link\n\t */\n\t\n\tInlineLexer.prototype.outputLink = function(cap, link) {\n\t var href = escape(link.href)\n\t , title = link.title ? escape(link.title) : null;\n\t\n\t return cap[0].charAt(0) !== '!'\n\t ? this.renderer.link(href, title, this.output(cap[1]))\n\t : this.renderer.image(href, title, escape(cap[1]));\n\t};\n\t\n\t/**\n\t * Smartypants Transformations\n\t */\n\t\n\tInlineLexer.prototype.smartypants = function(text) {\n\t if (!this.options.smartypants) return text;\n\t return text\n\t // em-dashes\n\t .replace(/---/g, '\\u2014')\n\t // en-dashes\n\t .replace(/--/g, '\\u2013')\n\t // opening singles\n\t .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n\t // closing singles & apostrophes\n\t .replace(/'/g, '\\u2019')\n\t // opening doubles\n\t .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n\t // closing doubles\n\t .replace(/\"/g, '\\u201d')\n\t // ellipses\n\t .replace(/\\.{3}/g, '\\u2026');\n\t};\n\t\n\t/**\n\t * Mangle Links\n\t */\n\t\n\tInlineLexer.prototype.mangle = function(text) {\n\t if (!this.options.mangle) return text;\n\t var out = ''\n\t , l = text.length\n\t , i = 0\n\t , ch;\n\t\n\t for (; i < l; i++) {\n\t ch = text.charCodeAt(i);\n\t if (Math.random() > 0.5) {\n\t ch = 'x' + ch.toString(16);\n\t }\n\t out += '&#' + ch + ';';\n\t }\n\t\n\t return out;\n\t};\n\t\n\t/**\n\t * Renderer\n\t */\n\t\n\tfunction Renderer(options) {\n\t this.options = options || {};\n\t}\n\t\n\tRenderer.prototype.code = function(code, lang, escaped) {\n\t if (this.options.highlight) {\n\t var out = this.options.highlight(code, lang);\n\t if (out != null && out !== code) {\n\t escaped = true;\n\t code = out;\n\t }\n\t }\n\t\n\t if (!lang) {\n\t return '
    '\n\t      + (escaped ? code : escape(code, true))\n\t      + '\\n
    ';\n\t }\n\t\n\t return '
    '\n\t    + (escaped ? code : escape(code, true))\n\t    + '\\n
    \\n';\n\t};\n\t\n\tRenderer.prototype.blockquote = function(quote) {\n\t return '
    \\n' + quote + '
    \\n';\n\t};\n\t\n\tRenderer.prototype.html = function(html) {\n\t return html;\n\t};\n\t\n\tRenderer.prototype.heading = function(text, level, raw) {\n\t return ''\n\t + text\n\t + '\\n';\n\t};\n\t\n\tRenderer.prototype.hr = function() {\n\t return this.options.xhtml ? '
    \\n' : '
    \\n';\n\t};\n\t\n\tRenderer.prototype.list = function(body, ordered) {\n\t var type = ordered ? 'ol' : 'ul';\n\t return '<' + type + '>\\n' + body + '\\n';\n\t};\n\t\n\tRenderer.prototype.listitem = function(text) {\n\t return '
  • ' + text + '
  • \\n';\n\t};\n\t\n\tRenderer.prototype.paragraph = function(text) {\n\t return '

    ' + text + '

    \\n';\n\t};\n\t\n\tRenderer.prototype.table = function(header, body) {\n\t return '\\n'\n\t + '\\n'\n\t + header\n\t + '\\n'\n\t + '\\n'\n\t + body\n\t + '\\n'\n\t + '
    \\n';\n\t};\n\t\n\tRenderer.prototype.tablerow = function(content) {\n\t return '\\n' + content + '\\n';\n\t};\n\t\n\tRenderer.prototype.tablecell = function(content, flags) {\n\t var type = flags.header ? 'th' : 'td';\n\t var tag = flags.align\n\t ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n\t : '<' + type + '>';\n\t return tag + content + '\\n';\n\t};\n\t\n\t// span level renderer\n\tRenderer.prototype.strong = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.em = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.codespan = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.br = function() {\n\t return this.options.xhtml ? '
    ' : '
    ';\n\t};\n\t\n\tRenderer.prototype.del = function(text) {\n\t return '' + text + '';\n\t};\n\t\n\tRenderer.prototype.link = function(href, title, text) {\n\t if (this.options.sanitize) {\n\t try {\n\t var prot = decodeURIComponent(unescape(href))\n\t .replace(/[^\\w:]/g, '')\n\t .toLowerCase();\n\t } catch (e) {\n\t return '';\n\t }\n\t if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n\t return '';\n\t }\n\t }\n\t if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n\t href = resolveUrl(this.options.baseUrl, href);\n\t }\n\t var out = '
    ';\n\t return out;\n\t};\n\t\n\tRenderer.prototype.image = function(href, title, text) {\n\t if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n\t href = resolveUrl(this.options.baseUrl, href);\n\t }\n\t var out = '\"'' : '>';\n\t return out;\n\t};\n\t\n\tRenderer.prototype.text = function(text) {\n\t return text;\n\t};\n\t\n\t/**\n\t * Parsing & Compiling\n\t */\n\t\n\tfunction Parser(options) {\n\t this.tokens = [];\n\t this.token = null;\n\t this.options = options || marked.defaults;\n\t this.options.renderer = this.options.renderer || new Renderer;\n\t this.renderer = this.options.renderer;\n\t this.renderer.options = this.options;\n\t}\n\t\n\t/**\n\t * Static Parse Method\n\t */\n\t\n\tParser.parse = function(src, options, renderer) {\n\t var parser = new Parser(options, renderer);\n\t return parser.parse(src);\n\t};\n\t\n\t/**\n\t * Parse Loop\n\t */\n\t\n\tParser.prototype.parse = function(src) {\n\t this.inline = new InlineLexer(src.links, this.options, this.renderer);\n\t this.tokens = src.reverse();\n\t\n\t var out = '';\n\t while (this.next()) {\n\t out += this.tok();\n\t }\n\t\n\t return out;\n\t};\n\t\n\t/**\n\t * Next Token\n\t */\n\t\n\tParser.prototype.next = function() {\n\t return this.token = this.tokens.pop();\n\t};\n\t\n\t/**\n\t * Preview Next Token\n\t */\n\t\n\tParser.prototype.peek = function() {\n\t return this.tokens[this.tokens.length - 1] || 0;\n\t};\n\t\n\t/**\n\t * Parse Text Tokens\n\t */\n\t\n\tParser.prototype.parseText = function() {\n\t var body = this.token.text;\n\t\n\t while (this.peek().type === 'text') {\n\t body += '\\n' + this.next().text;\n\t }\n\t\n\t return this.inline.output(body);\n\t};\n\t\n\t/**\n\t * Parse Current Token\n\t */\n\t\n\tParser.prototype.tok = function() {\n\t switch (this.token.type) {\n\t case 'space': {\n\t return '';\n\t }\n\t case 'hr': {\n\t return this.renderer.hr();\n\t }\n\t case 'heading': {\n\t return this.renderer.heading(\n\t this.inline.output(this.token.text),\n\t this.token.depth,\n\t this.token.text);\n\t }\n\t case 'code': {\n\t return this.renderer.code(this.token.text,\n\t this.token.lang,\n\t this.token.escaped);\n\t }\n\t case 'table': {\n\t var header = ''\n\t , body = ''\n\t , i\n\t , row\n\t , cell\n\t , flags\n\t , j;\n\t\n\t // header\n\t cell = '';\n\t for (i = 0; i < this.token.header.length; i++) {\n\t flags = { header: true, align: this.token.align[i] };\n\t cell += this.renderer.tablecell(\n\t this.inline.output(this.token.header[i]),\n\t { header: true, align: this.token.align[i] }\n\t );\n\t }\n\t header += this.renderer.tablerow(cell);\n\t\n\t for (i = 0; i < this.token.cells.length; i++) {\n\t row = this.token.cells[i];\n\t\n\t cell = '';\n\t for (j = 0; j < row.length; j++) {\n\t cell += this.renderer.tablecell(\n\t this.inline.output(row[j]),\n\t { header: false, align: this.token.align[j] }\n\t );\n\t }\n\t\n\t body += this.renderer.tablerow(cell);\n\t }\n\t return this.renderer.table(header, body);\n\t }\n\t case 'blockquote_start': {\n\t var body = '';\n\t\n\t while (this.next().type !== 'blockquote_end') {\n\t body += this.tok();\n\t }\n\t\n\t return this.renderer.blockquote(body);\n\t }\n\t case 'list_start': {\n\t var body = ''\n\t , ordered = this.token.ordered;\n\t\n\t while (this.next().type !== 'list_end') {\n\t body += this.tok();\n\t }\n\t\n\t return this.renderer.list(body, ordered);\n\t }\n\t case 'list_item_start': {\n\t var body = '';\n\t\n\t while (this.next().type !== 'list_item_end') {\n\t body += this.token.type === 'text'\n\t ? this.parseText()\n\t : this.tok();\n\t }\n\t\n\t return this.renderer.listitem(body);\n\t }\n\t case 'loose_item_start': {\n\t var body = '';\n\t\n\t while (this.next().type !== 'list_item_end') {\n\t body += this.tok();\n\t }\n\t\n\t return this.renderer.listitem(body);\n\t }\n\t case 'html': {\n\t var html = !this.token.pre && !this.options.pedantic\n\t ? this.inline.output(this.token.text)\n\t : this.token.text;\n\t return this.renderer.html(html);\n\t }\n\t case 'paragraph': {\n\t return this.renderer.paragraph(this.inline.output(this.token.text));\n\t }\n\t case 'text': {\n\t return this.renderer.paragraph(this.parseText());\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Helpers\n\t */\n\t\n\tfunction escape(html, encode) {\n\t return html\n\t .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n\t .replace(//g, '>')\n\t .replace(/\"/g, '"')\n\t .replace(/'/g, ''');\n\t}\n\t\n\tfunction unescape(html) {\n\t\t// explicitly match decimal, hex, and named HTML entities\n\t return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n\t n = n.toLowerCase();\n\t if (n === 'colon') return ':';\n\t if (n.charAt(0) === '#') {\n\t return n.charAt(1) === 'x'\n\t ? String.fromCharCode(parseInt(n.substring(2), 16))\n\t : String.fromCharCode(+n.substring(1));\n\t }\n\t return '';\n\t });\n\t}\n\t\n\tfunction replace(regex, opt) {\n\t regex = regex.source;\n\t opt = opt || '';\n\t return function self(name, val) {\n\t if (!name) return new RegExp(regex, opt);\n\t val = val.source || val;\n\t val = val.replace(/(^|[^\\[])\\^/g, '$1');\n\t regex = regex.replace(name, val);\n\t return self;\n\t };\n\t}\n\t\n\tfunction resolveUrl(base, href) {\n\t if (!baseUrls[' ' + base]) {\n\t // we can ignore everything in base after the last slash of its path component,\n\t // but we might need to add _that_\n\t // https://tools.ietf.org/html/rfc3986#section-3\n\t if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n\t baseUrls[' ' + base] = base + '/';\n\t } else {\n\t baseUrls[' ' + base] = base.replace(/[^/]*$/, '');\n\t }\n\t }\n\t base = baseUrls[' ' + base];\n\t\n\t if (href.slice(0, 2) === '//') {\n\t return base.replace(/:[^]*/, ':') + href;\n\t } else if (href.charAt(0) === '/') {\n\t return base.replace(/(:\\/*[^/]*)[^]*/, '$1') + href;\n\t } else {\n\t return base + href;\n\t }\n\t}\n\tbaseUrls = {};\n\toriginIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\t\n\tfunction noop() {}\n\tnoop.exec = noop;\n\t\n\tfunction merge(obj) {\n\t var i = 1\n\t , target\n\t , key;\n\t\n\t for (; i < arguments.length; i++) {\n\t target = arguments[i];\n\t for (key in target) {\n\t if (Object.prototype.hasOwnProperty.call(target, key)) {\n\t obj[key] = target[key];\n\t }\n\t }\n\t }\n\t\n\t return obj;\n\t}\n\t\n\t\n\t/**\n\t * Marked\n\t */\n\t\n\tfunction marked(src, opt, callback) {\n\t if (callback || typeof opt === 'function') {\n\t if (!callback) {\n\t callback = opt;\n\t opt = null;\n\t }\n\t\n\t opt = merge({}, marked.defaults, opt || {});\n\t\n\t var highlight = opt.highlight\n\t , tokens\n\t , pending\n\t , i = 0;\n\t\n\t try {\n\t tokens = Lexer.lex(src, opt)\n\t } catch (e) {\n\t return callback(e);\n\t }\n\t\n\t pending = tokens.length;\n\t\n\t var done = function(err) {\n\t if (err) {\n\t opt.highlight = highlight;\n\t return callback(err);\n\t }\n\t\n\t var out;\n\t\n\t try {\n\t out = Parser.parse(tokens, opt);\n\t } catch (e) {\n\t err = e;\n\t }\n\t\n\t opt.highlight = highlight;\n\t\n\t return err\n\t ? callback(err)\n\t : callback(null, out);\n\t };\n\t\n\t if (!highlight || highlight.length < 3) {\n\t return done();\n\t }\n\t\n\t delete opt.highlight;\n\t\n\t if (!pending) return done();\n\t\n\t for (; i < tokens.length; i++) {\n\t (function(token) {\n\t if (token.type !== 'code') {\n\t return --pending || done();\n\t }\n\t return highlight(token.text, token.lang, function(err, code) {\n\t if (err) return done(err);\n\t if (code == null || code === token.text) {\n\t return --pending || done();\n\t }\n\t token.text = code;\n\t token.escaped = true;\n\t --pending || done();\n\t });\n\t })(tokens[i]);\n\t }\n\t\n\t return;\n\t }\n\t try {\n\t if (opt) opt = merge({}, marked.defaults, opt);\n\t return Parser.parse(Lexer.lex(src, opt), opt);\n\t } catch (e) {\n\t e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n\t if ((opt || marked.defaults).silent) {\n\t return '

    An error occured:

    '\n\t        + escape(e.message + '', true)\n\t        + '
    ';\n\t }\n\t throw e;\n\t }\n\t}\n\t\n\t/**\n\t * Options\n\t */\n\t\n\tmarked.options =\n\tmarked.setOptions = function(opt) {\n\t merge(marked.defaults, opt);\n\t return marked;\n\t};\n\t\n\tmarked.defaults = {\n\t gfm: true,\n\t tables: true,\n\t breaks: false,\n\t pedantic: false,\n\t sanitize: false,\n\t sanitizer: null,\n\t mangle: true,\n\t smartLists: false,\n\t silent: false,\n\t highlight: null,\n\t langPrefix: 'lang-',\n\t smartypants: false,\n\t headerPrefix: '',\n\t renderer: new Renderer,\n\t xhtml: false,\n\t baseUrl: null\n\t};\n\t\n\t/**\n\t * Expose\n\t */\n\t\n\tmarked.Parser = Parser;\n\tmarked.parser = Parser.parse;\n\t\n\tmarked.Renderer = Renderer;\n\t\n\tmarked.Lexer = Lexer;\n\tmarked.lexer = Lexer.lex;\n\t\n\tmarked.InlineLexer = InlineLexer;\n\tmarked.inlineLexer = InlineLexer.output;\n\t\n\tmarked.parse = marked;\n\t\n\tif (true) {\n\t module.exports = marked;\n\t} else if (typeof define === 'function' && define.amd) {\n\t define(function() { return marked; });\n\t} else {\n\t this.marked = marked;\n\t}\n\t\n\t}).call(function() {\n\t return this || (typeof window !== 'undefined' ? window : global);\n\t}());\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\t/* **********************************************\n\t Begin prism-core.js\n\t********************************************** */\n\t\n\tvar _self = (typeof window !== 'undefined')\n\t\t? window // if in browser\n\t\t: (\n\t\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t\t);\n\t\n\t/**\n\t * Prism: Lightweight, robust, elegant syntax highlighting\n\t * MIT license http://www.opensource.org/licenses/mit-license.php/\n\t * @author Lea Verou http://lea.verou.me\n\t */\n\t\n\tvar Prism = (function(){\n\t\n\t// Private helper vars\n\tvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\n\tvar uniqueId = 0;\n\t\n\tvar _ = _self.Prism = {\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\t\tutil: {\n\t\t\tencode: function (tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tpattern.lastIndex = 0;\n\t\n\t\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t\t delNum = 1;\n\t\n\t\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t\t p = pos;\n\t\n\t\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t\t after = str.slice(to);\n\t\n\t\t\t\t\t\tvar args = [i, delNum];\n\t\n\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\t\n\t\t\t\t\t\targs.push(wrapped);\n\t\n\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\n\t\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\t\n\t\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\ttokenize: function(text, grammar, language) {\n\t\t\tvar strarr = [text];\n\t\n\t\t\tvar rest = grammar.rest;\n\t\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\t\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\t\n\t\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\t\n\t\t\treturn strarr;\n\t\t},\n\t\n\t\thooks: {\n\t\t\tall: {},\n\t\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\t\n\t\t\t\thooks[name] = hooks[name] || [];\n\t\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\t\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\t\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\t\n\tvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\t\tthis.type = type;\n\t\tthis.content = content;\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || \"\").length|0;\n\t\tthis.greedy = !!greedy;\n\t};\n\t\n\tToken.stringify = function(o, language, parent) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\n\t\tif (_.util.type(o) === 'Array') {\n\t\t\treturn o.map(function(element) {\n\t\t\t\treturn Token.stringify(element, language, o);\n\t\t\t}).join('');\n\t\t}\n\t\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: Token.stringify(o.content, language, parent),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language,\n\t\t\tparent: parent\n\t\t};\n\t\n\t\tif (o.alias) {\n\t\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t}\n\t\n\t\t_.hooks.run('wrap', env);\n\t\n\t\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}).join(' ');\n\t\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\t\n\t};\n\t\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _self.Prism;\n\t\t}\n\t\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\t\tlang = message.language,\n\t\t\t\t\tcode = message.code,\n\t\t\t\t\timmediateClose = message.immediateClose;\n\t\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\t\n\t\treturn _self.Prism;\n\t}\n\t\n\t//Get current script and highlight\n\tvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\t\n\tif (script) {\n\t\t_.filename = script.src;\n\t\n\t\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\t\tif(document.readyState !== \"loading\") {\n\t\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t\t} else {\n\t\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn _self.Prism;\n\t\n\t})();\n\t\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = Prism;\n\t}\n\t\n\t// hack for components to work correctly in node.js\n\tif (typeof global !== 'undefined') {\n\t\tglobal.Prism = Prism;\n\t}\n\t\n\t\n\t/* **********************************************\n\t Begin prism-markup.js\n\t********************************************** */\n\t\n\tPrism.languages.markup = {\n\t\t'comment': //,\n\t\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t\t'doctype': //i,\n\t\t'cdata': //i,\n\t\t'tag': {\n\t\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\t\tinside: {\n\t\t\t\t'tag': {\n\t\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'punctuation': /\\/?>/,\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t}\n\t\t},\n\t\t'entity': /&#?[\\da-z]{1,8};/i\n\t};\n\t\n\tPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\t\tPrism.languages.markup['entity'];\n\t\n\t// Plugin to make entity title show the real entity, idea by Roman Komarov\n\tPrism.hooks.add('wrap', function(env) {\n\t\n\t\tif (env.type === 'entity') {\n\t\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t\t}\n\t});\n\t\n\tPrism.languages.xml = Prism.languages.markup;\n\tPrism.languages.html = Prism.languages.markup;\n\tPrism.languages.mathml = Prism.languages.markup;\n\tPrism.languages.svg = Prism.languages.markup;\n\t\n\t\n\t/* **********************************************\n\t Begin prism-css.js\n\t********************************************** */\n\t\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\t\tinside: {\n\t\t\t\t'rule': /@[\\w-]+/\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t\t'string': {\n\t\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t\t'important': /\\B!important\\b/i,\n\t\t'function': /[-a-z0-9]+(?=\\()/i,\n\t\t'punctuation': /[(){};:]/\n\t};\n\t\n\tPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\t\n\tif (Prism.languages.markup) {\n\t\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t\t'style': {\n\t\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: Prism.languages.css,\n\t\t\t\talias: 'language-css',\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t});\n\t\n\t\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t\t'style-attr': {\n\t\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'attr-name': {\n\t\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t\t'attr-value': {\n\t\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\talias: 'language-css'\n\t\t\t}\n\t\t}, Prism.languages.markup.tag);\n\t}\n\t\n\t/* **********************************************\n\t Begin prism-clike.js\n\t********************************************** */\n\t\n\tPrism.languages.clike = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': {\n\t\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'class-name': {\n\t\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\tpunctuation: /[.\\\\]/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'function': /[a-z0-9_]+(?=\\()/i,\n\t\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t\t'punctuation': /[{}[\\];(),.:]/\n\t};\n\t\n\t\n\t/* **********************************************\n\t Begin prism-javascript.js\n\t********************************************** */\n\t\n\tPrism.languages.javascript = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n\t});\n\t\n\tPrism.languages.insertBefore('javascript', 'keyword', {\n\t\t'regex': {\n\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t\t'function-variable': {\n\t\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\t\talias: 'function'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('javascript', 'string', {\n\t\t'template-string': {\n\t\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t\t},\n\t\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t}\n\t\t}\n\t});\n\t\n\tif (Prism.languages.markup) {\n\t\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t\t'script': {\n\t\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: Prism.languages.javascript,\n\t\t\t\talias: 'language-javascript',\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t});\n\t}\n\t\n\tPrism.languages.js = Prism.languages.javascript;\n\t\n\t\n\t/* **********************************************\n\t Begin prism-file-highlight.js\n\t********************************************** */\n\t\n\t(function () {\n\t\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tself.Prism.fileHighlight = function() {\n\t\n\t\t\tvar Extensions = {\n\t\t\t\t'js': 'javascript',\n\t\t\t\t'py': 'python',\n\t\t\t\t'rb': 'ruby',\n\t\t\t\t'ps1': 'powershell',\n\t\t\t\t'psm1': 'powershell',\n\t\t\t\t'sh': 'bash',\n\t\t\t\t'bat': 'batch',\n\t\t\t\t'h': 'c',\n\t\t\t\t'tex': 'latex'\n\t\t\t};\n\t\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\t\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\t\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\t\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\t\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\t\n\t\t\t\tpre.textContent = '';\n\t\n\t\t\t\tcode.textContent = 'Loading…';\n\t\n\t\t\t\tpre.appendChild(code);\n\t\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\n\t\t\t\txhr.open('GET', src, true);\n\t\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\t\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\t\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\n\t\t};\n\t\n\t\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\t\n\t})();\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.java = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\\b/,\n\t\t'number': /\\b0b[01]+\\b|\\b0x[\\da-f]*\\.?[\\da-fp\\-]+\\b|\\b\\d*\\.?\\d+(?:e[+-]?\\d+)?[df]?\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(?:\\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\\|[|=]?|\\*=?|\\/=?|%=?|\\^=?|[?:~])/m,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('java','function', {\n\t\t'annotation': {\n\t\t\talias: 'punctuation',\n\t\t\tpattern: /(^|[^.])@\\w+/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.csharp = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\\b/,\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /@(\"|')(?:\\1\\1|\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+f?)\\b/i\n\t});\n\t\n\tPrism.languages.insertBefore('csharp', 'keyword', {\n\t\t'generic-method': {\n\t\t\tpattern: /[a-z0-9_]+\\s*<[^>\\r\\n]+?>\\s*(?=\\()/i,\n\t\t\talias: 'function',\n\t\t\tinside: {\n\t\t\t\tkeyword: Prism.languages.csharp.keyword,\n\t\t\t\tpunctuation: /[<>(),.:]/\n\t\t\t}\n\t\t},\n\t\t'preprocessor': {\n\t\t\tpattern: /(^\\s*)#.*/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'property',\n\t\t\tinside: {\n\t\t\t\t// highlight preprocessor directives as keywords\n\t\t\t\t'directive': {\n\t\t\t\t\tpattern: /(\\s*#)\\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\\b/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n\t * Modified by Miles Johnson: http://milesj.me\n\t *\n\t * Supports the following:\n\t * \t\t- Extends clike syntax\n\t * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n\t * \t\t- Smarter constant and function matching\n\t *\n\t * Adds the following new token classes:\n\t * \t\tconstant, delimiter, variable, function, package\n\t */\n\t\n\tPrism.languages.php = Prism.languages.extend('clike', {\n\t\t'string': {\n\t\t\tpattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'keyword': /\\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\\b/i,\n\t\t'constant': /\\b[A-Z0-9_]{2,}\\b/,\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\t// Shell-like comments are matched after strings, because they are less\n\t// common than strings containing hashes...\n\tPrism.languages.insertBefore('php', 'class-name', {\n\t\t'shell-comment': {\n\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'comment'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('php', 'keyword', {\n\t\t'delimiter': {\n\t\t\tpattern: /\\?>|<\\?(?:php|=)?/i,\n\t\t\talias: 'important'\n\t\t},\n\t\t'variable': /\\$\\w+\\b/i,\n\t\t'package': {\n\t\t\tpattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\tpunctuation: /\\\\/\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// Must be defined after the function pattern\n\tPrism.languages.insertBefore('php', 'operator', {\n\t\t'property': {\n\t\t\tpattern: /(->)[\\w]+/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\t// Add HTML support if the markup language exists\n\tif (Prism.languages.markup) {\n\t\n\t\t// Tokenize all inline PHP blocks that are wrapped in \n\t\t// This allows for easy PHP + markup highlighting\n\t\tPrism.hooks.add('before-highlight', function(env) {\n\t\t\tif (env.language !== 'php' || !/(?:<\\?php|<\\?)/ig.test(env.code)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tenv.tokenStack = [];\n\t\n\t\t\tenv.backupCode = env.code;\n\t\t\tenv.code = env.code.replace(/(?:<\\?php|<\\?)[\\s\\S]*?(?:\\?>|$)/ig, function(match) {\n\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t// Check for existing strings\n\t\t\t\twhile (env.backupCode.indexOf('___PHP' + i + '___') !== -1)\n\t\t\t\t\t++i;\n\t\n\t\t\t\t// Create a sparse array\n\t\t\t\tenv.tokenStack[i] = match;\n\t\n\t\t\t\treturn '___PHP' + i + '___';\n\t\t\t});\n\t\n\t\t\t// Switch the grammar to markup\n\t\t\tenv.grammar = Prism.languages.markup;\n\t\t});\n\t\n\t\t// Restore env.code for other plugins (e.g. line-numbers)\n\t\tPrism.hooks.add('before-insert', function(env) {\n\t\t\tif (env.language === 'php' && env.backupCode) {\n\t\t\t\tenv.code = env.backupCode;\n\t\t\t\tdelete env.backupCode;\n\t\t\t}\n\t\t});\n\t\n\t\t// Re-insert the tokens after highlighting\n\t\tPrism.hooks.add('after-highlight', function(env) {\n\t\t\tif (env.language !== 'php' || !env.tokenStack) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Switch the grammar back\n\t\t\tenv.grammar = Prism.languages.php;\n\t\n\t\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\t\tvar k = keys[i];\n\t\t\t\tvar t = env.tokenStack[k];\n\t\n\t\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\t\tenv.highlightedCode = env.highlightedCode.replace('___PHP' + k + '___',\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\tPrism.highlight(t, env.grammar, 'php').replace(/\\$/g, '$$$$') +\n\t\t\t\t\t\t\"\");\n\t\t\t}\n\t\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\t\t});\n\t}\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.python = {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'triple-quoted-string': {\n\t\t\tpattern: /(\"\"\"|''')[\\s\\S]+?\\1/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string'\n\t\t},\n\t\t'string': {\n\t\t\tpattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'function': {\n\t\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'class-name': {\n\t\t\tpattern: /(\\bclass\\s+)\\w+/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': /\\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\\b/,\n\t\t'builtin':/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n\t\t'boolean': /\\b(?:True|False|None)\\b/,\n\t\t'number': /\\b-?(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n\t\t'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:or|and|not)\\b/,\n\t\t'punctuation': /[{}[\\];(),.:]/\n\t};\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.json = {\n\t\t'property': /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/i,\n\t\t'string': {\n\t\t\tpattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?)\\b/,\n\t\t'punctuation': /[{}[\\]);,]/,\n\t\t'operator': /:/g,\n\t\t'boolean': /\\b(?:true|false)\\b/i,\n\t\t'null': /\\bnull\\b/i\n\t};\n\t\n\tPrism.languages.jsonp = Prism.languages.json;\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.yaml={scalar:{pattern:/([\\-:]\\s*(?:![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\2[^\\r\\n]+)*)/,lookbehind:!0,alias:\"string\"},comment:/#.*/,key:{pattern:/(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,lookbehind:!0,alias:\"atrule\"},directive:{pattern:/(^[ \\t]*)%.+/m,lookbehind:!0,alias:\"important\"},datetime:{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?)(?=[ \\t]*(?:$|,|]|}))/m,lookbehind:!0,alias:\"number\"},\"boolean\":{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:true|false)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},\"null\":{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:null|~)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},string:{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(\"|')(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2(?=[ \\t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)[+\\-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+\\.?\\d*|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\\s]+/,important:/[&*][\\w]+/,punctuation:/---|[:[\\]{}\\-,|>?]|\\.\\.\\./};\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.perl = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\t// POD\n\t\t\t\tpattern: /(^\\s*)=\\w+[\\s\\S]*?=cut.*/m,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\$])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t// TODO Could be nice to handle Heredoc too.\n\t\t'string': [\n\t\t\t// q/.../\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q a...a\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q(...)\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q{...}\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q[...]\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// q<...>\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t// \"...\", `...`\n\t\t\t{\n\t\t\t\tpattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t// '...'\n\t\t\t// FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n\t\t\t{\n\t\t\t\tpattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'regex': [\n\t\t\t// m/.../\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m a...a\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m(...)\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m{...}\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m[...]\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// m<...>\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t// The lookbehinds prevent -s from breaking\n\t\t\t// FIXME We don't handle change of separator like s(...)[...]\n\t\t\t// s/.../.../\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s a...a...a\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s(...)(...)\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s{...}{...}\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s[...][...]\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// s<...><...>\n\t\t\t{\n\t\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\n\t\t\t// /.../\n\t\t\t// The look-ahead tries to prevent two divisions on\n\t\t\t// the same line from being highlighted as regex.\n\t\t\t// This does not support multi-line regex.\n\t\t\t{\n\t\t\t\tpattern: /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\n\t\t// FIXME Not sure about the handling of ::, ', and #\n\t\t'variable': [\n\t\t\t// ${^POSTMATCH}\n\t\t\t/[&*$@%]\\{\\^[A-Z]+\\}/,\n\t\t\t// $^V\n\t\t\t/[&*$@%]\\^[A-Z_]/,\n\t\t\t// ${...}\n\t\t\t/[&*$@%]#?(?=\\{)/,\n\t\t\t// $foo\n\t\t\t/[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+)+(?:::)*/i,\n\t\t\t// $1\n\t\t\t/[&*$@%]\\d+/,\n\t\t\t// $_, @_, %!\n\t\t\t// The negative lookahead prevents from breaking the %= operator\n\t\t\t/(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n\t\t],\n\t\t'filehandle': {\n\t\t\t// <>, , _\n\t\t\tpattern: /<(?![<=])\\S*>|\\b_\\b/,\n\t\t\talias: 'symbol'\n\t\t},\n\t\t'vstring': {\n\t\t\t// v1.2, 1.2.3\n\t\t\tpattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n\t\t\talias: 'string'\n\t\t},\n\t\t'function': {\n\t\t\tpattern: /sub [a-z0-9_]+/i,\n\t\t\tinside: {\n\t\t\t\tkeyword: /sub/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n\t\t'number': /\\b-?(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\\d(?:_?\\d)*)?\\.?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n\t\t'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n\t\t'punctuation': /[{}[\\];(),:]/\n\t};\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.go = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t\t'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/,\n\t\t'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n\t\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t\t'number': /\\b(-?(0x[a-f\\d]+|(\\d+\\.?\\d*|\\.\\d+)(e[-+]?\\d+)?)i?)\\b/i,\n\t\t'string': {\n\t\t\tpattern: /([\"'`])(\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t});\n\tdelete Prism.languages.go['class-name'];\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\tvar insideString = {\n\t\t\tvariable: [\n\t\t\t\t// Arithmetic Environment\n\t\t\t\t{\n\t\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t\tvariable: [{\n\t\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t\t],\n\t\t\t\t\t\tnumber: /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee]-?\\d+)?)\\b/,\n\t\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t\toperator: /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n\t\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t\tpunctuation: /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t// Command Substitution\n\t\t\t\t{\n\t\t\t\t\tpattern: /\\$\\([^)]+\\)|`[^`]+`/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\tvariable: /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/\\$(?:[\\w#?*!@]+|\\{[^}]+\\})/i\n\t\t\t]\n\t\t};\n\t\n\t\tPrism.languages.bash = {\n\t\t\t'shebang': {\n\t\t\t\tpattern: /^#!\\s*\\/bin\\/bash|^#!\\s*\\/bin\\/sh/,\n\t\t\t\talias: 'important'\n\t\t\t},\n\t\t\t'comment': {\n\t\t\t\tpattern: /(^|[^\"{\\\\])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'string': [\n\t\t\t\t//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t\t{\n\t\t\t\t\tpattern: /((?:^|[^<])<<\\s*)[\"']?(\\w+?)[\"']?\\s*\\r?\\n(?:[\\s\\S])*?\\r?\\n\\2/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: insideString\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: insideString\n\t\t\t\t}\n\t\t\t],\n\t\t\t'variable': insideString.variable,\n\t\t\t// Originally based on http://ss64.com/bash/\n\t\t\t'function': {\n\t\t\t\tpattern: /(^|[\\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\\s;|&])/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'keyword': {\n\t\t\t\tpattern: /(^|[\\s;|&])(?:let|:|\\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\\s;|&])/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'boolean': {\n\t\t\t\tpattern: /(^|[\\s;|&])(?:true|false)(?=$|[\\s;|&])/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'operator': /&&?|\\|\\|?|==?|!=?|<<>|<=?|>=?|=~/,\n\t\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];]/\n\t\t};\n\t\n\t\tvar inside = insideString.variable[1].inside;\n\t\tinside['function'] = Prism.languages.bash['function'];\n\t\tinside.keyword = Prism.languages.bash.keyword;\n\t\tinside.boolean = Prism.languages.bash.boolean;\n\t\tinside.operator = Prism.languages.bash.operator;\n\t\tinside.punctuation = Prism.languages.bash.punctuation;\n\t})(Prism);\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.fsharp = Prism.languages.extend('clike', {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\(\\*[\\s\\S]*?\\*\\)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'keyword': /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\\b/,\n\t\t'string': {\n\t\t\tpattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1)B?/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': [\n\t\t\t/\\b-?0x[\\da-fA-F]+(?:un|lf|LF)?\\b/,\n\t\t\t/\\b-?0b[01]+(?:y|uy)?\\b/,\n\t\t\t/\\b-?(?:\\d*\\.?\\d+|\\d+\\.)(?:[fFmM]|[eE][+-]?\\d+)?\\b/,\n\t\t\t/\\b-?\\d+(?:y|uy|s|us|l|u|ul|L|UL|I)?\\b/\n\t\t]\n\t});\n\tPrism.languages.insertBefore('fsharp', 'keyword', {\n\t\t'preprocessor': {\n\t\t\tpattern: /^[^\\r\\n\\S]*#.*/m,\n\t\t\talias: 'property',\n\t\t\tinside: {\n\t\t\t\t'directive': {\n\t\t\t\t\tpattern: /(\\s*#)\\b(?:else|endif|if|light|line|nowarn)\\b/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.typescript = Prism.languages.extend('javascript', {\n\t\t// From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n\t\t'keyword': /\\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|symbol|namespace|abstract|require|type)\\b/\n\t});\n\t\n\tPrism.languages.ts = Prism.languages.typescript;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\n\t(function (Prism) {\n\t\tvar inside = {\n\t\t\t'url': /url\\(([\"']?).*?\\1\\)/i,\n\t\t\t'string': {\n\t\t\t\tpattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'interpolation': null, // See below\n\t\t\t'func': null, // See below\n\t\t\t'important': /\\B!(?:important|optional)\\b/i,\n\t\t\t'keyword': {\n\t\t\t\tpattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'hexcode': /#[\\da-f]{3,6}/i,\n\t\t\t'number': /\\b\\d+(?:\\.\\d+)?%?/,\n\t\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t\t'operator': [\n\t\t\t\t// We want non-word chars around \"-\" because it is\n\t\t\t\t// accepted in property names.\n\t\t\t\t/~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.+|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n\t\t\t],\n\t\t\t'punctuation': /[{}()\\[\\];:,]/\n\t\t};\n\t\n\t\tinside['interpolation'] = {\n\t\t\tpattern: /\\{[^\\r\\n}:]+\\}/,\n\t\t\talias: 'variable',\n\t\t\tinside: Prism.util.clone(inside)\n\t\t};\n\t\tinside['func'] = {\n\t\t\tpattern: /[\\w-]+\\([^)]*\\).*/,\n\t\t\tinside: {\n\t\t\t\t'function': /^[^(]+/,\n\t\t\t\trest: Prism.util.clone(inside)\n\t\t\t}\n\t\t};\n\t\n\t\tPrism.languages.stylus = {\n\t\t\t'comment': {\n\t\t\t\tpattern: /(^|[^\\\\])(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'atrule-declaration': {\n\t\t\t\tpattern: /(^\\s*)@.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'atrule': /^@[\\w-]+/,\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\t\t'variable-declaration': {\n\t\t\t\tpattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:(?:\\{[^}]*\\}|.+)|$)/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\S+/,\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t'statement': {\n\t\t\t\tpattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t]+.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\tkeyword: /^\\S+/,\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// A property/value pair cannot end with a comma or a brace\n\t\t\t// It cannot have indented content unless it ended with a semicolon\n\t\t\t'property-declaration': {\n\t\t\t\tpattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'property': {\n\t\t\t\t\t\tpattern: /^[^\\s:]+/,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t'interpolation': inside.interpolation\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\trest: inside\n\t\t\t\t}\n\t\t\t},\n\t\n\t\n\t\n\t\t\t// A selector can contain parentheses only as part of a pseudo-element\n\t\t\t// It can span multiple lines.\n\t\t\t// It must end with a comma or an accolade or have indented content.\n\t\t\t'selector': {\n\t\t\t\tpattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': inside.interpolation,\n\t\t\t\t\t'punctuation': /[{},]/\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t'func': inside.func,\n\t\t\t'string': inside.string,\n\t\t\t'interpolation': inside.interpolation,\n\t\t\t'punctuation': /[{}()\\[\\];:.]/\n\t\t};\n\t}(Prism));\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports) {\n\n\t/* FIXME :\n\t :extend() is not handled specifically : its highlighting is buggy.\n\t Mixin usage must be inside a ruleset to be highlighted.\n\t At-rules (e.g. import) containing interpolations are buggy.\n\t Detached rulesets are highlighted as at-rules.\n\t A comment before a mixin usage prevents the latter to be properly highlighted.\n\t */\n\t\n\tPrism.languages.less = Prism.languages.extend('css', {\n\t\t'comment': [\n\t\t\t/\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-]+?(?:\\([^{}]+\\)|[^(){};])*?(?=\\s*\\{)/i,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /[:()]/\n\t\t\t}\n\t\t},\n\t\t// selectors and mixins are considered the same\n\t\t'selector': {\n\t\t\tpattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\([^{}]*\\)|[^{};@])*?(?=\\s*\\{)/,\n\t\t\tinside: {\n\t\t\t\t// mixin parameters\n\t\t\t\t'variable': /@+[\\w-]+/\n\t\t\t}\n\t\t},\n\t\n\t\t'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n\t\t'punctuation': /[{}();:,]/,\n\t\t'operator': /[+\\-*\\/]/\n\t});\n\t\n\t// Invert function and punctuation positions\n\tPrism.languages.insertBefore('less', 'punctuation', {\n\t\t'function': Prism.languages.less.function\n\t});\n\t\n\tPrism.languages.insertBefore('less', 'property', {\n\t\t'variable': [\n\t\t\t// Variable declaration (the colon must be consumed!)\n\t\t\t{\n\t\t\t\tpattern: /@[\\w-]+\\s*:/,\n\t\t\t\tinside: {\n\t\t\t\t\t\"punctuation\": /:/\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// Variable usage\n\t\t\t/@@?[\\w-]+/\n\t\t],\n\t\t'mixin-usage': {\n\t\t\tpattern: /([{;]\\s*)[.#](?!\\d)[\\w-]+.*?(?=[(;])/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'function'\n\t\t}\n\t});\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\tPrism.languages.sass = Prism.languages.extend('css', {\n\t\t\t// Sass comments don't need to be closed, only indented\n\t\t\t'comment': {\n\t\t\t\tpattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t]+.+)*/m,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t});\n\t\n\t\tPrism.languages.insertBefore('sass', 'atrule', {\n\t\t\t// We want to consume the whole line\n\t\t\t'atrule-line': {\n\t\t\t\t// Includes support for = and + shortcuts\n\t\t\t\tpattern: /^(?:[ \\t]*)[@+=].+/m,\n\t\t\t\tinside: {\n\t\t\t\t\t'atrule': /(?:@[\\w-]+|[+=])/m\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tdelete Prism.languages.sass.atrule;\n\t\n\t\n\t\tvar variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n\t\tvar operator = [\n\t\t\t/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/,\n\t\t\t{\n\t\t\t\tpattern: /(\\s+)-(?=\\s)/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t];\n\t\n\t\tPrism.languages.insertBefore('sass', 'property', {\n\t\t\t// We want to consume the whole line\n\t\t\t'variable-line': {\n\t\t\t\tpattern: /^[ \\t]*\\$.+/m,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /:/,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'operator': operator\n\t\t\t\t}\n\t\t\t},\n\t\t\t// We want to consume the whole line\n\t\t\t'property-line': {\n\t\t\t\tpattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s]+.*)/m,\n\t\t\t\tinside: {\n\t\t\t\t\t'property': [\n\t\t\t\t\t\t/[^:\\s]+(?=\\s*:)/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(:)[^:\\s]+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t'punctuation': /:/,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'operator': operator,\n\t\t\t\t\t'important': Prism.languages.sass.important\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tdelete Prism.languages.sass.property;\n\t\tdelete Prism.languages.sass.important;\n\t\n\t\t// Now that whole lines for other patterns are consumed,\n\t\t// what's left should be selectors\n\t\tdelete Prism.languages.sass.selector;\n\t\tPrism.languages.insertBefore('sass', 'punctuation', {\n\t\t\t'selector': {\n\t\t\t\tpattern: /([ \\t]*)\\S(?:,?[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,?[^,\\r\\n]+)*)*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t});\n\t\n\t}(Prism));\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\n\t\tvar handlebars_pattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/;\n\t\n\t\tPrism.languages.handlebars = Prism.languages.extend('markup', {\n\t\t\t'handlebars': {\n\t\t\t\tpattern: handlebars_pattern,\n\t\t\t\tinside: {\n\t\t\t\t\t'delimiter': {\n\t\t\t\t\t\tpattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\t'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?)\\b/,\n\t\t\t\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t\t\t\t'block': {\n\t\t\t\t\t\tpattern: /^(\\s*~?\\s*)[#\\/]\\S+?(?=\\s*~?\\s*$|\\s)/i,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'keyword'\n\t\t\t\t\t},\n\t\t\t\t\t'brackets': {\n\t\t\t\t\t\tpattern: /\\[[^\\]]+\\]/,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\tpunctuation: /\\[|\\]/,\n\t\t\t\t\t\t\tvariable: /[\\s\\S]+/\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /[!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n\t\t\t\t\t'variable': /[^!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\t// Comments are inserted at top so that they can\n\t\t// surround markup\n\t\tPrism.languages.insertBefore('handlebars', 'tag', {\n\t\t\t'handlebars-comment': {\n\t\t\t\tpattern: /\\{\\{![\\s\\S]*?\\}\\}/,\n\t\t\t\talias: ['handlebars','comment']\n\t\t\t}\n\t\t});\n\t\n\t\t// Tokenize all inline Handlebars expressions that are wrapped in {{ }} or {{{ }}}\n\t\t// This allows for easy Handlebars + markup highlighting\n\t\tPrism.hooks.add('before-highlight', function(env) {\n\t\t\tif (env.language !== 'handlebars') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tenv.tokenStack = [];\n\t\n\t\t\tenv.backupCode = env.code;\n\t\t\tenv.code = env.code.replace(handlebars_pattern, function(match) {\n\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t// Check for existing strings\n\t\t\t\twhile (env.backupCode.indexOf('___HANDLEBARS' + i + '___') !== -1)\n\t\t\t\t\t++i;\n\t\n\t\t\t\t// Create a sparse array\n\t\t\t\tenv.tokenStack[i] = match;\n\t\n\t\t\t\treturn '___HANDLEBARS' + i + '___';\n\t\t\t});\n\t\t});\n\t\n\t\t// Restore env.code for other plugins (e.g. line-numbers)\n\t\tPrism.hooks.add('before-insert', function(env) {\n\t\t\tif (env.language === 'handlebars') {\n\t\t\t\tenv.code = env.backupCode;\n\t\t\t\tdelete env.backupCode;\n\t\t\t}\n\t\t});\n\t\n\t\t// Re-insert the tokens after highlighting\n\t\t// and highlight them with defined grammar\n\t\tPrism.hooks.add('after-highlight', function(env) {\n\t\t\tif (env.language !== 'handlebars') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\t\tvar k = keys[i];\n\t\t\t\tvar t = env.tokenStack[k];\n\t\n\t\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\t\tenv.highlightedCode = env.highlightedCode.replace('___HANDLEBARS' + k + '___', Prism.highlight(t, env.grammar, 'handlebars').replace(/\\$/g, '$$$$'));\n\t\t\t}\n\t\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\t\t});\n\t\n\t}(Prism));\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.applescript = {\n\t\t'comment': [\n\t\t\t// Allow one level of nesting\n\t\t\t/\\(\\*(?:\\(\\*[\\s\\S]*?\\*\\)|[\\s\\S])*?\\*\\)/,\n\t\t\t/--.+/,\n\t\t\t/#.+/\n\t\t],\n\t\t'string': /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n\t\t'number': /\\b-?\\d*\\.?\\d+([Ee]-?\\d+)?\\b/,\n\t\t'operator': [\n\t\t\t/[&=≠≤≥*+\\-\\/÷^]|[<>]=?/,\n\t\t\t/\\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\\b/\n\t\t],\n\t\t'keyword': /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n\t\t'class': {\n\t\t\tpattern: /\\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\\b/,\n\t\t\talias: 'builtin'\n\t\t},\n\t\t'punctuation': /[{}():,¬«»《》]/\n\t};\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.actionscript = Prism.languages.extend('javascript', {\n\t\t'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n\t\t'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<>?>?|[!=]=?)=?|[~?@]/\n\t});\n\tPrism.languages.actionscript['class-name'].alias = 'function';\n\t\n\tif (Prism.languages.markup) {\n\t\tPrism.languages.insertBefore('actionscript', 'string', {\n\t\t\t'xml': {\n\t\t\t\tpattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\trest: Prism.languages.markup\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.aspnet = Prism.languages.extend('markup', {\n\t\t'page-directive tag': {\n\t\t\tpattern: /<%\\s*@.*%>/i,\n\t\t\tinside: {\n\t\t\t\t'page-directive tag': /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n\t\t\t\trest: Prism.languages.markup.tag.inside\n\t\t\t}\n\t\t},\n\t\t'directive tag': {\n\t\t\tpattern: /<%.*%>/i,\n\t\t\tinside: {\n\t\t\t\t'directive tag': /<%\\s*?[$=%#:]{0,2}|%>/i,\n\t\t\t\trest: Prism.languages.csharp\n\t\t\t}\n\t\t}\n\t});\n\t// Regexp copied from prism-markup, with a negative look-ahead added\n\tPrism.languages.aspnet.tag.pattern = /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i;\n\t\n\t// match directives of attribute value foo=\"<% Bar %>\"\n\tPrism.languages.insertBefore('inside', 'punctuation', {\n\t\t'directive tag': Prism.languages.aspnet['directive tag']\n\t}, Prism.languages.aspnet.tag.inside[\"attr-value\"]);\n\t\n\tPrism.languages.insertBefore('aspnet', 'comment', {\n\t\t'asp comment': /<%--[\\s\\S]*?--%>/\n\t});\n\t\n\t// script runat=\"server\" contains csharp, not javascript\n\tPrism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {\n\t\t'asp script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.csharp || {}\n\t\t}\n\t});\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.basic = {\n\t\t'string': /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^_ +\\-.A-Z\\d])*\"/i,\n\t\t'comment': {\n\t\t\tpattern: /(?:!|REM\\b).+/i,\n\t\t\tinside: {\n\t\t\t\t'keyword': /^REM/i\n\t\t\t}\n\t\t},\n\t\t'number': /(?:\\b|\\B[.-])(?:\\d+\\.?\\d*)(?:E[+-]?\\d+)?/i,\n\t\t'keyword': /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n\t\t'function': /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n\t\t'operator': /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n\t\t'punctuation': /[,;:()]/\n\t};\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.c = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n\t\t'operator': /-[>-]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/]/,\n\t\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)[ful]*\\b/i\n\t});\n\t\n\tPrism.languages.insertBefore('c', 'string', {\n\t\t'macro': {\n\t\t\t// allow for multiline macro definitions\n\t\t\t// spaces after the # character compile fine with gcc\n\t\t\tpattern: /(^\\s*)#\\s*[a-z]+(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\tlookbehind: true,\n\t\t\talias: 'property',\n\t\t\tinside: {\n\t\t\t\t// highlight the path of the include statement as a string\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: /(#\\s*include\\s*)(?:<.+?>|(\"|')(?:\\\\?.)+?\\2)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t// highlight macro directives as keywords\n\t\t\t\t'directive': {\n\t\t\t\t\tpattern: /(#\\s*)\\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// highlight predefined macros as constants\n\t\t'constant': /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n\t});\n\t\n\tdelete Prism.languages.c['class-name'];\n\tdelete Prism.languages.c['boolean'];\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports) {\n\n\t// Based on Free Pascal\n\t\n\t/* TODO\n\t\tSupport inline asm ?\n\t*/\n\t\n\tPrism.languages.pascal = {\n\t\t'comment': [\n\t\t\t/\\(\\*[\\s\\S]+?\\*\\)/,\n\t\t\t/\\{[\\s\\S]+?\\}/,\n\t\t\t/\\/\\/.*/\n\t\t],\n\t\t'string': {\n\t\t\tpattern: /(?:'(?:''|[^'\\r\\n])*'|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n\t\t\tgreedy: true\n\t\t},\n\t\t'keyword': [\n\t\t\t{\n\t\t\t\t// Turbo Pascal\n\t\t\t\tpattern: /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Free Pascal\n\t\t\t\tpattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Object Pascal\n\t\t\t\tpattern: /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Modifiers\n\t\t\t\tpattern: /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'number': [\n\t\t\t// Hexadecimal, octal and binary\n\t\t\t/[+-]?(?:[&%]\\d+|\\$[a-f\\d]+)/i,\n\t\t\t// Decimal\n\t\t\t/([+-]|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n\t\t],\n\t\t'operator': [\n\t\t\t/\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/i,\n\t\t\t{\n\t\t\t\tpattern: /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'punctuation': /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n\t};\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.vim = {\n\t\t'string': /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n\t\t'comment': /\".*/,\n\t\t'function': /\\w+(?=\\()/,\n\t\t'keyword': /\\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n\t\t'builtin': /\\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\\b/,\n\t\t'number': /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n\t\t'operator': /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n\t\t'punctuation': /[{}[\\](),;:]/\n\t};\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports) {\n\n\t// issues: nested multiline comments\n\tPrism.languages.swift = Prism.languages.extend('clike', {\n\t\t'string': {\n\t\t\tpattern: /(\"|')(\\\\(?:\\((?:[^()]|\\([^)]+\\))+\\)|\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /\\\\\\((?:[^()]|\\([^)]+\\))+\\)/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\tdelimiter: {\n\t\t\t\t\t\t\tpattern: /^\\\\\\(|\\)$/,\n\t\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// See rest below\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\\b/,\n\t\t'number': /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\t\t'constant': /\\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\t\t'atrule': /@\\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\\b/,\n\t\t'builtin': /\\b(?:[A-Z]\\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\\b/\n\t});\n\tPrism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.util.clone(Prism.languages.swift);\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.objectivec = Prism.languages.extend('c', {\n\t\t'keyword': /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t\t'string': /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t\t'operator': /-[->]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n\t});\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.sql= {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string' : {\n\t\t\tpattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2/,\n\t\t\tgreedy: true,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'variable': /@[\\w.$]+|@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n\t\t'function': /\\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n\t\t'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\\b/i,\n\t\t'boolean': /\\b(?:TRUE|FALSE|NULL)\\b/i,\n\t\t'number': /\\b-?(?:0x)?\\d*\\.?[\\da-f]+\\b/,\n\t\t'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n\t\t'punctuation': /[;[\\]()`,.]/\n\t};\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.scheme = {\n\t\t'comment' : /;.*/,\n\t\t'string' : {\n\t\t\tpattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'[^('\\s]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'keyword' : {\n\t\t\tpattern : /(\\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,\n\t\t\tlookbehind : true\n\t\t},\n\t\t'builtin' : {\n\t\t\tpattern : /(\\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\\/cc|append|abs|apply|eval)\\b|null\\?|pair\\?|boolean\\?|eof-object\\?|char\\?|procedure\\?|number\\?|port\\?|string\\?|vector\\?|symbol\\?|bytevector\\?)/,\n\t\t\tlookbehind : true\n\t\t},\n\t\t'number' : {\n\t\t\tpattern: /(\\s|\\))[-+]?\\d*\\.?\\d+(?:\\s*[-+]\\s*\\d*\\.?\\d+i)?\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'boolean' : /#[tf]/,\n\t\t'operator': {\n\t\t\tpattern: /(\\()(?:[-+*%\\/]|[<>]=?|=>?)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function' : {\n\t\t\tpattern : /(\\()[^\\s()]*(?=\\s)/,\n\t\t\tlookbehind : true\n\t\t},\n\t\t'punctuation' : /[()]/\n\t};\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Original by Samuel Flores\n\t *\n\t * Adds the following new token classes:\n\t * \t\tconstant, builtin, variable, symbol, regex\n\t */\n\t(function(Prism) {\n\t\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t\t'comment': [\n\t\t\t\t/#(?!\\{[^\\r\\n]*?\\}).*/,\n\t\t\t\t/^=begin(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r))*?=end/m\n\t\t\t],\n\t\t\t'keyword': /\\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\\b/\n\t\t});\n\t\n\t\tvar interpolation = {\n\t\t\tpattern: /#\\{[^}]+\\}/,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\t\talias: 'tag'\n\t\t\t\t},\n\t\t\t\trest: Prism.util.clone(Prism.languages.ruby)\n\t\t\t}\n\t\t};\n\t\n\t\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t\t'regex': [\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\t\tpattern: /%r\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\][gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /%r<(?:[^<>\\\\]|\\\\[\\s\\S])*>[gim]{0,3}/,\n\t\t\t\t\tgreedy: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gim]{0,3}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tgreedy: true\n\t\t\t\t}\n\t\t\t],\n\t\t\t'variable': /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n\t\t\t'symbol': /:[a-zA-Z_]\\w*(?:[?!]|\\b)/\n\t\t});\n\t\n\t\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t\t'builtin': /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n\t\t\t'constant': /\\b[A-Z]\\w*(?:[?!]|\\b)/\n\t\t});\n\t\n\t\tPrism.languages.ruby.string = [\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\tpattern: /%[qQiIwWxs]?\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%[qQiIwWxs]?<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(?:#\\{[^}]+\\}|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}(Prism));\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports) {\n\n\t/* TODO\n\t\tAdd support for variables inside double quoted strings\n\t\tAdd support for {php}\n\t*/\n\t\n\t(function(Prism) {\n\t\n\t\tvar smarty_pattern = /\\{\\*[\\s\\S]+?\\*\\}|\\{[\\s\\S]+?\\}/g;\n\t\tvar smarty_litteral_start = '{literal}';\n\t\tvar smarty_litteral_end = '{/literal}';\n\t\tvar smarty_litteral_mode = false;\n\t\n\t\tPrism.languages.smarty = Prism.languages.extend('markup', {\n\t\t\t'smarty': {\n\t\t\t\tpattern: smarty_pattern,\n\t\t\t\tinside: {\n\t\t\t\t\t'delimiter': {\n\t\t\t\t\t\tpattern: /^\\{|\\}$/i,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\t'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][-+]?\\d+)?)\\b/,\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t/\\$(?!\\d)\\w+/,\n\t\t\t\t\t\t/#(?!\\d)\\w+#/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(\\.|->)(?!\\d)\\w+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t'function': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(\\|\\s*)@?(?!\\d)\\w+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\/?(?!\\d)\\w+/,\n\t\t\t\t\t\t/(?!\\d)\\w+(?=\\()/\n\t\t\t\t\t],\n\t\t\t\t\t'attr-name': {\n\t\t\t\t\t\t// Value is made optional because it may have already been tokenized\n\t\t\t\t\t\tpattern: /\\w+\\s*=\\s*(?:(?!\\d)\\w+)?/,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t\"variable\": {\n\t\t\t\t\t\t\t\tpattern: /(=\\s*)(?!\\d)\\w+/,\n\t\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"operator\": /=/\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/[\\[\\]().,:`]|->/\n\t\t\t\t\t],\n\t\t\t\t\t'operator': [\n\t\t\t\t\t\t/[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n\t\t\t\t\t\t/\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n\t\t\t\t\t\t/\\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\\b/\n\t\t\t\t\t],\n\t\t\t\t\t'keyword': /\\b(?:false|off|on|no|true|yes)\\b/\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\t// Comments are inserted at top so that they can\n\t\t// surround markup\n\t\tPrism.languages.insertBefore('smarty', 'tag', {\n\t\t\t'smarty-comment': {\n\t\t\t\tpattern: /\\{\\*[\\s\\S]*?\\*\\}/,\n\t\t\t\talias: ['smarty','comment']\n\t\t\t}\n\t\t});\n\t\n\t\t// Tokenize all inline Smarty expressions\n\t\tPrism.hooks.add('before-highlight', function(env) {\n\t\t\tif (env.language !== 'smarty') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tenv.tokenStack = [];\n\t\n\t\t\tenv.backupCode = env.code;\n\t\t\tenv.code = env.code.replace(smarty_pattern, function(match) {\n\t\n\t\t\t\t// Smarty tags inside {literal} block are ignored\n\t\t\t\tif(match === smarty_litteral_end) {\n\t\t\t\t\tsmarty_litteral_mode = false;\n\t\t\t\t}\n\t\n\t\t\t\tif(!smarty_litteral_mode) {\n\t\t\t\t\tif(match === smarty_litteral_start) {\n\t\t\t\t\t\tsmarty_litteral_mode = true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t\t// Check for existing strings\n\t\t\t\t\twhile (env.backupCode.indexOf('___SMARTY' + i + '___') !== -1)\n\t\t\t\t\t\t++i;\n\t\n\t\t\t\t\t// Create a sparse array\n\t\t\t\t\tenv.tokenStack[i] = match;\n\t\n\t\t\t\t\treturn '___SMARTY' + i + '___';\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\t\t});\n\t\n\t\t// Restore env.code for other plugins (e.g. line-numbers)\n\t\tPrism.hooks.add('before-insert', function(env) {\n\t\t\tif (env.language === 'smarty') {\n\t\t\t\tenv.code = env.backupCode;\n\t\t\t\tdelete env.backupCode;\n\t\t\t}\n\t\t});\n\t\n\t\t// Re-insert the tokens after highlighting\n\t\t// and highlight them with defined grammar\n\t\tPrism.hooks.add('after-highlight', function(env) {\n\t\t\tif (env.language !== 'smarty') {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\t\tvar k = keys[i];\n\t\t\t\tvar t = env.tokenStack[k];\n\t\n\t\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\t\tenv.highlightedCode = env.highlightedCode.replace('___SMARTY' + k + '___', Prism.highlight(t, env.grammar, 'smarty').replace(/\\$/g, '$$$$'));\n\t\t\t}\n\t\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\t\t});\n\t\n\t}(Prism));\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.smalltalk = {\n\t\t'comment': /\"(?:\"\"|[^\"])+\"/,\n\t\t'string': /'(?:''|[^'])+'/,\n\t\t'symbol': /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n\t\t'block-arguments': {\n\t\t\tpattern: /(\\[\\s*):[^\\[|]*\\|/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'variable': /:[\\da-z]+/i,\n\t\t\t\t'punctuation': /\\|/\n\t\t\t}\n\t\t},\n\t\t'temporary-variables': {\n\t\t\tpattern: /\\|[^|]+\\|/,\n\t\t\tinside: {\n\t\t\t\t'variable': /[\\da-z]+/i,\n\t\t\t\t'punctuation': /\\|/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(?:nil|true|false|self|super|new)\\b/,\n\t\t'character': {\n\t\t\tpattern: /\\$./,\n\t\t\talias: 'string'\n\t\t},\n\t\t'number': [\n\t\t\t/\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n\t\t\t/(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n\t\t],\n\t\t'operator': /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n\t\t'punctuation': /[.;:?\\[\\](){}]/\n\t};\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports) {\n\n\t/* TODO\n\t\tAdd support for Markdown notation inside doc comments\n\t\tAdd support for nested block comments...\n\t\tMatch closure params even when not followed by dash or brace\n\t\tAdd better support for macro definition\n\t*/\n\t\n\tPrism.languages.rust = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /b?r(#*)\"(?:\\\\.|(?!\"\\1)[^\\\\\\r\\n])*\"\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /b?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'keyword': /\\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n\t\n\t\t'attribute': {\n\t\t\tpattern: /#!?\\[.+?\\]/,\n\t\t\tgreedy: true,\n\t\t\talias: 'attr-name'\n\t\t},\n\t\n\t\t'function': [\n\t\t\t/\\w+(?=\\s*\\()/,\n\t\t\t// Macros can use parens or brackets\n\t\t\t/\\w+!(?=\\s*\\(|\\[)/\n\t\t],\n\t\t'macro-rules': {\n\t\t\tpattern: /\\w+!/,\n\t\t\talias: 'function'\n\t\t},\n\t\n\t\t// Hex, oct, bin, dec numbers with visual separators and type suffix\n\t\t'number': /\\b-?(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\\d(?:_?\\d)*)?\\.?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\\b/,\n\t\n\t\t// Closure params should not be confused with bitwise OR |\n\t\t'closure-params': {\n\t\t\tpattern: /\\|[^|]*\\|(?=\\s*[{-])/,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /[|:,]/,\n\t\t\t\t'operator': /[&*]/\n\t\t\t}\n\t\t},\n\t\t'punctuation': /[{}[\\];(),:]|\\.+|->/,\n\t\t'operator': /[-+*\\/%!^=]=?|@|&[&=]?|\\|[|=]?|<>?=?/\n\t};\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.r = {\n\t\t'comment': /#.*/,\n\t\t'string': {\n\t\t\tpattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'percent-operator': {\n\t\t\t// Includes user-defined operators\n\t\t\t// and %%, %*%, %/%, %in%, %o%, %x%\n\t\t\tpattern: /%[^%\\s]*%/,\n\t\t\talias: 'operator'\n\t\t},\n\t\t'boolean': /\\b(?:TRUE|FALSE)\\b/,\n\t\t'ellipsis': /\\.\\.(?:\\.|\\d+)/,\n\t\t'number': [\n\t\t\t/\\b(?:NaN|Inf)\\b/,\n\t\t\t/\\b(?:0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\d*\\.?\\d+)(?:[EePp][+-]?\\d+)?[iL]?\\b/\n\t\t],\n\t\t'keyword': /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n\t\t'operator': /->?>?|<(?:=|=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n\t\t'punctuation': /[(){}\\[\\],;]/\n\t};\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.d = Prism.languages.extend('clike', {\n\t\t'string': [\n\t\t\t// r\"\", x\"\"\n\t\t\t/\\b[rx]\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"[cwd]?/,\n\t\t\t// q\"[]\", q\"()\", q\"<>\", q\"{}\"\n\t\t\t/\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/,\n\t\t\t// q\"IDENT\n\t\t\t// ...\n\t\t\t// IDENT\"\n\t\t\t/\\bq\"([_a-zA-Z][_a-zA-Z\\d]*)(?:\\r?\\n|\\r)[\\s\\S]*?(?:\\r?\\n|\\r)\\1\"/,\n\t\t\t// q\"//\", q\"||\", etc.\n\t\t\t/\\bq\"(.)[\\s\\S]*?\\1\"/,\n\t\t\t// Characters\n\t\t\t/'(?:\\\\'|\\\\?[^']+)'/,\n\t\n\t\t\t/([\"`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1[cwd]?/\n\t\t],\n\t\n\t\t'number': [\n\t\t\t// The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n\t\t\t// Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n\t\t\t/\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]*/i,\n\t\t\t{\n\t\t\t\tpattern: /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]*/i,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\n\t\t// In order: $, keywords and special tokens, globally defined symbols\n\t\t'keyword': /\\$|\\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\\b/,\n\t\t'operator': /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n\t});\n\t\n\t\n\tPrism.languages.d.comment = [\n\t\t// Shebang\n\t\t/^\\s*#!.+/,\n\t\t// /+ +/\n\t\t{\n\t\t\t// Allow one level of nesting\n\t\t\tpattern: /(^|[^\\\\])\\/\\+(?:\\/\\+[\\s\\S]*?\\+\\/|[\\s\\S])*?\\+\\//,\n\t\t\tlookbehind: true\n\t\t}\n\t].concat(Prism.languages.d.comment);\n\t\n\tPrism.languages.insertBefore('d', 'comment', {\n\t\t'token-string': {\n\t\t\t// Allow one level of nesting\n\t\t\tpattern: /\\bq\\{(?:\\{[^}]*\\}|[^}])*\\}/,\n\t\t\talias: 'string'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('d', 'keyword', {\n\t\t'property': /\\B@\\w*/\n\t});\n\t\n\tPrism.languages.insertBefore('d', 'function', {\n\t\t'register': {\n\t\t\t// Iasm registers\n\t\t\tpattern: /\\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n\t\t\talias: 'variable'\n\t\t}\n\t});\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.dart = Prism.languages.extend('clike', {\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /r?(\"\"\"|''')[\\s\\S]*?\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /r?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'keyword': [\n\t\t\t/\\b(?:async|sync|yield)\\*/,\n\t\t\t/\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\\b/\n\t\t],\n\t\t'operator': /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n\t});\n\t\n\tPrism.languages.insertBefore('dart','function',{\n\t\t'metadata': {\n\t\t\tpattern: /@\\w+/,\n\t\t\talias: 'symbol'\n\t\t}\n\t});\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\n\t// Ignore comments starting with { to privilege string interpolation highlighting\n\tvar comment = /#(?!\\{).+/,\n\t interpolation = {\n\t \tpattern: /#\\{[^}]+\\}/,\n\t \talias: 'variable'\n\t };\n\t\n\tPrism.languages.coffeescript = Prism.languages.extend('javascript', {\n\t\t'comment': comment,\n\t\t'string': [\n\t\n\t\t\t// Strings are multiline\n\t\t\t{\n\t\t\t\tpattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\n\t\t\t{\n\t\t\t\t// Strings are multiline\n\t\t\t\tpattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n\t\t'class-member': {\n\t\t\tpattern: /@(?!\\d)\\w+/,\n\t\t\talias: 'variable'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('coffeescript', 'comment', {\n\t\t'multiline-comment': {\n\t\t\tpattern: /###[\\s\\S]+?###/,\n\t\t\talias: 'comment'\n\t\t},\n\t\n\t\t// Block regexp can contain comments and interpolation\n\t\t'block-regex': {\n\t\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\t\talias: 'regex',\n\t\t\tinside: {\n\t\t\t\t'comment': comment,\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('coffeescript', 'string', {\n\t\t'inline-javascript': {\n\t\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^`|`$/,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\trest: Prism.languages.javascript\n\t\t\t}\n\t\t},\n\t\n\t\t// Block strings\n\t\t'multiline-string': [\n\t\t\t{\n\t\t\t\tpattern: /'''[\\s\\S]*?'''/,\n\t\t\t\tgreedy: true,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\talias: 'string',\n\t\t\t\tinside: {\n\t\t\t\t\tinterpolation: interpolation\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t\n\t});\n\t\n\tPrism.languages.insertBefore('coffeescript', 'keyword', {\n\t\t// Object property\n\t\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n\t});\n\t\n\tdelete Prism.languages.coffeescript['template-string'];\n\t\n\t}(Prism));\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports) {\n\n\t(function (Prism) {\n\t\tvar variable = /%%?[~:\\w]+%?|!\\S+!/;\n\t\tvar parameter = {\n\t\t\tpattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n\t\t\talias: 'attr-name',\n\t\t\tinside: {\n\t\t\t\t'punctuation': /:/\n\t\t\t}\n\t\t};\n\t\tvar string = /\"[^\"]*\"/;\n\t\tvar number = /(?:\\b|-)\\d+\\b/;\n\t\n\t\tPrism.languages.batch = {\n\t\t\t'comment': [\n\t\t\t\t/^::.*/m,\n\t\t\t\t{\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t],\n\t\t\t'label': {\n\t\t\t\tpattern: /^:.*/m,\n\t\t\t\talias: 'property'\n\t\t\t},\n\t\t\t'command': [\n\t\t\t\t{\n\t\t\t\t\t// FOR command\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)for(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* \\S+ in \\([^)]+\\) do/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^for\\b|\\b(?:in|do)\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'variable': variable,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// IF command\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)if(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|\\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:\"[^\"]*\"|\\S+))/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^if\\b|\\b(?:not|cmdextversion|defined|errorlevel|exist)\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'variable': variable,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': /\\^|==|\\b(?:equ|neq|lss|leq|gtr|geq)\\b/i\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// ELSE command\n\t\t\t\t\tpattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^else\\b/i\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// SET command\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)set(?: ?\\/[a-z](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^set\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'variable': [\n\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t/\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n\t\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Other commands\n\t\t\t\t\tpattern: /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'keyword': /^\\w+\\b/i,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t\t'label': {\n\t\t\t\t\t\t\tpattern: /(^\\s*):\\S+/m,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: 'property'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'variable': variable,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': /\\^/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\t'operator': /[&@]/,\n\t\t\t'punctuation': /[()']/\n\t\t};\n\t}(Prism));\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.cpp = Prism.languages.extend('c', {\n\t\t'keyword': /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'operator': /--?|\\+\\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\\^|~|%|&{1,2}|\\|\\|?|\\?|\\*|\\/|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/\n\t});\n\t\n\tPrism.languages.insertBefore('cpp', 'keyword', {\n\t\t'class-name': {\n\t\t\tpattern: /(class\\s+)\\w+/i,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.lua = {\n\t\t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n\t\t// \\z may be used to skip the following space\n\t\t'string': {\n\t\t\tpattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n\t\t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n\t\t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n\t\t'operator': [\n\t\t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n\t\t\t{\n\t\t\t\t// Match \"..\" but don't break \"...\"\n\t\t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n\t};\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.livescript = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'interpolated-string': {\n\t\t\t/* Look-behind and look-ahead prevents wrong behavior of the greedy pattern\n\t\t\t* forcing it to match \"\"\"-quoted string when it would otherwise match \"-quoted first. */\n\t\t\tpattern: /(^|[^\"])(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2(?!\")/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|[\\d_])*/m,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// See rest below\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /<\\[[\\s\\S]*?\\]>/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t/\\\\[^\\s,;\\])}]+/\n\t\t],\n\t\t'regex': [\n\t\t\t{\n\t\t\t\tpattern: /\\/\\/(\\[.+?]|\\\\.|(?!\\/\\/)[^\\\\])+\\/\\/[gimyu]{0,5}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'comment': {\n\t\t\t\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\/(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'keyword': {\n\t\t\tpattern: /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword-operator': {\n\t\t\tpattern: /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'operator'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'argument': {\n\t\t\t// Don't match .&. nor &&\n\t\t\tpattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'variable'\n\t\t},\n\t\t'number': /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n\t\t'identifier': /[a-z_](?:-?[a-z]|[\\d_])*/i,\n\t\t'operator': [\n\t\t\t// Spaced .\n\t\t\t{\n\t\t\t\tpattern: /( )\\.(?= )/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// Full list, in order:\n\t\t\t// .= .~ .. ...\n\t\t\t// .&. .^. .<<. .>>. .>>>.\n\t\t\t// := :: ::=\n\t\t\t// &&\n\t\t\t// || |>\n\t\t\t// < << <<< <<<<\n\t\t\t// <- <-- <-! <--!\n\t\t\t// <~ <~~ <~! <~~!\n\t\t\t// <| <= >> >= >?\n\t\t\t// - -- -> -->\n\t\t\t// + ++\n\t\t\t// @ @@\n\t\t\t// % %%\n\t\t\t// * **\n\t\t\t// ! != !~=\n\t\t\t// !~> !~~>\n\t\t\t// !-> !-->\n\t\t\t// ~ ~> ~~> ~=\n\t\t\t// = ==\n\t\t\t// ^ ^^\n\t\t\t// / ?\n\t\t\t/\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n\t\t],\n\t\t'punctuation': /[(){}\\[\\]|.,:;`]/\n\t};\n\t\n\tPrism.languages.livescript['interpolated-string'].inside['interpolation'].inside.rest = Prism.languages.livescript;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports) {\n\n\t(function(Prism) {\n\t\tvar funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i,\n\t\t insideEqu = {\n\t\t\t 'equation-command': {\n\t\t\t\t pattern: funcPattern,\n\t\t\t\t alias: 'regex'\n\t\t\t }\n\t\t };\n\t\n\t\tPrism.languages.latex = {\n\t\t\t'comment': /%.*/m,\n\t\t\t// the verbatim environment prints whitespace to the document\n\t\t\t'cdata': {\n\t\t\t\tpattern: /(\\\\begin\\{((?:verbatim|lstlisting)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t/*\n\t\t\t * equations can be between $ $ or \\( \\) or \\[ \\]\n\t\t\t * (all are multiline)\n\t\t\t */\n\t\t\t'equation': [\n\t\t\t\t{\n\t\t\t\t\tpattern: /\\$(?:\\\\[\\s\\S]|[^\\\\$])*\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n\t\t\t\t\tinside: insideEqu,\n\t\t\t\t\talias: 'string'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /(\\\\begin\\{((?:equation|math|eqnarray|align|multline|gather)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: insideEqu,\n\t\t\t\t\talias: 'string'\n\t\t\t\t}\n\t\t\t],\n\t\t\t/*\n\t\t\t * arguments which are keywords or references are highlighted\n\t\t\t * as keywords\n\t\t\t */\n\t\t\t'keyword': {\n\t\t\t\tpattern: /(\\\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'url': {\n\t\t\t\tpattern: /(\\\\url\\{)[^}]+(?=\\})/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t/*\n\t\t\t * section or chapter headlines are highlighted as bold so that\n\t\t\t * they stand out more\n\t\t\t */\n\t\t\t'headline': {\n\t\t\t\tpattern: /(\\\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\}(?:\\[[^\\]]+\\])?)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'class-name'\n\t\t\t},\n\t\t\t'function': {\n\t\t\t\tpattern: funcPattern,\n\t\t\t\talias: 'selector'\n\t\t\t},\n\t\t\t'punctuation': /[[\\]{}&]/\n\t\t};\n\t})(Prism);\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.groovy = Prism.languages.extend('clike', {\n\t\t'keyword': /\\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /(\"\"\"|''')[\\s\\S]*?\\1|(?:\\$\\/)(?:\\$\\/\\$|[\\s\\S])*?\\/\\$/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /([\"'\\/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?[\\d]+)?)[glidf]?\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.{1,2}(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /\\.+|[{}[\\];(),:$]/\n\t});\n\t\n\tPrism.languages.insertBefore('groovy', 'string', {\n\t\t'shebang': {\n\t\t\tpattern: /#!.+/,\n\t\t\talias: 'comment'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('groovy', 'punctuation', {\n\t\t'spock-block': /\\b(?:setup|given|when|then|and|cleanup|expect|where):/\n\t});\n\t\n\tPrism.languages.insertBefore('groovy', 'function', {\n\t\t'annotation': {\n\t\t\talias: 'punctuation',\n\t\t\tpattern: /(^|[^.])@\\w+/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\t\n\t// Handle string interpolation\n\tPrism.hooks.add('wrap', function(env) {\n\t\tif (env.language === 'groovy' && env.type === 'string') {\n\t\t\tvar delimiter = env.content[0];\n\t\n\t\t\tif (delimiter != \"'\") {\n\t\t\t\tvar pattern = /([^\\\\])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n\t\t\t\tif (delimiter === '$') {\n\t\t\t\t\tpattern = /([^\\$])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n\t\t\t\t}\n\t\n\t\t\t\t// To prevent double HTML-encoding we have to decode env.content first\n\t\t\t\tenv.content = env.content.replace(/</g, '<').replace(/&/g, '&');\n\t\n\t\t\t\tenv.content = Prism.highlight(env.content, {\n\t\t\t\t\t'expression': {\n\t\t\t\t\t\tpattern: pattern,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\tinside: Prism.languages.groovy\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tenv.classes.push(delimiter === '/' ? 'regex' : 'gstring');\n\t\t\t}\n\t\t}\n\t});\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.graphql = {\n\t\t'comment': /#.*/,\n\t\t'string': {\n\t\t\tpattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b/,\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'variable': /\\$[a-z_]\\w*/i,\n\t\t'directive': {\n\t\t\tpattern: /@[a-z_]\\w*/i,\n\t\t\talias: 'function'\n\t\t},\n\t\t'attr-name': /[a-z_]\\w*(?=\\s*:)/i,\n\t\t'keyword': [\n\t\t\t{\n\t\t\t\tpattern: /(fragment\\s+(?!on)[a-z_]\\w*\\s+|\\.{3}\\s*)on\\b/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t/\\b(?:query|fragment|mutation)\\b/\n\t\t],\n\t\t'operator': /!|=|\\.{3}/,\n\t\t'punctuation': /[!(){}\\[\\]:=,]/\n\t};\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.nginx = Prism.languages.extend('clike', {\n\t 'comment': {\n\t pattern: /(^|[^\"{\\\\])#.*/,\n\t lookbehind: true\n\t },\n\t 'keyword': /\\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\\b/i\n\t});\n\t\n\tPrism.languages.insertBefore('nginx', 'keyword', {\n\t 'variable': /\\$[a-z_]+/i\n\t});\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.erlang = {\n\t\t'comment': /%.+/,\n\t\t'string': {\n\t\t\tpattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'quoted-function': {\n\t\t\tpattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n\t\t\talias: 'function'\n\t\t},\n\t\t'quoted-atom': {\n\t\t\tpattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n\t\t\talias: 'atom'\n\t\t},\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'keyword': /\\b(?:fun|when|case|of|end|if|receive|after|try|catch)\\b/,\n\t\t'number': [\n\t\t\t/\\$\\\\?./,\n\t\t\t/\\d+#[a-z0-9]+/i,\n\t\t\t/(?:\\b|-)\\d*\\.?\\d+([Ee][+-]?\\d+)?\\b/\n\t\t],\n\t\t'function': /\\b[a-z][\\w@]*(?=\\()/,\n\t\t'variable': {\n\t\t\t// Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n\t\t\tpattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'operator': [\n\t\t\t/[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\\b/,\n\t\t\t{\n\t\t\t\t// We don't want to match <<\n\t\t\t\tpattern: /(^|[^<])<(?!<)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// We don't want to match >>\n\t\t\t\tpattern: /(^|[^>])>(?!>)/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'atom': /\\b[a-z][\\w@]*/,\n\t\t'punctuation': /[()[\\]{}:;,.#|]|<<|>>/\n\t\n\t};\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.powershell = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^`])<#[\\s\\S]*?#>/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^`])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'function': {\n\t\t\t\t\t\tpattern: /[^`]\\$\\(.*?\\)/,\n\t\t\t\t\t\t// Populated at end of file\n\t\t\t\t\t\tinside: {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /'(?:[^']|'')*'/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t// Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n\t\t'namespace': /\\[[a-z][\\s\\S]*?\\]/i,\n\t\t'boolean': /\\$(?:true|false)\\b/i,\n\t\t'variable': /\\$\\w+\\b/i,\n\t\t// Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n\t\t// Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t\t// Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t\t'function': [\n\t\t\t/\\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\\b/i,\n\t\t\t/\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n\t\t],\n\t\t// per http://technet.microsoft.com/en-us/library/hh847744.aspx\n\t\t'keyword': /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(\\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[|{}[\\];(),.]/\n\t};\n\t\n\t// Variable interpolation inside strings, and nested expressions\n\tPrism.languages.powershell.string[0].inside.boolean = Prism.languages.powershell.boolean;\n\tPrism.languages.powershell.string[0].inside.variable = Prism.languages.powershell.variable;\n\tPrism.languages.powershell.string[0].inside.function.inside = Prism.util.clone(Prism.languages.powershell);\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.makefile = {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// Built-in target names\n\t\t'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n\t\n\t\t// Targets\n\t\t'symbol': {\n\t\t\tpattern: /^[^:=\\r\\n]+(?=\\s*:(?!=))/m,\n\t\t\tinside: {\n\t\t\t\t'variable': /\\$+(?:[^(){}:#=\\s]+|(?=[({]))/\n\t\t\t}\n\t\t},\n\t\t'variable': /\\$+(?:[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n\t\n\t\t'keyword': [\n\t\t\t// Directives\n\t\t\t/-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n\t\t\t// Functions\n\t\t\t{\n\t\t\t\tpattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'operator': /(?:::|[?:+!])?=|[|@]/,\n\t\t'punctuation': /[:;(){}]/\n\t};\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports) {\n\n\tPrism.languages.markdown = Prism.languages.extend('markup', {});\n\tPrism.languages.insertBefore('markdown', 'prolog', {\n\t\t'blockquote': {\n\t\t\t// > ...\n\t\t\tpattern: /^>(?:[\\t ]*>)*/m,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'code': [\n\t\t\t{\n\t\t\t\t// Prefixed by 4 spaces or 1 tab\n\t\t\t\tpattern: /^(?: {4}|\\t).+/m,\n\t\t\t\talias: 'keyword'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// `code`\n\t\t\t\t// ``code``\n\t\t\t\tpattern: /``.+?``|`[^`\\n]+`/,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t],\n\t\t'title': [\n\t\t\t{\n\t\t\t\t// title 1\n\t\t\t\t// =======\n\t\n\t\t\t\t// title 2\n\t\t\t\t// -------\n\t\t\t\tpattern: /\\w+.*(?:\\r?\\n|\\r)(?:==+|--+)/,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /==+$|--+$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// # title 1\n\t\t\t\t// ###### title 6\n\t\t\t\tpattern: /(^\\s*)#+.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /^#+|#+$/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'hr': {\n\t\t\t// ***\n\t\t\t// ---\n\t\t\t// * * *\n\t\t\t// -----------\n\t\t\tpattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'list': {\n\t\t\t// * item\n\t\t\t// + item\n\t\t\t// - item\n\t\t\t// 1. item\n\t\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'url-reference': {\n\t\t\t// [id]: http://example.com \"Optional title\"\n\t\t\t// [id]: http://example.com 'Optional title'\n\t\t\t// [id]: http://example.com (Optional title)\n\t\t\t// [id]: \"Optional title\"\n\t\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n\t\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n\t\t\t},\n\t\t\talias: 'url'\n\t\t},\n\t\t'bold': {\n\t\t\t// **strong**\n\t\t\t// __strong__\n\t\n\t\t\t// Allow only one line break\n\t\t\tpattern: /(^|[^\\\\])(\\*\\*|__)(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /^\\*\\*|^__|\\*\\*$|__$/\n\t\t\t}\n\t\t},\n\t\t'italic': {\n\t\t\t// *em*\n\t\t\t// _em_\n\t\n\t\t\t// Allow only one line break\n\t\t\tpattern: /(^|[^\\\\])([*_])(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /^[*_]|[*_]$/\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// [example](http://example.com \"Optional title\")\n\t\t\t// [example] [id]\n\t\t\tpattern: /!?\\[[^\\]]+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[[^\\]\\n]*\\])/,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /(!?\\[)[^\\]]+(?=\\]$)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t\n\tPrism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\n\tPrism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\n\tPrism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']);\n\tPrism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']);\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */,\n/* 158 */,\n/* 159 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 162 */,\n/* 163 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// js/mditor.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3c01eafb01fce1935266","const mokit = require('mokit');\r\nconst Toolbar = require('../toolbar');\r\nconst Editor = require('../editor');\r\nconst Viewer = require('../viewer');\r\nconst Finder = require('../finder');\r\nconst Shortcut = require('./shortcut');\r\nconst Parser = require('../common/parser');\r\n\r\nrequire('font-awesome/css/font-awesome.css');\r\nrequire('github-markdown-css/github-markdown.css');\r\nrequire('prismjs/themes/prism.css');\r\nrequire('./index.less');\r\n\r\nconst HIDDEN_CLASS_NAME = 'mditor-hidden';\r\n\r\nconst Mditor = new mokit.Component({\r\n template: require('./index.html'),\r\n\r\n onInit() {\r\n this.PLATFORM = navigator.platform.toLowerCase();\r\n this.EOL = this.PLATFORM == 'win32' ? '\\r\\n' : '\\n';\r\n this.CMD = this.PLATFORM.indexOf('mac') > -1 ? 'command' : 'ctrl';\r\n this.INDENT = ' ';\r\n this.shortcut = new Shortcut(this);\r\n this.Parser = Parser;\r\n this.parser = new Parser(this);\r\n },\r\n\r\n onReady() {\r\n this.shortcut.bind('tab', this.editor.addIndent.bind(this.editor));\r\n this.shortcut.bind('shift+tab', this.editor.removeIndent.bind(this.editor));\r\n this.shortcut.bind('enter', (event) => {\r\n this._ulAndQuoteAutoComplete(event);\r\n this._olAutoComplete(event);\r\n this._keepIndent(event);\r\n }, true);\r\n setTimeout(() => {\r\n this.$emit('ready');\r\n }, 0);\r\n },\r\n\r\n components: {\r\n Toolbar,\r\n Editor,\r\n Viewer,\r\n Finder\r\n },\r\n\r\n props: {\r\n height: '400px',\r\n width: 'auto',\r\n preview: false,\r\n split: true,\r\n fullscreen: false\r\n },\r\n\r\n data() {\r\n return {\r\n self: this,\r\n value: ''\r\n };\r\n },\r\n\r\n find(text) {\r\n this.finder.show(text);\r\n },\r\n\r\n syncScroll() {\r\n if (!this.split || this.preview) return;\r\n let offsetHeight = this.editor.textarea.offsetHeight;\r\n let editorScrollHeight = this.editor.textarea.scrollHeight;\r\n let viewerScrollHeight = this.viewer.$element.scrollHeight;\r\n let editorScrollTop = this.editor.textarea.scrollTop;\r\n let viewerScrollTop = editorScrollTop * (viewerScrollHeight - offsetHeight) / (editorScrollHeight - offsetHeight);\r\n this.viewer.$element.scrollTop = viewerScrollTop;\r\n },\r\n\r\n onChanged(event) {\r\n this.$emit('changed', event);\r\n this.syncScroll();\r\n },\r\n\r\n onInput(event) {\r\n this.$emit('input', event);\r\n },\r\n\r\n onPaste(event) {\r\n this.$emit('paste', event);\r\n this.syncScroll();\r\n },\r\n\r\n onHeadDblClick(event) {\r\n if (event.target.tagName == 'I') return;\r\n this.$emit('head-dblclick', event);\r\n },\r\n\r\n _keepIndent(event) {\r\n let text = this.editor.getBeforeTextInLine();\r\n let parts = text.split(this.INDENT);\r\n if (parts.length < 2) return;\r\n let count = 0;\r\n let buffer = [this.EOL];\r\n while (parts[count] === '' &&\r\n count < (parts.length - 1)) {\r\n count++;\r\n buffer.push(this.INDENT);\r\n }\r\n this.editor.insertBeforeText(buffer.join(''));\r\n event.preventDefault();\r\n },\r\n\r\n _ulAndQuoteAutoComplete(event) {\r\n let text = this.editor.getBeforeTextInLine();\r\n let prefix = text.substr(0, 2);\r\n if (prefix != '- ' && prefix != '* ' && prefix != '> ') return;\r\n if (text.length > prefix.length) {\r\n this.editor.insertBeforeText(this.EOL + prefix);\r\n } else {\r\n this.editor.selectBeforeText(prefix.length);\r\n this.editor.setSelectText('');\r\n }\r\n event.preventDefault();\r\n },\r\n\r\n _olAutoComplete(event) {\r\n let exp = /^\\d+\\./;\r\n let text = this.editor.getBeforeTextInLine();\r\n let trimedText = text.trim();\r\n if (!exp.test(trimedText)) return;\r\n let num = trimedText.split('.')[0];\r\n if (trimedText.length > num.length + 1) {\r\n this.editor.insertBeforeText(this.EOL + (parseInt(num) + 1) + '. ');\r\n } else {\r\n this.editor.selectBeforeText(text.length);\r\n this.editor.setSelectText('');\r\n }\r\n event.preventDefault();\r\n },\r\n\r\n focus() {\r\n if (this.preview) {\r\n this.$element.focus();\r\n } else {\r\n this.editor.focus();\r\n }\r\n },\r\n\r\n blur() {\r\n this.editor.blur();\r\n },\r\n\r\n addCommand(item) {\r\n if (!item.name || !item.handler) return;\r\n this.commands = this.commands || {};\r\n this.commands[item.name] = item;\r\n if (item.key) {\r\n this.shortcut.bind(item.key, item.name, item.allowDefault, item.owner);\r\n }\r\n },\r\n\r\n removeCommand(name) {\r\n this.commands = this.commands || {};\r\n let item = this.commands[name];\r\n if (!item) return;\r\n this.shortcut.unbind(item.key);\r\n this.commands[name] = null;\r\n delete this.commands[name];\r\n },\r\n\r\n execCommand(name, event) {\r\n event = event || {};\r\n event.mditor = this;\r\n event.toolbar = this.toolbar;\r\n event.editor = this.editor;\r\n this.commands[name].handler.call(this, event);\r\n }\r\n\r\n});\r\n\r\nMditor.fromTextarea = function (textarea) {\r\n textarea.classList.add(HIDDEN_CLASS_NAME);\r\n let mditor = new Mditor();\r\n mditor.value = textarea.value;\r\n mditor.$watch('value', () => {\r\n textarea.value = mditor.value;\r\n });\r\n mditor.$mount(textarea);\r\n mditor.switchTextarea = function () {\r\n if (textarea.classList.contains(HIDDEN_CLASS_NAME)) {\r\n textarea.value = mditor.value;\r\n mditor.$element.classList.add(HIDDEN_CLASS_NAME);\r\n textarea.classList.remove(HIDDEN_CLASS_NAME);\r\n } else {\r\n mditor.value = textarea.value;\r\n textarea.classList.add(HIDDEN_CLASS_NAME);\r\n mditor.$element.classList.remove(HIDDEN_CLASS_NAME);\r\n }\r\n };\r\n return mditor;\r\n};\r\n\r\nMditor.Parser = Parser;\r\n\r\nmodule.exports = window.Mditor = Mditor;\n\n\n// WEBPACK FOOTER //\n// ./src/client/index.js","/*istanbul ignore next*/'use strict';\n\nvar info = require('../info.json');\nvar utils = require('ntils');\nvar Class = require('cify');\nvar Watcher = require('./watcher');\nvar Observer = require('./observer');\nvar Template = require('./template');\nvar Component = require('./component');\nvar EventEmitter = require('./events');\n\n//持载模板相关对象\nutils.copy(Template, Component);\n\nComponent.version = info.version;\nComponent.Template = Template;\nComponent.Watcher = Watcher;\nComponent.Observer = Observer;\nComponent.EventEmitter = EventEmitter;\nComponent.utils = utils;\nComponent.Class = Class;\n\n//定义安装插件的方法\nComponent.use = function (plugin) {\n var install = plugin.install || plugin;\n if (!utils.isFunction(install)) {\n throw new Error('Invalid Plugin');\n }\n return install.call(plugin, this);\n};\n\n//安装内置的路由插件\n//Component.use(Router);\n\nmodule.exports = Component;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/index.js","module.exports = {\"name\":\"mokit\",\"version\":\"3.1.3\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_mokit@3.1.3@mokit/info.json\n// module id = 2\n// module chunks = 0","(function (ntils) {\n\n /**\n * 空函数\n */\n ntils.noop = function () { };\n\n /**\n * 验证一个对象是否为NULL\n * @method isNull\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isNull = function (obj) {\n return obj === null || typeof obj === \"undefined\";\n };\n\n /**\n * 除去字符串两端的空格\n * @method trim\n * @param {String} str 源字符串\n * @return {String} 结果字符串\n * @static\n */\n ntils.trim = function (str) {\n if (this.isNull(str)) return str;\n if (str.trim) {\n return str.trim();\n } else {\n return str.replace(/(^[\\\\s]*)|([\\\\s]*$)/g, \"\");\n }\n };\n\n /**\n * 替换所有\n * @method replace\n * @param {String} str 源字符串\n * @param {String} str1 要替换的字符串\n * @param {String} str2 替换为的字符串\n * @static\n */\n ntils.replace = function (str, str1, str2) {\n if (this.isNull(str)) return str;\n return str.replace(new RegExp(str1, 'g'), str2);\n };\n\n /**\n * 从字符串开头匹配\n * @method startWith\n * @param {String} str1 源字符串\n * @param {String} str2 要匹配的字符串\n * @return {Boolean} 匹配结果\n * @static\n */\n ntils.startWith = function (str1, str2) {\n if (this.isNull(str1) || this.isNull(str2)) return false;\n return str1.indexOf(str2) === 0;\n };\n\n /**\n * 是否包含\n * @method contains\n * @param {String} str1 源字符串\n * @param {String} str2 检查包括字符串\n * @return {Boolean} 结果\n * @static\n */\n ntils.contains = function (str1, str2) {\n var self = this;\n if (this.isNull(str1) || this.isNull(str2)) return false;\n return str1.indexOf(str2) > -1;\n };\n\n /**\n * 从字符串结束匹配\n * @method endWidth\n * @param {String} str1 源字符串\n * @param {String} str2 匹配字符串\n * @return {Boolean} 匹配结果\n * @static\n */\n ntils.endWith = function (str1, str2) {\n if (this.isNull(str1) || this.isNull(str2)) return false;\n return str1.indexOf(str2) === (str1.length - str2.length);\n };\n\n /**\n * 是否包含属性\n * @method hasProperty\n * @param {Object} obj 对象\n * @param {String} name 属性名\n * @return {Boolean} 结果\n * @static\n */\n ntils.has = ntils.hasProperty = function (obj, name) {\n if (this.isNull(obj) || this.isNull(name)) return false;\n return (name in obj) || (obj.hasOwnProperty(name));\n };\n\n /**\n * 验证一个对象是否为Function\n * @method isFunction\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isFunction = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === \"function\";\n };\n\n /**\n * 验证一个对象是否为String\n * @method isString\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isString = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === 'string' || obj instanceof String;\n };\n\n /**\n * 验证一个对象是否为Number\n * @method isNumber\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isNumber = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === 'number' || obj instanceof Number;\n };\n\n /**\n * 验证一个对象是否为Boolean\n * @method isBoolean\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isBoolean = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === 'boolean' || obj instanceof Boolean;\n };\n\n /**\n * 验证一个对象是否为HTML Element\n * @method isElement\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isElement = function (obj) {\n if (this.isNull(obj)) return false;\n if (window.Element) {\n return obj instanceof Element;\n } else {\n return (obj.tagName && obj.nodeType && obj.nodeName && obj.attributes && obj.ownerDocument);\n }\n };\n\n /**\n * 验证一个对象是否为HTML Text Element\n * @method isText\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isText = function (obj) {\n if (this.isNull(obj)) return false;\n return obj instanceof Text;\n };\n\n /**\n * 验证一个对象是否为Object\n * @method isObject\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isObject = function (obj) {\n if (this.isNull(obj)) return false;\n return typeof obj === \"object\";\n };\n\n /**\n * 验证一个对象是否为Array或伪Array\n * @method isArray\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isArray = function (obj) {\n if (this.isNull(obj)) return false;\n var v1 = Object.prototype.toString.call(obj) === '[object Array]';\n var v2 = obj instanceof Array;\n var v3 = !this.isString(obj) && this.isNumber(obj.length) && this.isFunction(obj.splice);\n var v4 = !this.isString(obj) && this.isNumber(obj.length) && obj[0];\n return v1 || v2 || v3 || v4;\n };\n\n /**\n * 验证是不是一个日期对象\n * @method isDate\n * @param {Object} val 要检查的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isDate = function (val) {\n if (this.isNull(val)) return false;\n return val instanceof Date;\n };\n\n /**\n * 验证是不是一个正则对象\n * @method isDate\n * @param {Object} val 要检查的对象\n * @return {Boolean} 结果\n * @static\n */\n ntils.isRegexp = function (val) {\n return val instanceof RegExp;\n };\n\n /**\n * 转换为数组\n * @method toArray\n * @param {Array|Object} array 伪数组\n * @return {Array} 转换结果数组\n * @static\n */\n ntils.toArray = function (array) {\n if (this.isNull(array)) return [];\n return Array.prototype.slice.call(array);\n };\n\n /**\n * 转为日期格式\n * @method toDate\n * @param {Number|String} val 日期字符串或整型数值\n * @return {Date} 日期对象\n * @static\n */\n ntils.toDate = function (val) {\n var self = this;\n if (self.isNumber(val))\n return new Date(val);\n else if (self.isString(val))\n return new Date(self.replace(self.replace(val, '-', '/'), 'T', ' '));\n else if (self.isDate(val))\n return val;\n else\n return null;\n };\n\n /**\n * 遍历一个对像或数组\n * @method each\n * @param {Object or Array} obj 要遍历的数组或对象\n * @param {Function} fn 处理函数\n * @return {void} 无返回值\n * @static\n */\n ntils.each = function (list, handler, scope) {\n if (this.isNull(list) || this.isNull(handler)) return;\n if (this.isArray(list)) {\n var listLength = list.length;\n for (var i = 0; i < listLength; i++) {\n var rs = handler.call(scope || list[i], i, list[i]);\n if (!this.isNull(rs)) return rs;\n }\n } else {\n for (var key in list) {\n var rs = handler.call(scope || list[key], key, list[key]);\n if (!this.isNull(rs)) return rs;\n }\n }\n };\n\n /**\n * 格式化日期\n * @method formatDate\n * @param {Date|String|Number} date 日期\n * @param {String} format 格式化字符串\n * @param {object} dict 反译字典\n * @return {String} 格式化结果\n * @static\n */\n ntils.formatDate = function (date, format, dict) {\n if (this.isNull(format) || this.isNull(date)) return date;\n date = this.toDate(date);\n dict = dict || {};\n var placeholder = {\n \"M+\": date.getMonth() + 1, //month\n \"d+\": date.getDate(), //day\n \"h+\": date.getHours(), //hour\n \"m+\": date.getMinutes(), //minute\n \"s+\": date.getSeconds(), //second\n \"w+\": date.getDay(), //week\n \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n \"S\": date.getMilliseconds() //millisecond\n }\n if (/(y+)/.test(format)) {\n format = format.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n }\n for (var key in placeholder) {\n if (new RegExp(\"(\" + key + \")\").test(format)) {\n var value = placeholder[key];\n value = dict[value] || value;\n format = format.replace(RegExp.$1, RegExp.$1.length == 1\n ? value : (\"00\" + value).substr((\"\" + value).length));\n }\n }\n return format;\n };\n\n /**\n * 拷贝对象\n * @method copy\n * @param {Object} src 源对象\n * @param {Object} dst 目标对象\n * @static\n */\n ntils.copy = function (src, dst, igonres) {\n dst = dst || (this.isArray(src) ? [] : {});\n this.each(src, function (key) {\n if (igonres && igonres.indexOf(key) > -1) return;\n delete dst[key];\n if (Object.getOwnPropertyDescriptor) {\n try {\n Object.defineProperty(dst, key, Object.getOwnPropertyDescriptor(src, key));\n } catch (ex) {\n dst[key] = src[key];\n }\n } else {\n dst[key] = src[key];\n }\n })\n return dst;\n };\n\n /**\n * 深度克隆对象\n * @method clone\n * @param {Object} src 源对象\n * @return {Object} 新对象\n * @static\n */\n ntils.clone = function (src, igonres) {\n if (this.isNull(src) ||\n this.isString(src) ||\n this.isNumber(src) ||\n this.isBoolean(src) ||\n this.isDate(src)) {\n return src;\n }\n var objClone = src;\n try {\n objClone = new src.constructor();\n } catch (ex) { }\n this.each(src, function (key, value) {\n if (objClone[key] != value && !this.contains(igonres, key)) {\n if (this.isObject(value)) {\n objClone[key] = this.clone(value, igonres);\n } else {\n objClone[key] = value;\n }\n }\n }, this);\n ['toString', 'valueOf'].forEach(function (key) {\n if (this.contains(igonres, key)) return;\n this.defineFreezeProp(objClone, key, src[key]);\n }, this);\n return objClone;\n };\n\n /**\n * 合并对象\n * @method mix\n * @return 合并后的对象\n * @param {Object} dst 目标对象\n * @param {Object} src 源对象\n * @param {Array} igonres 忽略的属性名,\n * @param {Number} mode 模式\n */\n ntils.mix = function (dst, src, igonres, mode, igonreNull) {\n //根据模式来判断,默认是Obj to Obj的 \n if (mode) {\n switch (mode) {\n case 1: // proto to proto \n return ntils.mix(dst.prototype, src.prototype, igonres, 0);\n case 2: // object to object and proto to proto \n ntils.mix(dst.prototype, src.prototype, igonres, 0);\n break; // pass through \n case 3: // proto to static \n return ntils.mix(dst, src.prototype, igonres, 0);\n case 4: // static to proto \n return ntils.mix(dst.prototype, src, igonres, 0);\n default: // object to object is what happens below \n }\n }\n //---\n src = src || {};\n dst = dst || (this.isArray(src) ? [] : {});\n this.keys(src).forEach(function (key) {\n if (this.contains(igonres, key)) return;\n if (igonreNull && this.isNull(src[key])) return;\n if (this.isObject(src[key]) &&\n (src[key].constructor == Object ||\n src[key].constructor == Array ||\n src[key].constructor == null)) {\n dst[key] = ntils.mix(dst[key], src[key], igonres, 0, igonreNull);\n } else {\n dst[key] = src[key];\n }\n }, this);\n return dst;\n };\n\n /**\n * 定义不可遍历的属性\n **/\n ntils.defineFreezeProp = function (obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n value: value,\n enumerable: false,\n configurable: true, //能不能重写定义\n writable: false //能不能用「赋值」运算更改\n });\n } catch (err) {\n obj[name] = value;\n }\n };\n\n /**\n * 获取所有 key \n */\n ntils.keys = function (obj) {\n if (Object.keys) return Object.keys(obj);\n var keys = [];\n this.each(obj, function (key) {\n keys.push(key);\n });\n return keys;\n };\n\n /**\n * 创建一个对象\n */\n ntils.create = function (proto, props) {\n if (Object.create) return Object.create(proto, props);\n var Cotr = function () { };\n Cotr.prototype = proto;\n var obj = new Cotr();\n if (props) this.copy(props, obj);\n return obj;\n };\n\n /**\n * 设置 proto\n * 在不支持 setPrototypeOf 也不支持 __proto__ 的浏览器\n * 中,会采用 copy 方式\n */\n ntils.setPrototypeOf = function (obj, proto) {\n if (Object.setPrototypeOf) {\n return Object.setPrototypeOf(obj, proto || this.create(null));\n } else {\n if (!('__proto__' in Object)) this.copy(proto, obj);\n obj.__proto__ = proto;\n }\n };\n\n /**\n * 获取 proto\n */\n ntils.getPrototypeOf = function (obj) {\n if (obj.__proto__) return obj.__proto__;\n if (Object.getPrototypeOf) return Object.getPrototypeOf(obj);\n if (obj.constructor) return obj.constructor.prototype;\n };\n\n /**\n * 是否深度相等\n */\n ntils.deepEqual = function (a, b) {\n if (a === b) return true;\n if (!this.isObject(a) || !this.isObject(b)) return false;\n var aKeys = this.keys(a);\n var bKeys = this.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n var allKeys = aKeys.concat(bKeys);\n var checkedMap = this.create(null);\n var result = true;\n this.each(allKeys, function (i, key) {\n if (checkedMap[key]) return;\n if (!this.deepEqual(a[key], b[key])) result = false;\n checkedMap[key] = true;\n }, this);\n return result;\n };\n\n /**\n * 从一个数值循环到别一个数\n * @param {number} fromNum 开始数值\n * @param {Number} toNum 结束数值\n * @param {Number} step 步长值\n * @param {function} handler 执行函数\n * @returns {void} 无返回\n */\n ntils.fromTo = function (fromNum, toNum, step, handler) {\n if (!handler) handler = [step, step = handler][0];\n step = Math.abs(step || 1);\n if (fromNum < toNum) {\n for (var i = fromNum; i <= toNum; i += step) handler(i);\n } else {\n for (var i = fromNum; i >= toNum; i -= step) handler(i);\n }\n };\n\n /**\n * 生成一个Guid\n * @method newGuid\n * @return {String} GUID字符串\n * @static\n */\n ntils.newGuid = function () {\n var S4 = function () {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n };\n return (S4() + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + \"-\" + S4() + S4() + S4());\n };\n\n /**\n * 对象变换\n **/\n ntils.map = function (list, fn) {\n var buffer = this.isArray(list) ? [] : {};\n this.each(list, function (name, value) {\n buffer[name] = fn(name, value);\n });\n return buffer;\n };\n\n /**\n * 通过路径设置属性值\n */\n ntils.setByPath = function (obj, path, value) {\n if (this.isNull(obj) || this.isNull(path) || path === '') {\n return;\n }\n if (!this.isArray(path)) {\n path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n }\n this.each(path, function (index, name) {\n if (this.isNull(name) || name.length < 1) return;\n if (index === path.length - 1) {\n obj[name] = value;\n } else {\n obj[name] = obj[name] || {};\n obj = obj[name];\n }\n }, this);\n };\n\n /**\n * 通过路径获取属性值\n */\n ntils.getByPath = function (obj, path) {\n if (this.isNull(obj) || this.isNull(path) || path === '') {\n return obj;\n }\n if (!this.isArray(path)) {\n path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n }\n this.each(path, function (index, name) {\n if (this.isNull(name) || name.length < 1) return;\n if (!this.isNull(obj)) obj = obj[name];\n }, this);\n return obj;\n };\n\n /**\n * 数组去重\n **/\n ntils.unique = function (array) {\n if (this.isNull(array)) return array;\n var newArray = [];\n this.each(array, function (i, value) {\n if (newArray.indexOf(value) > -1) return;\n newArray.push(value);\n });\n return newArray;\n };\n\n /**\n * 解析 function 的参数列表\n **/\n ntils.getFunctionArgumentNames = function (fn) {\n if (!fn) return [];\n var src = fn.toString();\n var parts = src.split(')')[0].split('=>')[0].split('(');\n return (parts[1] || parts[0]).split(',').map(function (name) {\n return name.trim();\n }).filter(function (name) {\n return name != 'function';\n });\n };\n\n /**\n * 缩短字符串\n */\n ntils.short = function (str, maxLength) {\n if (!str) return str;\n maxLength = maxLength || 40;\n var strLength = str.length;\n var trimLength = maxLength / 2;\n return strLength > maxLength ? str.substr(0, trimLength) + '...' + str.substr(strLength - trimLength) : str;\n };\n\n /**\n * 首字母大写\n */\n ntils.firstUpper = function (str) {\n if (this.isNull(str)) return;\n return str.substring(0, 1).toUpperCase() + str.substring(1);\n };\n\n /**\n * 编码正则字符串\n */\n ntils.escapeRegExp = function (str) {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n };\n\n /**\n * 解析字符串为 dom \n * @param {string} str 字符串\n * @returns {HTMLNode} 解析后的 DOM \n */\n ntils.parseDom = function (str) {\n this._PDD_ = this._PDD_ || document.createElement('div');\n this._PDD_.innerHTML = ntils.trim(str);\n var firstNode = this._PDD_.childNodes[0];\n //先 clone 一份再通过 innerHTML 清空\n //否则 IE9 下,清空时会导出返回的 DOM 没有子结点\n if (firstNode) firstNode = firstNode.cloneNode(true);\n this._PDD_.innerHTML = '';\n return firstNode;\n };\n\n})((typeof exports === 'undefined') ? (window.ntils = {}) : exports);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_ntils@2.1.2@ntils/index.js\n// module id = 3\n// module chunks = 0","const utils = require('ntils');\n\nfunction ClassFactory(options) {\n //处理 options\n options = options || utils.create(null);\n options.$name = options.$name || 'Class';\n options.$extends = options.$extends || ClassFactory;\n options.$static = options.$static || utils.create(null);\n //处理父类 prototype\n var superPrototype = utils.isFunction(options.$extends) ?\n options.$extends.prototype : options.$extends;\n //定义新类\n var Class = function () {\n //处理 super\n if (!this.$super) {\n utils.final(this, '$super', function () {\n if (this._super_called_) return this._super_ret_;\n this._super_called_ = true;\n if (utils.isFunction(options.$extends)) {\n this._super_ret_ = options.$extends.apply(this, arguments);\n //这几行确保可继承于数组\n if (this._super_ret_) {\n var proto = utils.getPrototypeOf(this);\n utils.setPrototypeOf(proto, this._super_ret_);\n }\n } else {\n this._super_ret_ = options.$extends;\n }\n return this._super_ret_;\n });\n for (var name in superPrototype) {\n var value = superPrototype[name];\n if (utils.isFunction(value)) {\n this.$super[name] = value.bind(this);\n } else {\n this.$super[name] = value;\n }\n }\n }\n //调用构造\n if (utils.isFunction(options.constructor) &&\n options.constructor !== Object) {\n return options.constructor.apply(this, arguments);\n } else {\n //如果没有实现 constructor 则调用父类构造\n this.$super.apply(this, arguments);\n }\n };\n //处理 prototype\n Class.prototype = utils.create(superPrototype);\n utils.copy(options, Class.prototype);\n utils.final(Class.prototype, '$class', Class);\n //处理静态成员\n utils.copy(options.$static, Class);\n if (utils.isFunction(options.$extends)) {\n utils.setPrototypeOf(Class, options.$extends);\n }\n if (!options.$extends.$extend) {\n utils.copy(ClassFactory, Class);\n }\n utils.final(Class, '$super', options.$extends);\n //--\n return Class;\n}\n\n//定义扩展方法\nClassFactory.$extend = function (options) {\n options.$extends = this;\n return new ClassFactory(options);\n};\n\nClassFactory.Class = ClassFactory;\nmodule.exports = ClassFactory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_cify@2.1.12@cify/index.js\n// module id = 4\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * 空函数\n */\nfunction noop() { }\n\nfunction toString(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction getType(obj) {\n var str = toString(obj);\n return (/^\\[object (.+)\\]$/i.exec(str))[1];\n}\n\n/**\n * 验证一个对象是否为NULL\n * @method isNull\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * 除去字符串两端的空格\n * @method trim\n * @param {String} str 源字符串\n * @return {String} 结果字符串\n * @static\n */\nfunction trim(str) {\n if (isNull(str)) return str;\n if (str.trim) {\n return str.trim();\n } else {\n return str.replace(/(^[\\\\s]*)|([\\\\s]*$)/g, \"\");\n }\n}\n\n/**\n * 替换所有\n * @method replace\n * @param {String} str 源字符串\n * @param {String} str1 要替换的字符串\n * @param {String} str2 替换为的字符串\n * @static\n */\nfunction replace(str, str1, str2) {\n if (isNull(str)) return str;\n return str.replace(new RegExp(str1, 'g'), str2);\n}\n\n/**\n * 从字符串开头匹配\n * @method startWith\n * @param {String} str1 源字符串\n * @param {String} str2 要匹配的字符串\n * @return {Boolean} 匹配结果\n * @static\n */\nfunction startWith(str1, str2) {\n if (isNull(str1) || isNull(str2)) return false;\n return str1.indexOf(str2) === 0;\n}\n\n/**\n * 是否包含\n * @method contains\n * @param {String} str1 源字符串\n * @param {String} str2 检查包括字符串\n * @return {Boolean} 结果\n * @static\n */\nfunction contains(str1, str2) {\n if (isNull(str1) || isNull(str2)) return false;\n return str1.indexOf(str2) > -1;\n}\n\n/**\n * 从字符串结束匹配\n * @method endWidth\n * @param {String} str1 源字符串\n * @param {String} str2 匹配字符串\n * @return {Boolean} 匹配结果\n * @static\n */\nfunction endWith(str1, str2) {\n if (isNull(str1) || isNull(str2)) return false;\n return str1.indexOf(str2) === (str1.length - str2.length);\n}\n\n/**\n * 是否包含属性\n * @method hasProperty\n * @param {Object} obj 对象\n * @param {String} name 属性名\n * @return {Boolean} 结果\n * @static\n */\nfunction has(obj, name) {\n if (isNull(obj) || isNull(name)) return false;\n return (name in obj) || (obj.hasOwnProperty(name));\n}\nvar hasProperty = has;\n\n/**\n * 验证一个对象是否为Function\n * @method isFunction\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isFunction(obj) {\n if (isNull(obj)) return false;\n return typeof obj === \"function\";\n}\n\n/**\n * 验证一个对象是否为 AsyncFunction\n * @method isAsyncFunction\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isAsyncFunction(obj) {\n if (isNull(obj)) return false;\n return getType(obj) === \"AsyncFunction\";\n}\n\n/**\n * 验证一个对象是否为 GeneratorFunction\n * @method isGeneratorFunction\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isGeneratorFunction(obj) {\n if (isNull(obj)) return false;\n return getType(obj) === \"GeneratorFunction\";\n}\n\n\n/**\n * 验证一个对象是否为String\n * @method isString\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isString(obj) {\n if (isNull(obj)) return false;\n return getType(obj) === 'String';\n}\n\n/**\n * 验证一个对象是否为Number\n * @method isNumber\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isNumber(obj) {\n if (isNull(obj)) return false;\n return getType(obj) === 'Number';\n}\n\n/**\n * 验证一个对象是否为Boolean\n * @method isBoolean\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isBoolean(obj) {\n if (isNull(obj)) return false;\n return getType(obj) === 'Boolean';\n}\n\n/**\n * 验证一个对象是否为HTML Element\n * @method isElement\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isElement(obj) {\n if (isNull(obj)) return false;\n if (win.Element) {\n return obj instanceof Element;\n } else {\n return (obj.tagName && obj.nodeType &&\n obj.nodeName && obj.attributes &&\n obj.ownerDocument);\n }\n}\n\n/**\n * 验证一个对象是否为HTML Text Element\n * @method isText\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isText(obj) {\n if (isNull(obj)) return false;\n return obj instanceof Text;\n}\n\n/**\n * 验证一个对象是否为Object\n * @method isObject\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isObject(obj) {\n if (isNull(obj)) return false;\n var type = getType(obj);\n return type === 'Object' || type === 'Array';\n}\n\n/**\n * 验证一个对象是否为Array或伪Array\n * @method isArray\n * @param {Object} obj 要验证的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isArray(obj) {\n if (isNull(obj)) return false;\n var v1 = getType(obj) === 'Array';\n var v2 = obj instanceof Array;\n var v3 = !isString(obj) && isNumber(obj.length) && isFunction(obj.splice);\n var v4 = !isString(obj) && isNumber(obj.length) && obj[0];\n return v1 || v2 || v3 || v4;\n}\n\n/**\n * 验证是不是一个日期对象\n * @method isDate\n * @param {Object} val 要检查的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isDate(val) {\n if (isNull(val)) return false;\n return val instanceof Date;\n}\n\n/**\n * 验证是不是一个正则对象\n * @method isDate\n * @param {Object} val 要检查的对象\n * @return {Boolean} 结果\n * @static\n */\nfunction isRegexp(val) {\n return val instanceof RegExp;\n}\n\n/**\n * 转换为数组\n * @method toArray\n * @param {Array|Object} array 伪数组\n * @return {Array} 转换结果数组\n * @static\n */\nfunction toArray(array) {\n if (isNull(array)) return [];\n return Array.prototype.slice.call(array);\n}\n\n/**\n * 转为日期格式\n * @method toDate\n * @param {Number|String} val 日期字符串或整型数值\n * @return {Date} 日期对象\n * @static\n */\nfunction toDate(val) {\n if (isNumber(val))\n return new Date(val);\n else if (isString(val))\n return new Date(replace(replace(val, '-', '/'), 'T', ' '));\n else if (isDate(val))\n return val;\n else\n return null;\n}\n\n/**\n * 遍历一个对像或数组\n * @method each\n * @param {Object or Array} obj 要遍历的数组或对象\n * @param {Function} fn 处理函数\n * @return {void} 无返回值\n * @static\n */\nfunction each(list, handler, scope) {\n if (isNull(list) || isNull(handler)) return;\n if (isArray(list)) {\n var listLength = list.length;\n for (var i = 0; i < listLength; i++) {\n var rs = handler.call(scope || list[i], i, list[i]);\n if (!isNull(rs)) return rs;\n }\n } else {\n for (var key in list) {\n var rs = handler.call(scope || list[key], key, list[key]);\n if (!isNull(rs)) return rs;\n }\n }\n}\n\n/**\n * 格式化日期\n * @method formatDate\n * @param {Date|String|Number} date 日期\n * @param {String} format 格式化字符串\n * @param {object} dict 反译字典\n * @return {String} 格式化结果\n * @static\n */\nfunction formatDate(date, format, dict) {\n if (isNull(format) || isNull(date)) return date;\n date = toDate(date);\n dict = dict || {};\n var placeholder = {\n \"M+\": date.getMonth() + 1, //month\n \"d+\": date.getDate(), //day\n \"h+\": date.getHours(), //hour\n \"m+\": date.getMinutes(), //minute\n \"s+\": date.getSeconds(), //second\n \"w+\": date.getDay(), //week\n \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n \"S\": date.getMilliseconds() //millisecond\n };\n if (/(y+)/.test(format)) {\n format = format.replace(\n RegExp.$1,\n (date.getFullYear() + \"\").substr(4 - RegExp.$1.length)\n );\n }\n for (var key in placeholder) {\n if (new RegExp(\"(\" + key + \")\").test(format)) {\n var value = placeholder[key];\n value = dict[value] || value;\n format = format.replace(RegExp.$1, RegExp.$1.length == 1\n ? value : (\"00\" + value).substr((\"\" + value).length));\n }\n }\n return format;\n}\n\n/**\n * 拷贝对象\n * @method copy\n * @param {Object} src 源对象\n * @param {Object} dst 目标对象\n * @static\n */\nfunction copy(src, dst, igonres) {\n dst = dst || (isArray(src) ? [] : {});\n each(src, function (key) {\n if (igonres && igonres.indexOf(key) > -1) return;\n delete dst[key];\n if (Object.getOwnPropertyDescriptor) {\n try {\n Object.defineProperty(dst, key,\n Object.getOwnPropertyDescriptor(src, key));\n } catch (ex) {\n dst[key] = src[key];\n }\n } else {\n dst[key] = src[key];\n }\n });\n return dst;\n}\n\n/**\n * 深度克隆对象\n * @method clone\n * @param {Object} src 源对象\n * @return {Object} 新对象\n * @static\n */\nfunction clone(src, igonres) {\n if (isNull(src) ||\n isString(src) ||\n isNumber(src) ||\n isBoolean(src) ||\n isDate(src)) {\n return src;\n }\n var objClone = src;\n try {\n objClone = new src.constructor();\n } catch (ex) { }\n each(src, function (key, value) {\n if (objClone[key] != value && !contains(igonres, key)) {\n if (isObject(value)) {\n objClone[key] = clone(value, igonres);\n } else {\n objClone[key] = value;\n }\n }\n });\n ['toString', 'valueOf'].forEach(function (key) {\n if (contains(igonres, key)) return;\n final(objClone, key, src[key]);\n });\n return objClone;\n}\n\n/**\n * 合并对象\n * @method mix\n * @return 合并后的对象\n * @param {Object} dst 目标对象\n * @param {Object} src 源对象\n * @param {Array} igonres 忽略的属性名,\n * @param {Number} mode 模式\n */\nfunction mix(dst, src, igonres, mode, igonreNull) {\n //根据模式来判断,默认是Obj to Obj的 \n if (mode) {\n switch (mode) {\n case 1: // proto to proto \n return mix(dst.prototype, src.prototype, igonres, 0);\n case 2: // object to object and proto to proto \n mix(dst.prototype, src.prototype, igonres, 0);\n break; // pass through \n case 3: // proto to static \n return mix(dst, src.prototype, igonres, 0);\n case 4: // static to proto \n return mix(dst.prototype, src, igonres, 0);\n default: // object to object is what happens below \n }\n }\n //---\n src = src || {};\n dst = dst || (isArray(src) ? [] : {});\n keys(src).forEach(function (key) {\n if (contains(igonres, key)) return;\n if (igonreNull && isNull(src[key])) return;\n if (isObject(src[key]) &&\n (src[key].constructor == Object ||\n src[key].constructor == Array ||\n src[key].constructor == null)) {\n dst[key] = mix(dst[key], src[key], igonres, 0, igonreNull);\n } else {\n dst[key] = src[key];\n }\n });\n return dst;\n}\n\n/**\n * 定义不可遍历的属性\n **/\nfunction final(obj, name, value) {\n if (arguments.length < 1) throw new Error('Parameter missing');\n if (arguments.length < 2) {\n return each(obj, function (name, value) {\n final(obj, name, value);\n });\n }\n if (arguments.length < 3) return final(obj, name, obj[name]);\n try {\n Object.defineProperty(obj, name, {\n get: function () {\n return value;\n },\n set: function () {\n throw new Error('Cannot assign to final property:' + name);\n },\n enumerable: false, //不能枚举\n configurable: false, //不能重写定义\n });\n } catch (err) {\n obj[name] = value;\n }\n}\n\n/**\n * 获取所有 key \n */\nfunction keys(obj) {\n if (Object.keys) return Object.keys(obj);\n var keys = [];\n each(obj, function (key) {\n keys.push(key);\n });\n return keys;\n}\n\n/**\n * 创建一个对象\n */\nfunction create(proto, props) {\n if (Object.create) return Object.create(proto, props);\n function Cotr() { }\n Cotr.prototype = proto;\n var obj = new Cotr();\n if (props) copy(props, obj);\n return obj;\n}\n\n/**\n * 设置 proto\n * 在不支持 setPrototypeOf 也不支持 __proto__ 的浏览器\n * 中,会采用 copy 方式\n */\nfunction setPrototypeOf(obj, proto) {\n if (Object.setPrototypeOf) {\n return Object.setPrototypeOf(obj, proto || create(null));\n } else {\n if (!('__proto__' in Object)) copy(proto, obj);\n obj.__proto__ = proto;\n }\n}\n\n/**\n * 获取 proto\n */\nfunction getPrototypeOf(obj) {\n if (obj.__proto__) return obj.__proto__;\n if (Object.getPrototypeOf) return Object.getPrototypeOf(obj);\n if (obj.constructor) return obj.constructor.prototype;\n}\n\n/**\n * 是否深度相等\n */\nfunction deepEqual(a, b) {\n if (a === b) return true;\n if (!isObject(a) || !isObject(b)) return false;\n var aKeys = keys(a);\n var bKeys = keys(b);\n if (aKeys.length !== bKeys.length) return false;\n var allKeys = aKeys.concat(bKeys);\n var checkedMap = create(null);\n var result = true;\n each(allKeys, function (i, key) {\n if (checkedMap[key]) return;\n if (!deepEqual(a[key], b[key])) result = false;\n checkedMap[key] = true;\n });\n return result;\n}\n\n/**\n * 从一个数值循环到别一个数\n * @param {number} fromNum 开始数值\n * @param {Number} toNum 结束数值\n * @param {Number} step 步长值\n * @param {function} handler 执行函数\n * @returns {void} 无返回\n */\nfunction fromTo(fromNum, toNum, step, handler) {\n if (!handler) handler = [step, step = handler][0];\n step = Math.abs(step || 1);\n if (fromNum < toNum) {\n for (var i = fromNum; i <= toNum; i += step) handler(i);\n } else {\n for (var i = fromNum; i >= toNum; i -= step) handler(i);\n }\n}\n\n/**\n * 生成一个Guid\n * @method newGuid\n * @return {String} GUID字符串\n * @static\n */\nfunction newGuid() {\n function s4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n }\n return (s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" +\n s4() + \"-\" + s4() + s4() + s4());\n}\n\n/**\n * 对象变换\n **/\nfunction map(list, fn) {\n var buffer = isArray(list) ? [] : {};\n each(list, function (name, value) {\n buffer[name] = fn(name, value);\n });\n return buffer;\n}\n\n/**\n * 通过路径设置属性值\n */\nfunction setByPath(obj, path, value) {\n if (isNull(obj) || isNull(path) || path === '') {\n return;\n }\n if (!isArray(path)) {\n path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n }\n each(path, function (index, name) {\n if (isNull(name) || name.length < 1) return;\n if (index === path.length - 1) {\n obj[name] = value;\n } else {\n obj[name] = obj[name] || {};\n obj = obj[name];\n }\n });\n}\n\n/**\n * 通过路径获取属性值\n */\nfunction getByPath(obj, path) {\n if (isNull(obj) || isNull(path) || path === '') {\n return obj;\n }\n if (!isArray(path)) {\n path = path.replace(/\\[/, '.').replace(/\\]/, '.').split('.');\n }\n each(path, function (index, name) {\n if (isNull(name) || name.length < 1) return;\n if (!isNull(obj)) obj = obj[name];\n });\n return obj;\n}\n\n/**\n * 数组去重\n **/\nfunction unique(array) {\n if (isNull(array)) return array;\n var newArray = [];\n each(array, function (i, value) {\n if (newArray.indexOf(value) > -1) return;\n newArray.push(value);\n });\n return newArray;\n}\n\n/**\n * 解析 function 的参数列表\n **/\nfunction getFunctionArgumentNames(fn) {\n if (!fn) return [];\n var src = fn.toString();\n var parts = src.split(')')[0].split('=>')[0].split('(');\n return (parts[1] || parts[0]).split(',').map(function (name) {\n return trim(name);\n }).filter(function (name) {\n return name != 'function';\n });\n}\n\n/**\n * 缩短字符串\n */\nfunction short(str, maxLength) {\n if (!str) return str;\n maxLength = maxLength || 40;\n var strLength = str.length;\n var trimLength = maxLength / 2;\n return strLength > maxLength ?\n str.substr(0, trimLength) + '...' + str.substr(strLength - trimLength) :\n str;\n}\n\n/**\n * 首字母大写\n */\nfunction firstUpper(str) {\n if (!isString(str)) return '';\n return str.substring(0, 1).toUpperCase() + str.substring(1);\n}\n\n/**\n * 编码正则字符串\n */\nfunction escapeRegExp(str) {\n if (!isString(str)) return '';\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\n/**\n * 将字符串转成「驼峰」式\n * @param {string} str 原始字符串\n * @param {number} mode 1 大驼峰,0 小驼峰\n * @return {string} 转换后的字符串\n */\nfunction toCamelCase(str, mode) {\n if (!isString(str)) return '';\n if (str) {\n str = str.replace(/\\-[a-z0-9]/g, function ($1) {\n return $1.slice(1).toUpperCase()\n });\n str = str.replace(/^[a-z]/i, function ($1) {\n return mode ? $1.toUpperCase() : $1.toLowerCase();\n });\n }\n return str;\n}\n\n/**\n * 将字符串转成分隔形式\n * @param {string} str 原始字符串\n * @return {string} 转换后的字符串\n */\nfunction toSplitCase(str) {\n if (!isString(str)) return '';\n if (str) {\n str = str.replace(/([A-Z])/g, '-$1');\n if (str[0] == '-') str = str.slice(1);\n }\n return str.toLowerCase();\n}\n\nfunction htmlPrefilter(html) {\n var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi;\n return html.replace(rxhtmlTag, \"<$1>\");\n}\n\n/**\n * 解析字符串为 dom \n * @param {string} str 字符串\n * @returns {HTMLNode} 解析后的 DOM \n */\nfunction parseHTML(str) {\n str = str || ' ';\n var parent = document.createElement('div');\n parent.innerHTML = htmlPrefilter(trim(str));\n var childNodes = toArray(parent.childNodes);\n //先 clone 一份再通过 innerHTML 清空\n //否则 IE9 下,清空时会导不通过返回的 DOM 没有子结点\n // if (firstNode) firstNode = firstNode.cloneNode(true);\n // win._NPH_.innerHTML = '';\n each(childNodes, function (index, childNode) {\n parent.removeChild(childNode);\n });\n return childNodes;\n}\n\nexports.noop = noop;\nexports.toString = toString;\nexports.getType = getType;\nexports.isNull = isNull;\nexports.trim = trim;\nexports.replace = replace;\nexports.startWith = startWith;\nexports.contains = contains;\nexports.endWith = endWith;\nexports.has = has;\nexports.hasProperty = hasProperty;\nexports.isFunction = isFunction;\nexports.isAsyncFunction = isAsyncFunction;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isString = isString;\nexports.isNumber = isNumber;\nexports.isBoolean = isBoolean;\nexports.isElement = isElement;\nexports.isText = isText;\nexports.isObject = isObject;\nexports.isArray = isArray;\nexports.isDate = isDate;\nexports.isRegexp = isRegexp;\nexports.toArray = toArray;\nexports.toDate = toDate;\nexports.each = each;\nexports.formatDate = formatDate;\nexports.copy = copy;\nexports.clone = clone;\nexports.mix = mix;\nexports.final = final;\nexports.keys = keys;\nexports.create = create;\nexports.setPrototypeOf = setPrototypeOf;\nexports.getPrototypeOf = getPrototypeOf;\nexports.deepEqual = deepEqual;\nexports.fromTo = fromTo;\nexports.newGuid = newGuid;\nexports.map = map;\nexports.setByPath = setByPath;\nexports.getByPath = getByPath;\nexports.unique = unique;\nexports.getFunctionArgumentNames = getFunctionArgumentNames;\nexports.short = short;\nexports.firstUpper = firstUpper;\nexports.escapeRegExp = escapeRegExp;\nexports.toCamelCase = toCamelCase;\nexports.toSplitCase = toSplitCase;\nexports.htmlPrefilter = htmlPrefilter;\nexports.parseHTML = parseHTML;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_ntils@3.1.11@ntils/lib/index.js\n// module id = 5\n// module chunks = 0","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\n\n/**\n * Watcher 类\n * 通过「计算函数」、「执行函数」可以创建一个 Watcher 实例\n */\nvar Watcher = new Class({\n\n /**\n * 通过「计算函数」、「执行函数」构建一个 Watcher 实例\n * @param {function} calcor 计算函数\n * @param {function} handler 处理函数\n * @param {boolean} first 是否自动执行第一次\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(calcor, handler, first) {\n if (!utils.isFunction(calcor) || !utils.isFunction(handler)) {\n throw new Error('Invalid parameters');\n }\n this.calcor = calcor;\n this.handler = handler;\n if (first) this.calc(true);\n },\n\n /**\n * 执行计算\n * @param {boolean} force 是否强制触发「计算函数」\n * @returns {Object} 计算后的值\n */\n calc: function /*istanbul ignore next*/calc(force) {\n var newValue = this.calcor();\n if (force || !utils.deepEqual(newValue, this.value)) {\n this.handler(newValue, this.value);\n }\n this.value = utils.clone(newValue);\n }\n\n});\n\nmodule.exports = Watcher;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/watcher/index.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\nvar EventEmitter = require('../events');\n\nvar OBSERVER_PROP_NAME = '_observer_';\nvar CHANGE_EVENT_NAME = 'change';\nvar EVENT_MAX_DISPATCH_LAYER = 10;\nvar IGNORE_REGEXPS = [/^\\_(.*)\\_$/i, /^\\_\\_/i];\n\n/**\n * 对象观察类,可以监控对象变化\n * 目前方案问题:\n * 对于父子关系和事件冒泡,目前方案如果用 delete 删除一个属性,无关真实删除关系,\n * 即便调用 clearReference 也无法再清除关系,子对象的 parents 中会一直有一个引用,当前方案最高效\n * 其它方法一:\n * 将「关系」放入全局数组中,然后将 ob.parents 变成一个「属性」从全局数组件中 filter 出来,\n * 基本和目前方法类似,但是关系在外部存领教,所以 clearReference 可清除。\n * 其它方案二: \n * 构造时添加到全局数组,每一个 observer change 时都让放到全局的 observer 遍历自身的,\n * 检果事件源是不是自已的子对象,如果是则触发自身 change 事件,这样 ob 对象本身没有相关引用\n * clearReference 时只从全局清除掉就行了,并且 delete 操作也不会影响,但效率稍差。\n * 其它方案三: \n * 给构造函数添加一个 deep 属性,只有 deep 的 ob 对象,才放入到全局数组中,检查时逻辑同方案二\n * 但是因为要检查的对象会少很多,效率会更高一点。\n */\nvar Observer = new Class({\n $extends: EventEmitter,\n\n /**\n * 通过目标对象构造一个观察对象\n * @param {Object} target 目标对象\n * @param {Object} options 选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(target, options) {\n if (utils.isNull(target)) {\n throw new Error('Invalid target');\n }\n options = options || {};\n var observer = target[OBSERVER_PROP_NAME];\n if (observer) {\n utils.copy(options, observer.options);\n //当时一个组件 A 的为组件 B 的 prop 时,A 更新不会触发 B 更新\n //所在暂注释这里,另一种方法是更新 prop 指令,重写 excute 方法,而不是现在的 update 方法\n // if (observer.options.root) {\n // observer.parents.length = 0;\n // }\n observer.apply();\n return observer;\n }\n EventEmitter.call(this);\n utils.defineFreezeProp(this, 'options', options);\n utils.defineFreezeProp(this, 'shadow', {});\n utils.defineFreezeProp(this, 'target', target);\n utils.defineFreezeProp(this, 'parents', []);\n utils.defineFreezeProp(target, OBSERVER_PROP_NAME, this);\n this.apply();\n },\n\n /**\n * 添加一个属性,动态添中的属性,无法被观察,\n * 但是通过 set 方法添加的属性可能被观察。\n * @param {string} name 名称\n * @param {Object} value 值\n * @returns {void} 无返回\n */\n set: function /*istanbul ignore next*/set(name, value) {\n if (utils.isFunction(value) || Observer.isIgnore(name)) {\n return;\n }\n Object.defineProperty(this.target, name, {\n get: function /*istanbul ignore next*/get() {\n return this[OBSERVER_PROP_NAME].shadow[name];\n },\n set: function /*istanbul ignore next*/set(value) {\n var observer = this[OBSERVER_PROP_NAME];\n var oldValue = observer.shadow[name];\n if (oldValue === value) return;\n if (utils.isObject(value)) {\n var childObserver = new Observer(value);\n observer.addChild(childObserver, name);\n }\n //移除旧值的父引用\n //如果用 delete 删除属性将无法移除父子引用\n if (oldValue && oldValue[OBSERVER_PROP_NAME]) {\n observer.removeChild(oldValue[OBSERVER_PROP_NAME], name);\n }\n observer.shadow[name] = value;\n observer.emitChange({ path: name, value: value });\n },\n configurable: true,\n enumerable: true\n });\n this.target[name] = value;\n },\n\n /**\n * 自动应用所有动态添加的属性\n * @returns {void} 无返回\n */\n apply: function /*istanbul ignore next*/apply() {\n if (utils.isArray(this.target)) {\n this._wrapArray(this.target);\n }\n var names = this._getPropertyNames(this.target);\n names.forEach(function (name) {\n var desc = Object.getOwnPropertyDescriptor(this.target, name);\n if (!('value' in desc)) return;\n this.set(name, this.target[name]);\n }, this);\n },\n\n /**\n * 清除所有父子引用\n * @returns {void} 无返回\n */\n clearReference: function /*istanbul ignore next*/clearReference() {\n utils.each(this.target, function (name, value) {\n if (utils.isNull(value)) return;\n var child = value[OBSERVER_PROP_NAME];\n if (child) this.removeChild(child);\n }, this);\n },\n\n /**\n * 派发一个事件,事件会向父级对象冒泡\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n * @returns {void} 无返回\n */\n dispatch: function /*istanbul ignore next*/dispatch(eventName, event) {\n if (event._src_ === this) return;\n event._src_ = event._src_ || this;\n event._layer_ = event._layer_ || 0;\n if (event._layer_++ >= EVENT_MAX_DISPATCH_LAYER) return;\n this.emit(eventName, event);\n if (!this.parents || this.parents.length < 1) return;\n this.parents.forEach(function (item) {\n if (!(item.name in item.parent.target)) {\n return item.parent.removeChild(this);\n }\n var parentEvent = utils.copy(event);\n parentEvent.path = item.name + '.' + event.path;\n item.parent.dispatch(eventName, parentEvent);\n }, this);\n },\n\n /**\n * 添子观察者对象\n * @param {Object} child 父对象\n * @param {String} name 属性名\n * @returns {void} 无返回\n */\n addChild: function /*istanbul ignore next*/addChild(child, name) {\n if (utils.isNull(child) || utils.isNull(name)) {\n throw new Error('Invalid paramaters');\n }\n if (child.options.root) return;\n child.parents.push({ parent: this, name: name });\n },\n\n /**\n * 移除子对象\n * @param {Object} child 父对象\n * @param {String} name 属性名\n * @returns {void} 无返回\n */\n removeChild: function /*istanbul ignore next*/removeChild(child, name) {\n if (utils.isNull(child)) {\n throw new Error('Invalid paramaters');\n }\n var foundIndex = -1;\n child.parents.forEach(function (item, index) {\n if (item.parent === this && item.name === name) {\n foundIndex = index;\n }\n }, this);\n if (foundIndex > -1) {\n child.parents.splice(foundIndex, 1);\n }\n },\n\n /**\n * 触发 change 事件\n * @param {Object} event 事件对象\n * @returns {void} 无返回\n */\n emitChange: function /*istanbul ignore next*/emitChange(event) {\n this.dispatch(CHANGE_EVENT_NAME, event);\n },\n\n /**\n * 获取所有成员名称列表\n * @returns {Array} 所有成员名称列表\n */\n _getPropertyNames: function /*istanbul ignore next*/_getPropertyNames() {\n var names = utils.isArray(this.target) ? this.target.map(function (item, index) {\n return index;\n }) : Object.keys(this.target);\n return names.filter(function (name) {\n return name !== OBSERVER_PROP_NAME;\n });\n },\n\n /**\n * 包裹数组\n * @param {array} array 源数组\n * @returns {array} 处理后的数组\n */\n _wrapArray: function /*istanbul ignore next*/_wrapArray(array) {\n utils.defineFreezeProp(array, 'push', function () {\n var items = [].slice.call(arguments);\n items.forEach(function (item) {\n //这里也会触发对应 index 的 change 事件\n this[OBSERVER_PROP_NAME].set(array.length, item);\n }, this);\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n });\n utils.defineFreezeProp(array, 'pop', function () {\n var item = [].pop.apply(this, arguments);\n this[OBSERVER_PROP_NAME].emitChange({ path: this.length, value: item });\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n return item;\n });\n utils.defineFreezeProp(array, 'unshift', function () {\n var items = [].slice.call(arguments);\n items.forEach(function (item) {\n //这里也会触发对应 index 的 change 事件\n this[OBSERVER_PROP_NAME].set(0, item);\n }, this);\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n });\n utils.defineFreezeProp(array, 'shift', function () {\n var item = [].shift.apply(this, arguments);\n this[OBSERVER_PROP_NAME].emitChange({ path: 0, value: item });\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n return item;\n });\n utils.defineFreezeProp(array, 'splice', function () {\n var startIndex = arguments[0];\n var endIndex = utils.isNull(arguments[1]) ? startIndex + arguments[1] : this.length - 1;\n var items = [].splice.apply(this, arguments);\n for (var i = startIndex; i <= endIndex; i++) {\n this[OBSERVER_PROP_NAME].emitChange({ path: i, value: items[i - startIndex] });\n }\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n return items;\n });\n utils.defineFreezeProp(array, 'set', function (index, value) {\n if (index >= this.length) {\n this[OBSERVER_PROP_NAME].emitChange({ path: 'length', value: this.length });\n }\n this[OBSERVER_PROP_NAME].set(index, value);\n });\n }\n\n});\n\n/**\n * 观察一个对象\n * @param {Object} target 目标对象\n * @return {Observer} 观察者对象\n */\nObserver.observe = function (target) {\n return new Observer(target);\n};\n\n/**\n * 检查是不是忽略的属性名\n * @param {string} word 待检查的字符串\n * @returns {void} 无返回\n */\nObserver.isIgnore = function (word) {\n return IGNORE_REGEXPS.some(function (re) /*istanbul ignore next*/{\n return re.test(word);\n });\n};\n\nmodule.exports = Observer;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/observer/index.js","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/keys.js\n// module id = 8\n// module chunks = 0","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/fn/object/keys.js\n// module id = 9\n// module chunks = 0","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/es6.object.keys.js\n// module id = 10\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_to-object.js\n// module id = 11\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_defined.js\n// module id = 12\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_object-keys.js\n// module id = 13\n// module chunks = 0","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_object-keys-internal.js\n// module id = 14\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_has.js\n// module id = 15\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_to-iobject.js\n// module id = 16\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_iobject.js\n// module id = 17\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_cof.js\n// module id = 18\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_array-includes.js\n// module id = 19\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_to-length.js\n// module id = 20\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_to-integer.js\n// module id = 21\n// module chunks = 0","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_to-absolute-index.js\n// module id = 22\n// module chunks = 0","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_shared-key.js\n// module id = 23\n// module chunks = 0","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_shared.js\n// module id = 24\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_global.js\n// module id = 25\n// module chunks = 0","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_uid.js\n// module id = 26\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_enum-bug-keys.js\n// module id = 27\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_object-sap.js\n// module id = 28\n// module chunks = 0","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_export.js\n// module id = 29\n// module chunks = 0","var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_core.js\n// module id = 30\n// module chunks = 0","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_ctx.js\n// module id = 31\n// module chunks = 0","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_a-function.js\n// module id = 32\n// module chunks = 0","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_hide.js\n// module id = 33\n// module chunks = 0","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_object-dp.js\n// module id = 34\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_an-object.js\n// module id = 35\n// module chunks = 0","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_is-object.js\n// module id = 36\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_ie8-dom-define.js\n// module id = 37\n// module chunks = 0","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_descriptors.js\n// module id = 38\n// module chunks = 0","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_fails.js\n// module id = 39\n// module chunks = 0","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_dom-create.js\n// module id = 40\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_to-primitive.js\n// module id = 41\n// module chunks = 0","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_property-desc.js\n// module id = 42\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/get-own-property-descriptor.js\n// module id = 43\n// module chunks = 0","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/fn/object/get-own-property-descriptor.js\n// module id = 44\n// module chunks = 0","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/es6.object.get-own-property-descriptor.js\n// module id = 45\n// module chunks = 0","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_object-gopd.js\n// module id = 46\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/_object-pie.js\n// module id = 47\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_babel-runtime@6.26.0@babel-runtime/core-js/object/define-property.js\n// module id = 48\n// module chunks = 0","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/fn/object/define-property.js\n// module id = 49\n// module chunks = 0","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_core-js@2.5.3@core-js/library/modules/es6.object.define-property.js\n// module id = 50\n// module chunks = 0","/*istanbul ignore next*/'use strict';\n\nvar utils = require('ntils');\nvar Class = require('cify');\n\n/**\n * 事件触发器基类\n */\nvar EventEmitter = new Class({\n $extends: Function,\n\n /**\n * 构建一个一个事修的触发器对象\n * @param {object} target 将代理的目标对象可以省略\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(target) {\n target = target || this;\n var emitter = target._emitter_;\n if (emitter) return emitter;\n utils.defineFreezeProp(this, '_target_', target);\n utils.defineFreezeProp(target, '_emitter_', this);\n this._isNative_ = this._isNativeObject(this._target_);\n this._listeners_ = this._listeners_ || {};\n this.on = this.$on = this.$addListener = this.addListener;\n this.off = this.$off = this.$removeListener = this.removeListener;\n this.$emit = this.emit;\n },\n\n /**\n * 检查是否原生支持事件\n * @param {object} obj 对象\n * @returns {void} 检查结果\n */\n _isNativeObject: function /*istanbul ignore next*/_isNativeObject(obj) {\n return obj.addEventListener && obj.removeEventListener && obj.dispatchEvent;\n },\n\n /**\n * 添加一个事件监听函数\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n * @returns {void} 无返回\n */\n addListener: function /*istanbul ignore next*/addListener(name, listener, capture) {\n if (this._isNative_) {\n this._addNativeEventListener(name, listener, capture);\n }\n this._listeners_[name] = this._listeners_[name] || [];\n this._listeners_[name].push(listener);\n if (this._listeners_[name].length > EventEmitter._maxListeners) {\n throw new Error('The `' + name + '` event listener is not more than 10');\n }\n },\n\n /**\n * 移除「一个/一组/所有」事件监听函数\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件(只在代理 dom 对象时有效)\n * @returns {void} 无返回\n */\n removeListener: function /*istanbul ignore next*/removeListener(name, listener, capture) {\n if (name && listener) {\n if (this._isNative_) {\n this._removeNativeEventListener(name, listener, capture);\n }\n if (!this._listeners_[name]) return;\n var index = this._listeners_[name].indexOf(listener);\n this._listeners_[name].splice(index, 1);\n } else if (name) {\n if (this._isNative_ && this._listeners_[name]) {\n this._listeners_[name].forEach(function (_listener) {\n this.removeListener(name, _listener, capture);\n }, this);\n }\n delete this._listeners_[name];\n } else {\n utils.each(this._listeners_, function (name) {\n this.removeListener(name, null, capture);\n }, this);\n this._listeners_ = {};\n }\n },\n\n /**\n * 触发自身的一个事件\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @param {string} canBubble 能否冒泡(只在代理 dom 对象时有效)\n * @param {object} cancelAble 能否取消(只在代理 dom 对象时有效)\n * @returns {void} 无返回\n */\n emit: function /*istanbul ignore next*/emit(name, data, canBubble, cancelAble) {\n if (this._isNative_) {\n return this._emitNativeEvent(name, data, canBubble, cancelAble);\n }\n if (!this._listeners_[name]) return;\n var stopPropagation = false;\n this._listeners_[name].forEach(function (handler) {\n var rs = handler.call(this._target_, data);\n if (rs === false) stopPropagation = true;\n }, this);\n return stopPropagation;\n },\n\n /**\n * 添加 DOM 元素事件\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件\n * @returns {void} 无返回\n */\n _addNativeEventListener: function /*istanbul ignore next*/_addNativeEventListener(name, listener, capture) {\n this._target_.addEventListener(name, listener, capture);\n //如果存在已注册的自定义 “组合事件”\n var descriptor = EventEmitter._events[name];\n if (descriptor) {\n descriptor.addListener = descriptor.addListener || descriptor.on;\n descriptor.addListener(this, name, listener, capture);\n }\n },\n\n /**\n * 移除 DOM 元素事件\n * @param {string} name 事件名称\n * @param {function} listener 事件处理函数\n * @param {capture} capture 是否是捕获阶段事件\n * @returns {void} 无返回\n */\n _removeNativeEventListener: function /*istanbul ignore next*/_removeNativeEventListener(name, listener, capture) {\n this._target_.removeEventListener(name, listener, capture);\n //如果存在已注册的自定义 “组合事件”\n var descriptor = EventEmitter._events[name];\n if (descriptor) {\n descriptor.removeListener = descriptor.removeListener || descriptor.off;\n descriptor.removeListener(this, name, listener, capture);\n }\n },\n\n /**\n * 触发 DOM 元素事件\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @param {string} canBubble 能否冒泡\n * @param {object} cancelAble 能否取消\n * @returns {void} 无返回\n */\n _emitNativeEvent: function /*istanbul ignore next*/_emitNativeEvent(name, data, canBubble, cancelAble) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(name, canBubble, cancelAble);\n utils.copy(data, event, ['data']);\n event.data = data;\n return this._target_.dispatchEvent(event);\n }\n\n});\n\n//最多添加多少个 listener\nEventEmitter._maxListeners = 10;\n\n//所有自定义事件\nEventEmitter._events = [];\n\n/**\n * 注册自定义事件(只在代理 dom 对象时有效)\n * @param {object} descriptor 事件定义\n * @returns {void} 无返回\n */\nEventEmitter.register = function (descriptor) {\n var names = descriptor.name;\n if (!names) return;\n if (!utils.isArray(names)) names = names.split(',');\n names.forEach(function (name) {\n this._events[name] = descriptor;\n }, this);\n};\n\nmodule.exports = EventEmitter;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/events/index.js","/*istanbul ignore next*/'use strict';\n\nvar Compiler = require('./compiler');\nvar Directive = require('./directive');\nvar Expression = require('./expression');\nvar Template = require('./template');\nvar directives = require('./directives/');\n\nTemplate.Template = Template;\nTemplate.Compiler = Compiler;\nTemplate.Directive = Directive;\nTemplate.directives = directives;\nTemplate.Expression = Expression;\n\nmodule.exports = Template;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/index.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar Directive = require('./directive');\nvar utils = require('ntils');\nvar Expression = require('./expression');\nvar commonDirectives = require('./directives');\n\nvar DEFAULT_PREFIX = 'm';\n\n/**\n * 模板编译器\n * 可以通过指定「前缀」或「指令集」构建实例\n */\nvar Compiler = new Class({\n\n /**\n * 构造一个编译器\n * @param {Object} options 选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(options) {\n options = options || {};\n this.prefix = options.prefix || DEFAULT_PREFIX;\n this.elementDirectives = {};\n this.attributeDirectives = {};\n this.registerDirectives(commonDirectives);\n this.registerDirectives(options.directives);\n },\n\n /**\n * 将字符串转成「驼峰」式\n * @param {string} str 原始字符串\n * @param {number} mode 1 大驼峰,0 小驼峰\n * @return {string} 转换后的字符串\n */\n toCamelCase: function /*istanbul ignore next*/toCamelCase(str, mode) {\n if (str) {\n str = str.replace(/\\-[a-z0-9]/g, function ($1) /*istanbul ignore next*/{\n return $1.slice(1).toUpperCase();\n });\n str = str.replace(/^[a-z]/i, function ($1) {\n return mode ? $1.toUpperCase() : $1.toLowerCase();\n });\n }\n return str;\n },\n\n /**\n * 将字符串转成分隔形式\n * @param {string} str 原始字符串\n * @return {string} 转换后的字符串\n */\n toSplitCase: function /*istanbul ignore next*/toSplitCase(str) {\n if (str) {\n str = str.replace(/([A-Z])/g, '-$1');\n if (str[0] == '-') str = str.slice(1);\n }\n return str;\n },\n\n /**\n * 添加指令\n * @param {Object} directives 指令集 \n * @returns {void} 无返回\n */\n registerDirectives: function /*istanbul ignore next*/registerDirectives(directives) {\n utils.each(directives, function (name, directive) {\n name = this.toSplitCase(name);\n var fullName = directive.options.prefix === false ? name : /*istanbul ignore next*/this.prefix + ':' + name;\n if (directive.options.type == Directive.TE) {\n this.elementDirectives[fullName.toUpperCase()] = directive;\n } else {\n this.attributeDirectives[fullName.toLowerCase()] = directive;\n }\n }, this);\n },\n\n /**\n * 解析要 attr 指令信息\n * @param {string} attrName 要解析的名称字符串\n * @returns {Object} 解析后的对象\n */\n _parseAttrInfo: function /*istanbul ignore next*/_parseAttrInfo(attrName) {\n /*istanbul ignore next*/var _this = this;\n\n var parts = attrName.toLowerCase().split(':');\n var info = {};\n if (parts.length > 1) {\n info.name = /*istanbul ignore next*/parts[0] + ':' + parts[1];\n info.decorates = parts.slice(2).map(function (item) /*istanbul ignore next*/{\n return (/*istanbul ignore next*/_this.toCamelCase(item)\n );\n });\n } else {\n info.name = parts[0];\n info.decorates = [];\n }\n return info;\n },\n\n /**\n * 创建一个指令实例\n * @param {Directive} Directive 指令类\n * @param {Object} options 指令构建选项\n * @returns {Directive} 指令实例\n */\n _createDirectiveInstance: function /*istanbul ignore next*/_createDirectiveInstance(Directive, options) {\n options.compiler = this;\n options.prefix = this.prefix;\n return new Directive(options);\n },\n\n /**\n * 初始化一个编译完成的 handler\n * @param {function} handler 编译后的的模板函数\n * @returns {void} 无返回\n */\n _bindHandler: function /*istanbul ignore next*/_bindHandler(handler) {\n //排序 directives\n handler.directives = handler.directives.sort(function (a, b) {\n return b.level - a.level;\n });\n //初始化 directives\n var boundDirectives = [];\n utils.each(handler.directives, function (index, directive) {\n directive.index = index;\n directive.bind();\n boundDirectives.push(directive);\n //移除完成绑定的指令对应的 attribute\n if (directive.remove !== false && directive.attribute) {\n directive.node.removeAttribute(directive.attribute.name);\n }\n //如果遇到一个「终态」指令,停止向下初始化\n if (directive.final) {\n return handler.final = true;\n }\n }, this);\n handler.directives = boundDirectives;\n },\n\n /**\n * 编译一个元素本身\n * @param {function} handler 当前模板函数\n * @param {HTMLNode} node 当前 HTML 结点\n * @returns {void} 无返回\n */\n _compileElement: function /*istanbul ignore next*/_compileElement(handler, node) {\n var ElementDirective = this.elementDirectives[node.nodeName.toUpperCase()];\n if (!ElementDirective) return;\n handler.directives.push(this._createDirectiveInstance(ElementDirective, {\n handler: handler,\n node: node\n }));\n },\n\n /**\n * 编译一个元素所有 attributes \n * @param {function} handler 当前模板函数\n * @param {HTMLNode} node 当前 HTML 结点\n * @returns {void} 无返回\n */\n _compileAttributes: function /*istanbul ignore next*/_compileAttributes(handler, node) {\n utils.toArray(node.attributes).forEach(function (attribute) {\n var attrInfo = this._parseAttrInfo(attribute.name);\n var AttrDirective = this.attributeDirectives[attrInfo.name] || this.attributeDirectives['*'];\n if (!AttrDirective) return;\n var directiveOptions = AttrDirective.options;\n handler.directives.push(this._createDirectiveInstance(AttrDirective, {\n handler: handler,\n node: node,\n attribute: attribute,\n expression: directiveOptions.literal ? attribute.value : new Expression(attribute.value, directiveOptions.mixed),\n decorates: attrInfo.decorates\n }));\n }, this);\n },\n\n /**\n * 编译所有子结点\n * @param {function} handler 当前模板函数\n * @param {HTMLNode} node 当前 HTML 结点\n * @returns {void} 无返回\n */\n _compileChildren: function /*istanbul ignore next*/_compileChildren(handler, node) {\n if (handler.final) return;\n utils.toArray(node.childNodes).forEach(function (childNode) {\n if (childNode._compiled_) return;\n var childHandler = this.compile(childNode);\n childHandler.parent = this;\n handler.children.push(childHandler);\n }, this);\n },\n\n /**\n * 编译一个模板\n * @param {HTMLNode} node 模板根元素\n * @param {Object} options 选项\n * @returns {function} 模板函数\n */\n compile: function /*istanbul ignore next*/compile(node, options) {\n if (!node) {\n throw new Error('Invalid node for compile');\n }\n node._compiled_ = true;\n options = options || {};\n //定义编译结果函数\n var handler = function handler(scope) {\n if (utils.isNull(scope)) scope = {};\n handler.directives.forEach(function (directive) {\n directive.scope = scope;\n directive.execute(scope);\n }, this);\n handler.children.forEach(function (childHandler) {\n childHandler(scope);\n }, this);\n };\n //--\n handler.dispose = function () {\n handler.directives.forEach(function (directive) {\n directive.unbind();\n }, this);\n handler.children.forEach(function (childHandler) {\n childHandler.dispose();\n }, this);\n };\n handler.node = node;\n //定义 children & directives \n handler.directives = [];\n handler.children = [];\n //编译相关指令\n if (options.element !== false) this._compileElement(handler, node);\n if (options.attribute !== false) this._compileAttributes(handler, node);\n this._bindHandler(handler);\n if (options.children !== false) this._compileChildren(handler, node);\n //返回编译后函数\n return handler;\n }\n\n});\n\nmodule.exports = Compiler;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/compiler.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\nvar Expression = require('./expression');\n\n/**\n * 指令定义工场函数\n * @param {Object} classOptions 选项\n * @returns {Directive} 指令类\n */\nfunction Directive(classOptions) {\n //处理指令选项\n classOptions = classOptions || {};\n classOptions.type = classOptions.type || Directive.TA;\n classOptions.level = classOptions.level || Directive.LG;\n\n //生成指令类\n var DirectiveClass = new Class({\n\n $extends: classOptions,\n //指令构建函数\n constructor: function /*istanbul ignore next*/constructor(instanceOptions) {\n utils.copy(instanceOptions, this);\n },\n //挂载实例上的 options\n options: classOptions,\n //挂载实例核心方法\n bind: classOptions.bind || utils.noop,\n execute: classOptions.execute || function (scope) {\n this.scope = scope;\n if (this.options.type === Directive.TE) {\n return this.update();\n }\n var newValue = this.options.literal ? this.attribute.value : this.expression.execute(scope);\n if (!utils.deepEqual(this._value_, newValue)) {\n this.update(newValue, this._value_);\n this._value_ = newValue;\n }\n },\n update: classOptions.update || utils.noop,\n unbind: classOptions.unbind || utils.noop,\n //挂载指令常用的类型\n utils: utils,\n Expression: Expression\n });\n //向指令类添加「指令定义信息」\n DirectiveClass.options = classOptions;\n utils.setPrototypeOf(DirectiveClass, classOptions);\n return DirectiveClass;\n}\n\n//指令类型\nDirective.TA = 'A';\nDirective.TE = 'E';\n\n//指令级别\nDirective.LP = 3000; //prevent\nDirective.LS = 2000; //statement\nDirective.LE = 1000; //eleemtn\nDirective.LG = 0; //general\nDirective.LA = -1000; //any attribute\nDirective.LC = -2000; //cloak\n\nmodule.exports = Directive;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directive.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar utils = require('ntils');\n\n/**\n * 表达式类型,将字符串构析为可执行表达式实例\n */\nvar Expression = new Class({\n\n /**\n * 通过字符串构造一个表达式实例\n * @param {string} code 代码字符串\n * @param {boolean} mix 是否是混合代码\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(code, mix) {\n this.func = mix ? this._compileMixedCode(code) : this._compileCode(code);\n },\n\n /**\n * 编译普通表达式代码\n * @param {string} code 代码字符串\n * @returns {function} 编辑后的函数\n */\n _compileCode: function /*istanbul ignore next*/_compileCode(code) {\n code = this._escapeEOL(this._wrapCode(code));\n return this._createFunction(code);\n },\n\n /**\n * 编辑混合的表达式代码\n * @param {string} code 代码字符串\n * @returns {function} 编辑后的函数\n */\n _compileMixedCode: function /*istanbul ignore next*/_compileMixedCode(code) {\n var statements = this._parseMixedCode(code);\n code = this._escapeEOL(statements.join('+'));\n return this._createFunction(code);\n },\n\n /**\n * 通过符串代码创建一个可执行函数\n * @param {string} code 代码字符串\n * @returns {function} 创建的函数\n */\n _createFunction: function /*istanbul ignore next*/_createFunction(code) {\n var func = new Function('utils', 'scope', 'with(scope){return ' + code + '}');\n return func.bind(null, utils);\n },\n\n /**\n * 解析混合代码字符串\n * @param {string} code 混合代码字符串\n * @returns {Array} 解析后的「token」列表\n */\n _parseMixedCode: function /*istanbul ignore next*/_parseMixedCode(code) {\n var index = 0,\n length = code.length;\n var token = '',\n isExpr = false,\n tokens = [];\n while (index <= length) {\n var char = code[index++];\n var nextChar = code[index];\n if (utils.isNull(char)) {\n if (token.length > 0) {\n tokens.push('\"' + this._escapeCode(token) + '\"');\n }\n token = '';\n isExpr = false;\n } else if (!isExpr && char + nextChar == '{{') {\n if (token.length > 0) {\n tokens.push('\"' + this._escapeCode(token) + '\"');\n }\n token = '';\n isExpr = true;\n index++;\n } else if (isExpr && char + nextChar == '}}') {\n if (token.length > 0) {\n tokens.push(this._wrapCode(token));\n }\n token = '';\n isExpr = false;\n index++;\n } else {\n token += char;\n }\n }\n return tokens;\n },\n\n /**\n * 转义处理代码字符串\n * @param {string} code 源字符串\n * @returns {string} 处理后的字符串\n */\n _escapeCode: function /*istanbul ignore next*/_escapeCode(code) {\n return code.replace(/\"/, '\\\\\"').replace('\\r\\n', '\\\\r\\\\n').replace('\\n', '\\\\n');\n },\n\n /**\n * 转义换行符\n * @param {string} code 源字符串\n * @returns {string} 处理后的字符串\n */\n _escapeEOL: function /*istanbul ignore next*/_escapeEOL(code) {\n return code.replace(/\\n/gm, '\\\\\\n');\n },\n\n /**\n * 通过闭包和 try/cache 包裹代码\n * 将模板中错误的代码直接显示在「模板中用到的位置」,更易于定位错误。\n * @param {string} code 源字符串\n * @returns {string} 处理后的字符串\n */\n _wrapCode: function /*istanbul ignore next*/_wrapCode(code) {\n return '((function(){try{return (' + code + ')}catch(err){console.error(err);return err;}})())';\n },\n\n /**\n * 通过 scope 对象执行表达式\n * @param {Object} scope 上下文对象\n * @returns {Object} 执行结果\n */\n execute: function /*istanbul ignore next*/execute(scope) {\n if (utils.isNull(scope)) {\n scope = {};\n }\n return this.func.call(scope, scope);\n }\n\n});\n\nmodule.exports = Expression;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/expression.js","/*istanbul ignore next*/'use strict';\n\nmodule.exports = {\n '#text': require('./text'),\n 'each': require('./each'),\n 'if': require('./if'),\n 'prop': require('./prop'),\n 'attr': require('./attr'),\n 'on': require('./on'),\n 'html': require('./inner-html'),\n 'text': require('./inner-text'),\n 'prevent': require('./prevent'),\n 'id': require('./id'),\n 'cloak': require('./cloak'),\n 'show': require('./show'),\n 'model': require('./model'),\n 'focus': require('./focus'),\n '*': require('./attribute') //处理所有未知 attr\n};\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/index.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\nvar Expression = require('../expression');\n\nmodule.exports = new Directive({\n type: Directive.TE,\n prefix: false,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.expr = new Expression(this.node.nodeValue, true);\n this.node.nodeValue = '';\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n var newValue = this.expr.execute(scope);\n if (this.node.nodeValue !== newValue) {\n this.node.nodeValue = newValue;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/text.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\nvar utils = require('ntils');\nvar Scope = require('../scope');\n\nmodule.exports = new Directive({\n level: Directive.LS + 1, //比 if 要高一个权重\n final: true,\n literal: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.mountNode = document.createTextNode('');\n this.node.parentNode.insertBefore(this.mountNode, this.node);\n //虽然,bind 完成后,也会进行 attribute 的移除,\n //但 each 指令必须先移除,否再进行 item 编译时 each 还会生效\n this.node.removeAttribute(this.attribute.name);\n this.node.parentNode.removeChild(this.node);\n this.parseExpr();\n this.eachItems = {};\n },\n\n parseExpr: function /*istanbul ignore next*/parseExpr() {\n this.eachType = this.attribute.value.indexOf(' in ') > -1 ? 'in' : 'of';\n var tokens = this.attribute.value.split(' ' + this.eachType + ' ');\n var fnText = /*istanbul ignore next*/'with(scope){utils.each(' + tokens[1] + ',fn.bind(this,' + tokens[1] + '))}';\n this.each = new Function('utils', 'scope', 'fn', fnText).bind(null, this.utils);\n var names = tokens[0].split(',').map(function (name) {\n return name.trim();\n });\n if (this.eachType == 'in') {\n this.keyName = names[0];\n this.valueName = names[1];\n } else {\n this.keyName = names[1];\n this.valueName = names[0];\n }\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n /*istanbul ignore next*/var _this = this;\n\n var currentEachKeys = [];\n var itemsFragment = document.createDocumentFragment();\n var self = this;\n this.each(scope, function (eachTarget, key) {\n //创建新 scope,必须选创建再设置 prototype 或采用定义「属性」的方式\n //因为指令参数指定的名称有可能和 scope 原有变量冲突\n //将导致针对 watch 变量的赋值,从引用发循环\n var newScope = new Scope(this.scope);\n if (self.keyName) {\n Object.defineProperty(newScope, self.keyName, {\n /*istanbul ignore next*/get: function get() {\n return key;\n }\n });\n }\n //value 采用「属性」进行代理,否则将会使「双向」绑定无把回设值\n if (self.valueName) {\n Object.defineProperty(newScope, self.valueName, {\n /*istanbul ignore next*/get: function get() {\n return eachTarget[key];\n },\n /*istanbul ignore next*/set: function set(value) {\n eachTarget[key] = value;\n }\n });\n }\n var oldItem = this.eachItems[key];\n if (oldItem) {\n oldItem.handler(newScope);\n } else {\n var newItem = {};\n //创建新元素\n newItem.node = this.node.cloneNode(true);\n itemsFragment.appendChild(newItem.node);\n newItem.handler = this.compiler.compile(newItem.node);\n newItem.handler(newScope);\n this.eachItems[key] = newItem;\n }\n currentEachKeys.push(key);\n }.bind(this));\n utils.each(this.eachItems, function (key, item) {\n if (currentEachKeys.some(function (k) /*istanbul ignore next*/{\n return k == key;\n })) return;\n if (item.node.parentNode) {\n item.node.parentNode.removeChild(item.node);\n }\n delete /*istanbul ignore next*/_this.eachItems[key];\n }, this);\n if (itemsFragment.childNodes.length > 0) {\n this.mountNode.parentNode.insertBefore(itemsFragment, this.mountNode);\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/each.js","/*istanbul ignore next*/'use strict';\n\nvar utils = require('ntils');\n\nvar Scope = function Scope(parent, props) {\n //新的 scope 因为「继承」了 _observer_ \n //所以在新 scope 上进行双向绑定时,将将值成功回写\n //如果有天不须用 utils.cteate 继承法,需要注意 _observer_ \n //或在新 scope 上 defineProperty 代理 parentScope\n var scope = utils.create(parent);\n utils.copy(props, scope);\n //将 func 绑定到原 scope 上;\n utils.each(parent, function (key, value) {\n if (!utils.isFunction(value)) return;\n scope[key] = value.bind(parent);\n });\n return scope;\n};\n\nmodule.exports = Scope;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/scope.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n level: Directive.LS,\n final: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.mountNode = document.createTextNode('');\n this.node.parentNode.insertBefore(this.mountNode, this.node);\n //虽然,bind 完成后,也会进行 attribute 的移除,\n //但 if 指令必须先移除,否再进行 item 编译时 if 还会生效\n this.node.removeAttribute(this.attribute.name);\n this.node.parentNode.removeChild(this.node);\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var newValue = this.expression.execute(scope);\n if (newValue) {\n //如果新计算的结果为 true 才执行 \n this._handler = this._handler || this.compiler.compile(this.node);\n this._handler(scope);\n var node = this.node.$substitute || this.node;\n if (!node.parentNode) {\n this.mountNode.parentNode.insertBefore(node, this.mountNode);\n }\n } else {\n var _node = this.node.$substitute || this.node;\n if (_node.parentNode) _node.parentNode.removeChild(_node);\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/if.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(value) {\n var target = this.node.$target || this.node;\n target[this.decorates[0]] = value;\n }\n // execute: function (scope) {\n // this.scope = scope;\n // let newValue = this.expression.execute(scope);\n // let target = this.node.$target || this.node;\n // target[this.decorates[0]] = newValue;\n // }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/prop.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(value) {\n var target = this.node.$target || this.node;\n if (target.setAttribute) {\n target.setAttribute(this.decorates[0], value);\n } else {\n target[this.decorates[0]] = value;\n }\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/attr.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\nvar EventEmitter = require('../../events');\nvar Scope = require('../scope');\n\nmodule.exports = new Directive({\n literal: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n var attrValue = this.attribute.value || '';\n if (attrValue.indexOf('(') < 0 && attrValue.indexOf(')') < 0) {\n attrValue += '($event)';\n }\n this.expr = new this.Expression(attrValue);\n var eventTarget = this.node.$target || this.node;\n this.emiter = new EventEmitter(eventTarget);\n this.emiter.addListener(this.decorates[0], function (event) {\n if (this.utils.isNull(this.scope)) return;\n this.expr.execute(new Scope(this.scope, {\n $event: event\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/on.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(newValue) {\n this.node.innerHTML = newValue;\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/inner-html.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(newValue) {\n this.node.innerText = newValue;\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/inner-text.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n level: Directive.LP,\n final: true\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/prevent.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n literal: true,\n\n update: function /*istanbul ignore next*/update(id) {\n if (id in this.scope) {\n throw new Error('Conflicting component id `' + id + '`');\n }\n this.scope[id] = this.node.$target || this.node;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/id.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n level: Directive.LC,\n literal: true,\n prefix: false,\n\n bind: function /*istanbul ignore next*/bind() {\n this.node.removeAttribute(this.attribute.name);\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/cloak.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n update: function /*istanbul ignore next*/update(value) {\n this.node.style.display = value ? '' : 'none';\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/show.js","/*istanbul ignore next*/'use strict';\n\nvar SelectDirective = require('./select');\nvar EditableDirective = require('./editable');\nvar InputDirective = require('./input');\nvar RadioDirective = require('./radio');\nvar CheckboxDirective = require('./checkbox');\nvar PropDirective = require('./prop');\n\nvar Directive = function Directive(options) {\n var node = options.node;\n var tagName = node.tagName;\n if (options.decorates[0]) {\n return new PropDirective(options);\n } else if (tagName == 'INPUT') {\n var type = node.getAttribute('type');\n if (type == 'radio') {\n return new RadioDirective(options);\n } else if (type == 'checkbox') {\n return new CheckboxDirective(options);\n } else {\n return new InputDirective(options);\n }\n } else if (tagName == 'TEXTAREA') {\n return new InputDirective(options);\n } else if (tagName == 'SELECT') {\n return new SelectDirective(options);\n } else if (node.isContentEditable) {\n return new EditableDirective(options);\n } else {\n throw new Error( /*istanbul ignore next*/'Directive `model` cannot be used on `' + tagName + '`');\n }\n};\n\n//手动添加 classOptions\nDirective.options = {\n level: Directive.LA\n};\n\nmodule.exports = Directive;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/index.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n final: true,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.node.removeAttribute(this.attribute.name);\n this._handler = this.compiler.compile(this.node);\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('change', function () {\n if (this.utils.isNull(this.scope)) return;\n var selectedOptions = this.node.selectedOptions;\n var value = this.node.multiple ? [].slice.call(selectedOptions).map(function (option) {\n return option.value;\n }, this) : selectedOptions[0].value;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: value\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n this._handler(scope);\n var value = this.expression.execute(scope);\n if (!this.utils.isArray(value)) value = [value];\n [].slice.call(this.node.options).forEach(function (option) {\n option.selected = value.indexOf(option.value) > -1;\n }, this);\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/select.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('input', function () {\n if (this.utils.isNull(this.scope)) return;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.innerHTML\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var value = this.expression.execute(scope);\n if (this.node.innerHTML !== value) {\n this.node.innerHTML = value;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/editable.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('input', function () {\n if (this.utils.isNull(this.scope)) return;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.value\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var value = this.expression.execute(scope);\n if (this.node.value !== value) {\n this.node.value = value;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/input.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('change', function () {\n if (this.utils.isNull(this.scope)) return;\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.value\n }));\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n var value = this.expression.execute(scope);\n this.node.checked = value == this.node.value;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/radio.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar EventEmitter = require('../../../events');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.emiter = new EventEmitter(this.node);\n this.emiter.addListener('change', function () {\n if (this.utils.isNull(this.scope)) return;\n var value = this.expression.execute(this.scope);\n if (this.utils.isArray(value) && this.node.checked) {\n value.push(this.node.value);\n } else if (this.utils.isArray(value) && !this.node.checked) {\n var index = value.indexOf(this.node.value);\n value.splice(index, 1);\n } else {\n this.backExpr.execute(new Scope(this.scope, {\n _value_: this.node.checked\n }));\n }\n }.bind(this), false);\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.emiter.removeListener();\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.scope = scope;\n var value = this.expression.execute(scope);\n if (this.utils.isArray(value)) {\n this.node.checked = value.indexOf(this.node.value) > -1;\n } else {\n this.node.checked = value;\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/checkbox.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../../directive');\nvar Scope = require('../../scope');\n\nmodule.exports = new Directive({\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n /*istanbul ignore next*/var _this = this;\n\n this.target = this.node.$target;\n this.backExpr = new this.Expression( /*istanbul ignore next*/this.attribute.value + '=_value_');\n this.bindProp = this.decorates[0];\n if (!this.target) {\n throw new Error( /*istanbul ignore next*/'Directive `model:' + this.bindProp + '` cannot be used on `' + this.node.tagName + '`');\n }\n this.watcher = this.target.$watch(this.bindProp, function (value) {\n if ( /*istanbul ignore next*/_this.utils.isNull( /*istanbul ignore next*/_this.scope)) return;\n /*istanbul ignore next*/_this.backExpr.execute(new Scope( /*istanbul ignore next*/_this.scope, {\n _value_: value\n }));\n });\n },\n\n unbind: function /*istanbul ignore next*/unbind() {\n this.target.$unWatch(this.watcher);\n },\n\n update: function /*istanbul ignore next*/update(value) {\n this.target[this.bindProp] = value;\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/model/prop.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\nmodule.exports = new Directive({\n execute: function /*istanbul ignore next*/execute(scope) {\n /*istanbul ignore next*/var _this = this;\n\n var state = this.expression.execute(scope);\n setTimeout(function () {\n if (state) /*istanbul ignore next*/_this.node.focus();else /*istanbul ignore next*/_this.node.blur();\n }, 0);\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/focus.js","/*istanbul ignore next*/'use strict';\n\nvar Directive = require('../directive');\n\n/**\n * 通用的 attribute 指令\n * 用于所有 attribute 的处理\n * 例如:\n *
    \n *
    \n */\nmodule.exports = new Directive({\n level: Directive.LA,\n prefix: false,\n literal: true,\n remove: false,\n\n /**\n * 初始化指令\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind() {\n this.computedName = this.attribute.name;\n this.computedValue = this.attribute.value;\n this.nameExpr = new this.Expression(this.attribute.name, true);\n this.valueExpr = new this.Expression(this.attribute.value, true);\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n var target = this.node.$target || this.node;\n var newComputedName = this.nameExpr.execute(scope);\n if (this.computedName !== newComputedName) {\n //移除旧名称\n if (target.removeAttribute) {\n target.removeAttribute(this.computedName);\n }\n //设置新名称\n this.computedName = newComputedName;\n if (!this.utils.isNull(this.computedName) && this.computedName.length > 0) {\n if (target.setAttribute) {\n target.setAttribute(this.computedName, this.computedValue || '');\n }\n }\n }\n var newComputeValue = this.valueExpr.execute(scope);\n if (this.computedValue !== newComputeValue) {\n this.computedValue = newComputeValue;\n if (target.setAttribute) {\n target.setAttribute(this.computedName, this.computedValue || '');\n } else {\n target[this.computedName] = this.computedValue;\n }\n }\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/directives/attribute.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar Observer = require('../observer');\nvar EventEmitter = require('../events');\nvar Compiler = require('./compiler');\n\n/**\n * 模板类\n * 可能通过 element 作为参数,创建一个模板实例\n */\nvar Template = new Class({\n\n $extends: EventEmitter,\n\n /**\n * 构建一个模板板实例\n * @param {HTMLNode} element HTML 元素\n * @param {Object} options 选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(element, options) {\n options = options || {};\n EventEmitter.call(this);\n this.options = options;\n this.element = element;\n this.compiler = options.compiler || new Compiler(options);\n this.render = this.compiler.compile(this.element);\n this.update = this.update.bind(this);\n this._update = this._update.bind(this);\n this._updateTimer = 0;\n },\n\n /**\n * 更新当前模板 (会过滤不必要的更新)\n * @returns {void} 无返回\n */\n update: function /*istanbul ignore next*/update() {\n if (this._updateTimer) {\n clearTimeout(this._updateTimer);\n this._updateTimer = null;\n }\n this._updateTimer = setTimeout(this._update, 0);\n },\n\n /**\n * 更新当前模板内部方法 \n * @returns {void} 无返回\n */\n _update: function /*istanbul ignore next*/_update() {\n if (!this._updateTimer || !this.observer) return;\n this.emit('update', this);\n this.render(this.observer.target);\n this._onBind();\n },\n\n /**\n * 在绑定成功时\n * @returns {void} 无返回\n */\n _onBind: function /*istanbul ignore next*/_onBind() {\n if (this._bound) return;\n this._bound = true;\n this.emit('bind', this);\n },\n\n /**\n * 将模板绑定到一个 scope\n * @param {Object} scope 绑定的上下文对象\n * @param {boolean} disableFirst 是否禁用第一次的自动渲染\n * @returns {void} 无返回\n */\n bind: function /*istanbul ignore next*/bind(scope, disableFirst) {\n if (!scope) return;\n this.unbind();\n this.observer = new Observer(scope, {\n root: this.options.root\n });\n scope.$self = scope;\n this.observer.on('change', this.update);\n if (disableFirst) {\n this._onBind();\n } else {\n this.update();\n }\n },\n\n /**\n * 解绑定\n * @returns {void} 无返回\n */\n unbind: function /*istanbul ignore next*/unbind() {\n if (!this.observer) return;\n this.observer.removeListener('change', this.update);\n this.observer.clearReference();\n this.observer = null;\n },\n\n /**\n * 释放\n * @returns {void} 无返回\n */\n dispose: function /*istanbul ignore next*/dispose() {\n this.unbind();\n this.render.dispose();\n }\n\n});\n\nmodule.exports = Template;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/template/template.js","/*istanbul ignore next*/'use strict';\n\nvar Component = require('./component');\nvar components = require('./components');\nvar directives = require('../template').directives;\n\nComponent.components = components;\nComponent.Component = Component;\n\nComponent.component = function (name, component) {\n if (!component) return components[name];\n components[name] = component;\n};\n\nComponent.directive = function (name, directive) {\n if (!directive) return directives[name];\n directives[name] = directive;\n};\n\nmodule.exports = Component;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/index.js","/*istanbul ignore next*/'use strict';\n\nvar Class = require('cify');\nvar Template = require('../template');\nvar Watcher = require('../watcher');\nvar utils = require('ntils');\nvar EventEmitter = require('../events');\nvar Observer = require('../observer');\nvar ComponentDirective = require('./component-directive');\n\n/**\n * 组件类\n * 用于定义一个新的组件\n * @param {Object} classOpts 类选项\n * @returns {Component} 组件类\n */\nfunction Component(classOpts) {\n\n //处理组件选项\n classOpts = classOpts || {};\n\n //处理「继承」,目前的机制,只能用「合并类选项」\n var mixes = classOpts.mixes;\n delete classOpts.mixes;\n if (mixes && !utils.isArray(mixes)) {\n mixes = [mixes];\n } else {\n mixes = [];\n }\n var extendComponent = classOpts.extend || Component;\n delete classOpts.extend;\n //extend 会覆盖 mixes 中的同名成员\n mixes.push(extendComponent);\n //classOpts 会覆盖 extend 或 mixes 中的同名成员\n mixes.push(classOpts);\n var mixedClassOpts = {};\n mixes.forEach(function (mixItem) {\n if (mixItem instanceof Component || mixItem == Component) {\n mixItem = mixItem.$options || {};\n }\n utils.mix(mixedClassOpts, mixItem);\n });\n classOpts = mixedClassOpts;\n\n /**\n * 定义组件类\n * 可以通过 new ComponentClass() 创建组件实例\n */\n var ComponentClass = new Class({\n $extends: extendComponent,\n\n /**\n * 组件类构造函数\n * @param {object} instanceOpts 实例选项\n * @returns {void} 无返回\n */\n constructor: function /*istanbul ignore next*/constructor(instanceOpts) {\n /*istanbul ignore next*/var _this = this;\n\n if (this == window) return new this.$class(instanceOpts);\n EventEmitter.call(this);\n instanceOpts = instanceOpts || {};\n //创建组件实例时可以给实例添加成员\n utils.each(instanceOpts, function (key, value) {\n if (key in /*istanbul ignore next*/_this) return;\n /*istanbul ignore next*/_this[key] = value;\n });\n this._onTemplateUpdate_ = this._onTemplateUpdate_.bind(this);\n this._createdData_(classOpts.data);\n this._createProperties_(classOpts.properties || classOpts.props);\n this._createWatches_(classOpts.watches || classOpts.watch);\n this.$directives = this.$directives || {};\n this._importDirectives_(classOpts.directives);\n this.$components = this.$components || {};\n this._importComponents_(require('./components'));\n this._importComponents_({\n 'self': ComponentClass\n });\n this._importComponents_(classOpts.components);\n utils.defineFreezeProp(this, '$children', []);\n if (instanceOpts.parent) this.$setParent(instanceOpts.parent);\n this.$callHook('init', [instanceOpts]);\n Observer.observe(this);\n if (classOpts.element) {\n this.$mount();\n } else {\n this.$compile();\n }\n },\n\n /**\n * 设定父组件\n * @param {Object} parent 父组件\n * @returns {void} 无返回\n */\n $setParent: function /*istanbul ignore next*/$setParent(parent) {\n if (this.$parent === parent) return;\n if (this.$parent) {\n this.$parent.$removeChild(this);\n }\n if (parent) {\n parent.$addChild(this);\n }\n },\n\n /**\n * 添加子组件\n * @param {Object} child 子组件\n * @returns {void} 无返回\n */\n $addChild: function /*istanbul ignore next*/$addChild(child) {\n if (!(child instanceof Component)) return;\n this.$children.push(child);\n utils.defineFreezeProp(child, '$parent', this);\n utils.defineFreezeProp(child, '$root', this.$root || this);\n },\n\n /**\n * 移除子组件\n * @param {Object} child 子组件\n * @returns {void} 无返回\n */\n $removeChild: function /*istanbul ignore next*/$removeChild(child) {\n var index = this.$children.indexOf(child);\n this.$children.splice(index, 1);\n utils.defineFreezeProp(child, '$parent', null);\n //utils.defineFreezeProp(child, '$root', null);\n },\n\n /**\n * 获取根组件, 为了能通过 polyfill 处理 IE8 暂不用这种方式\n */\n get $root() {\n if (this.$parent) {\n return this.$parent.$root;\n } else {\n return this;\n }\n },\n\n /**\n * 导入用到的子组件类\n * @param {Object} components 引入的组件\n * @returns {void} 无返回\n */\n _importComponents_: function /*istanbul ignore next*/_importComponents_(components) {\n utils.each(components, function (name, component) {\n if (!component) return;\n this.$components[name] = component;\n this.$directives[name] = new ComponentDirective({\n name: name,\n component: component,\n parent: this\n });\n }, this);\n },\n\n /**\n * 导入一个用到的指令\n * @param {Object} directives 引入的指令\n * @returns {void} 无返回\n */\n _importDirectives_: function /*istanbul ignore next*/_importDirectives_(directives) {\n utils.each(directives, function (name, directive) {\n if (!directive) return;\n this.$directives[name] = directive;\n }, this);\n },\n\n /**\n * 调用生命周期 hook\n * @param {string} name 调用的 hook 名称\n * @param {Array} args 调用 hook 的参数列表\n * @returns {void} 无反回\n */\n $callHook: function /*istanbul ignore next*/$callHook(name, args) {\n var hook = this[/*istanbul ignore next*/'on' + utils.firstUpper(name)];\n if (!utils.isFunction(hook)) return;\n hook.apply(this, args || []);\n this.$emit( /*istanbul ignore next*/'$' + name, args);\n },\n\n /**\n * 创建数据对象\n * @param {Object} data 组件数据对象\n * @returns {void} 无返回\n */\n _createdData_: function /*istanbul ignore next*/_createdData_(data) {\n if (utils.isFunction(data)) {\n this.$data = data.call(this);\n } else {\n this.$data = data || {};\n }\n utils.each(this.$data, function (name) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n get: function /*istanbul ignore next*/get() {\n if (!this.$data) return;\n return this.$data[name];\n },\n set: function /*istanbul ignore next*/set(value) {\n if (!this.$data) return;\n this.$data[name] = value;\n }\n });\n }, this);\n },\n\n /**\n * 创建组件属性\n * @param {Object} properties 属性定义对象\n * @returns {void} 无返回\n */\n _createProperties_: function /*istanbul ignore next*/_createProperties_(properties) {\n this.$properties = {};\n utils.each(properties, function (name, descriptor) {\n if (utils.isFunction(descriptor)) {\n //get 简化写法\n descriptor = {\n get: descriptor\n };\n } else if (!utils.isObject(descriptor)) {\n //基本类型\n descriptor = {\n value: descriptor\n };\n } else {\n //通过 descriptor 定义 get/set/value\n //不能直接用 descriptor,\n //因为为会导到多个组件实例间的影响\n descriptor = utils.copy(descriptor);\n }\n //如果 get/set 都没有,则自动生成\n var hasGetterOrSetter = !!descriptor.get || !!descriptor.set;\n if (!hasGetterOrSetter) {\n descriptor.get = function () {\n return descriptor.value;\n };\n descriptor.set = function (value) {\n descriptor.value = value;\n };\n }\n //定义为属性\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n get: function /*istanbul ignore next*/get() {\n if (!descriptor.get) {\n throw new Error('Property `' + name + '` cannot be read');\n }\n return descriptor.get.call(this);\n },\n set: function /*istanbul ignore next*/set(value) {\n if (!descriptor.set) {\n throw new Error('Property `' + name + '` cannot be written');\n }\n if (descriptor.test && !descriptor.test(value)) {\n throw new Error('Invalid value `' + value + '` for property `' + name + '`');\n }\n descriptor.set.call(this, value);\n if (this._observer_) {\n this._observer_.emitChange({\n path: name,\n value: value\n });\n }\n }\n });\n this.$properties[name] = descriptor;\n }, this);\n },\n\n /**\n * 创建监控\n * 为什么用 watches 而不是 watchers 或其它?\n * 因为,这里仅是「监控配置」并且是「复数」\n * @param {Object} watches 监控定义对象\n * @returns {void} 无返回\n */\n _createWatches_: function /*istanbul ignore next*/_createWatches_(watches) {\n this._watchers_ = this._watchers_ || [];\n utils.each(watches, function (name, handler) {\n this.$watch(name, handler);\n }, this);\n },\n\n /**\n * 在模板发生更新时\n * @returns {void} 无返回\n */\n _onTemplateUpdate_: function /*istanbul ignore next*/_onTemplateUpdate_() {\n this._watchers_.forEach(function (watcher) {\n watcher.calc();\n }, this);\n },\n\n /**\n * 添加一个监控\n * @param {string|function} path 计算函数或路径\n * @param {function} handler 处理函数\n * @returns {void} 无返回\n */\n $watch: function /*istanbul ignore next*/$watch(path, handler) {\n if (!utils.isFunction(handler)) return;\n var calcer = path;\n if (!utils.isFunction(path)) {\n calcer = function /*istanbul ignore next*/calcer() {\n return utils.getByPath(this, path);\n };\n }\n var watcher = new Watcher(calcer.bind(this), handler.bind(this));\n this._watchers_.push(watcher);\n return watcher;\n },\n\n /**\n * 取消一个 watcher 对象\n * @param {object} watcher 监控对象实例\n * @returns {void} 无返回\n */\n $unWatch: function /*istanbul ignore next*/$unWatch(watcher) {\n var index = this._watchers_.findIndex(function (w) /*istanbul ignore next*/{\n return w === watcher;\n });\n this._watchers_.splice(index, 1);\n },\n\n /**\n * 创建元素\n * @returns {void} 无返回\n */\n _createElement_: function /*istanbul ignore next*/_createElement_() {\n if (this._created_) return;\n this._created_ = true;\n this.$callHook('create');\n utils.defineFreezeProp(this, '$element', this.element || ComponentClass.$template.cloneNode(true));\n if (!this.$element || this.$element.nodeName === '#text') {\n throw new Error('Invalid component template');\n }\n this.$callHook('created');\n },\n\n /**\n * 编译自身模板并完成绑定\n * @returns {void} 无返回\n */\n $compile: function /*istanbul ignore next*/$compile() {\n if (this._compiled_) return;\n this._compiled_ = true;\n this._createElement_();\n utils.defineFreezeProp(this, '_template_', new Template(this.$element, {\n directives: this.$directives,\n root: true\n }));\n this._template_.bind(this);\n this._template_.on('update', this._onTemplateUpdate_);\n this._template_.on('bind', function () {\n if (!this.deferReady) this.$callHook('ready');\n }.bind(this));\n },\n\n /**\n * 向 DOM tree 中挂截组件\n * @param {HTMLNode} mountNode 挂载点元素\n * @param {append} append 是否 append 到挂载元素内\n * @returns {void} 无返回 \n */\n $mount: function /*istanbul ignore next*/$mount(mountNode, append) {\n if (this._mounted_) return;\n this.$compile();\n this.$callHook('mount');\n if (mountNode) {\n mountNode.$substitute = this.$element;\n this.$element._mountNode = mountNode;\n if (append) {\n mountNode.appendChild(this.$element);\n } else if (mountNode.parentNode) {\n mountNode.parentNode.insertBefore(this.$element, mountNode);\n }\n }\n this._mounted_ = true;\n this._removed_ = false;\n this.$callHook('mounted');\n },\n\n /**\n * 将组件添加到指定容器元素内\n * @param {HTMLNode} node 容器元素\n * @returns {void} 无返回 \n */\n $appendTo: function /*istanbul ignore next*/$appendTo(node) {\n this.$mount(node, true);\n },\n\n /**\n * 移除组件\n * @returns {void} 无返回\n */\n $remove: function /*istanbul ignore next*/$remove() {\n if (this._removed_ || !this._mounted_) return;\n this.$callHook('remove');\n if (this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n this._removed_ = true;\n this._mounted_ = false;\n this.$callHook('removed');\n },\n\n /**\n * 触发自身的一个事件并向上冒泡\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @returns {void} 无返回\n */\n $dispatch: function /*istanbul ignore next*/$dispatch(name, data) {\n var stopPropagation = this.$emit(name, data);\n if (!stopPropagation && this.$parent) {\n this.$parent.$dispatch(name, data);\n }\n },\n\n /**\n * 触发自身的一个事件并向下广播\n * @param {string} name 事件名称\n * @param {object} data 传递的对象\n * @returns {void} 无返回\n */\n $broadcast: function /*istanbul ignore next*/$broadcast(name, data) {\n var stopPropagation = this.$emit(name, data);\n if (!stopPropagation && this.$children && this.$children.length > 0) {\n this.$children.forEach(function (child) {\n child.$broadcast(name, data);\n }, this);\n }\n },\n\n /**\n * 释放组件\n * @returns {void} 无返回\n */\n $dispose: function /*istanbul ignore next*/$dispose() {\n this.$remove();\n this._emitter_.off();\n this.$children.forEach(function (child) {\n child.$dispose();\n }, this);\n if (this.$parent) {\n var index = this.$parent.$children.indexOf(this);\n this.$parent.$children.splice(index, 1);\n }\n this.$callHook('dispose');\n if (this._compiled_) {\n this._template_.unbind();\n }\n this.$callHook('disposed');\n for (var key in this) {\n delete this[key];\n }\n ['_observer_', '$element', '$children', '$parent', '_template_'].forEach(function (key) {\n delete this[key];\n }, this);\n utils.setPrototypeOf(this, null);\n }\n\n });\n\n //保存类选项\n ComponentClass.$options = classOpts;\n ComponentClass.$template = utils.parseDom(classOpts.template);\n\n //向 ComponentClass.prototype 上拷贝成员\n utils.copy(classOpts, ComponentClass.prototype);\n utils.copy(classOpts.methods, ComponentClass.prototype);\n\n //使 ComponentClass instanceof Component === true \n //IE9/10 下为 false,并且动态为 Component.prototype 添加的成员不会在 ComponentClass 上生效\n utils.setPrototypeOf(ComponentClass, Component.prototype);\n\n return ComponentClass;\n}\n\n//继承自 EventEmitter\nComponent.prototype = utils.create(EventEmitter.prototype);\n\n//组件扩展方法,简单封装 extends\nComponent.extend = function (classOpts) {\n return new Component(classOpts);\n};\n\n//定义扩展方法\nComponent.prototype.extend = function (classOpts) {\n classOpts = classOpts || {};\n classOpts.extend = this;\n return new Component(classOpts);\n};\n\n//创建实例的方法\nComponent.prototype.create = function (instanceOpts) {\n return new this(instanceOpts);\n};\n\n//针对包括 element 组件类的启动方法\nComponent.prototype.start = function (instanceOpts) {\n if (!this.$options || !this.$options.element) {\n throw new Error('Start method cannot be called');\n }\n return this.create(instanceOpts);\n};\n\nmodule.exports = Component;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/component.js","/*istanbul ignore next*/'use strict';\n\nvar Template = require('../template');\nvar Directive = Template.Directive;\n\n/**\n * 创建一个组件指令\n * @param {object} options 选项\n * @returns {object} 组件指令\n */\nfunction ComponentDirective(options) {\n\n return new Directive({\n type: Directive.TE,\n literal: true,\n final: true,\n level: Directive.LE,\n\n bind: function /*istanbul ignore next*/bind() {\n this.component = new options.component({\n deferReady: true,\n parent: options.parent || this.scope\n });\n this.handleAttrs();\n this.node.$target = this.component;\n this.handler = this.compiler.compile(this.node, {\n element: false,\n children: false\n });\n this.handleContents();\n this.component.$mount(this.node);\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n },\n\n handleAttrs: function /*istanbul ignore next*/handleAttrs() {\n this.attrs = [].slice.call(this.node.attributes);\n var directiveRegexp = new RegExp('^' + this.prefix + ':', 'i');\n this.attrs.forEach(function (attr) {\n if (directiveRegexp.test(attr.name)) return;\n if (attr.name in this.component.$properties) return;\n this.component.$element.setAttribute(attr.name, attr.value);\n this.node.removeAttribute(attr.name);\n }, this);\n },\n\n handleContents: function /*istanbul ignore next*/handleContents() {\n this.placeHandlers = [];\n var places = [].slice.call(this.component.$element.querySelectorAll('[' + this.prefix + '\\\\:content]'));\n places.forEach(function (place) {\n //将内容插入到指定的「位置」\n var contents = null;\n var selector = place.getAttribute(this.prefix + ':content');\n if (!selector) {\n contents = [].slice.call(this.node.childNodes);\n } else {\n contents = [].slice.call(this.node.querySelectorAll(selector));\n }\n if (!contents || contents.length < 1) return;\n place.innerHTML = '';\n contents.forEach(function (content) {\n place.appendChild(content.cloneNode(true));\n }, this);\n //编译插入后的子「内容模板」\n var handler = this.compiler.compile(place);\n this.placeHandlers.push(handler);\n }, this);\n },\n\n execute: function /*istanbul ignore next*/execute(scope) {\n this.handler(scope);\n if (!this._ready_) {\n this._ready_ = true;\n this.component.$callHook('ready');\n }\n this.placeHandlers.forEach(function (handler) {\n handler(scope);\n }, this);\n }\n\n });\n}\n\nmodule.exports = ComponentDirective;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/component-directive.js","/*istanbul ignore next*/'use strict';\n\nmodule.exports = {\n View: require('./view')\n};\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/components/index.js","/*istanbul ignore next*/'use strict';\n\nvar Component = require('../component');\nvar utils = require('ntils');\n\n/**\n * 内置视图组件\n * 可以加载并显示其它组件,并可以指定「转场效果」\n */\nvar View = new Component({\n\n template: '
    ',\n\n properties: {\n\n /**\n * 显示到视图中的组件\n */\n component: {\n test: function /*istanbul ignore next*/test(value) {\n if (!value) return false;\n return value instanceof Component || utils.isString(value);\n },\n set: function /*istanbul ignore next*/set(component) {\n if (this._transitioning) return;\n this._transitioning = true;\n //如果 value 是字符串则尝试从 $parent.components 中获取组件类 \n if (utils.isString(component)) {\n if (this.$parent && this.$parent.$components) {\n this.component = this.$parent.$components[component];\n } else {\n this.component = null;\n }\n return;\n }\n //声明新旧组件变量\n var newComponentInstance = null;\n var oldComponentInstance = this.componentInstance;\n //创建新组件实例\n if (utils.isFunction(component)) {\n newComponentInstance = new component({\n parent: this\n });\n } else {\n component.$setParent(this);\n newComponentInstance = component;\n }\n //通过转场控制器进行转场准备\n this.transition.prep(newComponentInstance, oldComponentInstance);\n //挂载新组件实例\n newComponentInstance.$appendTo(this.$element);\n //通过转场控制器进行转场\n this.transition.go(newComponentInstance, oldComponentInstance, function () {\n //触发相关事件\n this.$emit('enter', newComponentInstance);\n this.$emit('leave', oldComponentInstance);\n //销毁旧组件实例\n if (oldComponentInstance) {\n oldComponentInstance.$dispose();\n }\n this._transitioning = false;\n }.bind(this));\n //暂存当前组件实例\n this.componentInstance = newComponentInstance;\n },\n get: function /*istanbul ignore next*/get() {\n return this._Component;\n }\n },\n\n /**\n * 视图的转场控制对象\n */\n transition: {\n get: function /*istanbul ignore next*/get() {\n return this._transition || View.transition;\n },\n set: function /*istanbul ignore next*/set(transition) {\n if (this._transitioning) return;\n if (!transition || utils.isFunction(transition.prep) && utils.isFunction(transition.go)) {\n if (this._transition && utils.isFunction(this._transition.clean)) {\n this._transition.clean(this);\n }\n if (transition && utils.isFunction(transition.init)) {\n transition.init(this);\n }\n this._transition = transition;\n } else {\n throw new Error('Invalid transition');\n }\n }\n }\n },\n\n /**\n * 切换到指定的组件\n * @param {Component} component 组件\n * @param {transition} transition 转场控制组件\n * @returns {void} 无返回\n */\n switchTo: function /*istanbul ignore next*/switchTo(component, transition) {\n if (transition) {\n this.transition = transition;\n }\n this.component = component;\n }\n\n});\n\n/**\n * 默认转场设置\n */\nView.transition = {\n //init: function () { },\n //clean: function () { },\n\n /**\n * 转场开始前的准备\n * @param {Component} newComponent 新组件\n * @param {Component} oldComponent 旧组件\n * @returns {void} 无返回\n */\n prep: function /*istanbul ignore next*/prep(newComponent, oldComponent) {\n if (oldComponent) oldComponent.$element.style.display = 'none';\n },\n\n /**\n * 执行转场动画\n * @param {Component} newComponent 新组件\n * @param {Component} oldComponent 旧组件\n * @param {Function} done 完成后的回调\n * @returns {void} 无返回\n */\n go: function /*istanbul ignore next*/go(newComponent, oldComponent, done) {\n done();\n }\n};\n\nmodule.exports = View;\n\n\n// WEBPACK FOOTER //\n// ./~/_mokit@3.1.3@mokit/lib/component/components/view.js","const mokit = require('mokit');\r\nconst items = require('./items');\r\n\r\nrequire('./index.less');\r\n\r\nconst Toolbar = new mokit.Component({\r\n template: require('./index.html'),\r\n props: {\r\n mditor: null\r\n },\r\n\r\n data() {\r\n return {\r\n items: items.slice(0)\r\n };\r\n },\r\n\r\n onReady() {\r\n this.bindCommands();\r\n },\r\n\r\n watch: {\r\n items() {\r\n this.bindCommands();\r\n }\r\n },\r\n\r\n bindCommands() {\r\n if (!this.mditor) return;\r\n this.items.forEach(item => {\r\n this.mditor.removeCommand(item.name);\r\n this.mditor.addCommand(item);\r\n });\r\n },\r\n\r\n isActive(item) {\r\n return this.mditor && item.state && this.mditor[item.state];\r\n },\r\n\r\n exec(name, event) {\r\n event.preventDefault();\r\n this.mditor.execCommand(name, event);\r\n },\r\n\r\n getItem(name) {\r\n return this.items.find(item => item.name === name);\r\n },\r\n\r\n removeItem(name) {\r\n let index = this.items.findIndex(item => item.name === name);\r\n return this.items.splice(index, 1);\r\n },\r\n\r\n addItem(item) {\r\n this.items.push(item);\r\n },\r\n\r\n replaceItem(name, newItem) {\r\n let index = this.items.findIndex(item => item.name === name);\r\n let oldItem = this.items.splice(index, 1);\r\n this.items.splice(index, 0, newItem);\r\n return oldItem;\r\n }\r\n\r\n});\r\n\r\nmodule.exports = Toolbar;\n\n\n// WEBPACK FOOTER //\n// ./src/toolbar/index.js","module.exports = [{\r\n name: 'bold',\r\n title: '粗体',\r\n key: 'shift+alt+b',\r\n handler() {\r\n this.editor.wrapSelectText('**', '**');\r\n }\r\n}, {\r\n name: 'italic',\r\n title: '斜体',\r\n key: 'shift+alt+i',\r\n handler() {\r\n this.editor.wrapSelectText('*', '*');\r\n }\r\n}, {\r\n name: 'underline',\r\n title: '下划线',\r\n key: 'shift+alt+e',\r\n handler() {\r\n this.editor.wrapSelectText('', '');\r\n }\r\n}, {\r\n name: 'strikethrough',\r\n title: '删除线',\r\n key: 'shift+alt+d',\r\n handler() {\r\n this.editor.wrapSelectText('~~', '~~');\r\n }\r\n}, {\r\n name: 'header',\r\n title: '标题',\r\n key: 'shift+alt+1',\r\n handler() {\r\n this.editor.wrapSelectText('# ');\r\n }\r\n}, {\r\n name: 'quote',\r\n icon: 'quote-left',\r\n title: '引用',\r\n key: 'shift+alt+q',\r\n handler() {\r\n let selectText = this.editor.getSelectText();\r\n if (selectText.length < 1) {\r\n this.editor.wrapSelectText('> ');\r\n return;\r\n }\r\n let textArray = selectText.split(this.EOL);\r\n let buffer = [];\r\n textArray.forEach(function (line) {\r\n buffer.push('> ' + line + ' ');\r\n });\r\n this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\r\n }\r\n}, {\r\n name: 'code',\r\n title: '代码',\r\n key: 'shift+alt+c',\r\n handler() {\r\n let lang = 'js' + this.EOL;\r\n let before = '```' + lang;\r\n let after = '``` ' + this.EOL;\r\n let text = this.editor.getSelectText().trim();\r\n if (text.length > 0) {\r\n text += this.EOL;\r\n }\r\n this.editor.setSelectText(text);\r\n this.editor.wrapSelectText(before, after);\r\n let range = this.editor.getSelectRange();\r\n let start = range.start - lang.length;\r\n let end = range.start - this.EOL.length;\r\n this.editor.setSelectRange(start, end);\r\n }\r\n}, {\r\n name: 'list-ol',\r\n title: '有序列表',\r\n key: 'shift+alt+o',\r\n handler() {\r\n let selectText = this.editor.getSelectText();\r\n if (selectText.length < 1) {\r\n this.editor.wrapSelectText('1. ');\r\n return;\r\n }\r\n let textArray = selectText.split(this.EOL);\r\n let buffer = [];\r\n for (let i = 0; i < textArray.length; i++) {\r\n let line = textArray[i];\r\n buffer.push((i + 1) + '. ' + line);\r\n }\r\n this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\r\n }\r\n}, {\r\n name: 'list-ul',\r\n title: '无序列表',\r\n key: 'shift+alt+u',\r\n handler() {\r\n let selectText = this.editor.getSelectText();\r\n if (selectText.length < 1) {\r\n this.editor.wrapSelectText('- ');\r\n return;\r\n }\r\n let textArray = selectText.split(this.EOL);\r\n let buffer = [];\r\n textArray.forEach(function (line) {\r\n buffer.push('- ' + line);\r\n });\r\n this.editor.setSelectText(buffer.join(this.EOL) + this.EOL);\r\n }\r\n}, {\r\n name: 'link',\r\n title: '链接',\r\n key: 'shift+alt+l',\r\n handler() {\r\n let text = this.editor.getSelectText();\r\n if (!text || /^(https:|http:|ftp:|file:|mailto:|\\/|\\.)/i.test(text)) {\r\n this.editor.wrapSelectText('[link](', ')');\r\n if (!text) return;\r\n let range = this.editor.getSelectRange();\r\n let start = range.start - 6;\r\n this.editor.setSelectRange(start, start + 4);\r\n } else {\r\n this.editor.wrapSelectText('[', ']()');\r\n let range = this.editor.getSelectRange();\r\n let index = range.end + 2;\r\n this.editor.setSelectRange(index, index);\r\n }\r\n }\r\n}, {\r\n name: 'table',\r\n title: '表格',\r\n key: 'shift+alt+t',\r\n handler() {\r\n let buffer = [\r\n 'column1 | column2 | column3 ',\r\n '------- | ------- | ------- ',\r\n 'column1 | column2 | column3 ',\r\n 'column1 | column2 | column3 ',\r\n 'column1 | column2 | column3 '\r\n ];\r\n this.editor.wrapSelectText(buffer.join(this.EOL) + this.EOL);\r\n }\r\n}, {\r\n name: 'line',\r\n title: '分隔线',\r\n icon: 'minus',\r\n key: 'shift+alt+h',\r\n handler() {\r\n this.editor.wrapSelectText('----' + this.EOL);\r\n }\r\n}, {\r\n name: 'image',\r\n title: '图片',\r\n key: 'shift+alt+p',\r\n handler() {\r\n this.editor.wrapSelectText('![alt](', ')');\r\n }\r\n}, {\r\n name: 'baseimg',\r\n title: 'base64图片',\r\n icon: 'file-photo-o',\r\n key: 'shift+alt+k',\r\n handler() {\r\n var _this = this\r\n // 创建元素用来选择图片\r\n var container = document.createElement('div')\r\n container.id = \"iDiv\"\r\n container.style = 'display:none'\r\n container.innerHTML = ''\r\n // 将创建的元素追加到body\r\n document.body.appendChild(container)\r\n\r\n var filereader = new FileReader()\r\n // 获取页面上刚追加的文件选择控件\r\n var fileEle = document.getElementById('iFile')\r\n // 监听change方法\r\n fileEle.onchange = function (e) {\r\n var file = e.target.files[0]\r\n filereader.onload = function () {\r\n // 获取读取到的base64字符串\r\n var base64Str = this.result\r\n\r\n //this 指向当前 mditor 实例\r\n _this.editor.insertBeforeText('![](' + base64Str + ')');\r\n // 获取base64格式之后,把容器删除\r\n document.body.removeChild(container)\r\n }\r\n // 如果没有选择对应的文件,则返回。不再进行后续逻辑的处理\r\n if (!file) return\r\n filereader.readAsDataURL(file)\r\n }\r\n // 模拟点击事件\r\n fileEle.click()\r\n\r\n // this.editor.wrapSelectText('![alt](', ')');\r\n }\r\n}, {\r\n name: 'help',\r\n title: '帮助',\r\n icon: 'question',\r\n key: 'shift+alt+/',\r\n handler() {\r\n window.open('http://mditor.com', '_blank');\r\n }\r\n}, {\r\n name: 'toggleFullScreen',\r\n title: '全屏',\r\n icon: 'arrows-alt',\r\n key: 'shift+alt+f',\r\n control: true,\r\n state: 'fullscreen',\r\n owner: function (mditor) {\r\n return mditor.$element;\r\n },\r\n handler() {\r\n this.fullscreen = !this.fullscreen;\r\n }\r\n}, {\r\n name: 'togglePreview',\r\n title: '预览',\r\n icon: 'desktop',\r\n key: 'shift+alt+v',\r\n control: true,\r\n state: 'preview',\r\n owner: function (mditor) {\r\n return mditor.$element;\r\n },\r\n handler() {\r\n this.preview = !this.preview;\r\n if (this.preview) {\r\n this._split = this.split;\r\n this.split = false;\r\n } else {\r\n this.split = this._split;\r\n }\r\n }\r\n}, {\r\n name: 'toggleSplit',\r\n title: '分屏',\r\n icon: 'columns',\r\n key: 'shift+alt+s',\r\n control: true,\r\n state: 'split',\r\n owner: function (mditor) {\r\n return mditor.$element;\r\n },\r\n handler() {\r\n this.split = !this.split;\r\n if (this.split) {\r\n this.preview = false;\r\n }\r\n }\r\n}];\n\n\n// WEBPACK FOOTER //\n// ./src/toolbar/items.js","module.exports = \"
      \\r\\n \\r\\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar/index.html\n// module id = 89\n// module chunks = 0","const mokit = require('mokit');\r\nconst EventEmitter = mokit.EventEmitter;\r\nconst utils = require('ntils');\r\nconst Stack = require('./stack');\r\nconst commands = require('./commands');\r\n\r\nrequire('./index.less');\r\n\r\nconst ua = window.navigator.userAgent.toLowerCase();\r\nconst isIE = !!ua.match(/msie|trident\\/7|edge/);\r\n//const isWinPhone = ua.indexOf('windows phone') !== -1;\r\n//const isIOS = !isWinPhone && !!ua.match(/ipad|iphone|ipod/);\r\n\r\nmodule.exports = new mokit.Component({\r\n template: require('./index.html'),\r\n\r\n props: {\r\n mditor: null,\r\n value: null,\r\n markExp: null\r\n },\r\n\r\n onReady() {\r\n this.stack = new Stack();\r\n setTimeout(() => {\r\n this.textareaEmitter = new EventEmitter(this.textarea);\r\n this.stack.init({\r\n value: this.getValue()\r\n });\r\n }, 300);\r\n this._bindCommands();\r\n },\r\n\r\n _bindCommands() {\r\n commands.forEach(item => {\r\n this.mditor.removeCommand(item.name);\r\n this.mditor.addCommand(item);\r\n });\r\n },\r\n\r\n onCompositionStart() {\r\n this._compositionLock = true;\r\n },\r\n onCompositionEnd() {\r\n this._compositionLock = false;\r\n setTimeout(() => this.onInput(), 300);\r\n /**\r\n * 在输入中文时,输入法「候选词面板」位置会发生定位错误\r\n * 经过反复尝试发现了「规律」,第一次「侯选词」上屏后才会位置错误\r\n * 在「候选词」上屏后让输入框「失去焦点再获取焦点」可「规避」这个 Bug\r\n * 附上相关 issues\r\n * https://github.com/electron/electron/issues/8894\r\n * https://github.com/electron/electron/issues/4539\r\n */\r\n // this.textarea.blur();\r\n // this.textarea.focus();\r\n },\r\n onInput() {\r\n this.$emit('input');\r\n if (this._changedTimer) {\r\n clearTimeout(this._changedTimer);\r\n this._changedTimer = null;\r\n }\r\n if (this._compositionLock) return;\r\n this._changedTimer = setTimeout(() => {\r\n if (!this._changedTimer) return;\r\n this.stack.push({\r\n value: this.getValue(),\r\n range: this.getSelectRange()\r\n });\r\n this.$emit('changed');\r\n }, 300);\r\n },\r\n\r\n undo() {\r\n let last = this.stack.last();\r\n let item = this.stack.undo();\r\n if (utils.isNull(item) || utils.isNull(item.value)) return;\r\n let valGap = last.value.length - item.value.length;\r\n this.value = item.value;\r\n if (last.range) {\r\n setTimeout(() => {\r\n let start = last.range.start - valGap;\r\n let end = last.range.end - valGap;\r\n this.setSelectRange(start, end);\r\n });\r\n }\r\n },\r\n\r\n redo() {\r\n let item = this.stack.redo();\r\n if (utils.isNull(item) || utils.isNull(item.value)) return;\r\n this.value = item.value;\r\n if (item.range) {\r\n setTimeout(() => {\r\n this.setSelectRange(item.range.start, item.range.end);\r\n });\r\n }\r\n },\r\n\r\n onPaste(event) {\r\n this.$emit('paste', event);\r\n },\r\n\r\n onDragover(event) {\r\n event.preventDefault();\r\n this.$emit('dragover', event);\r\n },\r\n\r\n onDrop(event) {\r\n event.preventDefault();\r\n this.$emit('drop', event);\r\n },\r\n\r\n focus() {\r\n this.textarea.focus();\r\n },\r\n\r\n blur() {\r\n this.textarea.blur();\r\n },\r\n\r\n onScroll(event) {\r\n this.syncScroll();\r\n this.$emit('scroll', event);\r\n },\r\n\r\n syncScroll(disTwice) {\r\n this.marks.scrollTop = this.textarea.scrollTop;\r\n this.marks.scrollLeft = this.textarea.scrollLeft;\r\n if (disTwice) return;\r\n setTimeout(() => {\r\n this.syncScroll(true);\r\n }, 0);\r\n },\r\n\r\n applyMarks(text) {\r\n if (!text || !this.markExp) return;\r\n text = text\r\n .replace(/\\n$/g, '\\n\\n')\r\n .replace(this.markExp, '$&');\r\n if (isIE) {\r\n // IE wraps whitespace differently in a div vs textarea, this fixes it\r\n text = text.replace(/ /g, ' ');\r\n }\r\n return text;\r\n },\r\n\r\n activeMark(index) {\r\n let marks = [].slice.call(this.marks.querySelectorAll('mark'));\r\n if (marks.length < 1) return;\r\n this.activeMarkIndex = utils.isNull(this.activeMarkIndex) ?\r\n -1 : this.activeMarkIndex;\r\n if (utils.isNull(index)) {\r\n this.activeMarkIndex++;\r\n } else {\r\n this.activeMarkIndex = index;\r\n }\r\n if (this.activeMarkIndex >= marks.length) {\r\n this.activeMarkIndex = 0;\r\n }\r\n marks.forEach(mark => {\r\n mark.classList.remove('active');\r\n });\r\n let activeMark = marks[this.activeMarkIndex];\r\n activeMark.classList.add('active');\r\n this.scrollToMark(activeMark);\r\n },\r\n\r\n scrollToMark(mark) {\r\n // mark.scrollIntoView();\r\n // this.textarea.scrollTop = this.marks.scrollTop;\r\n // this.textarea.scrollTop -= 20;\r\n this.textarea.scrollTop = mark.offsetTop - 20;\r\n },\r\n\r\n getValue() {\r\n return this.textarea.value;\r\n },\r\n\r\n setValue(value) {\r\n this.textarea.value = value;\r\n },\r\n\r\n getActiveElement() {\r\n this.textarea.focus();\r\n return document.activeElement;\r\n },\r\n\r\n getSelectRange() {\r\n let box = this.getActiveElement();\r\n return {\r\n 'start': box.selectionStart,\r\n 'end': box.selectionEnd\r\n };\r\n },\r\n\r\n setSelectRange(start, end) {\r\n let box = this.getActiveElement();\r\n box.setSelectionRange(start, end);\r\n },\r\n\r\n getSelectText() {\r\n let box = this.getActiveElement();\r\n let range = this.getSelectRange();\r\n return box.value.substring(range.start, range.end);\r\n },\r\n\r\n setSelectText(text) {\r\n let box = this.getActiveElement();\r\n let range = this.getSelectRange();\r\n box.setRangeText(text);\r\n if (range.end == range.start) {\r\n this.setSelectRange(range.start, range.end + text.length);\r\n }\r\n this.value = this.getValue();\r\n this.onInput();\r\n setTimeout(() => {\r\n this.blur();\r\n this.focus();\r\n }, 0);\r\n },\r\n\r\n wrapSelectText(before, after) {\r\n before = (before !== null && before !== undefined) ? before : '';\r\n after = (after !== null && after !== undefined) ? after : '';\r\n let range = this.getSelectRange();\r\n let text = this.getSelectText();\r\n this.setSelectText(before + text + after);\r\n let newStart = range.start + before.length;\r\n let newEnd = range.end + before.length;\r\n this.setSelectRange(newStart, newEnd);\r\n },\r\n\r\n insertBeforeText(text) {\r\n this.wrapSelectText(text);\r\n },\r\n\r\n insertAfterText(text) {\r\n this.wrapSelectText('', text);\r\n },\r\n\r\n getBeforeText(length) {\r\n let range = this.getSelectRange();\r\n let end = range.start;\r\n let start = end - length;\r\n let value = this.getValue();\r\n return value.substring(start, end);\r\n },\r\n\r\n getBeforeFirstCharIndex(char) {\r\n let range = this.getSelectRange();\r\n let end = range.start;\r\n let start = 0;\r\n let value = this.getValue();\r\n return value.substring(start, end).lastIndexOf(char);\r\n },\r\n\r\n getBeforeWord() {\r\n let chars = [' ', '\\t', this.mditor.EOL];\r\n let start = 0;\r\n chars.forEach(char => {\r\n let index = this.getBeforeFirstCharIndex(char);\r\n if (index + char.length > start) {\r\n start = index + char.length;\r\n }\r\n });\r\n let range = this.getSelectRange();\r\n let value = this.getValue();\r\n return value.substring(start, range.end);\r\n },\r\n\r\n getBeforeTextInLine() {\r\n let start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\r\n let range = this.getSelectRange();\r\n let value = this.getValue();\r\n return value.substring(start, range.end);\r\n },\r\n\r\n selectBeforeText(length) {\r\n let range = this.getSelectRange();\r\n this.setSelectRange(range.start - length, range.end);\r\n },\r\n\r\n selectAfterText(length) {\r\n let range = this.getSelectRange();\r\n this.setSelectRange(range.start, range.end + length);\r\n },\r\n\r\n selectBeforeTextInLine() {\r\n let start = this.getBeforeFirstCharIndex(this.mditor.EOL) + this.mditor.EOL.length;\r\n let range = this.getSelectRange();\r\n this.setSelectRange(start, range.end);\r\n },\r\n\r\n addIndent() {\r\n let selectText = this.getSelectText();\r\n if (selectText.length < 1) {\r\n this.insertBeforeText(this.mditor.INDENT);\r\n return;\r\n }\r\n let textArray = selectText.split(this.mditor.EOL);\r\n let buffer = [];\r\n let lineCount = textArray.length - 1;\r\n textArray.forEach((line, index) => {\r\n line = line.trim() !== '' ? this.mditor.INDENT + line : line;\r\n if (index < lineCount || line.trim() !== '') {\r\n buffer.push(line);\r\n }\r\n });\r\n this.setSelectText(buffer.join(this.mditor.EOL));\r\n },\r\n\r\n removeIndent() {\r\n let indentRegExp = new RegExp('^' + this.mditor.INDENT);\r\n let selectText = this.getSelectText();\r\n if (selectText.length < 1) {\r\n this.selectBeforeTextInLine();\r\n if (this.getSelectText().length > 0) {\r\n event.clearSelected = true;\r\n this.removeIndent();\r\n }\r\n return;\r\n }\r\n let textArray = selectText.split(this.mditor.EOL);\r\n let buffer = [];\r\n textArray.forEach(line => {\r\n if (indentRegExp.test(line)) {\r\n line = line.replace(this.mditor.INDENT, '');\r\n }\r\n buffer.push(line);\r\n });\r\n this.setSelectText(buffer.join(this.mditor.EOL));\r\n if (event.clearSelected) {\r\n let range = this.getSelectRange();\r\n this.setSelectRange(range.end, range.end);\r\n }\r\n }\r\n\r\n});\n\n\n// WEBPACK FOOTER //\n// ./src/editor/index.js","const Class = require('cify').Class;\r\nconst utils = require('ntils');\r\n\r\nconst Stack = new Class({\r\n constructor(item) {\r\n this.init(item);\r\n },\r\n init(item) {\r\n this.undoList = [item || {\r\n value: null\r\n }];\r\n this.redoList = [];\r\n },\r\n push(item) {\r\n if (this.last() === item) return;\r\n this.undoList.push(item);\r\n },\r\n last() {\r\n return this.undoList[this.undoList.length - 1];\r\n },\r\n undo() {\r\n if (this.undoList.length > 1) {\r\n let item = this.undoList.pop();\r\n if (utils.isNull(item) || utils.isNull(item.value)) return;\r\n this.redoList.push(item);\r\n }\r\n return this.last();\r\n },\r\n redo() {\r\n let item = this.redoList.pop();\r\n if (utils.isNull(item) || utils.isNull(item.value)) return;\r\n this.undoList.push(item);\r\n return item;\r\n }\r\n});\r\n\r\nmodule.exports = Stack;\n\n\n// WEBPACK FOOTER //\n// ./src/editor/stack.js","module.exports = [{\r\n name: 'undo',\r\n key: '{cmd}+z',\r\n handler() {\r\n this.editor.undo();\r\n }\r\n}, {\r\n name: 'redo',\r\n key: '{cmd}+shift+z',\r\n handler() {\r\n this.editor.redo();\r\n }\r\n}, {\r\n name: 'h2',\r\n key: 'shift+alt+2',\r\n handler() {\r\n this.editor.wrapSelectText('## ');\r\n }\r\n}, {\r\n name: 'h3',\r\n key: 'shift+alt+3',\r\n handler() {\r\n this.editor.wrapSelectText('### ');\r\n }\r\n}, {\r\n name: 'h4',\r\n key: 'shift+alt+4',\r\n handler() {\r\n this.editor.wrapSelectText('#### ');\r\n }\r\n}, {\r\n name: 'h5',\r\n key: 'shift+alt+5',\r\n handler() {\r\n this.editor.wrapSelectText('##### ');\r\n }\r\n}];\n\n\n// WEBPACK FOOTER //\n// ./src/editor/commands.js","module.exports = \"
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/editor/index.html\n// module id = 94\n// module chunks = 0","const mokit = require('mokit');\r\n\r\nrequire('./index.less');\r\n\r\nconst Viewer = new mokit.Component({\r\n template: require('./index.html'),\r\n\r\n data() {\r\n return {\r\n html: '',\r\n alert: '预览区域'\r\n };\r\n },\r\n\r\n props: {\r\n mditor: null,\r\n value: {\r\n get() {\r\n return this._value;\r\n },\r\n set(value) {\r\n this._value = value;\r\n let beforeEvent = { value: this._value };\r\n this.$emit('beforeRender', beforeEvent);\r\n this.mditor.parser.parse(beforeEvent.value, (err, result) => {\r\n let afterEvent = { value: result || err };\r\n this.$emit('afterRender', afterEvent);\r\n this.html = afterEvent.value;\r\n });\r\n }\r\n }\r\n },\r\n\r\n onClick(event) {\r\n event.preventDefault();\r\n let tag = event.target;\r\n if (tag.tagName == 'A') {\r\n let href = tag.getAttribute('href');\r\n if (href) window.open(href, '_blank');\r\n }\r\n }\r\n\r\n});\r\n\r\nmodule.exports = Viewer;\n\n\n// WEBPACK FOOTER //\n// ./src/viewer/index.js","module.exports = \"
    \\r\\n
    \\r\\n
    \\r\\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/viewer/index.html\n// module id = 97\n// module chunks = 0","const mokit = require('mokit');\r\nconst utils = require('ntils');\r\n\r\nrequire('./index.less');\r\n\r\nconst CHECK_REGEXP = /^\\/[\\s\\S]+\\/(i|g|m)*$/;\r\n\r\nconst Finder = new mokit.Component({\r\n template: require('./index.html'),\r\n props: {\r\n mditor: null,\r\n active: false,\r\n findWord: '',\r\n replaceWord: ''\r\n },\r\n onReady() {\r\n this.mditor.removeCommand('find');\r\n this.mditor.addCommand({\r\n name: 'find',\r\n key: '{cmd}+f',\r\n owner: this.mditor.$element,\r\n handler: this.show.bind(this, null)\r\n });\r\n this.mditor.removeCommand('cancel-find');\r\n this.mditor.addCommand({\r\n name: 'cancel-find',\r\n key: 'esc',\r\n owner: this.mditor.$element,\r\n handler: this.hide.bind(this)\r\n });\r\n },\r\n hide() {\r\n this.findWord = '';\r\n this.replaceWord = '';\r\n this.mditor.editor.markExp = null;\r\n this.active = false;\r\n },\r\n show(text) {\r\n this.active = true;\r\n this.findWord = text || this.mditor.editor.getSelectText();\r\n if (this.active) {\r\n setTimeout(() => {\r\n this.findBox.focus();\r\n }, 200);\r\n }\r\n this.mditor.editor.syncScroll();\r\n },\r\n watch: {\r\n findWord() {\r\n if (!this.mditor || !this.mditor.editor) return;\r\n if (!this.findWord) {\r\n this.mditor.editor.markExp = null;\r\n } else {\r\n this.mditor.editor.markExp = this.parseRegexp(this.findWord);\r\n }\r\n setTimeout(() => {\r\n this.mditor.editor.activeMark(0);\r\n }, 100);\r\n }\r\n },\r\n parseRegexp(text, forceStr) {\r\n if (!forceStr && CHECK_REGEXP.test(text)) {\r\n try {\r\n return (new Function(`return ${text}`))();\r\n } catch (err) {\r\n return this.parseRegexp(text, true);\r\n }\r\n } else {\r\n return new RegExp(utils.escapeRegExp(text), 'gm');\r\n }\r\n },\r\n find() {\r\n this.mditor.editor.activeMark();\r\n },\r\n replace() {\r\n this.mditor.value = this.mditor.value.replace(\r\n this.mditor.editor.markExp,\r\n this.replaceWord || ''\r\n );\r\n },\r\n onFindEnter(event) {\r\n if (event.keyCode != 13) return;\r\n event.preventDefault();\r\n this.find();\r\n },\r\n onReplaceEnter(event) {\r\n if (event.keyCode != 13) return;\r\n event.preventDefault();\r\n this.replace();\r\n },\r\n onCompositionEnd(event) {\r\n event.target.blur();\r\n event.target.focus();\r\n }\r\n});\r\n\r\nmodule.exports = Finder;\n\n\n// WEBPACK FOOTER //\n// ./src/finder/index.js","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/finder/index.html\n// module id = 100\n// module chunks = 0","const shortcuts = require('shortcut-key');\r\nconst utils = require('ntils');\r\n\r\nshortcuts.filter = event => {\r\n return !!event.target;\r\n};\r\n\r\nconst Shortcut = module.exports = function (mditor) {\r\n utils.defineFreezeProp(this, 'mditor', mditor);\r\n};\r\n\r\nShortcut.prototype._inRegion = function (target, owner) {\r\n if (!target) return false;\r\n owner = owner || this.mditor.editor.$element;\r\n if (utils.isFunction(owner)) owner = owner(this.mditor);\r\n return (target === owner) || this._inRegion(target.parentNode, owner);\r\n};\r\n\r\nShortcut.prototype.bind = function (key, cmd, allowDefault, owner) {\r\n let mditor = this.mditor;\r\n //检查参数\r\n if (!key || !cmd) return;\r\n key = key.replace('{cmd}', mditor.CMD);\r\n shortcuts(key, event => {\r\n if (!this._inRegion(event.target, owner)) return;\r\n //禁用浏览器默认快捷键\r\n if (!allowDefault) {\r\n event.preventDefault();\r\n }\r\n if (cmd instanceof Function) {\r\n cmd.call(mditor, event);\r\n } else {\r\n mditor.execCommand(cmd, event);\r\n }\r\n setTimeout(() => {\r\n mditor.focus();\r\n }, 0);\r\n });\r\n};\r\n\r\nShortcut.prototype.unbind = function (key) {\r\n shortcuts.unbind(key);\r\n};\n\n\n// WEBPACK FOOTER //\n// ./src/client/shortcut.js","(function (global) {\n var k,\n _handlers = {},\n _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false\n },\n _scope = 'all',\n // modifier keys\n _MODIFIERS = {\n '⇧': 16,\n shift: 16,\n '⌥': 18,\n alt: 18,\n option: 18,\n '⌃': 17,\n ctrl: 17,\n control: 17,\n '⌘': 91,\n command: 91\n },\n // special keys\n _MAP = {\n backspace: 8,\n tab: 9,\n clear: 12,\n enter: 13,\n 'return': 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n 'delete': 46,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': 189,\n '=': 187,\n ';': 186,\n '\\'': 222,\n '[': 219,\n ']': 221,\n '\\\\': 220\n },\n code = function (x) {\n return _MAP[x] || x.toUpperCase().charCodeAt(0);\n },\n _downKeys = [];\n\n for (k = 1; k < 20; k++) _MAP['f' + k] = 111 + k;\n\n // IE doesn't support Array#indexOf, so have a simple replacement\n function index(array, item) {\n var i = array.length;\n while (i--)\n if (array[i] === item) return i;\n return -1;\n }\n\n // for comparing mods before unassignment\n function compareArray(a1, a2) {\n if (a1.length != a2.length) return false;\n for (var i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) return false;\n }\n return true;\n }\n\n var modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey'\n };\n\n function updateModifierKey(event) {\n for (k in _mods) _mods[k] = event[modifierMap[k]];\n };\n\n // handle keydown event\n function dispatch(event) {\n var key, handler, k, i, modifiersMatch, scope;\n key = event.keyCode;\n\n if (index(_downKeys, key) == -1) {\n _downKeys.push(key);\n }\n\n // if a modifier key, set the key. property to true and return\n if (key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n if (key in _mods) {\n _mods[key] = true;\n // 'assignKey' from inside this closure is exported to window.key\n for (k in _MODIFIERS)\n if (_MODIFIERS[k] == key) assignKey[k] = true;\n return;\n }\n updateModifierKey(event);\n\n // see if we need to ignore the keypress (filter() can can be overridden)\n // by default ignore key presses if a select, textarea, or input is focused\n if (!assignKey.filter.call(this, event)) return;\n\n // abort if no potentially matching shortcuts found\n if (!(key in _handlers)) return;\n\n scope = getScope();\n\n // for each potential shortcut\n for (i = 0; i < _handlers[key].length; i++) {\n handler = _handlers[key][i];\n\n // see if it's in the current scope\n if (handler.scope == scope || handler.scope == 'all') {\n // check if modifiers match if any\n modifiersMatch = handler.mods.length > 0;\n for (k in _mods)\n if ((!_mods[k] && index(handler.mods, +k) > -1) ||\n (_mods[k] && index(handler.mods, +k) == -1)) modifiersMatch = false;\n // call the handler and stop the event if neccessary\n if ((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch) {\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();\n else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n }\n };\n\n // unset modifier keys on keyup\n function clearModifier(event) {\n var key = event.keyCode,\n k,\n i = index(_downKeys, key);\n\n // remove key from _downKeys\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n\n if (key == 93 || key == 224) key = 91;\n if (key in _mods) {\n _mods[key] = false;\n for (k in _MODIFIERS)\n if (_MODIFIERS[k] == key) assignKey[k] = false;\n }\n };\n\n function resetModifiers() {\n for (k in _mods) _mods[k] = false;\n for (k in _MODIFIERS) assignKey[k] = false;\n };\n\n // parse and assign shortcut\n function assignKey(key, scope, method) {\n var keys, mods;\n keys = getKeys(key);\n if (method === undefined) {\n method = scope;\n scope = 'all';\n }\n\n // for each shortcut\n for (var i = 0; i < keys.length; i++) {\n // set modifier keys if any\n mods = [];\n key = keys[i].split('+');\n if (key.length > 1) {\n mods = getMods(key);\n key = [key[key.length - 1]];\n }\n // convert to keycode and...\n key = key[0]\n key = code(key);\n // ...store handler\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({\n shortcut: keys[i],\n scope: scope,\n method: method,\n key: keys[i],\n mods: mods\n });\n }\n };\n\n // unbind all handlers for given key in current scope\n function unbindKey(key, scope) {\n var multipleKeys, keys,\n mods = [],\n i, j, obj;\n\n multipleKeys = getKeys(key);\n\n for (j = 0; j < multipleKeys.length; j++) {\n keys = multipleKeys[j].split('+');\n\n if (keys.length > 1) {\n mods = getMods(keys);\n key = keys[keys.length - 1];\n }\n\n key = code(key);\n\n if (scope === undefined) {\n scope = getScope();\n }\n if (!_handlers[key]) {\n return;\n }\n for (i in _handlers[key]) {\n obj = _handlers[key][i];\n // only clear handlers if correct scope and mods match\n if (obj.scope === scope && compareArray(obj.mods, mods)) {\n _handlers[key][i] = {};\n }\n }\n }\n };\n\n // Returns true if the key with code 'keyCode' is currently down\n // Converts strings into key codes.\n function isPressed(keyCode) {\n if (typeof (keyCode) == 'string') {\n keyCode = code(keyCode);\n }\n return index(_downKeys, keyCode) != -1;\n }\n\n function getPressedKeyCodes() {\n return _downKeys.slice(0);\n }\n\n function filter(event) {\n var tagName = (event.target || event.srcElement).tagName;\n // ignore keypressed in any elements that support keyboard data input\n return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n }\n\n // initialize key. to false\n for (k in _MODIFIERS) assignKey[k] = false;\n\n // set current scope (default 'all')\n function setScope(scope) {\n _scope = scope || 'all'\n };\n\n function getScope() {\n return _scope || 'all'\n };\n\n // delete all handlers for a given scope\n function deleteScope(scope) {\n var key, handlers, i;\n\n for (key in _handlers) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length;) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);\n else i++;\n }\n }\n };\n\n // abstract key logic for assign and unassign\n function getKeys(key) {\n var keys;\n key = key.replace(/\\s/g, '');\n keys = key.split(',');\n if ((keys[keys.length - 1]) == '') {\n keys[keys.length - 2] += ',';\n }\n return keys;\n }\n\n // abstract mods logic for assign and unassign\n function getMods(key) {\n var mods = key.slice(0, key.length - 1);\n for (var mi = 0; mi < mods.length; mi++)\n mods[mi] = _MODIFIERS[mods[mi]];\n return mods;\n }\n\n // cross-browser events\n function addEvent(object, event, method) {\n if (object.addEventListener)\n object.addEventListener(event, method, false);\n else if (object.attachEvent)\n object.attachEvent('on' + event, function () {\n method(window.event)\n });\n };\n\n // set the handlers globally on document\n addEvent(document, 'keydown', function (event) {\n dispatch(event)\n }); // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n addEvent(document, 'keyup', clearModifier);\n\n // reset modifiers to false whenever the window is (re)focused.\n addEvent(window, 'focus', resetModifiers);\n\n // store previously defined key\n var previousKey = global.key;\n\n // restore previously defined key and return reference to our key object\n function noConflict() {\n var k = global.key;\n global.key = previousKey;\n return k;\n }\n\n // set window.key and window.key.set/get/deleteScope, and the default filter\n global.key = assignKey;\n global.key.setScope = setScope;\n global.key.getScope = getScope;\n global.key.deleteScope = deleteScope;\n global.key.filter = filter;\n global.key.isPressed = isPressed;\n global.key.getPressedKeyCodes = getPressedKeyCodes;\n global.key.noConflict = noConflict;\n global.key.unbind = unbindKey;\n\n if (typeof module !== 'undefined') module.exports = key;\n\n})(window);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_shortcut-key@1.0.0@shortcut-key/index.js\n// module id = 102\n// module chunks = 0","const marked = require('marked');\r\nconst Prism = require('prismjs');\r\n\r\n//language\r\nrequire('prismjs/components/prism-java');\r\nrequire('prismjs/components/prism-csharp');\r\nrequire('prismjs/components/prism-php');\r\nrequire('prismjs/components/prism-python');\r\nrequire('prismjs/components/prism-json');\r\nrequire('prismjs/components/prism-yaml.min');\r\nrequire('prismjs/components/prism-perl');\r\nrequire('prismjs/components/prism-go');\r\nrequire('prismjs/components/prism-bash');\r\nrequire('prismjs/components/prism-fsharp');\r\nrequire('prismjs/components/prism-typescript');\r\nrequire('prismjs/components/prism-stylus');\r\nrequire('prismjs/components/prism-less');\r\nrequire('prismjs/components/prism-sass');\r\nrequire('prismjs/components/prism-handlebars');\r\nrequire('prismjs/components/prism-applescript');\r\nrequire('prismjs/components/prism-actionscript');\r\nrequire('prismjs/components/prism-aspnet');\r\nrequire('prismjs/components/prism-basic');\r\nrequire('prismjs/components/prism-c');\r\nrequire('prismjs/components/prism-pascal');\r\nrequire('prismjs/components/prism-vim');\r\nrequire('prismjs/components/prism-swift');\r\nrequire('prismjs/components/prism-objectivec');\r\nrequire('prismjs/components/prism-sql');\r\nrequire('prismjs/components/prism-scheme');\r\nrequire('prismjs/components/prism-ruby');\r\nrequire('prismjs/components/prism-smarty');\r\nrequire('prismjs/components/prism-smalltalk');\r\nrequire('prismjs/components/prism-rust');\r\nrequire('prismjs/components/prism-r');\r\nrequire('prismjs/components/prism-d');\r\nrequire('prismjs/components/prism-dart');\r\nrequire('prismjs/components/prism-coffeescript');\r\nrequire('prismjs/components/prism-batch');\r\nrequire('prismjs/components/prism-cpp');\r\nrequire('prismjs/components/prism-lua');\r\nrequire('prismjs/components/prism-livescript');\r\nrequire('prismjs/components/prism-latex');\r\nrequire('prismjs/components/prism-groovy');\r\nrequire('prismjs/components/prism-graphql');\r\nrequire('prismjs/components/prism-nginx');\r\nrequire('prismjs/components/prism-erlang');\r\nrequire('prismjs/components/prism-powershell');\r\nrequire('prismjs/components/prism-makefile');\r\nrequire('prismjs/components/prism-markdown');\r\n\r\n//alias\r\nPrism.languages.js = Prism.languages.javascript;\r\nPrism.languages['c#'] = Prism.languages.csharp;\r\nPrism.languages['f#'] = Prism.languages.fsharp;\r\nPrism.languages.sh = Prism.languages.bash;\r\nPrism.languages.md = Prism.languages.markdown;\r\nPrism.languages.py = Prism.languages.python;\r\nPrism.languages.yml = Prism.languages.yaml;\r\nPrism.languages.rb = Prism.languages.ruby;\r\n\r\nconst Parser = function (options) {\r\n options = options || {};\r\n this.options = options;\r\n};\r\n\r\nParser.highlights = {};\r\nParser.marked = marked;\r\nParser.Prism = Prism;\r\n\r\n//使标题解析 # 号可以无空格\r\nmarked.Lexer.rules.gfm.heading = marked.Lexer.rules.heading;\r\nmarked.Lexer.rules.tables.heading = marked.Lexer.rules.heading;\r\n\r\nlet renderer = new marked.Renderer();\r\nParser.renderer = renderer;\r\nmarked.setOptions({\r\n renderer: renderer, gfm: true, tables: true, breaks: true, //可行尾不加两空格直接换行\r\n pedantic: false,\r\n sanitize: false,\r\n smartLists: true,\r\n smartypants: false,\r\n mangle: false,\r\n highlight: function (code, lang, callback) {\r\n if (Parser.highlights[lang]) {\r\n let result = Parser.highlights[lang].parse(code, lang, callback);\r\n if (!callback)\r\n return result;\r\n } else if (Prism.languages[lang]) {\r\n let result = Prism.highlight(code, Prism.languages[lang]);\r\n if (callback)\r\n return callback(null, result);\r\n else\r\n return result;\r\n } else {\r\n if (callback) //eslint-disable-line\r\n return callback(null, code);\r\n else\r\n return code;\r\n }\r\n }\r\n});\r\n\r\nParser.prototype.parse = function (mdText, callback) {\r\n return marked(mdText, callback);\r\n};\r\n\r\nmodule.exports = Parser;\n\n\n// WEBPACK FOOTER //\n// ./src/common/parser.js","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)([\\s\\S]*?[^`])\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(\n cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1])\n );\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^
    /i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return '';\n }\n }\n if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n href = resolveUrl(this.options.baseUrl, href);\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n href = resolveUrl(this.options.baseUrl, href);\n }\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = base.replace(/[^/]*$/, '');\n }\n }\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[^]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[^]*/, '$1') + href;\n } else {\n return base + href;\n }\n}\nbaseUrls = {};\noriginIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false,\n baseUrl: null\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_marked@0.3.9@marked/lib/marked.js\n// module id = 104\n// module chunks = 0","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/prism.js\n// module id = 105\n// module chunks = 0","Prism.languages.java = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\\b/,\n\t'number': /\\b0b[01]+\\b|\\b0x[\\da-f]*\\.?[\\da-fp\\-]+\\b|\\b\\d*\\.?\\d+(?:e[+-]?\\d+)?[df]?\\b/i,\n\t'operator': {\n\t\tpattern: /(^|[^.])(?:\\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\\|[|=]?|\\*=?|\\/=?|%=?|\\^=?|[?:~])/m,\n\t\tlookbehind: true\n\t}\n});\n\nPrism.languages.insertBefore('java','function', {\n\t'annotation': {\n\t\talias: 'punctuation',\n\t\tpattern: /(^|[^.])@\\w+/,\n\t\tlookbehind: true\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-java.js\n// module id = 106\n// module chunks = 0","Prism.languages.csharp = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\\b/,\n\t'string': [\n\t\t{\n\t\t\tpattern: /@(\"|')(?:\\1\\1|\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*?\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+f?)\\b/i\n});\n\nPrism.languages.insertBefore('csharp', 'keyword', {\n\t'generic-method': {\n\t\tpattern: /[a-z0-9_]+\\s*<[^>\\r\\n]+?>\\s*(?=\\()/i,\n\t\talias: 'function',\n\t\tinside: {\n\t\t\tkeyword: Prism.languages.csharp.keyword,\n\t\t\tpunctuation: /[<>(),.:]/\n\t\t}\n\t},\n\t'preprocessor': {\n\t\tpattern: /(^\\s*)#.*/m,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight preprocessor directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(\\s*#)\\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-csharp.js\n// module id = 107\n// module chunks = 0","/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n *\n * Supports the following:\n * \t\t- Extends clike syntax\n * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n * \t\t- Smarter constant and function matching\n *\n * Adds the following new token classes:\n * \t\tconstant, delimiter, variable, function, package\n */\n\nPrism.languages.php = Prism.languages.extend('clike', {\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\tgreedy: true\n\t},\n\t'keyword': /\\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\\b/i,\n\t'constant': /\\b[A-Z0-9_]{2,}\\b/,\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\tlookbehind: true\n\t}\n});\n\n// Shell-like comments are matched after strings, because they are less\n// common than strings containing hashes...\nPrism.languages.insertBefore('php', 'class-name', {\n\t'shell-comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true,\n\t\talias: 'comment'\n\t}\n});\n\nPrism.languages.insertBefore('php', 'keyword', {\n\t'delimiter': {\n\t\tpattern: /\\?>|<\\?(?:php|=)?/i,\n\t\talias: 'important'\n\t},\n\t'variable': /\\$\\w+\\b/i,\n\t'package': {\n\t\tpattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /\\\\/\n\t\t}\n\t}\n});\n\n// Must be defined after the function pattern\nPrism.languages.insertBefore('php', 'operator', {\n\t'property': {\n\t\tpattern: /(->)[\\w]+/,\n\t\tlookbehind: true\n\t}\n});\n\n// Add HTML support if the markup language exists\nif (Prism.languages.markup) {\n\n\t// Tokenize all inline PHP blocks that are wrapped in \n\t// This allows for easy PHP + markup highlighting\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'php' || !/(?:<\\?php|<\\?)/ig.test(env.code)) {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(/(?:<\\?php|<\\?)[\\s\\S]*?(?:\\?>|$)/ig, function(match) {\n\t\t\tvar i = env.tokenStack.length;\n\t\t\t// Check for existing strings\n\t\t\twhile (env.backupCode.indexOf('___PHP' + i + '___') !== -1)\n\t\t\t\t++i;\n\n\t\t\t// Create a sparse array\n\t\t\tenv.tokenStack[i] = match;\n\n\t\t\treturn '___PHP' + i + '___';\n\t\t});\n\n\t\t// Switch the grammar to markup\n\t\tenv.grammar = Prism.languages.markup;\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'php' && env.backupCode) {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'php' || !env.tokenStack) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Switch the grammar back\n\t\tenv.grammar = Prism.languages.php;\n\n\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\tvar k = keys[i];\n\t\t\tvar t = env.tokenStack[k];\n\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('___PHP' + k + '___',\n\t\t\t\t\t\"\" +\n\t\t\t\t\tPrism.highlight(t, env.grammar, 'php').replace(/\\$/g, '$$$$') +\n\t\t\t\t\t\"\");\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-php.js\n// module id = 108\n// module chunks = 0","Prism.languages.python = {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true\n\t},\n\t'triple-quoted-string': {\n\t\tpattern: /(\"\"\"|''')[\\s\\S]+?\\1/,\n\t\tgreedy: true,\n\t\talias: 'string'\n\t},\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'function': {\n\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n\t\tlookbehind: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\bclass\\s+)\\w+/i,\n\t\tlookbehind: true\n\t},\n\t'keyword': /\\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\\b/,\n\t'builtin':/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n\t'boolean': /\\b(?:True|False|None)\\b/,\n\t'number': /\\b-?(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n\t'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:or|and|not)\\b/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-python.js\n// module id = 109\n// module chunks = 0","Prism.languages.json = {\n\t'property': /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/i,\n\t'string': {\n\t\tpattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n\t\tgreedy: true\n\t},\n\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?)\\b/,\n\t'punctuation': /[{}[\\]);,]/,\n\t'operator': /:/g,\n\t'boolean': /\\b(?:true|false)\\b/i,\n\t'null': /\\bnull\\b/i\n};\n\nPrism.languages.jsonp = Prism.languages.json;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-json.js\n// module id = 110\n// module chunks = 0","Prism.languages.yaml={scalar:{pattern:/([\\-:]\\s*(?:![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\2[^\\r\\n]+)*)/,lookbehind:!0,alias:\"string\"},comment:/#.*/,key:{pattern:/(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,lookbehind:!0,alias:\"atrule\"},directive:{pattern:/(^[ \\t]*)%.+/m,lookbehind:!0,alias:\"important\"},datetime:{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?)(?=[ \\t]*(?:$|,|]|}))/m,lookbehind:!0,alias:\"number\"},\"boolean\":{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:true|false)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},\"null\":{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:null|~)[ \\t]*(?=$|,|]|})/im,lookbehind:!0,alias:\"important\"},string:{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(\"|')(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2(?=[ \\t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)[+\\-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+\\.?\\d*|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\\s]+/,important:/[&*][\\w]+/,punctuation:/---|[:[\\]{}\\-,|>?]|\\.\\.\\./};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-yaml.min.js\n// module id = 111\n// module chunks = 0","Prism.languages.perl = {\n\t'comment': [\n\t\t{\n\t\t\t// POD\n\t\t\tpattern: /(^\\s*)=\\w+[\\s\\S]*?=cut.*/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t// TODO Could be nice to handle Heredoc too.\n\t'string': [\n\t\t// q/.../\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q a...a\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q(...)\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q{...}\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q[...]\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// q<...>\n\t\t{\n\t\t\tpattern: /\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t// \"...\", `...`\n\t\t{\n\t\t\tpattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t// '...'\n\t\t// FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n\t\t{\n\t\t\tpattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'regex': [\n\t\t// m/.../\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m a...a\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m(...)\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m{...}\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m[...]\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// m<...>\n\t\t{\n\t\t\tpattern: /\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t// The lookbehinds prevent -s from breaking\n\t\t// FIXME We don't handle change of separator like s(...)[...]\n\t\t// s/.../.../\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s a...a...a\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s(...)(...)\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s{...}{...}\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s[...][...]\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// s<...><...>\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\n\t\t// /.../\n\t\t// The look-ahead tries to prevent two divisions on\n\t\t// the same line from being highlighted as regex.\n\t\t// This does not support multi-line regex.\n\t\t{\n\t\t\tpattern: /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\n\t// FIXME Not sure about the handling of ::, ', and #\n\t'variable': [\n\t\t// ${^POSTMATCH}\n\t\t/[&*$@%]\\{\\^[A-Z]+\\}/,\n\t\t// $^V\n\t\t/[&*$@%]\\^[A-Z_]/,\n\t\t// ${...}\n\t\t/[&*$@%]#?(?=\\{)/,\n\t\t// $foo\n\t\t/[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+)+(?:::)*/i,\n\t\t// $1\n\t\t/[&*$@%]\\d+/,\n\t\t// $_, @_, %!\n\t\t// The negative lookahead prevents from breaking the %= operator\n\t\t/(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n\t],\n\t'filehandle': {\n\t\t// <>, , _\n\t\tpattern: /<(?![<=])\\S*>|\\b_\\b/,\n\t\talias: 'symbol'\n\t},\n\t'vstring': {\n\t\t// v1.2, 1.2.3\n\t\tpattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n\t\talias: 'string'\n\t},\n\t'function': {\n\t\tpattern: /sub [a-z0-9_]+/i,\n\t\tinside: {\n\t\t\tkeyword: /sub/\n\t\t}\n\t},\n\t'keyword': /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n\t'number': /\\b-?(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\\d(?:_?\\d)*)?\\.?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n\t'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n\t'punctuation': /[{}[\\];(),:]/\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-perl.js\n// module id = 112\n// module chunks = 0","Prism.languages.go = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/,\n\t'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t'number': /\\b(-?(0x[a-f\\d]+|(\\d+\\.?\\d*|\\.\\d+)(e[-+]?\\d+)?)i?)\\b/i,\n\t'string': {\n\t\tpattern: /([\"'`])(\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\tgreedy: true\n\t}\n});\ndelete Prism.languages.go['class-name'];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-go.js\n// module id = 113\n// module chunks = 0","(function(Prism) {\n\tvar insideString = {\n\t\tvariable: [\n\t\t\t// Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\tvariable: [{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\tnumber: /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee]-?\\d+)?)\\b/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\toperator: /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\tpunctuation: /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\([^)]+\\)|`[^`]+`/,\n\t\t\t\tinside: {\n\t\t\t\t\tvariable: /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:[\\w#?*!@]+|\\{[^}]+\\})/i\n\t\t]\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/bin\\/bash|^#!\\s*\\/bin\\/sh/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<\\s*)[\"']?(\\w+?)[\"']?\\s*\\r?\\n(?:[\\s\\S])*?\\r?\\n\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t}\n\t\t],\n\t\t'variable': insideString.variable,\n\t\t// Originally based on http://ss64.com/bash/\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&])(?:let|:|\\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&])(?:true|false)(?=$|[\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'operator': /&&?|\\|\\|?|==?|!=?|<<>|<=?|>=?|=~/,\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];]/\n\t};\n\n\tvar inside = insideString.variable[1].inside;\n\tinside['function'] = Prism.languages.bash['function'];\n\tinside.keyword = Prism.languages.bash.keyword;\n\tinside.boolean = Prism.languages.bash.boolean;\n\tinside.operator = Prism.languages.bash.operator;\n\tinside.punctuation = Prism.languages.bash.punctuation;\n})(Prism);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-bash.js\n// module id = 114\n// module chunks = 0","Prism.languages.fsharp = Prism.languages.extend('clike', {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\(\\*[\\s\\S]*?\\*\\)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\\b/,\n\t'string': {\n\t\tpattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1)B?/,\n\t\tgreedy: true\n\t},\n\t'number': [\n\t\t/\\b-?0x[\\da-fA-F]+(?:un|lf|LF)?\\b/,\n\t\t/\\b-?0b[01]+(?:y|uy)?\\b/,\n\t\t/\\b-?(?:\\d*\\.?\\d+|\\d+\\.)(?:[fFmM]|[eE][+-]?\\d+)?\\b/,\n\t\t/\\b-?\\d+(?:y|uy|s|us|l|u|ul|L|UL|I)?\\b/\n\t]\n});\nPrism.languages.insertBefore('fsharp', 'keyword', {\n\t'preprocessor': {\n\t\tpattern: /^[^\\r\\n\\S]*#.*/m,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t'directive': {\n\t\t\t\tpattern: /(\\s*#)\\b(?:else|endif|if|light|line|nowarn)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-fsharp.js\n// module id = 115\n// module chunks = 0","Prism.languages.typescript = Prism.languages.extend('javascript', {\n\t// From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n\t'keyword': /\\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|symbol|namespace|abstract|require|type)\\b/\n});\n\nPrism.languages.ts = Prism.languages.typescript;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-typescript.js\n// module id = 116\n// module chunks = 0","(function (Prism) {\n\tvar inside = {\n\t\t'url': /url\\(([\"']?).*?\\1\\)/i,\n\t\t'string': {\n\t\t\tpattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'interpolation': null, // See below\n\t\t'func': null, // See below\n\t\t'important': /\\B!(?:important|optional)\\b/i,\n\t\t'keyword': {\n\t\t\tpattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'hexcode': /#[\\da-f]{3,6}/i,\n\t\t'number': /\\b\\d+(?:\\.\\d+)?%?/,\n\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t'operator': [\n\t\t\t// We want non-word chars around \"-\" because it is\n\t\t\t// accepted in property names.\n\t\t\t/~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.+|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n\t\t],\n\t\t'punctuation': /[{}()\\[\\];:,]/\n\t};\n\n\tinside['interpolation'] = {\n\t\tpattern: /\\{[^\\r\\n}:]+\\}/,\n\t\talias: 'variable',\n\t\tinside: Prism.util.clone(inside)\n\t};\n\tinside['func'] = {\n\t\tpattern: /[\\w-]+\\([^)]*\\).*/,\n\t\tinside: {\n\t\t\t'function': /^[^(]+/,\n\t\t\trest: Prism.util.clone(inside)\n\t\t}\n\t};\n\n\tPrism.languages.stylus = {\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\\\\])(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'atrule-declaration': {\n\t\t\tpattern: /(^\\s*)@.+/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'atrule': /^@[\\w-]+/,\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\t\t'variable-declaration': {\n\t\t\tpattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:(?:\\{[^}]*\\}|.+)|$)/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'variable': /^\\S+/,\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\n\t\t'statement': {\n\t\t\tpattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t]+.+/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\tkeyword: /^\\S+/,\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\n\t\t// A property/value pair cannot end with a comma or a brace\n\t\t// It cannot have indented content unless it ended with a semicolon\n\t\t'property-declaration': {\n\t\t\tpattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'property': {\n\t\t\t\t\tpattern: /^[^\\s:]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'interpolation': inside.interpolation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trest: inside\n\t\t\t}\n\t\t},\n\n\n\n\t\t// A selector can contain parentheses only as part of a pseudo-element\n\t\t// It can span multiple lines.\n\t\t// It must end with a comma or an accolade or have indented content.\n\t\t'selector': {\n\t\t\tpattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': inside.interpolation,\n\t\t\t\t'punctuation': /[{},]/\n\t\t\t}\n\t\t},\n\n\t\t'func': inside.func,\n\t\t'string': inside.string,\n\t\t'interpolation': inside.interpolation,\n\t\t'punctuation': /[{}()\\[\\];:.]/\n\t};\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-stylus.js\n// module id = 117\n// module chunks = 0","/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nPrism.languages.less = Prism.languages.extend('css', {\n\t'comment': [\n\t\t/\\/\\*[\\s\\S]*?\\*\\//,\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?(?:\\([^{}]+\\)|[^(){};])*?(?=\\s*\\{)/i,\n\t\tinside: {\n\t\t\t'punctuation': /[:()]/\n\t\t}\n\t},\n\t// selectors and mixins are considered the same\n\t'selector': {\n\t\tpattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\([^{}]*\\)|[^{};@])*?(?=\\s*\\{)/,\n\t\tinside: {\n\t\t\t// mixin parameters\n\t\t\t'variable': /@+[\\w-]+/\n\t\t}\n\t},\n\n\t'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n\t'punctuation': /[{}();:,]/,\n\t'operator': /[+\\-*\\/]/\n});\n\n// Invert function and punctuation positions\nPrism.languages.insertBefore('less', 'punctuation', {\n\t'function': Prism.languages.less.function\n});\n\nPrism.languages.insertBefore('less', 'property', {\n\t'variable': [\n\t\t// Variable declaration (the colon must be consumed!)\n\t\t{\n\t\t\tpattern: /@[\\w-]+\\s*:/,\n\t\t\tinside: {\n\t\t\t\t\"punctuation\": /:/\n\t\t\t}\n\t\t},\n\n\t\t// Variable usage\n\t\t/@@?[\\w-]+/\n\t],\n\t'mixin-usage': {\n\t\tpattern: /([{;]\\s*)[.#](?!\\d)[\\w-]+.*?(?=[(;])/,\n\t\tlookbehind: true,\n\t\talias: 'function'\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-less.js\n// module id = 118\n// module chunks = 0","(function(Prism) {\n\tPrism.languages.sass = Prism.languages.extend('css', {\n\t\t// Sass comments don't need to be closed, only indented\n\t\t'comment': {\n\t\t\tpattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t]+.+)*/m,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('sass', 'atrule', {\n\t\t// We want to consume the whole line\n\t\t'atrule-line': {\n\t\t\t// Includes support for = and + shortcuts\n\t\t\tpattern: /^(?:[ \\t]*)[@+=].+/m,\n\t\t\tinside: {\n\t\t\t\t'atrule': /(?:@[\\w-]+|[+=])/m\n\t\t\t}\n\t\t}\n\t});\n\tdelete Prism.languages.sass.atrule;\n\n\n\tvar variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n\tvar operator = [\n\t\t/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/,\n\t\t{\n\t\t\tpattern: /(\\s+)-(?=\\s)/,\n\t\t\tlookbehind: true\n\t\t}\n\t];\n\n\tPrism.languages.insertBefore('sass', 'property', {\n\t\t// We want to consume the whole line\n\t\t'variable-line': {\n\t\t\tpattern: /^[ \\t]*\\$.+/m,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /:/,\n\t\t\t\t'variable': variable,\n\t\t\t\t'operator': operator\n\t\t\t}\n\t\t},\n\t\t// We want to consume the whole line\n\t\t'property-line': {\n\t\t\tpattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s]+.*)/m,\n\t\t\tinside: {\n\t\t\t\t'property': [\n\t\t\t\t\t/[^:\\s]+(?=\\s*:)/,\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(:)[^:\\s]+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'punctuation': /:/,\n\t\t\t\t'variable': variable,\n\t\t\t\t'operator': operator,\n\t\t\t\t'important': Prism.languages.sass.important\n\t\t\t}\n\t\t}\n\t});\n\tdelete Prism.languages.sass.property;\n\tdelete Prism.languages.sass.important;\n\n\t// Now that whole lines for other patterns are consumed,\n\t// what's left should be selectors\n\tdelete Prism.languages.sass.selector;\n\tPrism.languages.insertBefore('sass', 'punctuation', {\n\t\t'selector': {\n\t\t\tpattern: /([ \\t]*)\\S(?:,?[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,?[^,\\r\\n]+)*)*/,\n\t\t\tlookbehind: true\n\t\t}\n\t});\n\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-sass.js\n// module id = 119\n// module chunks = 0","(function(Prism) {\n\n\tvar handlebars_pattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/;\n\n\tPrism.languages.handlebars = Prism.languages.extend('markup', {\n\t\t'handlebars': {\n\t\t\tpattern: handlebars_pattern,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\t'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?)\\b/,\n\t\t\t\t'boolean': /\\b(?:true|false)\\b/,\n\t\t\t\t'block': {\n\t\t\t\t\tpattern: /^(\\s*~?\\s*)[#\\/]\\S+?(?=\\s*~?\\s*$|\\s)/i,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'keyword'\n\t\t\t\t},\n\t\t\t\t'brackets': {\n\t\t\t\t\tpattern: /\\[[^\\]]+\\]/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\tpunctuation: /\\[|\\]/,\n\t\t\t\t\t\tvariable: /[\\s\\S]+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'punctuation': /[!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n\t\t\t\t'variable': /[^!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n\t\t\t}\n\t\t}\n\t});\n\n\t// Comments are inserted at top so that they can\n\t// surround markup\n\tPrism.languages.insertBefore('handlebars', 'tag', {\n\t\t'handlebars-comment': {\n\t\t\tpattern: /\\{\\{![\\s\\S]*?\\}\\}/,\n\t\t\talias: ['handlebars','comment']\n\t\t}\n\t});\n\n\t// Tokenize all inline Handlebars expressions that are wrapped in {{ }} or {{{ }}}\n\t// This allows for easy Handlebars + markup highlighting\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'handlebars') {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(handlebars_pattern, function(match) {\n\t\t\tvar i = env.tokenStack.length;\n\t\t\t// Check for existing strings\n\t\t\twhile (env.backupCode.indexOf('___HANDLEBARS' + i + '___') !== -1)\n\t\t\t\t++i;\n\n\t\t\t// Create a sparse array\n\t\t\tenv.tokenStack[i] = match;\n\n\t\t\treturn '___HANDLEBARS' + i + '___';\n\t\t});\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'handlebars') {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\t// and highlight them with defined grammar\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'handlebars') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\tvar k = keys[i];\n\t\t\tvar t = env.tokenStack[k];\n\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('___HANDLEBARS' + k + '___', Prism.highlight(t, env.grammar, 'handlebars').replace(/\\$/g, '$$$$'));\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n\n}(Prism));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-handlebars.js\n// module id = 120\n// module chunks = 0","Prism.languages.applescript = {\n\t'comment': [\n\t\t// Allow one level of nesting\n\t\t/\\(\\*(?:\\(\\*[\\s\\S]*?\\*\\)|[\\s\\S])*?\\*\\)/,\n\t\t/--.+/,\n\t\t/#.+/\n\t],\n\t'string': /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n\t'number': /\\b-?\\d*\\.?\\d+([Ee]-?\\d+)?\\b/,\n\t'operator': [\n\t\t/[&=≠≤≥*+\\-\\/÷^]|[<>]=?/,\n\t\t/\\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\\b/\n\t],\n\t'keyword': /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n\t'class': {\n\t\tpattern: /\\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\\b/,\n\t\talias: 'builtin'\n\t},\n\t'punctuation': /[{}():,¬«»《》]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-applescript.js\n// module id = 121\n// module chunks = 0","Prism.languages.actionscript = Prism.languages.extend('javascript', {\n\t'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n\t'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<>?>?|[!=]=?)=?|[~?@]/\n});\nPrism.languages.actionscript['class-name'].alias = 'function';\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('actionscript', 'string', {\n\t\t'xml': {\n\t\t\tpattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\trest: Prism.languages.markup\n\t\t\t}\n\t\t}\n\t});\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-actionscript.js\n// module id = 122\n// module chunks = 0","Prism.languages.aspnet = Prism.languages.extend('markup', {\n\t'page-directive tag': {\n\t\tpattern: /<%\\s*@.*%>/i,\n\t\tinside: {\n\t\t\t'page-directive tag': /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n\t\t\trest: Prism.languages.markup.tag.inside\n\t\t}\n\t},\n\t'directive tag': {\n\t\tpattern: /<%.*%>/i,\n\t\tinside: {\n\t\t\t'directive tag': /<%\\s*?[$=%#:]{0,2}|%>/i,\n\t\t\trest: Prism.languages.csharp\n\t\t}\n\t}\n});\n// Regexp copied from prism-markup, with a negative look-ahead added\nPrism.languages.aspnet.tag.pattern = /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i;\n\n// match directives of attribute value foo=\"<% Bar %>\"\nPrism.languages.insertBefore('inside', 'punctuation', {\n\t'directive tag': Prism.languages.aspnet['directive tag']\n}, Prism.languages.aspnet.tag.inside[\"attr-value\"]);\n\nPrism.languages.insertBefore('aspnet', 'comment', {\n\t'asp comment': /<%--[\\s\\S]*?--%>/\n});\n\n// script runat=\"server\" contains csharp, not javascript\nPrism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {\n\t'asp script': {\n\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\tlookbehind: true,\n\t\tinside: Prism.languages.csharp || {}\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-aspnet.js\n// module id = 123\n// module chunks = 0","Prism.languages.basic = {\n\t'string': /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^_ +\\-.A-Z\\d])*\"/i,\n\t'comment': {\n\t\tpattern: /(?:!|REM\\b).+/i,\n\t\tinside: {\n\t\t\t'keyword': /^REM/i\n\t\t}\n\t},\n\t'number': /(?:\\b|\\B[.-])(?:\\d+\\.?\\d*)(?:E[+-]?\\d+)?/i,\n\t'keyword': /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n\t'function': /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n\t'operator': /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n\t'punctuation': /[,;:()]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-basic.js\n// module id = 124\n// module chunks = 0","Prism.languages.c = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n\t'operator': /-[>-]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/]/,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)[ful]*\\b/i\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'macro': {\n\t\t// allow for multiline macro definitions\n\t\t// spaces after the # character compile fine with gcc\n\t\tpattern: /(^\\s*)#\\s*[a-z]+(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight the path of the include statement as a string\n\t\t\t'string': {\n\t\t\t\tpattern: /(#\\s*include\\s*)(?:<.+?>|(\"|')(?:\\\\?.)+?\\2)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// highlight macro directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(#\\s*)\\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t},\n\t// highlight predefined macros as constants\n\t'constant': /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\n\ndelete Prism.languages.c['class-name'];\ndelete Prism.languages.c['boolean'];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-c.js\n// module id = 125\n// module chunks = 0","// Based on Free Pascal\n\n/* TODO\n\tSupport inline asm ?\n*/\n\nPrism.languages.pascal = {\n\t'comment': [\n\t\t/\\(\\*[\\s\\S]+?\\*\\)/,\n\t\t/\\{[\\s\\S]+?\\}/,\n\t\t/\\/\\/.*/\n\t],\n\t'string': {\n\t\tpattern: /(?:'(?:''|[^'\\r\\n])*'|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n\t\tgreedy: true\n\t},\n\t'keyword': [\n\t\t{\n\t\t\t// Turbo Pascal\n\t\t\tpattern: /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// Free Pascal\n\t\t\tpattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// Object Pascal\n\t\t\tpattern: /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// Modifiers\n\t\t\tpattern: /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'number': [\n\t\t// Hexadecimal, octal and binary\n\t\t/[+-]?(?:[&%]\\d+|\\$[a-f\\d]+)/i,\n\t\t// Decimal\n\t\t/([+-]|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n\t],\n\t'operator': [\n\t\t/\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/i,\n\t\t{\n\t\t\tpattern: /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'punctuation': /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-pascal.js\n// module id = 126\n// module chunks = 0","Prism.languages.vim = {\n\t'string': /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n\t'comment': /\".*/,\n\t'function': /\\w+(?=\\()/,\n\t'keyword': /\\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n\t'builtin': /\\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\\b/,\n\t'number': /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n\t'operator': /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n\t'punctuation': /[{}[\\](),;:]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-vim.js\n// module id = 127\n// module chunks = 0","// issues: nested multiline comments\nPrism.languages.swift = Prism.languages.extend('clike', {\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\((?:[^()]|\\([^)]+\\))+\\)|\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\\\\\((?:[^()]|\\([^)]+\\))+\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\tdelimiter: {\n\t\t\t\t\t\tpattern: /^\\\\\\(|\\)$/,\n\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t}\n\t\t\t\t\t// See rest below\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t'keyword': /\\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\\b/,\n\t'number': /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\t'constant': /\\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\t'atrule': /@\\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\\b/,\n\t'builtin': /\\b(?:[A-Z]\\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\\b/\n});\nPrism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.util.clone(Prism.languages.swift);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-swift.js\n// module id = 128\n// module chunks = 0","Prism.languages.objectivec = Prism.languages.extend('c', {\n\t'keyword': /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t'string': /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t'operator': /-[->]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-objectivec.js\n// module id = 129\n// module chunks = 0","Prism.languages.sql= {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n\t\tlookbehind: true\n\t},\n\t'string' : {\n\t\tpattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2/,\n\t\tgreedy: true,\n\t\tlookbehind: true\n\t},\n\t'variable': /@[\\w.$]+|@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n\t'function': /\\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n\t'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\\b/i,\n\t'boolean': /\\b(?:TRUE|FALSE|NULL)\\b/i,\n\t'number': /\\b-?(?:0x)?\\d*\\.?[\\da-f]+\\b/,\n\t'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n\t'punctuation': /[;[\\]()`,.]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-sql.js\n// module id = 130\n// module chunks = 0","Prism.languages.scheme = {\n\t'comment' : /;.*/,\n\t'string' : {\n\t\tpattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'[^('\\s]*/,\n\t\tgreedy: true\n\t},\n\t'keyword' : {\n\t\tpattern : /(\\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,\n\t\tlookbehind : true\n\t},\n\t'builtin' : {\n\t\tpattern : /(\\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\\/cc|append|abs|apply|eval)\\b|null\\?|pair\\?|boolean\\?|eof-object\\?|char\\?|procedure\\?|number\\?|port\\?|string\\?|vector\\?|symbol\\?|bytevector\\?)/,\n\t\tlookbehind : true\n\t},\n\t'number' : {\n\t\tpattern: /(\\s|\\))[-+]?\\d*\\.?\\d+(?:\\s*[-+]\\s*\\d*\\.?\\d+i)?\\b/,\n\t\tlookbehind: true\n\t},\n\t'boolean' : /#[tf]/,\n\t'operator': {\n\t\tpattern: /(\\()(?:[-+*%\\/]|[<>]=?|=>?)/,\n\t\tlookbehind: true\n\t},\n\t'function' : {\n\t\tpattern : /(\\()[^\\s()]*(?=\\s)/,\n\t\tlookbehind : true\n\t},\n\t'punctuation' : /[()]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-scheme.js\n// module id = 131\n// module chunks = 0","/**\n * Original by Samuel Flores\n *\n * Adds the following new token classes:\n * \t\tconstant, builtin, variable, symbol, regex\n */\n(function(Prism) {\n\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t'comment': [\n\t\t\t/#(?!\\{[^\\r\\n]*?\\}).*/,\n\t\t\t/^=begin(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r))*?=end/m\n\t\t],\n\t\t'keyword': /\\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\\b/\n\t});\n\n\tvar interpolation = {\n\t\tpattern: /#\\{[^}]+\\}/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\talias: 'tag'\n\t\t\t},\n\t\t\trest: Prism.util.clone(Prism.languages.ruby)\n\t\t}\n\t};\n\n\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t'regex': [\n\t\t\t{\n\t\t\t\tpattern: /%r([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\tpattern: /%r\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\][gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r<(?:[^<>\\\\]|\\\\[\\s\\S])*>[gim]{0,3}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gim]{0,3}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'variable': /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n\t\t'symbol': /:[a-zA-Z_]\\w*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t'builtin': /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n\t\t'constant': /\\b[A-Z]\\w*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.ruby.string = [\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// Here we need to specifically allow interpolation\n\t\t\tpattern: /%[qQiIwWxs]?\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|')(?:#\\{[^}]+\\}|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t];\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-ruby.js\n// module id = 132\n// module chunks = 0","/* TODO\n\tAdd support for variables inside double quoted strings\n\tAdd support for {php}\n*/\n\n(function(Prism) {\n\n\tvar smarty_pattern = /\\{\\*[\\s\\S]+?\\*\\}|\\{[\\s\\S]+?\\}/g;\n\tvar smarty_litteral_start = '{literal}';\n\tvar smarty_litteral_end = '{/literal}';\n\tvar smarty_litteral_mode = false;\n\n\tPrism.languages.smarty = Prism.languages.extend('markup', {\n\t\t'smarty': {\n\t\t\tpattern: smarty_pattern,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^\\{|\\}$/i,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\t'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\t\t'number': /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee][-+]?\\d+)?)\\b/,\n\t\t\t\t'variable': [\n\t\t\t\t\t/\\$(?!\\d)\\w+/,\n\t\t\t\t\t/#(?!\\d)\\w+#/,\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(\\.|->)(?!\\d)\\w+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'function': [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: /(\\|\\s*)@?(?!\\d)\\w+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t/^\\/?(?!\\d)\\w+/,\n\t\t\t\t\t/(?!\\d)\\w+(?=\\()/\n\t\t\t\t],\n\t\t\t\t'attr-name': {\n\t\t\t\t\t// Value is made optional because it may have already been tokenized\n\t\t\t\t\tpattern: /\\w+\\s*=\\s*(?:(?!\\d)\\w+)?/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t\"variable\": {\n\t\t\t\t\t\t\tpattern: /(=\\s*)(?!\\d)\\w+/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"operator\": /=/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'punctuation': [\n\t\t\t\t\t/[\\[\\]().,:`]|->/\n\t\t\t\t],\n\t\t\t\t'operator': [\n\t\t\t\t\t/[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n\t\t\t\t\t/\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n\t\t\t\t\t/\\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\\b/\n\t\t\t\t],\n\t\t\t\t'keyword': /\\b(?:false|off|on|no|true|yes)\\b/\n\t\t\t}\n\t\t}\n\t});\n\n\t// Comments are inserted at top so that they can\n\t// surround markup\n\tPrism.languages.insertBefore('smarty', 'tag', {\n\t\t'smarty-comment': {\n\t\t\tpattern: /\\{\\*[\\s\\S]*?\\*\\}/,\n\t\t\talias: ['smarty','comment']\n\t\t}\n\t});\n\n\t// Tokenize all inline Smarty expressions\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'smarty') {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(smarty_pattern, function(match) {\n\n\t\t\t// Smarty tags inside {literal} block are ignored\n\t\t\tif(match === smarty_litteral_end) {\n\t\t\t\tsmarty_litteral_mode = false;\n\t\t\t}\n\n\t\t\tif(!smarty_litteral_mode) {\n\t\t\t\tif(match === smarty_litteral_start) {\n\t\t\t\t\tsmarty_litteral_mode = true;\n\t\t\t\t}\n\n\t\t\t\tvar i = env.tokenStack.length;\n\t\t\t\t// Check for existing strings\n\t\t\t\twhile (env.backupCode.indexOf('___SMARTY' + i + '___') !== -1)\n\t\t\t\t\t++i;\n\n\t\t\t\t// Create a sparse array\n\t\t\t\tenv.tokenStack[i] = match;\n\n\t\t\t\treturn '___SMARTY' + i + '___';\n\t\t\t}\n\t\t\treturn match;\n\t\t});\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'smarty') {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\t// and highlight them with defined grammar\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'smarty') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {\n\t\t\tvar k = keys[i];\n\t\t\tvar t = env.tokenStack[k];\n\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('___SMARTY' + k + '___', Prism.highlight(t, env.grammar, 'smarty').replace(/\\$/g, '$$$$'));\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-smarty.js\n// module id = 133\n// module chunks = 0","Prism.languages.smalltalk = {\n\t'comment': /\"(?:\"\"|[^\"])+\"/,\n\t'string': /'(?:''|[^'])+'/,\n\t'symbol': /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n\t'block-arguments': {\n\t\tpattern: /(\\[\\s*):[^\\[|]*\\|/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'variable': /:[\\da-z]+/i,\n\t\t\t'punctuation': /\\|/\n\t\t}\n\t},\n\t'temporary-variables': {\n\t\tpattern: /\\|[^|]+\\|/,\n\t\tinside: {\n\t\t\t'variable': /[\\da-z]+/i,\n\t\t\t'punctuation': /\\|/\n\t\t}\n\t},\n\t'keyword': /\\b(?:nil|true|false|self|super|new)\\b/,\n\t'character': {\n\t\tpattern: /\\$./,\n\t\talias: 'string'\n\t},\n\t'number': [\n\t\t/\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n\t\t/(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n\t],\n\t'operator': /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n\t'punctuation': /[.;:?\\[\\](){}]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-smalltalk.js\n// module id = 134\n// module chunks = 0","/* TODO\n\tAdd support for Markdown notation inside doc comments\n\tAdd support for nested block comments...\n\tMatch closure params even when not followed by dash or brace\n\tAdd better support for macro definition\n*/\n\nPrism.languages.rust = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': [\n\t\t{\n\t\t\tpattern: /b?r(#*)\"(?:\\\\.|(?!\"\\1)[^\\\\\\r\\n])*\"\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /b?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'keyword': /\\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n\n\t'attribute': {\n\t\tpattern: /#!?\\[.+?\\]/,\n\t\tgreedy: true,\n\t\talias: 'attr-name'\n\t},\n\n\t'function': [\n\t\t/\\w+(?=\\s*\\()/,\n\t\t// Macros can use parens or brackets\n\t\t/\\w+!(?=\\s*\\(|\\[)/\n\t],\n\t'macro-rules': {\n\t\tpattern: /\\w+!/,\n\t\talias: 'function'\n\t},\n\n\t// Hex, oct, bin, dec numbers with visual separators and type suffix\n\t'number': /\\b-?(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\\d(?:_?\\d)*)?\\.?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\\b/,\n\n\t// Closure params should not be confused with bitwise OR |\n\t'closure-params': {\n\t\tpattern: /\\|[^|]*\\|(?=\\s*[{-])/,\n\t\tinside: {\n\t\t\t'punctuation': /[|:,]/,\n\t\t\t'operator': /[&*]/\n\t\t}\n\t},\n\t'punctuation': /[{}[\\];(),:]|\\.+|->/,\n\t'operator': /[-+*\\/%!^=]=?|@|&[&=]?|\\|[|=]?|<>?=?/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-rust.js\n// module id = 135\n// module chunks = 0","Prism.languages.r = {\n\t'comment': /#.*/,\n\t'string': {\n\t\tpattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'percent-operator': {\n\t\t// Includes user-defined operators\n\t\t// and %%, %*%, %/%, %in%, %o%, %x%\n\t\tpattern: /%[^%\\s]*%/,\n\t\talias: 'operator'\n\t},\n\t'boolean': /\\b(?:TRUE|FALSE)\\b/,\n\t'ellipsis': /\\.\\.(?:\\.|\\d+)/,\n\t'number': [\n\t\t/\\b(?:NaN|Inf)\\b/,\n\t\t/\\b(?:0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\d*\\.?\\d+)(?:[EePp][+-]?\\d+)?[iL]?\\b/\n\t],\n\t'keyword': /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n\t'operator': /->?>?|<(?:=|=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n\t'punctuation': /[(){}\\[\\],;]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-r.js\n// module id = 136\n// module chunks = 0","Prism.languages.d = Prism.languages.extend('clike', {\n\t'string': [\n\t\t// r\"\", x\"\"\n\t\t/\\b[rx]\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"[cwd]?/,\n\t\t// q\"[]\", q\"()\", q\"<>\", q\"{}\"\n\t\t/\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/,\n\t\t// q\"IDENT\n\t\t// ...\n\t\t// IDENT\"\n\t\t/\\bq\"([_a-zA-Z][_a-zA-Z\\d]*)(?:\\r?\\n|\\r)[\\s\\S]*?(?:\\r?\\n|\\r)\\1\"/,\n\t\t// q\"//\", q\"||\", etc.\n\t\t/\\bq\"(.)[\\s\\S]*?\\1\"/,\n\t\t// Characters\n\t\t/'(?:\\\\'|\\\\?[^']+)'/,\n\n\t\t/([\"`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1[cwd]?/\n\t],\n\n\t'number': [\n\t\t// The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n\t\t// Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n\t\t/\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]*/i,\n\t\t{\n\t\t\tpattern: /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]*/i,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\n\t// In order: $, keywords and special tokens, globally defined symbols\n\t'keyword': /\\$|\\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\\b/,\n\t'operator': /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n});\n\n\nPrism.languages.d.comment = [\n\t// Shebang\n\t/^\\s*#!.+/,\n\t// /+ +/\n\t{\n\t\t// Allow one level of nesting\n\t\tpattern: /(^|[^\\\\])\\/\\+(?:\\/\\+[\\s\\S]*?\\+\\/|[\\s\\S])*?\\+\\//,\n\t\tlookbehind: true\n\t}\n].concat(Prism.languages.d.comment);\n\nPrism.languages.insertBefore('d', 'comment', {\n\t'token-string': {\n\t\t// Allow one level of nesting\n\t\tpattern: /\\bq\\{(?:\\{[^}]*\\}|[^}])*\\}/,\n\t\talias: 'string'\n\t}\n});\n\nPrism.languages.insertBefore('d', 'keyword', {\n\t'property': /\\B@\\w*/\n});\n\nPrism.languages.insertBefore('d', 'function', {\n\t'register': {\n\t\t// Iasm registers\n\t\tpattern: /\\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n\t\talias: 'variable'\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-d.js\n// module id = 137\n// module chunks = 0","Prism.languages.dart = Prism.languages.extend('clike', {\n\t'string': [\n\t\t{\n\t\t\tpattern: /r?(\"\"\"|''')[\\s\\S]*?\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /r?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t/\\b(?:async|sync|yield)\\*/,\n\t\t/\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\\b/\n\t],\n\t'operator': /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n});\n\nPrism.languages.insertBefore('dart','function',{\n\t'metadata': {\n\t\tpattern: /@\\w+/,\n\t\talias: 'symbol'\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-dart.js\n// module id = 138\n// module chunks = 0","(function(Prism) {\n\n// Ignore comments starting with { to privilege string interpolation highlighting\nvar comment = /#(?!\\{).+/,\n interpolation = {\n \tpattern: /#\\{[^}]+\\}/,\n \talias: 'variable'\n };\n\nPrism.languages.coffeescript = Prism.languages.extend('javascript', {\n\t'comment': comment,\n\t'string': [\n\n\t\t// Strings are multiline\n\t\t{\n\t\t\tpattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n\t\t\tgreedy: true\n\t\t},\n\n\t\t{\n\t\t\t// Strings are multiline\n\t\t\tpattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t],\n\t'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n\t'class-member': {\n\t\tpattern: /@(?!\\d)\\w+/,\n\t\talias: 'variable'\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'comment', {\n\t'multiline-comment': {\n\t\tpattern: /###[\\s\\S]+?###/,\n\t\talias: 'comment'\n\t},\n\n\t// Block regexp can contain comments and interpolation\n\t'block-regex': {\n\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\talias: 'regex',\n\t\tinside: {\n\t\t\t'comment': comment,\n\t\t\t'interpolation': interpolation\n\t\t}\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'string', {\n\t'inline-javascript': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'punctuation'\n\t\t\t},\n\t\t\trest: Prism.languages.javascript\n\t\t}\n\t},\n\n\t// Block strings\n\t'multiline-string': [\n\t\t{\n\t\t\tpattern: /'''[\\s\\S]*?'''/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string'\n\t\t},\n\t\t{\n\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string',\n\t\t\tinside: {\n\t\t\t\tinterpolation: interpolation\n\t\t\t}\n\t\t}\n\t]\n\n});\n\nPrism.languages.insertBefore('coffeescript', 'keyword', {\n\t// Object property\n\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n});\n\ndelete Prism.languages.coffeescript['template-string'];\n\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-coffeescript.js\n// module id = 139\n// module chunks = 0","(function (Prism) {\n\tvar variable = /%%?[~:\\w]+%?|!\\S+!/;\n\tvar parameter = {\n\t\tpattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n\t\talias: 'attr-name',\n\t\tinside: {\n\t\t\t'punctuation': /:/\n\t\t}\n\t};\n\tvar string = /\"[^\"]*\"/;\n\tvar number = /(?:\\b|-)\\d+\\b/;\n\n\tPrism.languages.batch = {\n\t\t'comment': [\n\t\t\t/^::.*/m,\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'label': {\n\t\t\tpattern: /^:.*/m,\n\t\t\talias: 'property'\n\t\t},\n\t\t'command': [\n\t\t\t{\n\t\t\t\t// FOR command\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)for(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* \\S+ in \\([^)]+\\) do/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^for\\b|\\b(?:in|do)\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// IF command\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)if(?: ?\\/[a-z?](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|\\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:\"[^\"]*\"|\\S+))/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^if\\b|\\b(?:not|cmdextversion|defined|errorlevel|exist)\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'operator': /\\^|==|\\b(?:equ|neq|lss|leq|gtr|geq)\\b/i\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// ELSE command\n\t\t\t\tpattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^else\\b/i\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// SET command\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*)set(?: ?\\/[a-z](?:[ :](?:\"[^\"]*\"|\\S+))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^set\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t/\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/\n\t\t\t\t\t],\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'operator': /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n\t\t\t\t\t'punctuation': /[()',]/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Other commands\n\t\t\t\tpattern: /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'keyword': /^\\w+\\b/i,\n\t\t\t\t\t'string': string,\n\t\t\t\t\t'parameter': parameter,\n\t\t\t\t\t'label': {\n\t\t\t\t\t\tpattern: /(^\\s*):\\S+/m,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'property'\n\t\t\t\t\t},\n\t\t\t\t\t'variable': variable,\n\t\t\t\t\t'number': number,\n\t\t\t\t\t'operator': /\\^/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'operator': /[&@]/,\n\t\t'punctuation': /[()']/\n\t};\n}(Prism));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-batch.js\n// module id = 140\n// module chunks = 0","Prism.languages.cpp = Prism.languages.extend('c', {\n\t'keyword': /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'operator': /--?|\\+\\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\\^|~|%|&{1,2}|\\|\\|?|\\?|\\*|\\/|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/\n});\n\nPrism.languages.insertBefore('cpp', 'keyword', {\n\t'class-name': {\n\t\tpattern: /(class\\s+)\\w+/i,\n\t\tlookbehind: true\n\t}\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-cpp.js\n// module id = 141\n// module chunks = 0","Prism.languages.lua = {\n\t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n\t// \\z may be used to skip the following space\n\t'string': {\n\t\tpattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n\t\tgreedy: true\n\t},\n\t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n\t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n\t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n\t'operator': [\n\t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n\t\t{\n\t\t\t// Match \"..\" but don't break \"...\"\n\t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-lua.js\n// module id = 142\n// module chunks = 0","Prism.languages.livescript = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'interpolated-string': {\n\t\t/* Look-behind and look-ahead prevents wrong behavior of the greedy pattern\n\t\t* forcing it to match \"\"\"-quoted string when it would otherwise match \"-quoted first. */\n\t\tpattern: /(^|[^\"])(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2(?!\")/,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'variable': {\n\t\t\t\tpattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|[\\d_])*/m,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t}\n\t\t\t\t\t// See rest below\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string': [\n\t\t{\n\t\t\tpattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /<\\[[\\s\\S]*?\\]>/,\n\t\t\tgreedy: true\n\t\t},\n\t\t/\\\\[^\\s,;\\])}]+/\n\t],\n\t'regex': [\n\t\t{\n\t\t\tpattern: /\\/\\/(\\[.+?]|\\\\.|(?!\\/\\/)[^\\\\])+\\/\\/[gimyu]{0,5}/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'comment': {\n\t\t\t\t\tpattern: /(^|[^\\\\])#.*/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /\\/(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'keyword': {\n\t\tpattern: /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n\t\tlookbehind: true\n\t},\n\t'keyword-operator': {\n\t\tpattern: /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n\t\tlookbehind: true,\n\t\talias: 'operator'\n\t},\n\t'boolean': {\n\t\tpattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n\t\tlookbehind: true\n\t},\n\t'argument': {\n\t\t// Don't match .&. nor &&\n\t\tpattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n\t\tlookbehind: true,\n\t\talias: 'variable'\n\t},\n\t'number': /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n\t'identifier': /[a-z_](?:-?[a-z]|[\\d_])*/i,\n\t'operator': [\n\t\t// Spaced .\n\t\t{\n\t\t\tpattern: /( )\\.(?= )/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Full list, in order:\n\t\t// .= .~ .. ...\n\t\t// .&. .^. .<<. .>>. .>>>.\n\t\t// := :: ::=\n\t\t// &&\n\t\t// || |>\n\t\t// < << <<< <<<<\n\t\t// <- <-- <-! <--!\n\t\t// <~ <~~ <~! <~~!\n\t\t// <| <= >> >= >?\n\t\t// - -- -> -->\n\t\t// + ++\n\t\t// @ @@\n\t\t// % %%\n\t\t// * **\n\t\t// ! != !~=\n\t\t// !~> !~~>\n\t\t// !-> !-->\n\t\t// ~ ~> ~~> ~=\n\t\t// = ==\n\t\t// ^ ^^\n\t\t// / ?\n\t\t/\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n\t],\n\t'punctuation': /[(){}\\[\\]|.,:;`]/\n};\n\nPrism.languages.livescript['interpolated-string'].inside['interpolation'].inside.rest = Prism.languages.livescript;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-livescript.js\n// module id = 143\n// module chunks = 0","(function(Prism) {\n\tvar funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i,\n\t insideEqu = {\n\t\t 'equation-command': {\n\t\t\t pattern: funcPattern,\n\t\t\t alias: 'regex'\n\t\t }\n\t };\n\n\tPrism.languages.latex = {\n\t\t'comment': /%.*/m,\n\t\t// the verbatim environment prints whitespace to the document\n\t\t'cdata': {\n\t\t\tpattern: /(\\\\begin\\{((?:verbatim|lstlisting)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t/*\n\t\t * equations can be between $ $ or \\( \\) or \\[ \\]\n\t\t * (all are multiline)\n\t\t */\n\t\t'equation': [\n\t\t\t{\n\t\t\t\tpattern: /\\$(?:\\\\[\\s\\S]|[^\\\\$])*\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n\t\t\t\tinside: insideEqu,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\\\begin\\{((?:equation|math|eqnarray|align|multline|gather)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: insideEqu,\n\t\t\t\talias: 'string'\n\t\t\t}\n\t\t],\n\t\t/*\n\t\t * arguments which are keywords or references are highlighted\n\t\t * as keywords\n\t\t */\n\t\t'keyword': {\n\t\t\tpattern: /(\\\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'url': {\n\t\t\tpattern: /(\\\\url\\{)[^}]+(?=\\})/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t/*\n\t\t * section or chapter headlines are highlighted as bold so that\n\t\t * they stand out more\n\t\t */\n\t\t'headline': {\n\t\t\tpattern: /(\\\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\}(?:\\[[^\\]]+\\])?)/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'function': {\n\t\t\tpattern: funcPattern,\n\t\t\talias: 'selector'\n\t\t},\n\t\t'punctuation': /[[\\]{}&]/\n\t};\n})(Prism);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-latex.js\n// module id = 144\n// module chunks = 0","Prism.languages.groovy = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n\t'string': [\n\t\t{\n\t\t\tpattern: /(\"\"\"|''')[\\s\\S]*?\\1|(?:\\$\\/)(?:\\$\\/\\$|[\\s\\S])*?\\/\\$/,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /([\"'\\/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'number': /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?[\\d]+)?)[glidf]?\\b/i,\n\t'operator': {\n\t\tpattern: /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.{1,2}(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n\t\tlookbehind: true\n\t},\n\t'punctuation': /\\.+|[{}[\\];(),:$]/\n});\n\nPrism.languages.insertBefore('groovy', 'string', {\n\t'shebang': {\n\t\tpattern: /#!.+/,\n\t\talias: 'comment'\n\t}\n});\n\nPrism.languages.insertBefore('groovy', 'punctuation', {\n\t'spock-block': /\\b(?:setup|given|when|then|and|cleanup|expect|where):/\n});\n\nPrism.languages.insertBefore('groovy', 'function', {\n\t'annotation': {\n\t\talias: 'punctuation',\n\t\tpattern: /(^|[^.])@\\w+/,\n\t\tlookbehind: true\n\t}\n});\n\n// Handle string interpolation\nPrism.hooks.add('wrap', function(env) {\n\tif (env.language === 'groovy' && env.type === 'string') {\n\t\tvar delimiter = env.content[0];\n\n\t\tif (delimiter != \"'\") {\n\t\t\tvar pattern = /([^\\\\])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n\t\t\tif (delimiter === '$') {\n\t\t\t\tpattern = /([^\\$])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n\t\t\t}\n\n\t\t\t// To prevent double HTML-encoding we have to decode env.content first\n\t\t\tenv.content = env.content.replace(/</g, '<').replace(/&/g, '&');\n\n\t\t\tenv.content = Prism.highlight(env.content, {\n\t\t\t\t'expression': {\n\t\t\t\t\tpattern: pattern,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: Prism.languages.groovy\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tenv.classes.push(delimiter === '/' ? 'regex' : 'gstring');\n\t\t}\n\t}\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-groovy.js\n// module id = 145\n// module chunks = 0","Prism.languages.graphql = {\n\t'comment': /#.*/,\n\t'string': {\n\t\tpattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n\t\tgreedy: true\n\t},\n\t'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'variable': /\\$[a-z_]\\w*/i,\n\t'directive': {\n\t\tpattern: /@[a-z_]\\w*/i,\n\t\talias: 'function'\n\t},\n\t'attr-name': /[a-z_]\\w*(?=\\s*:)/i,\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /(fragment\\s+(?!on)[a-z_]\\w*\\s+|\\.{3}\\s*)on\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t/\\b(?:query|fragment|mutation)\\b/\n\t],\n\t'operator': /!|=|\\.{3}/,\n\t'punctuation': /[!(){}\\[\\]:=,]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-graphql.js\n// module id = 146\n// module chunks = 0","Prism.languages.nginx = Prism.languages.extend('clike', {\n 'comment': {\n pattern: /(^|[^\"{\\\\])#.*/,\n lookbehind: true\n },\n 'keyword': /\\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\\b/i\n});\n\nPrism.languages.insertBefore('nginx', 'keyword', {\n 'variable': /\\$[a-z_]+/i\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-nginx.js\n// module id = 147\n// module chunks = 0","Prism.languages.erlang = {\n\t'comment': /%.+/,\n\t'string': {\n\t\tpattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n\t\tgreedy: true\n\t},\n\t'quoted-function': {\n\t\tpattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n\t\talias: 'function'\n\t},\n\t'quoted-atom': {\n\t\tpattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n\t\talias: 'atom'\n\t},\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'keyword': /\\b(?:fun|when|case|of|end|if|receive|after|try|catch)\\b/,\n\t'number': [\n\t\t/\\$\\\\?./,\n\t\t/\\d+#[a-z0-9]+/i,\n\t\t/(?:\\b|-)\\d*\\.?\\d+([Ee][+-]?\\d+)?\\b/\n\t],\n\t'function': /\\b[a-z][\\w@]*(?=\\()/,\n\t'variable': {\n\t\t// Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n\t\tpattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n\t\tlookbehind: true\n\t},\n\t'operator': [\n\t\t/[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\\b/,\n\t\t{\n\t\t\t// We don't want to match <<\n\t\t\tpattern: /(^|[^<])<(?!<)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\t// We don't want to match >>\n\t\t\tpattern: /(^|[^>])>(?!>)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'atom': /\\b[a-z][\\w@]*/,\n\t'punctuation': /[()[\\]{}:;,.#|]|<<|>>/\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-erlang.js\n// module id = 148\n// module chunks = 0","Prism.languages.powershell = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^`])<#[\\s\\S]*?#>/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^`])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': [\n\t\t{\n\t\t\tpattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': {\n\t\t\t\t\tpattern: /[^`]\\$\\(.*?\\)/,\n\t\t\t\t\t// Populated at end of file\n\t\t\t\t\tinside: {}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /'(?:[^']|'')*'/,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t// Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n\t'namespace': /\\[[a-z][\\s\\S]*?\\]/i,\n\t'boolean': /\\$(?:true|false)\\b/i,\n\t'variable': /\\$\\w+\\b/i,\n\t// Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n\t// Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t// Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t'function': [\n\t\t/\\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\\b/i,\n\t\t/\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n\t],\n\t// per http://technet.microsoft.com/en-us/library/hh847744.aspx\n\t'keyword': /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n\t'operator': {\n\t\tpattern: /(\\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n\t\tlookbehind: true\n\t},\n\t'punctuation': /[|{}[\\];(),.]/\n};\n\n// Variable interpolation inside strings, and nested expressions\nPrism.languages.powershell.string[0].inside.boolean = Prism.languages.powershell.boolean;\nPrism.languages.powershell.string[0].inside.variable = Prism.languages.powershell.variable;\nPrism.languages.powershell.string[0].inside.function.inside = Prism.util.clone(Prism.languages.powershell);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-powershell.js\n// module id = 149\n// module chunks = 0","Prism.languages.makefile = {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n\t\tlookbehind: true\n\t},\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\n\t// Built-in target names\n\t'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n\n\t// Targets\n\t'symbol': {\n\t\tpattern: /^[^:=\\r\\n]+(?=\\s*:(?!=))/m,\n\t\tinside: {\n\t\t\t'variable': /\\$+(?:[^(){}:#=\\s]+|(?=[({]))/\n\t\t}\n\t},\n\t'variable': /\\$+(?:[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n\n\t'keyword': [\n\t\t// Directives\n\t\t/-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n\t\t// Functions\n\t\t{\n\t\t\tpattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'operator': /(?:::|[?:+!])?=|[|@]/,\n\t'punctuation': /[:;(){}]/\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-makefile.js\n// module id = 150\n// module chunks = 0","Prism.languages.markdown = Prism.languages.extend('markup', {});\nPrism.languages.insertBefore('markdown', 'prolog', {\n\t'blockquote': {\n\t\t// > ...\n\t\tpattern: /^>(?:[\\t ]*>)*/m,\n\t\talias: 'punctuation'\n\t},\n\t'code': [\n\t\t{\n\t\t\t// Prefixed by 4 spaces or 1 tab\n\t\t\tpattern: /^(?: {4}|\\t).+/m,\n\t\t\talias: 'keyword'\n\t\t},\n\t\t{\n\t\t\t// `code`\n\t\t\t// ``code``\n\t\t\tpattern: /``.+?``|`[^`\\n]+`/,\n\t\t\talias: 'keyword'\n\t\t}\n\t],\n\t'title': [\n\t\t{\n\t\t\t// title 1\n\t\t\t// =======\n\n\t\t\t// title 2\n\t\t\t// -------\n\t\t\tpattern: /\\w+.*(?:\\r?\\n|\\r)(?:==+|--+)/,\n\t\t\talias: 'important',\n\t\t\tinside: {\n\t\t\t\tpunctuation: /==+$|--+$/\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// # title 1\n\t\t\t// ###### title 6\n\t\t\tpattern: /(^\\s*)#+.+/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'important',\n\t\t\tinside: {\n\t\t\t\tpunctuation: /^#+|#+$/\n\t\t\t}\n\t\t}\n\t],\n\t'hr': {\n\t\t// ***\n\t\t// ---\n\t\t// * * *\n\t\t// -----------\n\t\tpattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n\t\tlookbehind: true,\n\t\talias: 'punctuation'\n\t},\n\t'list': {\n\t\t// * item\n\t\t// + item\n\t\t// - item\n\t\t// 1. item\n\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n\t\tlookbehind: true,\n\t\talias: 'punctuation'\n\t},\n\t'url-reference': {\n\t\t// [id]: http://example.com \"Optional title\"\n\t\t// [id]: http://example.com 'Optional title'\n\t\t// [id]: http://example.com (Optional title)\n\t\t// [id]: \"Optional title\"\n\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n\t\tinside: {\n\t\t\t'variable': {\n\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n\t\t},\n\t\talias: 'url'\n\t},\n\t'bold': {\n\t\t// **strong**\n\t\t// __strong__\n\n\t\t// Allow only one line break\n\t\tpattern: /(^|[^\\\\])(\\*\\*|__)(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /^\\*\\*|^__|\\*\\*$|__$/\n\t\t}\n\t},\n\t'italic': {\n\t\t// *em*\n\t\t// _em_\n\n\t\t// Allow only one line break\n\t\tpattern: /(^|[^\\\\])([*_])(?:(?:\\r?\\n|\\r)(?!\\r?\\n|\\r)|.)+?\\2/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /^[*_]|[*_]$/\n\t\t}\n\t},\n\t'url': {\n\t\t// [example](http://example.com \"Optional title\")\n\t\t// [example] [id]\n\t\tpattern: /!?\\[[^\\]]+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[[^\\]\\n]*\\])/,\n\t\tinside: {\n\t\t\t'variable': {\n\t\t\t\tpattern: /(!?\\[)[^\\]]+(?=\\]$)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n\t\t\t}\n\t\t}\n\t}\n});\n\nPrism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\nPrism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);\nPrism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']);\nPrism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/_prismjs@1.9.0@prismjs/components/prism-markdown.js\n// module id = 151\n// module chunks = 0","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/client/index.html\n// module id = 163\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/src/toolbar/items.js b/src/toolbar/items.js index 6d8b57f..546edcb 100644 --- a/src/toolbar/items.js +++ b/src/toolbar/items.js @@ -153,6 +153,45 @@ module.exports = [{ handler() { this.editor.wrapSelectText('![alt](', ')'); } +}, { + name: 'baseimg', + title: 'base64图片', + icon: 'file-photo-o', + key: 'shift+alt+k', + handler() { + var _this = this + // 创建元素用来选择图片 + var container = document.createElement('div') + container.id = "iDiv" + container.style = 'display:none' + container.innerHTML = '' + // 将创建的元素追加到body + document.body.appendChild(container) + + var filereader = new FileReader() + // 获取页面上刚追加的文件选择控件 + var fileEle = document.getElementById('iFile') + // 监听change方法 + fileEle.onchange = function (e) { + var file = e.target.files[0] + filereader.onload = function () { + // 获取读取到的base64字符串 + var base64Str = this.result + + //this 指向当前 mditor 实例 + _this.editor.insertBeforeText('![](' + base64Str + ')'); + // 获取base64格式之后,把容器删除 + document.body.removeChild(container) + } + // 如果没有选择对应的文件,则返回。不再进行后续逻辑的处理 + if (!file) return + filereader.readAsDataURL(file) + } + // 模拟点击事件 + fileEle.click() + + // this.editor.wrapSelectText('![alt](', ')'); + } }, { name: 'help', title: '帮助', From 309d1edcd00820dc447cabfc9c2c69e685f84a25 Mon Sep 17 00:00:00 2001 From: vsdeveloper Date: Sun, 7 Jan 2018 22:18:04 +0800 Subject: [PATCH 2/2] republish --- dist/css/mditor.css | 24 +- dist/index.html | 4 +- dist/js/mditor.js | 2007 +++++++++++++++++++++++++++---------- dist/js/mditor.js.map | 2 +- dist/js/mditor.min.js.map | 2 +- src/toolbar/items.js | 2 - 6 files changed, 1462 insertions(+), 579 deletions(-) diff --git a/dist/css/mditor.css b/dist/css/mditor.css index 808b283..7ddf42f 100644 --- a/dist/css/mditor.css +++ b/dist/css/mditor.css @@ -2639,7 +2639,6 @@ .markdown-body a { background-color: transparent; - -webkit-text-decoration-skip: objects; } .markdown-body a:active, @@ -2664,10 +2663,6 @@ border-style: none; } -.markdown-body svg:not(:root) { - overflow: hidden; -} - .markdown-body code, .markdown-body kbd, .markdown-body pre { @@ -3029,6 +3024,10 @@ margin-bottom: 0; } +.markdown-body li { + word-wrap: break-all; +} + .markdown-body li>p { margin-top: 16px; } @@ -3094,21 +3093,13 @@ } .markdown-body code { - padding: 0; - padding-top: 0.2em; - padding-bottom: 0.2em; + padding: 0.2em 0.4em; margin: 0; font-size: 85%; background-color: rgba(27,31,35,0.05); border-radius: 3px; } -.markdown-body code::before, -.markdown-body code::after { - letter-spacing: -0.2em; - content: "\A0"; -} - .markdown-body pre { word-wrap: normal; } @@ -3154,11 +3145,6 @@ border: 0; } -.markdown-body pre code::before, -.markdown-body pre code::after { - content: normal; -} - .markdown-body .full-commit .btn-outline:not(:disabled):hover { color: #005cc5; border-color: #005cc5; diff --git a/dist/index.html b/dist/index.html index fe4a981..3d5c902 100644 --- a/dist/index.html +++ b/dist/index.html @@ -6,7 +6,7 @@ mditor - +